我目前正在开发 NFC 阅读应用程序,我遇到了这个问题:
通常,当我扫描标签时,我会听到表示扫描成功的声音,并且我的应用会检测到标签。
但有时,如果我在每次扫描之间几乎没有延迟地扫描标签,我会听到不同的声音,这可能表示扫描过程中出现错误,我的应用程序未检测到标签。
短暂延迟后,我能够成功扫描相同的标签。
我想问一下,有没有可能检测到这种情况,并通知用户等待再尝试扫描标签?
提前致谢。
最佳答案
不,Android 仅在成功读取标签时通知应用,不提供任何方式在标签读取中断/失败时通知应用。
在获得 root 权限的设备上,您可以使用 Xposed 等动态修改框架来修改 NFC 服务的行为,以便检测此类事件。例如,您可以 Hook NFC 服务的方法 playSound()
(参见 NfcService.java:625)并检查它是否使用参数 SOUND_ERROR
调用(假设声音是读取失败时播放)。
不过,这只能在 NFC 堆栈的较低层通知 NFC 系统服务有关标签扫描时通知您的应用程序。如果 NFC 堆栈下部的读取较早被中断,或者如果 NFC Controller 甚至没有将有关标签扫描的任何信息传递给主机系统,您仍然无法发现这一点。
关于Android NFC扫描错误回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35336901/