> NfcAdapter.enableReaderMode(活动,回调,标志,附加组件),然后在回调中接收标签信息.
> NfcAdapter.enableForegroundDispatch(activity,intent,filters,techLists)然后在onNewIntent(intent)活动方法中接收标记信息.
我目前使用第二种方法,但是,我最近发现了enableReaderMode方法,并想知道是否更好地使用它来处理NFC标签.
那么enableReaderMode和enableForegroundDispatch有什么区别?
解决方法
自Android 2.3.3(基本上是Android NFC的开始)以来,forground dispatch系统(NfcAdapter.enableForegroundDispatch())存在.因此,所有具有NFC功能的Android设备都支持此方法.
前台调度系统用于在处理NFC发现事件(即,从对等设备接收的已发现的NFC标签和NDEF消息)中给出当前处于前景优先级的活动.这意味着即使另一个应用程序(通过AndroidManifest.xml中的意图过滤器)注册了特定标签类型或NDEF数据,NFC事件仍将传递给前台活动而不是其他活动.因此,该方法不会改变Android侦听NFC设备(NFC标签,P2P设备)的方式,只会改变处理已发现设备的优先级.
读者模式API
读者模式API(NfcAdapter.enableReaderMode())是在Android 4.4中引入的.因此,并非所有具有NFC功能的Android设备都支持此方法.
与前台调度系统相反,阅读器模式API确实改变了Android侦听NFC设备的方式. reader-mode API禁用点对点模式.例如,这允许您发现具有对等模式的其他设备的卡仿真模式以及同时启用的卡仿真模式(如Android HCE的情况). (通常,这样的设备会被发现为点对点设备,而Android应用程序将无法访问卡仿真功能.)
此外,您可以更改NFC阅读器模式的特定参数,例如,您可以
>定义NFC读取器轮询的标签技术,>通过向标签发送某个命令序列并检查是否仍然收到响应来定义Android测试标签是否仍然存在的时间间隔,>阻止Android自动向标签发送命令,以测试标签是否包含NDEF消息,>阻止Android在标记发现时播放声音.