http://blog.csdn.net/zoeice/article/details/9714867
在Android系统下,目前主要以支持NDEF (NFC Data Exchange Format)格式为主,如果遇到是非预设支持的NDEF在Android仍有自订相关处理方式。NDFE data从NFC tag中取出,交由tag dispatch system进行处理.
[第一条NdefRecord的作用:判断数据类型及如何解释整个NDEF消息]
1.1)扫描到包含NDEF格式数据的NFC标签时,首先系统会读取消息(NdefMessage)中的第一条NdefRecord,1.2)标签调度系统尝试根据TNF把类型字段映射到MIME型或URI
1.3)成功,标签调度系统会把这个URI跟其他相关的标签的信息(如数据负载)一起封装到ACTION_NDEF_DISCOVERED的Intent对象中。
否则 就会用一个标签技术信息相关的Tag对象和封装在ACTION_TECH_DISCOVERED类型Intent对象内部的负载来代替
(退化到ACTION_TECH_DISCOVERED类型的Intent对象)
1.4)把该Intent对象发送给感兴趣的应用程序
NFC标签分类的根据是:卡的格式(ISO 14443-3A、B 标准,JIS 6319-4标准)和容量。
NFC可兼容索尼公司的FeliCaTM卡(基于JIS 6319-4标准)以及已广泛建立的非接触式智能卡(如基于ISO 14443 A的MIFARE)
在新的标准ECMA-340(后被编入IEC-18092)中制定了新的通信协议,所有上述标准(ISO 14443-3A、B 标准,JIS 6319-4标准)都被涵盖在内。
前台发布系统允许一个Activity覆盖掉Intent发布系统而首先处理此tag Intent,这要求你将要处理Tag Intent的Activity运行在前台,这样当一个NFC tag被扫描到,系统先检测前台的Activity是否支持处理此Intent,如果支持,即将此Intent传给此Activity,如果不支持,则转到Intent发布系统。
1.用解析NFC标签时由标签调度系统创建的Intent对象(ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED)来尝试启动Activity;
2.如果没有对应的处理Intent的Activity,那么就会尝试使用下一个优先级的Intent(ACTION_TECH_DISCOVERED或ACTION_TAG_DISCOVERED)来启动Activity,
直到有对应的应用程序来处理这个Intent,或者是直到标签调度系统尝试了所有可能的Intent。
3.如果没有应用程序来处理任何类型的Intent,那么就不做任何事情。
在可能的情况下,都会使用NDEF消息和ACTION_NDEF_DISCOVERED类型的Intent来工作,因为它是这三种Intent中最标准的。
这种Intent与其他两种Intent相比,它会允许你在更加合适的时机来启动你的应用程序,从而给用户带来更好的体验。
iten机制:(运行时绑定(run-time binding)机制)
Action:用来指明要实施的动作是什么
Category:类别,一个字符串,包含了关于处理该intent的组件的种类的信息。一个intent对象可以有任意个category
Data: 数据,一般由一个Uri变量来表示
Type:类型,显式指定Intent的数据类型(MIME)
component:指定Intent的目标组件的类名称
extras:附加信息
mifare
http://www.tuicool.com/articles/qYjiyuE
需注意的是:
?Android 2.3.3 (API Level 10)才有支持完整的NFC功能;
?Android 4.x 支持 Android Application Record (AAR);
?Android 4.0 支持 Beam;