0

我有自己的 Android 应用程序 (App A),它可以读取和写入 NFC 标签和 ISO-14443 Type A 标签。它适用于许多 Android 设备。

我想给我的 Nexus5 赋予 ISO-14443 标签的角色,所以我在我的 Nexus5 上实现了我自己的 HCE(主机卡仿真)应用程序(App B)。当我在外部 NFC 阅读器(使用 ISO 14443)上触摸 Nexus5 时,它运行良好。

但是,当我在 Nexus7(运行 App A)上触摸 Nexus5(App B)时,p2p(Android 光束)数据交换序列开始。

即使我关闭了两台设备上的 Android Beam 功能,也没有任何变化。Nexus7 不显示“Touched to Beam”屏幕,但 p2p 检测声音播放。

LogCat 显示 Nexus7 尝试建立 LLCP 连接。

我希望 Nexus7 专注于检测 Nexus5 的 ISO-14443 HCE,而不是 Android 光束。

如何更改 NFC 检测优先级以优先使用 ISO-14443 而不是 Android 光束?

4

1 回答 1

4

该解决方案仅适用于 Android 4.4 Kitkat(适用于 Nexus 7)。您需要启用所谓的“阅读器模式”,该模式旨在处理这种特殊情况,使用enableReaderMode().

在此模式下,NFC 控制器将仅充当 NFC 标签读取器/写入器,因此禁用此设备上 NFC 适配器的任何点对点 (Android Beam) 和卡模拟模式。[...] 为了与使用 Android 的基于主机的卡模拟在另一台 Android 设备上模拟的标签进行交互,推荐的标志是FLAG_READER_NFC_AFLAG_READER_SKIP_NDEF_CHECK

于 2014-01-01T08:13:59.457 回答