我正在研究NFC阅读应用程序,我遇到了这个问题:
通常,当我扫描标签时,我能够听到标记扫描成功的声音,而我的应用程序会检测到标签。
但有时候,如果我在每次扫描之间扫描标签的时间很短,我会听到不同的声音,这可能会在扫描过程中发出错误信号并且我的应用程序没有检测到标签。
短暂延迟后,我能够成功扫描相同的标签。
我想问一下,有没有可能检测到这种情况并通知用户等待并尝试再次扫描标签?
提前致谢。
答案 0 :(得分:1)
不,Android仅在成功读取标记时通知应用,并且在标记读取被干扰/失败时未提供任何通知方式。
在root设备上,您可以使用动态修改框架(如Xposed)来修改NFC服务的行为,以便检测此类事件。例如,您可以挂钩NFC服务的方法playSound()
(请参阅NfcService.java:625)并检查是否使用参数SOUND_ERROR
调用它(假设读取失败时播放声音)。
但是,这只能在NFC堆栈的较低层通知NFC系统服务有关标签扫描时通知您的应用。如果先前在NFC堆栈的下部中断了读取,或者如果NFC控制器甚至没有将关于标签扫描的任何信息传递给主机系统,那么您仍然无法发现这一点。