前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android NFC简介 博客分类: Android android nfc 近场通信

Android NFC简介 博客分类: Android android nfc 近场通信

作者头像
chroya
发布2018-10-31 17:51:23
1.7K0
发布2018-10-31 17:51:23
举报
文章被收录于专栏:封碎

目录:

Android NFC . 1

1 简介 ... 1

1.1 什么是 NFC . 1

1.2 Android 上的 NFC . 2

1.3 Android 中的 NFC 通讯机制 ... 2

2 用法 ... 3

2.1 读取 tag . 3

2.2 发送消息 ... 5

2.2.1 发送过程 ... 5

2.2.2 NDEF 消息格式 ... 6

1 简介

1.1 什么是 NFC

近场通讯 (Near Filed Communication) 技术是一种近距离的高频无线通信技术, 通常距离是4 厘米或更短。 NFC 工作频率是 13.56M Hz, 传输速率是 106kbit/s 到 848kbit/s. NFC 总是在一个发起者和一个被动目标之间发生。发起者发出近场无线电波,这个近场可以给被动目标供电。这些被动的目标包括不需要电源的标签,卡,也可以是有电源的设备。

与其他无线通信技术比较, 例如蓝牙和 WiFi , NFC 提供更低贷款和距离,并且低成本,不需要供电,不需要实现匹配,整个通信过程仅仅是短短的靠近一秒就能完成。

1.2 Android 上的 NFC

Android 在Android 2.3(API Level 9) 中首次增加了对NFC 的支持,但是只能读取tag ,有很多不完善的地方。在Level 10 中增加了对tag 的写,不过构造和解析消息都是需要自己来处理。

后来的Android 4.0 ICS(API Level 14) 中全面提升了NFC 的功能,支持两台NFC 手机的相互通信,并且封装了方便的消息构造和解析接口。

Android 提供了三种级别的NFC 消息:

Ø android.nfc.action.NDEF_DISCOVERED : 由应用程序构造的NDEF (NFC Data Exchange Format :NFC 数据交换格式)消息。

Ø android.nfc.action.TECH_DISCOVERED : 现有的标准NFC 协议构造的消息。

Ø android.nfc.action.TAG_DISCOVERED :不符合前面两种格式的消息。

1.3 Android 中的 NFC 通讯机制

首先应用程序向系统注册感兴趣的Intent ,当系统的NFC 服务收到一条tag 之后,会打开合适的应用并传递Intent 。如果同时有N 个应用都对这个tag 感兴趣,并且都不在前台,则系统会弹出选择列表让用户选择,如果其中某个应用在前台,则系统直接将Intent 投递到此应用。具体如何注册见后面的用法。

2 用法

2.1 读取 tag

首先,必须在manifest 中申明NFC 的权限和feature :

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

< uses-feature android:name = "android.hardware.nfc" />

如果应用必须拥有NFC 的手机才能安装,则在 uses-feature 中加上属性 android:required = "true"方便marekt 过滤。

然后注册感兴趣的Intent 。

u NDEF 格式的消息

?

这里的data 指定了感兴趣的数据类型和格式,系统会自动过滤出符合条件的Intent 。上面这个data 表示只接受纯文本的数据。如果只接受 http://www.qq.com 这个网址,则data 定义如下:

?

注意,这个类型 < category android:name = "android.intent.category.DEFAULT" /> 要加上。

u TECH 格式的消息

?

meta-data 中的resource 指定了对使用了哪些技术的tag 感兴趣。filter_nfc.xml 的内容如下:

?

这里是将所有的tech 标准都放到里面了,实际使用的时候不应如此,应该取一个或多个子集。这里关于tech 列表的子集定义还有一些规范,网上可以查到,就不赘述。

u TAG 格式的消息

?

如此,则所有没有被捕获的Intent 就会发送到这里来,算是各种未知NFC 数据的集散地。

Tag 分发系统流程图如下:

?
2.2 发送消息
2.2.1 发送过程

首先取得一个NFCAdapter ,一般是使用默认的:

?

三个发送消息相关的API :

Ø public void setNdefPushMessage (NdefMessage message, Activity activity, Activity... activities)

设置NDEF 消息。API 文档上说这个方法设置之后不需要让用户操作,设备靠近会自行发出,但是经过尝试发现不行,也许是有什么没注意到的地方。

Ø public void setNdefPushMessageCallback (NfcAdapter.CreateNdefMessageCallback callback, Activity activity, Activity... activities)

设置NDEF 消息的构造器,每次构造消息都会调用callback 的createNdefMessage 方法获取NDEF 消息。

Ø public void setOnNdefPushCompleteCallback (NfcAdapter.OnNdefPushCompleteCallback callback, Activity activity, Activity... activities)

设置NDEF 消息发送完毕之后的回调接口。

2.2.2 NDEF 消息格式

一个NdefMessage 对象是由N 个NdefRecord 组成,NdefRecord 可以根据自己的需要去定义里面的内容,不过如果要构造公共的标准NdefRecord ,就需要查阅API 文档了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2012-08-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 简介
    • 1.1 什么是 NFC
      • 1.2 Android 上的 NFC
        • 1.3 Android 中的 NFC 通讯机制
        • 2 用法
          • 2.1 读取 tag
            • 2.2 发送消息
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档