Android的近场通信
NFC近场通信技术

NFC近场通信技术与应用引言NFC(Near Field Communication, 近场通信)技术在世界范畴内受到注重。
NFC 由非接触式射频辨认(RFID)及互联互通技术整合演变而来,在单一芯片上结合感应式读卡器、感应式卡片和点对点旳功能, 能在短距离内与兼容设备进行辨认和数据互换。
这项技术最初只是RFID技术和网络技术旳简朴合并, 目前已经演变成一种短距离无线通信技术, 发展态势相称迅速。
1.NFC技术原则随着短距离无线数据业务迅速膨胀, NFC于4月被批准为国际原则。
NFC技术符合ECMA 340与ETSI TS 102 190 V1.1.1以及ISO/IEC 18092原则。
这些原则具体规定了物理层和数据链路层旳构成, 具体涉及NFC设备旳工作模式、传播速度、调制方案、编码等, 以及积极与被动NFC模式初始化过程中, 数据冲突控制机制所需旳初始化方案和条件。
此外, 这些原则还定义了传播合同, 其中涉及合同启动和数据互换措施等。
原则规定NFC技术支持三种不同旳应用模式:(1)卡模式(犹如FeliCa和ISO14443A/MIFARE卡旳通信);(2)读写模式(对FeliCa或ISO14443A卡旳读写);(3)NFC模式(NFC芯片间旳通信)。
原则规定了NFC旳工作频率是13.56MHz, 数据传播速度可以选择106kb/s、212kb/s或者424kb/s, 在连接NFC后还可切换其他高速通信方式。
传播速度取决于工作距离, 工作距离最远可为20厘米, 在大多数应用中, 实际工作距离不会超过10厘米。
原则中对于NFC高速传播(>424kb/s)旳调制目前还没有作出具体旳规定, 在低速传播时都采用了ASK 调制, 但对于不同旳传播速率具体旳调制参数是不同旳。
原则规定了NFC编码技术涉及信源编码和纠错编码两部分。
不同旳应用模式相应旳信源编码旳规则也不同样。
对于模式1, 信源编码旳规则类似于密勒(Miller)码。
NFC技术概述课件

被动模式
移动设备主要以被动模式操作,可以大幅降低功耗,并延长电池 寿命。
主动模式
工作模式
N F C 工作模 式
卡模式 点对点 读卡器
• 类似IC卡,保存了ID • 需要刷卡、验票场合 • 通过读卡器供电 • 手机没电不影响
• 和蓝牙、红外似 • 数据交换、短距离 • 速度快、功耗低 • 不同种类设备间交换 • 声音、图片、视频
• 一台标准的读卡器 • 读取其他NFC标签 • 写入其他NFC设备
卡模式
NFC设备模拟成一张非接触卡
卡模式应用实例-电子钱包
应用实例-门禁系统
读卡器模式
与其他无线通信技术的比较
红外要求设备在30°锥角内,且不能移动,NFC比红外建 立连接更快操作更便捷
与蓝牙相比。蓝牙适用于较长距离,比较大量的数据通信, NFC适用于交换财务信息或敏感的个人信息等重要数据。 NFC和蓝牙可以互为补充,共同存在。
事实上,快捷轻型的NFC协议可以用于引导两台设备之间的蓝牙配 对过程。
RFID
互联 网络
NFC
NFC在单一芯片上结合了感应式读卡器、感应式卡片和点对 点的功能,能在短距离内与兼容设备进行识别和数据交换。
技术规格
频段: 13.56MHZ
通讯距离: 约10厘米
标准规格: 符合国际标准化组织的ISO18092、 ISO21481 标准, 兼容现有非接触智能卡ISO14443标准
传输速度: ◎106kbps、212kbps、424kbps等三种(被动) ◎846kbps、1695kbps… (主动)
NFC与RFID
RFID阅读器通过天线与RFID电子标签进行无线通信,可 以实现对标签识别码和内存数据的读出或写入操作
基于Android的移动端物联网开发技术研究

