2

有没有办法找出 Android 设备上的 NFC 堆栈(或芯片组)?我正在创建一个具有 NfcV 类(ISO15693 标签)的自定义实现的应用程序。在 Nexus S、Galaxy S2、Nexus 7 等旧设备上,NFC 芯片组来自 NXP,唯一支持的 ISO15693 标签是 NXP ICODE 标签。我有一个依赖于收发功能的自定义实现。它与 TI 和 ST Micro 标签完美搭配。但问题是,在 Nexus 10、Nexus 4 和 SGS4 等设备上,Google 开始使用 Broadcom NFC 收发器及其原生支持 ISO15693 标签的 NFC 堆栈。是否可以通过编程方式识别 NFC 芯片组?如果有怎么办?

4

3 回答 3

1

基于 NXP NFC 的设备都支持MifareClassic标签,而基于 Broadcom 的设备则不支持。您可以检查您的应用程序是否存在该支持,如https://stackoverflow.com/a/15833191/1202968中所述。

当您编写“唯一受支持的 ISO15693 标签是 NXP ICODE 标签”时,我认为您的意思是仅在此类设备的 NXP ICODE 标签上支持在 ISO15693 标签上读取和写入 NDEF 消息(因为使用 ISO 15693 命令可以正常通信在这些基于 NXP 的 NFC 设备上)。如果/何时(如果有的话)这些设备得到更新以支持其他 ISO15693 标签上的 NDEF 消息存储,那么检查MifareClassic支持的技巧将不再有效,显然......

于 2013-07-04T15:44:24.130 回答
0

在这里猜测,但您可以尝试使用所有技术过滤器,例如

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <tech-list>    
       <tech>android.nfc.tech.NfcA</tech>       
    </tech-list>
</resources>

它可以读取我尝试过的大多数不受 Broadcom 芯片支持的卡。然后,您可以检查空或空的 NdefMessage。如果它包含信息,则它是 NXP 芯片。否则它的博通。

这确实打破了过滤器非常窄的概念,但我不确定你会如何做。

这也可能不适用于 s4,因为定制的三星固件只是消除了不兼容的标签。

可能还有另一种方式,因为当您扫描标签时,确切的技术列表(所有兼容的)会显示在 logcat 中。

于 2013-07-02T15:41:29.240 回答
-2

我强烈怀疑这是可能的。所有硬件信息通常可以通过以下方式访问:http: //developer.android.com/reference/android/os/Build.html

于 2013-07-02T14:14:33.597 回答