本文共 1230 字,大约阅读时间需要 4 分钟。
NFC的应用比较广泛,而且知识面也是比较广的,所以就多啰嗦了几句,我还还是得跟着官方文档:来,看这篇的同学可以先大概的了解一下
真要说起来,NFC在Android上,也是从API9才开始支持的,但是到了API14 Google才对NFC大力开发,所以等到了API15的时候,NFC的传输速度就得到了很大的加强
如果你有支持NFC的手机,你打开后盖,你看看到一块薄薄的东西,这就是NFC标,标签的种类也是种类繁多,功能野人参参不齐,有的只能读写,有的却能上天,而在Android SDK 中定义的NFC标准被称为NDEF(数据交换格式)
Android SDK中有三种NDEF数据的操作
上篇也简单的说了这个机制
不管原生的如何支持,就像Android一样,依旧有一个独特的要求,比如我们存储的数据需要任意的,这就要我们自己定义数据,这也叫做非NDEF数据,这些数据其实就是普通的字节流罢了
两个终端设备要想读写数据,会有个短暂配对的时间,数据接收端会根据具体的数据格式和标签类型调用相应的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,则什么都不做,这里有个图,实际上上篇结尾的时候我也提到过,只是没讲这么细
这里指定一个实例
Tag要调用的一个activity,而且指定机制和数据类型
ndroid:minSdkVersion="14"
当我们了解了这些基本的知识之后,我们就可以编写NFC的软件了,准备一部有NFC功能的手机,然后等待我们的下一篇