基于Android的移动端物联网开发技术研究移动端物联网是近年来最为热门的领域之一,它将多种设备、网络和技术集成在一起,使设备之间能够进行信息共享与交互。
作为移动端物联网发展最为成熟的操作系统,Android在物联网领域的应用和发展上已占据了重要地位。
在这篇文章中,我们将探讨基于Android的移动端物联网开发技术,以了解它的应用和发展趋势。
一、Android系统与物联网Android系统最初由Google公司于2005年推出,是一款基于Linux内核的移动操作系统。
随着智能手机和平板电脑的不断普及,Android系统成为最流行的移动操作系统,目前在全球市场的占有率超过80%。
而Android系统在物联网领域的应用与发展也越来越广泛。
在物联网中,设备可以通过WiFi、蓝牙或其他无线通信技术与互联网连接,从而实现数据共享和交互。
针对这种需求,Android系统提供了一系列的API,使设备能够轻松连接互联网、获取传感器数据、控制外部设备等。
这些API包括网络连接API、传感器API、蓝牙API、NFC(近场通讯)API等等,为开发人员提供了广泛的选择。
二、Android平台的物联网应用基于Android的物联网应用包括但不限于以下几个方面:1.家庭自动化在家庭自动化领域,人们可以使用Android设备控制灯光、温度、音乐等设备。
例如,使用一个能够通过WiFi连接的智能插头,用户可以通过Android应用控制某个插座的电源开关,从而实现对插入该插头的电器进行远程控制。
同时,利用传感器API与云端数据分析,还可以实现自动调节室温、调整照明强度以及触发警报等功能。
2. 智能交通在智能交通领域,人们可以利用Android设备实现车辆管理和交通管理。
例如,使用一个基于Android的车载终端,可以实现行车记录仪、导航系统、雷达探测器、语音识别等功能。
利用蓝牙和NFC技术,还可以实现车辆识别和电子支付等功能。
3.医疗保健在医疗保健领域,人们可以利用Android设备监测健康状况、远程诊断和治疗等。
一种基于声波的近场通信系统设计方法

一种基于声波的近场通信系统设计方法竟振明;黄世震;李宏意【摘要】为了避开复杂的电磁环境干扰,降低通信的成本,使用声波作为载体进行通信是一种很好的选择.运用JNI编程方式结合OFDM调制方式,再辅以一个特定的正弦波生成函数,设计出了一款可以运行在Android智能手机平台上的声波近场通信系统.实验结果表明,系统在收发双方的距离不超过50 cm时,误码率为零.由此可见,系统在近距离通信时的准确率是可以得到保证的,而且不会受到外界电磁环境的干扰.【期刊名称】《电气开关》【年(卷),期】2019(057)004【总页数】5页(P14-18)【关键词】通信;声波;RS码;调制【作者】竟振明;黄世震;李宏意【作者单位】福州大学物理与信息工程学院,福建福州 350108;福州大学物理与信息工程学院,福建福州 350108;福州大学物理与信息工程学院,福建福州350108【正文语种】中文【中图分类】TN921 引言当今社会随着通信技术的快速发展和智能手机的广泛普及,即时通讯技术早已经根深在了人们的生活和工作中,许多即时通讯技术都是以电磁波作为载体依赖网络进行通信的,如微信和QQ,但是有些地域是没有网络普及的,还有些特殊的工作场合如核电站是不能、不允许使用网络的。
以声波为载体的近场通信技术可以应用在没有网络的地域和场合。
近场通信技术早已经应用在了许多领域中。
而今典型的近场通信技术有红外线传输技术[1]、蓝牙技术[2]、射频识别技术[3]、近距离无线通讯技术(NFC)[4]。
这些通信技术中蓝牙传输技术和NFC技术都需要有相应的硬件支持,另外蓝牙传输技术在进行通信时还需要事先建立好连接,这一过程降低了通信时的效率。
基于声波的近场通信技术是一种以声波作为载体可以分别进行点对点和点对多两种通信模式的技术。
声波近场通信技术相比于其他几种近场通信技术具有成本低、安全性好、不需要特定硬件支持的优势。
目前该通信技术在电子商务和移动支付等领域已经得到了应用。
99%的人都不知道的NFC知识!都在这篇科普里了

