有多種類型的NFC標籤(例如,超輕的Mifare,超輕的Mifare C,MIFARE經典,FeliCa的......)的。 每個標籤有不同的內存大小和閱讀程序。 例如:超輕型的Mifare有64字節,但MIFARE經典1K含有1千字節存儲器。 要從mifare ultratralight讀取數據,不需要額外的認證,但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
我很困惑,你讀RFID或NFC標籤? – ThomasRS
@Thomas對此抱歉,我想閱讀RFID。 – J1and1
那你爲什麼使用NfcAdapter? (如在NFC!= RFID) – ThomasRS