Android 初识NFC以及简单的使用第二节

前言:上一节讲了Android中NFC的一些概念和基本知识,以及NFC传输数据的格式,最后讲了举了一个给NFC标签中写入微信包名,然后通过用标签靠近手机自动打开微信的功能,本节将继续强化NFC的概念以及更深层次的理解,最后附上上一节的链接:https://blog.youkuaiyun.com/helloworld19870427/article/details/86020306

一、NFC基础

1、从NFC标签中读取NDEF数据是用标签调度系统来处理的,它会分析被发现的NFC标签,对数据进行适当的分类,并启动对该类数据感兴趣的应用程序。想要处理被扫描到NFC标签的应用程序会声明一个Intent过滤器,并请求处理数据。

 Android Beam功能允许设备把一个NDEF消息推送到物理/硬件上相互监听的另一个设备上。这种交互提供了比其他无线技术(如蓝牙)更容易的发送数据的方法。因为NFC不需要手动的设备发现或配对要求,两个设备在接近到一定范围时会自动的连接。Android Beam通过一组NFC API来使用,以便应用程序能够在设备之间来传输信息。例如,通信录、浏览器以及YouTube等应用程序都使用Android Beam来跟其他设备共享通信录、网页和视频,如果数据过大,Android Beam底层会通过蓝牙来传输。

2、NFC标签调度系统(The Tag Dispatch System)

通常是在设备的设置菜单中NFC开关被关闭,否则Android设备会在非锁屏的状态下搜索NFC,当Android设备发现NFC标签时,期望的行为是用最合适的Activity来处理该Intent,而不是询问用户使用什么应用程序。因为设备只能在很短的范围内扫描到NFC标签,强制的让用户手动的选择一个Activity,会导致设备离开NFC标签,从而中断该连接,你应该开发你自己的Activity来处理你所关心的NFC标签,从而阻止选择器的操作。为了帮助你达到这个目标,Android提供了特殊的标签调度系统,来分析扫描到的NFC标签,通过解析数据,在被扫描到的数据中尝试找到感兴趣的应用程序,具体做法如下:

(1)解析NFC标签并搞清楚标签中标识数据负载的MIME类型或URI

(2)把MIME类型或URI以及数据负载封装到一个Intent中

(3)基于Intent来启动Activity

NDEF数据格式:NFC Data Exchange Format,NFC数据交换格式,NFC组织约定的NFC tag中的数据格式,NDEF是轻量级的紧凑的二进制格式,可带有URL、vCard和NFC滇南桂的各种数据类型。

NDEF数据被封装在一个NdefMessage中,该消息包含了一条或者多条NdefRecord,Android也支持其他不包含NDEF数据类型的标签,你能够使用android.nfc.tech包中的类来工作,要使用其他类型标签来工作涉及到编写自己的跟该标签通信的协议栈,因此我们还是使用NDEF比较好,不要给自己增加额外的难度。

3、NDEF格式标签的读写:

我们可以通过Tag对象的getTechList()获取到标签的技术类型,只有支持NDEF格式的标签才可以进行NDEF格式的读写操作。

读写NDEF格式标签主要有两个类:

NdefMessage:描述NDEF格式的信息,实际上我们写入NFC标签的就是NdefMessage对象。

NdefRecord:描述NDEF信息的一个信息段,一个NdefMessage可能包含一个或者多个NdefRecord。

获取Ndef对象: Ndef ndef = Ndef.get(mTag);

创建NdefRecord,Android为我们提供了创建NdefRecord的方法,是我们可以轻松创建一个NdefRecord对象

  • NdefRecord.createApplicationRecord(String packageName) // 写入一个包名
  • NdefRecord.createUri(Uri uri)     // 写入Uri对象
  • NdefRecord.createUri(String uriString)   // 写入uriString
  • NdefRecord.createTextRecord(String languageCode, String text)  // 写入文本

NdefRecord.createTextRecord(String languageCode, String text)最小兼容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值