NFC卡模拟与封闭的阅读器应用程序
我在两个Android设备上有两个应用程序,类似于NFC样本中的CardEmulation和CardReader。NFC卡模拟与封闭的阅读器应用程序
我想将运行在一个Android设备上的主机卡模拟应用程序的数据发送到运行在第二个Android设备上的读卡器应用程序。这两个应用程序在前台打开时都可以使用。
但是,如果我关闭阅读器应用程序,我不能再向它发送数据。相反,当两部手机结合在一起时,它们会激活波束传输。不过,我希望在两部手机放在一起时,手机会自动启动阅读器应用程序。
所以问题是:
我可以从HCE应用程序发送数据,以便读取器接收时,该设备被放置接近海誓山盟一个
TECH_DISCOVERED
意图是什么? (我们不希望额外的接受点击波束模式。)如果这是不可能的,
HostApduService
可以发送数据,以便读者收到一个NDEF_DISCOVERED
意图?
不幸的是,那是不可能的。由于Android NFC堆栈针对其他NFC设备(点对点模式和NFC标签)实施轮询的方式,因此无法通过基于主机的卡仿真(HCE)应用程序在一个Android设备上启动阅读器应用程序另一个Android设备。
Android NFC堆栈默认情况下针对NFC标签和NFC点对点设备进行轮询。因此,当两个Android设备组合在一起时,它们将通过NFC读写器模式+卡模拟模式自动通过NFC点对点模式和而不是进行通信。
因此,“阅读器”设备无法检测在第二个设备上运行的HostApduService
。因此,Android设备无法模拟将在第二个Android设备上触发应用程序的NFC标签(包含NDEF消息),该应用程序会过滤意图,甚至是TECH_DISCOVERED
或TAG_DISCOVERED
意图。
第二个Android设备上的一个Android设备(即处于读写器模式)和HCE应用程序(HostApduService
)之间通信的唯一方法是使用reader mode API)。这将禁用对等轮询并因此允许阅读器Android设备发现其他设备的卡模拟模式。但是,为了使用此API,您的应用程序必须已具有在阅读器设备上运行的前台活动。
请注意,禁用Android Beam(通过设置应用程序)不会禁用点对点模式。所以这样做不会改变任何事情。
双方(卡和读卡器)都是Android设备,对不对? –
@MichaelRoland是的。 –