Android NFC开发(二)——Android世界里的NFC所具备的条件以及使用方法
NFC的应用比较广泛,而且知识面也是比较广的,所以就多啰嗦了几句,我还还是得跟着官方文档:http://developer.android.com/guide/topics/connectivity/nfc/index.html来,看这篇的同学可以先大概的了解一下Android NFC开发(一)——初探NFC,了解当前前沿技术
1.Android NFC的历史
真要说起来,NFC在Android上,也是从API9才开始支持的,但是到了API14 Google才对NFC大力开发,所以等到了API15的时候,NFC的传输速度就得到了很大的加强
2.NFC 标签
如果你有支持NFC的手机,你打开后盖,你看看到一块薄薄的东西,这就是NFC标,标签的种类也是种类繁多,功能野人参参不齐,有的只能读写,有的却能上天,而在Android SDK 中定义的NFC标准被称为NDEF(数据交换格式)
3.NDEF数据
Android SDK中有三种NDEF数据的操作
- 从NFC便签读取NDEF格式的数据
- 向NFC标签写入NDEF格式的数据
- 通过Android Beam技术将NDEF数据发送到另一部NFC设备
4.非NDEF数据
上篇也简单的说了这个机制
不管原生的如何支持,就像Android一样,依旧有一个独特的要求,比如我们存储的数据需要任意的,这就要我们自己定义数据,这也叫做非NDEF数据,这些数据其实就是普通的字节流罢了
5.NFC的三重过滤机制
两个终端设备要想读写数据,会有个短暂配对的时间,数据接收端会根据具体的数据格式和标签类型调用相应的Activity(Tag Dispatch),这个activity需要定义一个intent filter中指定不同的过滤机制,分三个等级,所以叫NFC的三重过滤机制
-
NDEF_DISCOVERED
只过滤固定格式的NDEF数据,比如纯文本,指定协议(HTTP FTP SMB等)的URI
-
TECH_DISCOVERED
当ACTION_NDEF_DISCOVERED指定的过滤机制无法匹配Tag时,就会使用这种过滤机制进行匹配,这种过滤机制并不是通过Tag的数据进行匹配的,而是根据Tag支持的数据存储格式进行匹配,因此这种机制使用范围很广
-
TAG_DISCOVERED
如果将NFC的过滤机制看成if….else…if….语句的话,那么这种机制相当于else语句,前面两种都失败了之后,就会用这个来处理了,这种机制用来处理未识别的Tag
从这里不难看出,NFC的三重过滤机制,如果都不能匹配Tag,则什么都不做,这里有个图,实际上上篇结尾的时候我也提到过,只是没讲这么细
5.Android中使用NFC
这里指定一个实例
Tag要调用的一个activity,而且指定机制和数据类型
6.NFC 权限
<uses-permission android:name="android.permission.NFC" />
7.最小支持SDK
ndroid:minSdkVersion="14"
8.限制安装的设备
<uses-feature
android:name="android.hardware.nfc"
android:required="true" />
当我们了解了这些基本的知识之后,我们就可以编写NFC的软件了,准备一部有NFC功能的手机,然后等待我们的下一篇