如何在阅读中获得自定义NFC标签?

时间:2017-11-03 11:20:05

标签: android tags nfc mifare fingerprinting

我正在尝试为智能手机创建一个复制NFC标签的应用程序。我遇到了在某些情况下无法为标签类型设置标签的问题。

有一种方法:

/**
 * Callback when a new tag is discovered by the system.
 * <p>
 * <p>Communication with the card should take place here.
 *
 * @param tag Discovered tag
 */
@Override
public void onTagDiscovered(Tag tag) {

    ... ... ... ... ... ...
    MifareClassic mifareClassic = MifareClassic.get(tag);

    if (mifareClassic != null) {
        mAccountCallback.get().onTagsTypeReceived(
            TECH_TYPE_MFR_CLASS, mifareClassic.getType());
        mAccountCallback.get().onMifareClassicReceived(mifareClassic);
    }
    ... ... ... ... ... ...
    NfcA nfcA = NfcA.get(tag);

    if (nfcA != null) {
        mAccountCallback.get().onNfcAReceived(nfcA);
    }
    ... ... ... ... ... ...
}

对于标签,其中包含MifareUltralight MifareClassic技术列表或标签的访问类型是通过以下方法:

.getType()

但如果这些技术不可用,则此方法不可用。但是,通过阅读相同的标签,您可以使用连接PC的阅读器b程序Arduino 1.8.5,他们的数据可以毫无问题地读取:

A screenshot of the monitor output from programs Arduino 1.8.5

如何输入任何标签?

2 个答案:

答案 0 :(得分:0)

由于您的代码似乎是MIFARE Ultralight标记,因此您可以从getType()代码技术对象获得类似的类型信息(即MifareUltralight方法):

MifareUltralight mifareUltralight = MifareUltralight.get(tag);
if (mifareUltralight != null) {
    ... = mifareUltralight.getType();
}

虽然这种类型的信息有多么有用,但这是有问题的。请参阅这些问题,以获得更好的方法来指纹识别不同类型的MIFARE Ultralight / NTAG产品:

然而,还要注意指纹识别任意类型的标签肯定不是一项微不足道的任务(另见How to detect manufacturer from NFC tag using Android?)。

答案 1 :(得分:0)

对于任意NFC标签任务尚未解决。该解决方案仅适用于NFC类型A.文档公司"NXP Semiconductors" AN10833 "MIFARE Type Identification Procedure"在第3.2节“选择确认编码”(SAK)中定义了SAK不同类型标签的相应值。在这个代码的基础上出现了:

.getSak()

获取值SAK是android.nfc.tech.NfcA类的方法:

{{1}}