【发布时间】:2020-10-23 09:36:42
【问题描述】:
我想在我的应用程序中使用 NFC 读取,我在其中读取 NFC 卡的 ID。 我有 2 张不同的 NFC 卡。 当我用电脑中的 USB NFC 阅读器读取它们时,我得到两张卡的 9 位数字,这很酷。我可以根据那个数字识别卡片。
当我想在我的应用程序中阅读它们时,就会出现问题,如下所示:
new NfcAdapter.ReaderCallback() {
@Override
public void onTagDiscovered( final Tag tag ) {
runOnUiThread(new Runnable() {
@Override
public void run() {
System.out.println(tag.toString());
// I get the ID here to identify the card
String id = Long.toString(Utils.toDec(tag.getId())).trim();
}
});
}
},
1 | NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK,
options);
当我记录发现的 TAG 的 toString() 方法时,我得到了第一张卡片:
Tech [android.nfc.tech.NfcA, android.nfc.tech.MifareClassic]
当我阅读下面的 ID String id = Long.toString(Utils.toDec(tag.getId())).trim(); 时,我得到了与我电脑中相同的 9 位数字,这很好,这是卡的唯一 ID。
第二张卡片的toString():
Tech [android.nfc.tech.IsoDep, android.nfc.tech.NfcA]
当我读取标签 ID 时,我得到一个 17 位数字而不是 9 位数字... 我试图在发现的 TAG 中记录所有内容,但我找不到可以通过 USB 读卡器从计算机中读取的那张卡的 9 位数字。所以我无法识别这张 NFC 卡。
我该如何解决这个问题?我想通过 USB 读卡器和我的应用程序来识别卡,所以这两个数字必须相同,就像第一张卡一样...
谢谢! :)
【问题讨论】:
-
卡的品牌和型号是什么,ID较长,因为某些卡出于兼容性原因有多个长度ID。
-
没问题,如果第二张卡有更长的ID,但是当我通过计算机中的USB读卡器读取它时,我没有得到这个更长的ID,而是一个更短的9位数字......所以我的 PC 和 Android 应用程序中的 USB 阅读器中没有完全相同的唯一 ID...
-
在不知道卡的品牌和型号的情况下,我无法告诉您如何在 USB 读卡器和 Android 手机上读取短版或长版。