99%的人都不知道的NFC知识!都在这篇科普里了NFC在手机上出现,已经过去11个年头了。
但即便如此,大多数人看到NFC还是懵逼的。
NFC作为一个可玩可用的功能,无论大家是用来代替各种卡片,还是作为闲聊装逼的谈资,还是很有必要和大家全面地介绍一下的。
PS:全文6700字,阅读耗时10-15分钟历史与技术基础第一部搭载NFC的手机诺基亚6131在2006年发布,第一台支持NFC的安卓手机则是2010年发布的Nexus S。
2012年底,国产旗舰开始慢慢搭载NFC,苹果阵营则是在2014的iPhone 6开始搭载,而国内在2016年开始运营的Apple Pay、三星智付、华为/小米支付等服务,算是NFC这么多年来最大规模的应用。
NFC全称Near Field Communication(近场通信),从RFID和互连技术演变而来,在2003年由飞利浦和索尼联合研发。
2004年他们和诺基亚创立了用于建立和推广NFC技术标准的NFC Forum协会。
时至今日,中移动、华为中兴、小米魅族、vivo、OPPO等厂商都已经是NFC Forum的成员。
•技术特性与优势:NFC工作于13.56MHz,最大传输速度只有424kbit/s,有效传数据率距离只有10cm左右(实际上公交卡和手机的NFC距离一般连5cm都不到),但它的优点是不需要麻烦的配对过程,就能直接读取和交换数据,可以理解为是用传输距离“换”耗电和安全性的互联技术。
此外,NFC还有绝群的配对速度,配对速度小于0.1ms(可以提升体验和安全性),作为对比蓝牙大约是6秒,红外需要0.5秒左右。
NFC标签、公交卡/门禁卡等被读的对象,通过线圈感应生电产生的电力驱动,所以无需电池,体型和重量都可以做得很小。
而即便是工作在读卡器,因为射频工作距离很短,其所需的电量也很低,常开的电量消耗也远比蓝牙要低。
•硬件组成:NFC硬件部分由CLF(非接前端模块)、射频天线、SE(Secure Element安全区域)三部分构成。
android各版本的差别

