我正在尝试在我的 Android 应用程序中读取 NXP 开发的 NFC 标签。可以使用 Android 读取标签:NXP 的应用程序和其他应用程序正确读取它。
确切的标签类型是“ICODE SLI-L (SL2ICS50)”,射频技术是“Type V / ISO 15693”(数据取自这些工作应用程序)。内存由 2 个页面组成,每个页面有 4 个块,每个块有 4 个字节——我只想将整个数据存储在内存中。
NfcV
该标签必须使用 Android 的类来处理,标签的数据表可在此处获得,但很难找到任何使用NfcV
. 我尝试了一些我自己通过数据表得出的结论,并尝试了我在 Google 中找到的这个 PDF中的通信示例,但没有任何效果。
我的活动中的相应方法(我使用 NFC 前台调度)如下所示:
public void onNewIntent(Intent intent) {
android.nfc.Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
NfcV tech = NfcV.get(tag);
try {
tech.connect();
byte[] arrByt = new byte[9];
arrByt[0] = 0x02;
arrByt[1] = (byte) 0xB0;
arrByt[2] = 0x08;
arrByt[3] = 0x00;
arrByt[4] = 0x01;
arrByt[5] = 0x04;
arrByt[6] = 0x00;
arrByt[7] = 0x02;
arrByt[8] = 0x00;
byte[] data = tech.transceive(arrByt);
// Print data
tech.close();
} catch (IOException e) {
// Exception handling
}
}
当我将手机放在标签上时,该方法被正确调用,但对象的transceive()
方法NfcV
总是抛出一个 IOException: android.nfc.TagLostException: Tag was lost.
。这是我尝试过的所有字节数组的结果(上面的不太可能正确,但在过去的几天里,我尝试了一堆其他的都导致相同的行为。
根据我在 Internet 上阅读的内容,我得出的结论是,错误的发生是因为我向标签发送了错误的命令——但我就是想不出正确的命令。有任何想法吗?