NFC三种模式NDEF,TECH,TAG

来源:互联网 发布:网络用语ins是什么意思 编辑:程序博客网 时间:2024/05/17 03:35

假设在nexus s手机上装了3NFC相应程序(每种应用程序的启动页就是一个activity),分别对应三种过滤器,那么当一个tag靠近时,nexus s究竟选择哪种应用程序来处理呢?按照以下的规则,该规则成为intent发布系统规则:

activity  A中对intent过滤器设置了android.nfc.action.NDEF_DISCOVERED的判断规则;

<intent-filter>

        <action android:name = "android.nfc.action.NDEF_DISCOVERED" />

<data android:mimeType = "text/plain" />

    </intent-filter>

activity  B中对intent过滤器设置了android.nfc.action.TECH_DISCOVERED的判断规则;

    <intent-filter>              

        <action android:name="android.nfc.action.TECH_DISCOVERED" />

    </intent-filter> 

            

   <meta-data android:name="android.nfc.action.TECH_DISCOVERED"

          android:resource="@xml/filter_nfc" /> 

activity  C中对intent过滤器设置了android.nfc.action.TAG_DISCOVERED的判断规则;

  <intent-filter>

       <action android:name="android.nfc.action.TAG_DISCOVERED"/>

       <category android:name="android.intent.category.DEFAULT"/>

</intent-filter>

1、按照优先级(android.nfc.action.NDEF_DISCOVERED优先级最高),会先去判断请求是否满足activity A(因为A用的是NDEF_DISCOVERED)中的intent过滤器规则,先判断请求是否是NDEF_DISCOVERED格式的数据(action name),另外再判断NDEF_DISCOVERED数据的类型(action type),是纯文本还是智能海报,只有与过滤器中两个条件都要求的一致,才会选择activity A来处理。

2、当activity A不满足,则判断activity B来判断,也就是NDEF_DISCOVERED处理不了的则开始找TECH_DISCOVEREDActivity Bintent过滤器中选择了根据TECH_DISCOVERED来过滤,也就是请求tagNFC规范必须满足TECH_DISCOVERED设置的ISO14443-4ISO14443-3A,或者ISO14443-3B种的一种或几种。TECH_DISCOVERED过滤必须要定义一个xml文件来筛选所要支持的tech的模式,根据  <meta-data android:name="android.nfc.action.TECH_DISCOVERED"

          android:resource="@xml/filter_nfc" />  来关联对应的tech过滤器filter_nfc文件。在filter_nfc.xml中,只有符合了<tech-list>….</tech-list>标签之间定义的NFC标准,该activity才会相应,否则则都被activity设置的intent过滤器给pass掉。

 3、当请求intent对于NDEF_DISCOVEREDTECH_DISCOVERED规则都不满足的时候,则intent才开始找intent过滤规则为android.nfc.action.TAG_DISCOVEREDactivity,也就是activity CTAG_DISCOVERED的过滤规则是最不严格的,只要符合NFC规范中的任一种则都会响应,所以在android中,它的优先级是最低的,否则一开始就选择TAG_DISCOVERED来相应,activity无法获得tag更详细的一些信息,比如tag满足的NFC规范或者NDEF类型等。


http://qing.blog.sina.com.cn/1766585715/694bf573330001j4.html

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 求奇数的乘积 C语言实验题――字符编码 intellijlicense andriod导航栏 mfc文件上传下载 Eclipse4.8中搭建Android开发环境 1178:C语言实验题――单词统计 现在小明决定实现一个类似malloc的内存分配系统,具体来说,他需要连续处理若干申请内存的请求,这个 给定某二叉树的前序序列和中序序列,输出该二叉树的后序序列。(输入的前序遍历和中序遍历的结果中都不含重 vibe twitter 幼呦 fasttunnel 一叫三吱 浩君恋母 C语言实现朴素贝叶斯 shadowsocks服务 CCF201509-2日期计算 song:平面上若干个点,求任意两点间的最长距离 求n阶乘(1<=n<=10000) 【问题描述】计算一个班级N个学生三门课的各门课平均分,三门课总分,并输出成绩最高者的信息【输入形式】 NOD32分享区 舞蹈生 busfan vagrant 宋霏妍 IPPA-060036 petalinuxsd卡启动 三寸萝莉公交车 MPAndroidChart教程:概述 xxx.h:16:22:fatalerror:xxx.h:Nosuchfileordirectory 得到 PycharmProfessional PycharmProfessional snagit默认输入输出设置 爱加密脱壳 classmy_dialect(csv.Dialect):lineterminator=\'\\n\ unity音乐可视化 Fatal:FailedtostarttheJavaScriptconsole:apimodules android以图搜图 实现打开Android系统相册、照相机并实现照相,录像功能