有没有办法弄清楚Android设备上的NFC堆栈(或芯片组)?我正在为NfcV类(ISO15693标签)创建一个自定义实现的应用程序。事实证明,在Nexus、Galaxy、Nexus7等旧设备上,S2芯片组来自恩智浦,唯一支持的ISO15693标签是恩智浦ICODE标签。我有一个自定义的实现,它依赖于收发函数。它与TI和ST Micro标签一起工作得很好。但问题是,在Nexus10、Nexus4和SGS4等设备上,谷歌开始使用Broadcom NFC收发器和它们的NFC堆栈,这些堆栈具有对ISO15693标签的本地支持。是否可以通过编程方式识别NFC芯片组?如果是这样的话,是怎么做的?
发布于 2013-07-04 23:44:24
基于恩智浦NFC的设备都支持MifareClassic
标签,而基于Broadcom的设备不支持此支持。您可以检查您的应用程序中是否存在该支持,如https://stackoverflow.com/a/15833191/1202968中所述。
当您写下“唯一支持的ISO15693标签是恩智浦ICODE标签”时,我想您的意思是,只有恩智浦ICODE标签才支持在ISO15693标签上读取和写入NDEF消息(因为在这些基于恩智浦的NFC设备上使用ISO15693 15693命令通信正常)。如果/当(如果有的话)这些设备升级到也支持其他ISO15693标签上的NDEF消息存储时,检查MifareClassic
支持的诀窍显然将不再起作用……
发布于 2013-07-02 23:41:29
但你可以尝试一个“捕获所有技术”过滤器,比如
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<tech-list>
<tech>android.nfc.tech.NfcA</tech>
</tech-list>
</resources>
它可以读取我尝试过的大多数Broadcom芯片不支持的卡。然后,您可以检查NdefMessage是否为空。如果它包含信息,则它是恩智浦芯片。否则它就是博通了。
这确实打破了具有非常窄的过滤器的概念,但我不确定您如何才能做到这一点。
这也可能不适用于s4,因为定制的三星固件只是忽略了不兼容的标签。
还可能有另一种方法,因为当您扫描标记时,确切的techlist (所有兼容的)会显示在logcat中。
发布于 2013-07-02 22:14:34
我强烈怀疑这是不可能的。所有硬件信息通常都可以通过:http://developer.android.com/reference/android/os/Build.html访问
https://stackoverflow.com/questions/17415803
复制相似问题