基本上,我想做一个Android应用程序,可以通过nfca读取我的id标签 我的nfc标签gettechlist规格类型是mifare classic 1k,nfca和ndef formattable。
但从我用Google搜索的内容我尝试了两种解决方案: a)使用mifare经典来获取对象,使用sectora进行身份验证 然后读取每个块和扇区。但是,我现在放弃了这个解决方案,因为我的标签是身份证.. 在trygin几乎所有流行的键之后,我无法使用sectora进行身份验证。 我的第一个问题在这里我可以采取什么其他选择?
b)我看到很多示例代码用智能卡读卡器读取myk @ d标签,通过执行交换apdu命令来获取数据。 在android中,解决方案是使用isodep类,然后在transcieve()方法中放置相应的byte [] 因为它符合7816-4 iso ..但是,我的卡不支持isodep,当我尝试将其设置为isodep时它会命中为null。 我的第二个2)问题,有什么方法可以将nfca实例传递给isodep transcieve吗? 因为我cehck开发人员api android .. none .. 第三个问题3)现在,我终于决定使用NfcA实例iso 14443-a / 7816-3作为下面的代码片段,但我需要一个api智能卡包装器(convertToLowLevelNFCA)来包装我的apdu命令 进入一个协议,将返回低级字节,以便我的nfca可以转换...任何建议?
下面的代码除了传输部分外都有效。很感谢提前..
//这个字节[]是正确的,在我检查了几个网站之后,我的标签卡供应商是否正确 byte [] selApp = new byte [] {(byte)0x00,(byte)0xA4, (字节)0x04,(字节)0x00,(字节)0xA0,(字节)0x00, (字节)0x00,(字节)0x00,(字节)0x74,(字节)0x4A, (字节)0x50,(字节)0x4E,(字节)0x00,(字节)0x10, (字节)0x00};
NfcA myTag = (NfcA) NfcA.get(myTag0);
try {
myTag.connect();
myTag.setTimeout(5000);
//question 2) is it viable ?
// eg. IsoDep myTag2 = (IsoDep)myTag; ?
// byte[] response0 = myTag2.transceive(selApp); ?
//question 3 ) eg. myTag.transceive( convertToLowLevelNFCA(selApp) ) ?
byte[] response0 = myTag.transceive(selApp);// here not working .. return tag lost exception?
String hexResp0 = bytesToHex(response0);
myTag.close();
mUnlocked = true;
} catch (IOException e) {
alertbox("Device", "Failed exception connect" + e.getMessage());
}