我正在尝试为智能手机创建一个复制NFC标签的应用程序。我遇到了在某些情况下无法为标签类型设置标签的问题。
有一种方法:
/**
* Callback when a new tag is discovered by the system.
* <p>
* <p>Communication with the card should take place here.
*
* @param tag Discovered tag
*/
@Override
public void onTagDiscovered(Tag tag) {
... ... ... ... ... ...
MifareClassic mifareClassic = MifareClassic.get(tag);
if (mifareClassic != null) {
mAccountCallback.get().onTagsTypeReceived(
TECH_TYPE_MFR_CLASS, mifareClassic.getType());
mAccountCallback.get().onMifareClassicReceived(mifareClassic);
}
... ... ... ... ... ...
NfcA nfcA = NfcA.get(tag);
if (nfcA != null) {
mAccountCallback.get().onNfcAReceived(nfcA);
}
... ... ... ... ... ...
}
对于标签,其中包含MifareUltralight MifareClassic技术列表或标签的访问类型是通过以下方法:
.getType()
但如果这些技术不可用,则此方法不可用。但是,通过阅读相同的标签,您可以使用连接PC的阅读器b程序Arduino 1.8.5,他们的数据可以毫无问题地读取:
A screenshot of the monitor output from programs Arduino 1.8.5
如何输入任何标签?
答案 0 :(得分:0)
由于您的代码似乎是MIFARE Ultralight标记,因此您可以从getType()
代码技术对象获得类似的类型信息(即MifareUltralight
方法):
MifareUltralight mifareUltralight = MifareUltralight.get(tag);
if (mifareUltralight != null) {
... = mifareUltralight.getType();
}
虽然这种类型的信息有多么有用,但这是有问题的。请参阅这些问题,以获得更好的方法来指纹识别不同类型的MIFARE Ultralight / NTAG产品:
然而,还要注意指纹识别任意类型的标签肯定不是一项微不足道的任务(另见How to detect manufacturer from NFC tag using Android?)。
答案 1 :(得分:0)
对于任意NFC标签任务尚未解决。该解决方案仅适用于NFC类型A.文档公司"NXP Semiconductors" AN10833 "MIFARE Type Identification Procedure"在第3.2节“选择确认编码”(SAK)中定义了SAK不同类型标签的相应值。在这个代码的基础上出现了:
.getSak()
获取值SAK是android.nfc.tech.NfcA类的方法:
{{1}}