我正在尝试检测NFC标签的制造商名称。我发现制造商代码here。但我只能用这些ID检测到Mifare Ultralight C标签。ultralight c标签id的第一个字节表示制造商代码。但其他标记不包含此属性。This app可以检测到ic制造商。是否可以检测制造商是否有其他NFC标签?

最佳答案

当然,没有人能一概而论。NFC标签的指纹识别(猜测制造商,甚至是准确的标签类型)相当困难,您可能需要为要检测的不同标签类型获取各种数据表/用户手册。即使这样,大多数标签也不会告诉你“我是z开发的xy”。在某些应用程序用例中,甚至被认为不希望(通常是出于模糊原因的安全考虑)公开制造商或产品代码。
但是,对于某些标签类型,有一些成熟的机制来获取制造商标识符:
NfcA具有7字节uid(通过Tag.getId()获取)的标记将制造商的iso 7816-6注册芯片制造商代码(参见list that you already found、anewer listJTC1/SC17 document library)编码为该uid的第一个字节。例如,对于stmicroelectronics,0x02对于nxp,0x04对于infineon等。
0x05标记有一个8字节的uid,其中制造商的iso 7816-6注册芯片制造商代码(与7字节的uidNfcV标记相同)被编码为uid的第二个字节(注意NfcA的不同字节顺序,这导致该字节是通过NfcV获得的最后第二个字节)。
Tag.getId()标签通常有一个来自索尼的射频前端(至少我不知道其他制造商)。不过,这一前端可能会被其他制造商整合到产品中。索尼提供了一个series of datasheet/user manuals给你足够的信息来区分不同的felica标签。
一些NfcF标签(特别是那些遵循GlobalPlatform规范的智能卡)可能通过其卡生产生命周期数据(cplc)显示制造商信息。请参阅Nikolay's blog post和GP规范,了解如何从典型的GP兼容卡中获取。有关如何解释该信息,请参见CPLC.java

10-06 03:45