Android设备之间的NFC交互会触发Android Beam,而不是HCE

时间:2018-12-19 10:10:54

标签: android nfc hce nfc-p2p android-beam

我正在开发充当独立POS终端的支付终端模拟器。它可以与非接触式芯片卡配合使用(可以按照适当的协议与它们进行通信),发起交易,从中读取数据等。

我还想处理Google Pay进行的交易(POS终端将Google Pay识别为普通的非接触式卡-相同的协议)。但是,当我有一台运行POS终端应用程序的Android设备和另一台运行有Google Pay的Android设备时,当我同时触摸这两个设备时,我的POS应用程序会最小化,并显示“触摸发送光束”。我本来希望可以在POS终端应用程序中调用onNewIntent方法。

如何处理?预期的行为是我的应用程序(POS终端)没有最小化,并且在另一部手机上触发了Google Pay应用程序。

我应该在开始时发送一些东西,以便具有Google Pay的Android可以识别这是一笔付款交易吗?还是某些特定的Intent过滤器可以在POS终端Android设备上处理此问题?

我还观察到,在三到四次尝试中,我似乎得到了预期的行为-onNewIntent在我的应用程序中被调用。看来我的应用程序和默认的Android Beam行为之间存在某种竞争状况。

1 个答案:

答案 0 :(得分:1)

您不能使用常规的标签分发机制(意图过滤器或前台分发系统)与以卡仿真(HCE)模式运行的另一个Android设备进行交互。问题在于,这两个Android设备通常会自动发现其对等模式功能。因此,它们以P2P模式连接并触发Android Beam(SNEP在LLCP之上,在P2P之上)。请注意,即使您在两个设备上都禁用了Android Beam,它们仍将选择P2P模式。

要解决此问题,您将需要使用reader mode API。这样,您可以在活动处于前台时禁用P2P模式并有选择地启用读取器/写入器模式功能(例如,不同的技术)。