gpt4 book ai didi

android - 带有封闭读卡器应用程序的 NFC 卡仿真

转载 作者:搜寻专家 更新时间:2023-11-01 07:49:28 24 4
gpt4 key购买 nike

我在两台 Android 设备上有两个应用程序,类似于 NFC 示例中的 CardEmulation 和 CardReader。

我想将数据从一台 Android 设备上运行的主机卡模拟应用程序发送到第二台 Android 设备上运行的读卡器应用程序。这适用于两个应用都在前台打开的情况。

但是如果我关闭阅读器应用程序,我将无法再向它发送数据。相反,当两部手机放在一起时,它们会激活光束传输。但是,我想让阅读器手机在两部手机放在一起时自动启动阅读器应用程序。

所以问题是:

  1. 我能否从 HCE 应用程序发送数据,以便在设备彼此靠近时读取器接收到 TECH_DISCOVERED Intent ? (我们不希望 Beam 模式需要额外的接受点击。)

  2. 如果这不可能,HostApduService 是否可以发送数据以便读取器接收到 NDEF_DISCOVERED Intent ?

最佳答案

不幸的是,这是不可能的。由于 Android NFC 堆栈为其他 NFC 设备(点对点模式和 NFC 标签)实现轮询的方式,不可能通过基于主机的卡模拟 (HCE) 应用程序在一台 Android 设备上启动读卡器应用程序另一台 Android 设备。

默认情况下,Android NFC 堆栈会轮询 NFC 标签和 NFC 点对点设备。因此,当两个 Android 设备放在一起时,它们将自动通过 NFC 点对点模式进行通信,不会通过读写器模式 + 卡模拟模式进行通信。

因此,“阅读器”设备无法检测到在第二个设备上运行的 HostApduService。因此,Android 设备无法模拟会触发应用程序(过滤 NDEF_DISCOVERED 或什至 TECH_DISCOVEREDTAG_DISCOVERED Intent )在第二个 Android 设备上。

在一台 Android 设备(处于读/写器模式)和第二台 Android 设备上的 HCE 应用程序 (HostApduService) 之间进行通信的唯一方法是使用 reader mode API ).这会禁用点对点轮询,从而允许读卡器 Android 设备发现其他设备的卡模拟模式。但是,为了使用此 API,您的应用程序必须已经有一个在阅读器设备上运行的前台 Activity 。

请注意,禁用 Android Beam(通过“设置”应用程序)不会禁用点对点模式。所以这样做不会改变任何事情。

关于android - 带有封闭读卡器应用程序的 NFC 卡仿真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37188472/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com