原标题:无线近场通讯NFC标签调度系统
NFC Intent发布系统
Intent发布系统也被称为标签调度系统,调度系统定义了三种类型的action,见下表:
标签类型
所以标签的上报根据标签中数据的不同而采用不同的action,大致流程如下图:
标签上报流程
1 、ACTION_NDEF_DISCOVERED
如果Application想过滤ACTION_NDEF_DISCOVERED的Intent,则其需要在你apk的清单文件AndroidManifest.xml中添加上intent-filter分过滤条件,一般的过滤条件设置如下:
过滤条件data下的内容根据Application感兴趣的标签而定,具体可参考《Professional NFC Application Development for Android.pdf》,这本书中做了比较详细的说明。
2 、ACTION_TECH_DISCOVERED
Application如果对ACTION_TECH_DISCOVERED的Intent感兴趣,则需要在apk的清单文件中加入如下格式的过滤条件:
在上面的基本格式中,meta-data中包含这样一条语句:android:resource="@xml/nfc_tech_list",这是一个XML的资源文件,该文件在过滤ACTION_TECH_DISCOVERED的Intent时是必须创建的。它指定了该apk支持的标签技术,只有你在XML中定义的标签技术是上报的Tag支持的标签技术的一个子集,这样你的Activity才能被系统过滤出来。
Nfc_tech_list是资源文件的文件名,可以根据自己的文件名而改动。但是文件的存放路径必须是 /res/xml/ 文件夹下,基本格式如下:
以上所列出的标签技术是当前标签支持的所有技术,Application可以根据自己的需要自由组合你的tech_list。也可以指定多个tech_list集合,每一个tech_list都认为是独立的,所以在匹配过程中,只要有一个tech_list匹配成功就认为该Activity符合ACTION_TECH_DISCOVERED的Intent过滤条件。多个tech_list集合的格式如下:
3 、ACTION_TAG_DISCOVERED
应用如果想过滤ACTION_TAG_DISCOVERED的Intent,同样需要在清单文件中加入过滤条件,这样在其他apk没有过滤ACTION_NDEF_DISCOVERED和ACTION_TECH_DISCOVERED的Intent时,ACTION_TAG_DISCOVERED就会启动。配置格式如下:
三种不同的action的Intent都有了比较详细的说明,接下来让我们看下这部分在android系统标签上报中的时序图:
标签上报时序图
Activity被启动后一般会在onResume()中获取到Intent,并从中读取标签的Tag对象和NDEF数据,这样应用就可以基于获取到的数据进行NFC数据操作。返回搜狐,查看更多
责任编辑: