NFC 标签调度系统(Intent发布)

NFC Intent发布系统

Intent发布系统也被称为标签调度系统,调度系统定义了三种类型的action,见下表:

ACTIVITY_INTENT_ACTION 类型作用优先级
ACTION_NDEF_DISCOVERED标签中含有NDEF数据且为公认类型
ACTION_TECH_DISCOVERED标签中没有NDEF数据却是已定义的标签技术
ACTION_TAG_DISCOVERED前两个action都没有启动,则启动这个

所以标签的上报根据标签中数据的不同而采用不同的action,大致流程如下图:
在这里插入图片描述

唯一需要注意的是在ACTION_NDEF_DISCOVERED上报时还需要考虑AAR,NFC AAR的实现可以参考其他文章,这里就不多赘述。

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数据操作。

更多互联互通技术,欢迎关注微信公众号:Connectivity
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值