Android NFC扫描错误回调

Android NFC scan error callback

我目前正在开发 NFC 阅读应用程序,但遇到了这个问题:

通常情况下,当我扫描标签时,我会听到表示扫描成功的声音,并且我的应用会检测到标签。

但有时,如果我在每次扫描之间几乎没有延迟地扫描标签,我会听到不同的声音,这可能表示扫描过程中出现错误,我的应用程序未检测到标签。

经过短暂的延迟,我能够成功扫描相同的标签。

我想问一下,有没有可能检测到这种情况,并通知用户等待再尝试扫描标签?

提前致谢。

不,Android 仅在成功读取标签时通知应用程序,不提供任何方式在标签读取 interruped/has 失败时收到通知。

在获得 root 权限的设备上,您可以使用 Xposed 等动态修改框架来修改 NFC 服务的行为,以检测此类事件。例如,您可以挂钩 NFC 服务的方法 playSound()(参见 NfcService.java:625)并检查它是否使用参数 SOUND_ERROR 调用(假设读取失败时播放声音)。

不过,这只能在 NFC 堆栈的较低层通知 NFC 系统服务有关标签扫描时通知您的应用程序。如果 NFC 堆栈下部的读取较早中断,或者 NFC 控制器甚至没有将任何有关标签扫描的信息传递给主机系统,您仍然无法发现这一点。