【问题标题】:How to find out the NFC stack(chip) "NXP vs Broadcom" on Android devices如何在 Android 设备上找出 NFC 堆栈(芯片)“NXP vs Broadcom”
【发布时间】:2013-07-02 00:52:16
【问题描述】:

有没有办法找出 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 芯片组?如果有怎么办?

【问题讨论】:

  • 一个明显的方法是查看是否有某种方式可以尝试使用唯一方法,以便在它不可用时优雅地失败,或者允许您捕获结果异常/ 过错。或者您可以尝试查看加载或配置了哪些模块/驱动程序(如果 /proc/config.gz 存在,就像它通常那样)。最后的手段是维护一个兼容设备/版本的列表并将其用作指南。

标签: android nfc chipset iso-15693


【解决方案1】:

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

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

【讨论】:

  • 感谢您的建议。截至目前,为了确定它是否是 Braodcom 芯片,我正在技术列表中搜索“android.nfc.tech.NdefFormatable”和“android.nfc.tech.Ndef”。如果 ISO15693 标签支持其中一个类,我断定该设备有一个 Broadcom 部分。它似乎对我来说工作得很好。
  • 是的,当我说“唯一支持的 ISO15693 标签是 NXP ICODE 标签”时,我的意思是只有 NXP ICODE 标签才支持在 ISO15693 标签上读取和写入 NDEF 消息。
  • 我同意 NFC 专家关于“MifareClassic 支持检查”的观点。 1. NXP 在其较新的固件中添加了 ISO 15693 格式功能。因此,检查 ISO 15693 可格式化不再是一个好的选择。 2、由于MifareClassic是NXP的老产品,不是标准的NFC Forum Type,博通不会添加对它的支持。因此,“MifareClassic 支持检查”是一个不错的选择。您可以使用此应用程序play.google.com/store/apps/details?id=com.inoapp.cardinfo。它基于“MifareClassic 支持”检查。我一直在用它来验证“MifareClassic 支持检查”。到目前为止,这是相当可靠的检查。
【解决方案2】:

在这里猜测,但您可以尝试像

这样的全能技术过滤器
<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 中。

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 这是不知情的,几乎可以肯定是错误的猜测。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 2015-02-07
    相关资源
    最近更新 更多