Android 1.0第一版商用操作系统Android1.1更新了部分API,新增一些功能,修正了一些错误,同时增加com.google.android.maps包Android 1.5智能虚拟键盘使用widgets实现桌面个性化在线文件夹(Live Folder)快速浏览在线数据视频录制和分享图片上传更快的标准兼容浏览器V oice search 语音搜索立体声蓝牙和免提电话Android 1.6完全重新设计的Android Market,可以显示更多的屏幕截图手势支持,可以让开发者生成针对某个应用程序的手势库支持CDMA网络:中国电信的用户可以期待EVDO的Android手机了TXT-2-Speech,支持了更多语言的发音,包括英语、法语、德语、意大利语等快速搜索框,可直接搜索括联系人,音乐,浏览历史,书签等手机内容全新的拍照界面:新版相机程序启动速度快了39%,拍照间的延迟减少了28%应用程序耗电查看:这下好了,哪个软件耗多少电,现在一见了然了新增面向视觉或听觉困难人群的易用性插件Linux内核升级到2.6.29其他:支持更多的屏幕分辨率,如WVGA,QVGA等Android 2.0由于文件结构的改动优化,使得整个操作流畅性得到了很大的提升自带的Chrome Lite浏览器现在加入了对双击屏幕进行缩放的支持加强了网络社交功能,比如Facebook好友整合至联系人功能强化了语音识别的搜索控制。
整个系统多处都支持语音控制,并拥有独立的控制面板谷歌地图服务更新,加入了全新的导航系统,甚至比转业的导航软件更为先进加入了原生微软Exchange邮件服务支持提供了多个不同帐户,统一的邮件收件箱只需双击就能上传图片至YouTube优化了驾车时的体验,新的“Car Home”应用程序为各功能提供了易于操作的快捷链接,还能方便地使用语音控制功能,便于用户驾车时使用Android 2.1可以同时绑定多个Google账号无线控件里有了VPN设置增加了连接到PC设置增强了语言和声音的转换功能,并加入了文字到语音转换全新的拨号界面,按键更大,更易于操作更多桌面Widget新的Google地图可以使用谷歌地图导航功能新的浏览器版本,加强了稳定性和网页渲染能力全局搜索功能加强全新的Market程序,搜索更快布局更合理Android 2.2全面支持Flash10.1应用程序自动升级,让升级更加人性化支持应用程序安装在外置内存上Linux内核将升级为最新的2.6.32版本,系统更加稳定对系统性能进一步优化,让手机有更多的运行内存增加了轨迹球LED指示灯变色这个新功能增加了对3D性能的优化,3D性能更加强大FM功能也将在新系统中得到全面支持Android 2.3用户界面更美观提升游戏体验提升多媒体能力增加官方进程管理改善电源管理NFC近场通信全局下载管理全新虚拟键盘原生支持前置前置摄像头SIP网络电话Android3.0-3.1:安卓3.0系统主要用于安卓的平板产品,画面动感,可操控性更强,代表有摩托罗拉的平板产品XOOM,3.1也已经发布,也主要用于平板产品。
网络通信的六种方式示例代码
手机作为一种通讯终端(MMS),伴随着网络的升级而不断的升级换代。
1995年1G问世,手机只能进行基本的语音通讯,1996-1997年2G(GSM,CDMA)及其后的GPRS,EDGE等技术的快速发展,手机开始逐渐增加了数据服务功能。
2009年开始,3G在全世界开始大规模布置以及苹果创造性开发新型苹果手机。
手机慢慢的变成互联网的终端,从而带动了一个新的时代--移动互联网时代。
因此现代手机通常都支持这些常用网络设备,如WIFI,NFC,蓝牙等。
Android是由互联网巨头Google带头开发的,因此对网络功能的支持是必不可少的。
Google 的应用层采用的是Java语言。
所以JAVA支持的网络编程方式Android都支持,同时Google 还引入了Apache 的HTTP扩展包。
另外,针对WIFI,NFC,分别提供的单独的开发API.表1展示了Android SDK中的一些与网络有关的API包名表1. Android SDK 网络包包描述 API Level 提供与联网有关的类,包括流和数据包(datagram)sockets、Internet 协议和常见HTTP 处理。
该包是一个多功能网络资源。
有经验的Java 开发人员可以立即使用这个熟悉的包创建应用程序。
1java.io 虽然没有提供显式的联网功能,但是仍然非常重要。
该包中的类由其他Java 包中提供的socket 和连接使用。
它们还用于与本地文件(在与网络进行交互时会经常出现)的交互 1java.nio 包含表示特定数据类型的缓冲区的类。
适合用于两个基于Java 语言的端点之间的通信。
1org.apache.* 表示许多为HTTP 通信提供精确控制和功能的包。
可以将Apache 视为流行的开源Web 服务器。
1 除核心.* 类以外,包含额外的网络访问socket。
该包包括URI 类,后者频繁用于Android 应用程序开发,而不仅仅是传统的联网方面。
云计算技术下的物联网近场通信研究
云计算技术下的物联网近场通信研究随着云计算技术的发展和物联网的普及,近场通信(NFC)技术在物联网领域中被广泛应用。
本文主要探讨了云计算技术下物联网中NFC技术的研究现状、应用场景以及未来发展方向。
一、NFC技术的概述NFC是指近场通信技术,它是一种短距离的、非接触式的通信技术。
NFC技术广泛应用于支付、门禁、物流、智能家居等领域。
NFC技术基于无线电频率识别技术(RFID),其通讯距离一般为4厘米以内。
二、云计算技术下NFC技术的应用1.物流管理物流管理是物联网中的一个重要应用场景,通过NFC技术,物流公司可以轻松地跟踪货物的运输状态,快速了解货物的位置以及运输过程中可能出现的问题。
NFC技术也可以应用于仓库管理,可以轻松地识别和跟踪存储产品,同时提高库存管理的精确度。
2.智能家居智能家居是另一个重要应用场景,在智能家居设备中,NFC技术被广泛应用于门禁、智能家居控制、智能家电控制等方面。
通过NFC技术,用户可以轻松地实现一键开关智能家居设备的功能,同时也能够实现门禁和智能家电的远程控制。
3.移动支付移动支付是NFC技术的另一个重要应用场景。
通过NFC技术,消费者可以使用移动设备完成支付,无需刷卡或输入密码。
NFC技术极大地简化了消费者的支付流程,提高了支付的安全性和效率。
三、云计算技术下NFC技术的研究现状目前,云计算技术下NFC技术的研究主要集中在以下几个方面:1.安全性NFC技术在移动支付等场景中的广泛应用,对其安全性提出了更高的要求。
云计算技术可以通过提供更加安全的存储和处理能力,提高NFC技术的安全性。
2.大数据分析NFC技术在物流管理等场景中的应用,可以产生大量的数据,这些数据可以通过云计算技术进行收集、存储和分析,提高物流的效率和精度。
3.多模式数据交互云计算技术可以为NFC技术提供灵活的数据处理和交互方式,支持多种不同的数据交互模式,为NFC技术的运用提供更大的应用空间。
四、云计算技术下NFC技术的未来发展方向1.结合5G技术5G技术的应用将为物联网和NFC技术的应用提供更快、更安全、更智能的网络环境,同时也将为物联网和NFC技术的应用带来更大的应用场景和业务模式。
移动支付很美好 但基于SE、HCE的NFC支付的安全更加重要
在商场,挑选完商品后的下一个动作是什么?“付钱啦!”没错!在挑选完商品后,我们需要拿出钱包、打开、掏钱、支付,或者拿出钱包、打开、取出信用卡、刷卡支付,再或者拿出手机、刷手机支付。
美好的移动支付!美好的移动支付?等下,手机?刷手机支付?没错,确切的说,是刷具有NFC功能的智能移动设备——智能手机、智能手环、智能手表等等。
NFC,Near Field Communication,也就是所谓的“近场通信”,是一种短距高频的无线电技术。
百度百科上对NFC的解读是“由非接触式射频识别(RFID)及互联互通技术整合演变而来,在单一芯片上结合感应式读卡器、感应式卡片和点对点的功能,能在短距离内与兼容设备进行识别和数据交换。
”其实,使用拥有NFC功能的手机进行移动支付早已不是什么新鲜事儿了。
在日本,NFC 移动支付产业就获得了很大的成功,对于很多日本人来说,手机就是他们的钱包。
去商场,刷手机买衣服;到影院,刷手机买门票;在餐厅,刷手机来买单……刷、我刷、刷刷刷——没钱了!这意味着你的手机钱包被刷爆了,但也可能是你手机钱包里的钱被人给偷光了。
移动支付很美好,移动支付的安全更头疼。
实现近场支付的软硬双模式如今的移动支付(近场支付)主要通过两种不同的卡模拟方式来实现支付,即SE方式和HCE方式。
安全模块SE(Secure Element)是一种基于硬件的卡模拟方式,能够提供对敏感信息的安全存储,并为交易事务提供一个安全的执行环境。
NFC芯片将从外部读写器接收到的命令转发到SE,SE进行处理后,再通过NFC控制器回复。
HCE(Host-based Card Emulation),即基于主机的卡模拟方式。
HCE方式不需要SE安全模块,由在手机中运行的一个应用或云端的服务器完成SE的功能,也就是说NFC 芯片所接收到的数据会由操作系统发送至手机应用里,或者通过移动网络发送至云端服务器中来完成交互。
无论是本机应用还是云端服务器都绕过了手机内置SE的限制。
电子信息工程领域的近场通信技术研究与应用
电子信息工程领域的近场通信技术研究与应用近年来,随着科技的飞速发展,电子信息工程领域的近场通信技术备受关注。
近场通信技术是一种无线通信技术,可以在短距离内实现高速数据传输和设备之间的互联互通。
本文将从近场通信技术的原理、应用领域以及未来发展趋势等方面进行探讨。
首先,我们来了解一下近场通信技术的原理。
近场通信技术主要基于电磁感应原理,通过无线电波的传输和接收来实现设备之间的通信。
与传统的远场通信技术相比,近场通信技术具有传输距离短、传输速率高、抗干扰能力强等优势。
它可以通过近距离的电磁波传输,实现设备之间的数据传输和通信,无需物理连接线,极大地方便了人们的生活和工作。
近场通信技术在各个领域都有广泛的应用。
首先,它在智能手机领域有着重要的应用。
近场通信技术可以实现智能手机与其他设备之间的互联互通,例如通过近场通信可以实现手机与电视、电脑等设备之间的数据传输和共享。
此外,近场通信技术还可以用于移动支付,用户只需将手机靠近POS机即可完成支付,不仅方便快捷,而且更加安全可靠。
其次,近场通信技术在物联网领域也有着广泛的应用。
物联网是指通过互联网将各种设备和物体连接起来,实现信息的交互和共享。
近场通信技术可以实现物联网设备之间的互联互通,例如智能家居中的各种设备可以通过近场通信技术实现互联互通,实现智能化控制和管理。
此外,近场通信技术还可以应用于智能交通系统、智能医疗设备等领域,提升设备之间的协同工作效率。
近场通信技术的发展前景十分广阔。
随着5G技术的不断发展,近场通信技术将得到更加广泛的应用。
5G技术将会大幅提升无线通信的速度和稳定性,为近场通信技术的发展提供了更好的基础。
未来,近场通信技术将会在更多的领域得到应用,例如智能家居、智能城市等领域,为人们的生活带来更多的便利。
总结起来,电子信息工程领域的近场通信技术是一项备受关注的无线通信技术。
它基于电磁感应原理,可以在短距离内实现设备之间的高速数据传输和互联互通。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android的近场通信NFCAndroid的近场通信---NFC概要近场通信(NFC)是一个短范围无线技术集合,通常需要4厘米或更短的距离才能初始化连接。
NFC允许在NFC标签和Android设备之间或两个Android设备之间共享小的数据的负载。
NFC标签具有复杂的分类。
简单的NFC标签只提供读写语法,某些时候一次只能以只读的方式读取卡片的可编程区域。
复杂一点的NFC标签提供了数学运算能力,而且有加密的硬件来认证对一个扇区的访问。
最复杂的NFC标签包含了运算环境,允许在标签上执行复杂的交互代码。
存储在标签中的数据也可以用各种格式来编写,但是大多数的Android框架API都使用基于NDEF(NFC Data Exchange Format)的标准。
Android近场通信---NFC基础本文介绍在Android系通过你所能执行的基本任务。它解释了如何用NDEF消息格式来发送和接收NFC数据,并且介绍了支持这些功能的Android框架API。有关更高级的话题,包括对非NDEF格式数据的讨论,情况“高级NFC”NDEF数据和Android一起工作的场景主要有两个:1. 从NFC标签中读取NDEF数据;2. 把NDEF消息从一个设备发送给另一个设备。从NFC标签中读取NDEF数据是用标签调度系统来处理的,它会分析被发现的NFC标签,对数据进行适当的分类,并启动对该类数据感兴趣的应用程序。想要处理被扫描到NFC标签的应用程序会声明一个Intent过滤器,并请求处理数据。Android Beam™功能允许设备把一个NDEF消息推送到物理上相互监听的另一个设备上。这种交互提供了比其他无线技术(如蓝牙)更容易的发送数据的方法。因为NFC不需要手动的设备发现或配对要求。两个设备在接近到一定范围时会自动的连接。Android Beam通过一组NFC API来使用,以便应用程序能够在设备之间来传输信息。例如,通信录、浏览器以及YouTube等应用程序都使用Android Beam来跟其他设备共享通信录、网页和视频。NFC标签调度系统通常,除非是在设备的设置菜单中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。怎样把NFC标签映射到MIME类型和URI开始编写NFC应用程序之前,重要的是要理解不同类型的NFC标签、标签调度系统是如何解析NFC标签的、以及在检测到NDEF消息时,标签调度系统所做的特定的工作等。NFC标签涉及到广泛的技术,并且有很多不同的方法向标签中写入数据。Android支持由NFC Forum 所定义的NDEF标准。NDEF数据被封装在一个消息(NdefMessage)中,该消息中包含了一条或多条记录(NdefRecord)。每个NDEF记录必须具有良好的你想要创建的记录类型的规范的格式。Android也支持其他的不包含NDEF数据类型的标签,你能够使用android.nfc.tech包中的类来工作。要使用其他类型标签来工作,涉及到编写自己的跟该标签通信的协议栈,因此我们建议你尽可能的使用NDEF,以便减少开发难度,并且最大化的支持Android设备。注意:要下载完整的NDEF规范,请去“NFC论坛规范下载”网址来下载。现在,你已经具备了一些NFC标签的背景知识,接下来要详细的介绍Android是如何处理NDEF格式的标签的。当Android设备扫描到包含NDEF格式数据的NFC标签时,它会解析该消息,并尝试搞清楚数据的MIME类型或URI标识。首先系统会读取消息(NdefMessage)中的第一条NdefRecord,来判断如何解释整个NDEF消息(一个NDEF消息能够有多条NDEF记录)。在格式良好的NDEF消息中,第一条NdefRecord包含以下字段信息:3-bit TNF(类型名称格式)指示如何解释可变长度类型字段,在下表1中介绍有效值。可变长度类型说明记录的类型,如果使用TNF_WELL_KNOWN,那么则使用这个字段来指定记录的类型定义(RTD)。在下表2中定义了有效的RTD值。可变长度ID唯一标识该记录。这个字段不经常使用,但是,如果需要唯一的标识一个标记,那么就可以为该字段创建一个ID。可变长度负载你想读/写的实际的数据负载。一个NDEF消息能够包含多个NDEF记录,因此不要以为在NDEF消息的第一条NDEF记录中包含了所有的负载。标签调度系统使用TNF和类型字段来尝试把MIME类型或URI映射到NDEF消息中。如果成功,它会把信息跟实际的负载一起封装到ACTION_NEDF_DISCOVERED类型的Intent中。但是,会有标签调度系统不能根据第一条NDEF记录来判断数据类型的情况,这样就会有NDEF数据不能被映射到MIME类型或URI,或者是NFC标签没有包含NDEF开始数据的情况发生。在这种情况下,就会用一个标签技术信息相关的Tag对象和封装在ACTION_TECH_DISCOVERED类型Intent对象内部的负载来代替。表1.介绍标签调度系统映射如何把TNF和类型字段映射到MIME型或URI上。同时也介绍了那种类型的TNF不能被映射到MIME类型或URI上。这种情况下,标签调度系统会退化到ACTION_TECH_DISCOVERED类型的Intent对象。例如,如果标签调度系统遇到一个TNF_ABSOLUTE_URI类型的记录,它会把这个记录的可变长度类型字段映射到一个URI中。标签调度系统会把这个URI跟其他相关的标签的信息(如数据负载)一起封装到ACTION_NDEF_DISCOVERED的Intent对象中。在另一方面,如果遇到了TNF_UNKNOWN类型,它会创建一个封装了标签技术信息的Intent对象来代替。表1.所支持的TNF和它们的映射类型名称格式(TNF)映射TNF_ABSOLUTE_URI基于类型字段的URITNF_EMPTY退化到ACTION_TECH_DISCOVERED类型的Intent对象TNF_EXTERNAL_TYPE基于类型字段中URN的URI。URN是缩短的格式(<domain_name>:<service_name)被编码到NDEF类型中。Android会把这个URN映射成以下格式的URI:vnd.android.nfc://ext/<domain_name>:<service_name>。TNF_MIME_MEDIA基于类型字段的MIME类型TNF_UNCHANGED退化到ACTION_TECH_DISCOVERED类型的Intent对象TNF_UNKNOWN退化到ACTION_TECH_DISCOVERED类型的Intent对象TNF_WELL_KNOWN依赖你在类型字段中设置的记录类型定义(RTD)的MIME类型或URI,表2.TNF_WELL_KNOWN所支持的RTD和它们的映射记录类型定义(RTD)映射RTD_ALTERNATIVE_CARRIER退化到ACTION_TECH_DISCOVERED类型的Intent对象RTD_HANDOVER_CARRIER退化到ACTION_TECH_DISCOVERED类型的Intent对象RTD_HANDOVER_REQUEST退化到ACTION_TECH_DISCOVERED类型的Intent对象RTD_HANDOVER_SELECT退化到ACTION_TECH_DISCOVERED类型的Intent对象RTD_SMART_POSTER基于负载解析的URIRTD_TEXT text/plain类型的MIMERTD_URI基于有效负载的URI应用程序如何调度NFC标签当标签调度系统完成对NFC标签和它的标识信息封装的Intent对象的创建时,它会把该Intent对象发送给感兴趣的应用程序。
如果有多个应用程序能够处理该Intent对象,就会显示Activity选择器,让用户选择Activity。
标签调度系统定义了三种Intent对象,以下按照由高到低的优先级列出这三种Intent对象:1. ACTION_NDEF_DISCOVERED:这种Intent用于启动包含NDEF负载和已知类型的标签的Activity。
这是最高优先级的Intent,并且标签调度系统在任何其他Intent之前,都会尽可能的尝试使用这种类型的Intent来启动Activity。
2. ACTION_TECH_DISCOVERED:如果没有注册处理ACTION_NDEF_DISCOVERED类型的Intent的Activity,那么标签调度系统会尝试使用这种类型的Intent来启动应用程序。
如果被扫描到的标签包含了不能被映射到MIME类型或URI的NDEF数据,或者没有包含NDEF数据,但是是已知的标签技术,那么也会直接启动这种类型的Intent对象(而不是先启动ACTION_NDEF_DISCOVERED类型的Intent)3. ACTION_TAB_DISCOVERED:如果没有处理ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED类型Intent的Activity,就会启动这种类型的Intent。
标签调度系统的基本工作方法如下:1. 用解析NFC标签时由标签调度系统创建的Intent对象(ACTION_NDEF_DISCOVERED 或ACTION_TECH_DISCOVERED)来尝试启动Activity;2. 如果没有对应的处理Intent的Activity,那么就会尝试使用下一个优先级的Intent (ACTION_TECH_DISCOVERED或ACTION_TAG_DISCOVERED)来启动Activity,直到有对应的应用程序来处理这个Intent,或者是直到标签调度系统尝试了所有可能的Intent。