目录:
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
提供更低贷款和距离,并且低成本,不需要供电,不需要实现匹配,整个通信过程仅仅是短短的靠近一秒就能完成。
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
:不符合前面两种格式的消息。
首先应用程序向系统注册感兴趣的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
分发系统流程图如下:
首先取得一个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
消息发送完毕之后的回调接口。
一个NdefMessage
对象是由N
个NdefRecord
组成,NdefRecord
可以根据自己的需要去定义里面的内容,不过如果要构造公共的标准NdefRecord
,就需要查阅API
文档了。
简单的用法如下:
分享到:
相关推荐
Android NFC Tag ID 读取
android nfc开发的示例程序,可以根据自己需要自定义裁剪
主要包括Android NFC 系统层次架构,Code分布结构,code代码架构概括等等。
android nfc 开发demo
Android NFC读卡 高频卡 RFID 仅供参考,有需要这方面资料的可以联系我 961500278@qq.com
实现了NFC读取中国银卡借记卡的卡号 如果发现卡号不对,可以看log中HexResult是否包含银行卡卡号,我只是直接截取HexResult字符串中我的银行卡卡号所在的那个位置的字符串 有什么问题可以私聊我,我有空且能解答就会...
android nfc 动态注册识别,能做到指定页面进行识别,其余页面不识别
Android NFC开发实战详解
Android NFC 手机读取 标签UID的一个小代码 初学Android 和NFC 希望得到老手指教 和给同样是初学的小盆友一个参考
Android NFC 开发教程 NFC手机推出后,基于NFC的Android开发升温,银行卡、公交卡充值、余额查询等业务不断推出,开发NFC功能的Android程序也成为程序猿们的工作。
Android NFC 手机向标签写入一个URL的一个小代码 初学Android 和NFC 希望得到老手指教 和给同样是初学的小盆友一个参考
本工程根据google官方 提供的Android API实现了NFC编程,能实现对IC卡的写入、数据读取等操作,导入即可运行无需调试,代码简洁易于上手,欢迎NFC开发者下载学习,欢迎一同探讨NFC开发技术!
Android-NFC P2P学习源码,非常实用的~
Android NFC 开发实战详解 一书简介及目录 http://blog.csdn.net/zgzhaobo/article/details/21453941 http://www.cnblogs.com/skyseraph/p/3599172.html
android NFC 公交卡信息读取demo,可以正常编译和测试
android nfc读写公交卡,饭卡 android nfc读写公交卡,饭卡
android nfc 读取深圳通,显示余额和最近10次的消费记录,亲测试可以使用,欢迎大家下载使用
android,需要手机有NFC功能,可以读写M1卡,获得UID
android NFC 开发实例;NFC功能样例代码;NFC通讯实例
android nfc开发demo。本人在里面写了不少注释,还有经过几天开发,这个demo已经应用公司app。根据这个demo可以写很多版本的简化版。我的csdn博客地址:http://blog.csdn.net/qq_16064871。我在博客中还有nfc开发...