全国统一热线 :0755-27474071
传真 :0755-29976316
产品展示 专利证书 新闻中心
技术交流
  天线理论
  工程运用
  技术探讨

Android近场通信——NFC基础(二)
时间:2013/9/3 10:33:22
 

应用程序如何调度NFC标签

当标签调度系统完成对NFC标签和它的标识信息封装的Intent对象的创建时,它会把该Intent对象发送给感兴趣的应用程序。如果有多个应用程序能够处理该Intent对象,就会显示Activity选择器,让用户选择Activity。标签调度系统定义了三种Intent对象,以下按照由高到低的优先级列出这三种Intent对象:

1.  ACTION_NDEF_DISCOVERED:这种Intent用于启动包含NDEF负载和已知类型的标签的Activity。这是最高优先级的Intent,并且标签调度系统在任何其他Intent之前,都会尽可能的尝试使用这种类型的Intent来启动Activity

2.  ACTION_TECH_DISCOVERED:如果没有注册处理ACTION_NDEF_DISCOVERED类型的IntentActivity,那么标签调度系统会尝试使用这种类型的Intent来启动应用程序。如果被扫描到的标签包含了不能被映射到MIME类型或URINDEF数据,或者没有包含NDEF数据,但是是已知的标签技术,那么也会直接启动这种类型的Intent对象(而不是先启动ACTION_NDEF_DISCOVERED类型的Intent

3.  ACTION_TAB_DISCOVERED:如果没有处理ACTION_NDEF_DISCOVEREDACTION_TECH_DISCOVERED类型IntentActivity,就会启动这种类型的Intent 

标签调度系统的基本工作方法如下:

1.  用解析NFC标签时由标签调度系统创建的Intent对象(ACTION_NDEF_DISCOVEREDACTION_TECH_DISCOVERED)来尝试启动Activity

2.  如果没有对应的处理IntentActivity,那么就会尝试使用下一个优先级的IntentACTION_TECH_DISCOVEREDACTION_TAG_DISCOVERED)来启动Activity,直到有对应的应用程序来处理这个Intent,或者是直到标签调度系统尝试了所有可能的Intent

3.  如果没有应用程序来处理任何类型的Intent,那么就不做任何事情。

1.标签调度系统

在可能的情况下,都会使用NDEF消息和ACTION_NDEF_DISCOVERED类型的Intent来工作,因为它是这三种Intent中最标准的。这种Intent与其他两种Intent相比,它会允许你在更加合适的时机来启动你的应用程序,从而给用户带来更好的体验。

 AndroidManifest中申请NFC访问

在访问设备的NFC硬件和正确的处理NFCIntent之前,要在AndroidManifest.xml文件中进行以下声明:

1.  <uses-permission>元素中声明访问NFC硬件:

<uses-permission android:name="android.permission.NFC" />

2.  你的应用程序所支持的最小的SDK版本。API Level 9只通过ACTION_TAG_DISCOVERED来支持有限的标签调度,并且只能通过EXTRA_NDEF_MESSAGES来访问NDEF消息。没有其他的标签属性或I/O操作可用。API Level 10中包含了广泛的读写支持,从而更好的推动了NDEF的应用前景,并且API Leve 14Android Beam和额外的方便的创建NDEF记录的方法,向外提供了更容易的把NDEF消息推送给其他设备的方法。

<uses-sdkandroid:minSdkVersion="10"/>

3.  使用uses-feature元素,在Google Play中,以便你的应用程序能够只针对有NFC硬件的设备来显示。

<uses-featureandroid:name="android.hardware.nfc"android:required="true"/>

如果你的应用程序使用了NFC功能,但是相关的功能又不是你的应用程序的关键功能,你可以忽略uses-feature元素,并且要在运行时通过调用getDefaultAdapter()方法来检查NFC是否有效。

 

 
首页 | 公司简介 | 技术交流 | 联系我们
版权所有 深圳市南斗星科技有限公司 粤ICP备09221720号 网页设计:合优网络