我目前正在开发一个应用程序,将读取NFC tags目前我已经写了代码,以获得TAG id,我应该做什么?如果名为EXTRA_NDEF_MESSAGES的intent额外值为空,如何读取所有数据。
我现在有读取RFID的代码是
public void onNewIntent(Intent intent) {
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
String zin = tag.getTechList()[0];
info.setText("TagID: " + bytesToHex(tag.getId())+" Saturs: "+zin);
}我想知道如何读取该NFC tag中的所有数据。
谢谢你的一切!
发布于 2012-11-24 04:17:29
取决于您的标记的类型。一个超轻型mifare的例子
Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
MifareUltralight uTag = MifareUltralight.get(tagFromIntent);
uTag.connect(); //You should enclose this into a try-catch because of probably IOException
byte[] data = uTag.readPages(INDEX_OF_PAGES_YOU_WANT); //This returns 4 consecutive pages from the offset you declared. Each page weights 4 bytes
uTag.close();发布于 2015-02-18 01:07:29
有各种类型的nfc标签(例如,Mifare Ultralight、Mifare Ultralight C、Mifare Classic、felica...)。每个标签具有不同的存储器大小和读取过程。例如: Mifare Ultralight具有64字节,但mifare Classic 1k包含1 64内存。要从mifare ultralight读取数据,不需要额外的身份验证,但Mifare classic需要身份验证。当你获得新的意图时,你可以解析它来获得标签信息:
@Override
protected void onNewIntent(Intent intent){
getTagInfo(intent)
}
private void getTagInfo(Intent intent) {
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
String[] techList = tag.getTechList();
for (int i = 0; i < techList.length; i++) {
if (techList[i].equals(MifareClassic.class.getName())) {
MifareClassic mifareClassicTag = MifareClassic.get(tag);
switch (mifareClassicTag.getType()) {
case MifareClassic.TYPE_CLASSIC:
//Type Clssic
break;
case MifareClassic.TYPE_PLUS:
//Type Plus
break;
case MifareClassic.TYPE_PRO:
//Type Pro
break;
}
} else if (techList[i].equals(MifareUltralight.class.getName())) {
//For Mifare Ultralight
MifareUltralight mifareUlTag = MifareUltralight.get(tag);
switch (mifareUlTag.getType()) {
case MifareUltralight.TYPE_ULTRALIGHT:
break;
case MifareUltralight.TYPE_ULTRALIGHT_C:
break;
}
} else if (techList[i].equals(IsoDep.class.getName())) {
// info[1] = "IsoDep";
IsoDep isoDepTag = IsoDep.get(tag);
} else if (techList[i].equals(Ndef.class.getName())) {
Ndef.get(tag);
} else if (techList[i].equals(NdefFormatable.class.getName())) {
NdefFormatable ndefFormatableTag = NdefFormatable.get(tag);
}
}
}
}当你得到确切的标签时,你必须开始读取这些标签的过程。要阅读标签完整的项目在My GitHub Repo中
https://stackoverflow.com/questions/13340079
复制相似问题