Android NFC开发(一)——初探NFC,了解当前前沿技术

Android NFC开发(一)——初探NFC,了解当前前沿技术



官方文档:http://developer.android.com/guide/topics/connectivity/nfc/index.html

我们根据Google的官方文档来

一.什么是NFC

NFC(Near Field Communication 近场通讯),他是当前逐渐火起来的一种技术,在以前,好像还一直不冷不热的样子,现在好像是块要爆发了,所以我们搞Android开发的感觉强撸了一把,随我来学习一下NFC的技术

二.NFC与WIFI,Bluetooth,红外线的差异

这些都是可以做数据传输的,但是差异最大的还是体现在有效距离上了,这里不能超过4CM

三.NFC的工作模式

  • 读卡器模式(Reader/Witer Mode)
  • 仿真卡模式(Card Emulation Mode)
  • 点对点模式(P2P Mode)

四.读卡器模式(Reader/Witer Mode)

我们从某个支持NFC功能的媒介上读取相关数据

五.-仿真卡模式(Card Emulation Mode)

这也是运用比较广泛的,我们可以把手机刷公交,地铁之类的
功能就是这个模式,其原理就是将相应IC卡中的信息(支付凭证)封装成数据包存储起来,使用的时候NFC有个射频器,有设备靠近的时候,就会验证,读写,并且进行相应的处理,比如开门,支付什么的。

六.点对点模式(P2P Mode)

这个模式跟wifi热点有点类似,距离很短,两部设备连接起来可以共享数据,传输速度非常的快,而且如果两部手机都是Android4.2,NFC传输会直接利用蓝牙传输,这种技术称为Android Beam ,所以使用Android Beam传输数据的两部设备不再局限性在4CM内了

7.差异

图片借用了某网站哈

8.如何NFC标签被映射到MIME类型和URI

你开始写你的NFC应用之前,必须了解不同类型的NFC标签是很重要的,标签调度系统如何解析NFC标签和特殊的工作,当它检测到NDEF消息的标记调度系统一样。NFC标签来在广泛的技术和还可以有许多不同的方式写入到其中的数据。机器人具有用于NDEF标准

NDEF数据被封装的消息(内部NdefMessage),其中包含一个或多个记录(NdefRecord)。每个NDEF记录必须根据您要创建的记录类型的规格良好的。Android版 ​​还支持其它类型的标签不包含NDEF的数据,您可以通过在使用类的工作android.nfc.tech包。要了解更多有关这些技术,请参阅高级NFC主题。这些其他类型的标签工作包括编写你自己的协议栈与标签进行通信,因此,我们建议使用NDEF在可能的情况,便于开发和最大支持Android的供电设备。

注意: 要下载完整NDEF的规格,请访问NFC论坛规范下载网站,看到 创建常见类型的NDEF记录了如何构建NDEF记录的例子。

现在,你有NFC标签的背景,下面的章节详细描述了Android的如何处理NDEF格式化的标签。当一个Android设备扫描包含NDEF格式的数据的NFC标签,它解析该消息并试图找出数据的MIME类型或标识的URI。要做到这一点,系统读取所述第一NdefRecord内侧NdefMessage以确定如何解释整个NDEF消息(一个NDEF消息可以有多个NDEF记录)。在一个结构良好的NDEF消息,第一NdefRecord 包含以下字段:

3-bit TNF (Type Name Format)

指示如何解释可变长度类型字段

Variable length type

描述了记录的类型。如果使用TNF_WELL_KNOWN,使用此字段指定记录类型定义(RTD)

Variable length payload

要读取或写入的实际数据的有效载荷。一个NDEF消息可以包含多个NDEF记录,所以不承担全部有效载荷在NDEF消息的第一NDEF纪录。

标签调度系统使用3-bit TNF (Type Name Format)和类型字段来尝试映射MIME类型或URI的NDEF消息。如果成功,它封装了一个内部的信息ACTION_NDEF_DISCOVERED与实际载荷一起意图。不过,也有当标签调度系统不能确定数据的基础上,第一个NDEF记录中的类型的情况。这种情况发生在NDEF数据不能被映射到一个MIME类型或URI,或当NFC标签不包含NDEF数据开始。在这种情况下,一个标签具有关于标签的技术和有效载荷信息对象被封装一个的内部ACTION_TECH_DISCOVERED意图代替。

表1描述了标签调度系统如何TNF和类型字段映射到MIME类型或URI的。它也描述了TNFs不能被映射到一个MIME类型或URI。在这些情况下,标签调度系统回落到 ACTION_TECH_DISCOVERED。

例如,如果标签调度系统遇到类型的记录TNF_ABSOLUTE_URI,它映射该记录成URI的可变长度类型字段。标签调度系统封装该URI在一个数据字段ACTION_NDEF_DISCOVERED意图提供关于标签的其他信息,例如有效载荷沿。在另一方面,如果遇到类型的记录TNF_UNKNOWN,它会创建一个封装标签的技术,而不是意图。

9.如何NFC标签被分派到应用程序

当标签调度系统做创建封装NFC标签和识别信息的意图,它发出的意图,对于意图过滤感兴趣的应用程序。如果有多个应用程序可以处理的意图,提出活动选配,以便用户可以选择的活动。标签调度系统定义了三个意图,这是在最高的顺序列出来最低优先级:

  • ACTION_NDEF_DISCOVERED:此意图是用来启动一个活动时,它包含一个NDEF净荷标签的扫描和是一个公认的类型。这是最高优先级的意图,并且标签调度系统尝试尽可能任何其他意图,之前启动这一意图的活动。
  • ACTION_TECH_DISCOVERED:如果没有活动登记办理
  • ACTION_TAG_DISCOVERED:如果没有活动处理这一意图开始-
  • ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED 意图。

标签调度系统工作的基本方法如下:

  • 尝试启动与由标签调度系统解析NFC标签(或时创建的意图一个Activity ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED)。
  • 如果这一意图没有活动过滤器,尝试启动下一个优先级最低的意图(可以是活动ACTION_TECH_DISCOVERED或ACTION_TAG_DISCOVERED),直到意图或直至标签调度系统中的应用程序过滤器尝试所有可能的目的。
  • 如果没有应用程序筛选任何意图的,什么也不做。

只要有可能,以NDEF消息和工作ACTION_NDEF_DISCOVERED意图,因为它是最特定出的三个。此意向,您可以在比其他两个意图更适当的时间启动应用程序,给用户更好的体验。

简介先讲到这里,后面就开始实战了,又不懂的可以翻越官方文档:http://developer.android.com/guide/topics/connectivity/nfc/nfc.html

时间: 2024-09-27 21:15:54

Android NFC开发(一)——初探NFC,了解当前前沿技术的相关文章

android模拟器开发和测试nfc应用实例详解_Android

从Android2.3开始支持NFC.不过NFC应用只能在Android手机(或平板电脑)上测试和开发,而且Android手机还必须有NFC芯 片.而且如果测试NFC传输文件时至少需要两部支持NFC的手机.当然,如果测试读写NFC标签,还需要一些NFC标签或帖子.而且NFC在模拟器上时不能运行的.所以从这一点来说,NFC开发需要更多的设备,比较麻烦.这也蓝牙.传感器是一样的.都不能在Android模拟器上开发和测试.真不知道Google为什么不解决这一问题. 不过这种问题也不是不能解决,而且并不

android模拟器开发和测试nfc应用实例详解

从Android2.3开始支持NFC.不过NFC应用只能在Android手机(或平板电脑)上测试和开发,而且Android手机还必须有NFC芯 片.而且如果测试NFC传输文件时至少需要两部支持NFC的手机.当然,如果测试读写NFC标签,还需要一些NFC标签或帖子.而且NFC在模拟器上时不能运行的.所以从这一点来说,NFC开发需要更多的设备,比较麻烦.这也蓝牙.传感器是一样的.都不能在Android模拟器上开发和测试.真不知道Google为什么不解决这一问题. 不过这种问题也不是不能解决,而且并不

Android NFC开发(二)——Android世界里的NFC所具备的条件以及使用方法

Android NFC开发(二)--Android世界里的NFC所具备的条件以及使用方法 NFC的应用比较广泛,而且知识面也是比较广的,所以就多啰嗦了几句,我还还是得跟着官方文档:http://developer.android.com/guide/topics/connectivity/nfc/index.html来,看这篇的同学可以先大概的了解一下Android NFC开发(一)--初探NFC,了解当前前沿技术 1.Android NFC的历史 真要说起来,NFC在Android上,也是从A

Android NFC开发实战

对于Android 4.0 SDK中提供的Beam例子,对于NFC开发来说的确是一个不错的模板.对于了解NFC的NDEF消息处理过程不妨看下面的代码. public class Beam extends Activity implements CreateNdefMessageCallback, OnNdefPushCompleteCallback { NfcAdapter mNfcAdapter; TextView mInfoText; private static final int MES

android nfc-andorid NFC开发问题 在有第三方NFC应用时,检测到NFC标签时自动选择我的NFC应用

问题描述 andorid NFC开发问题 在有第三方NFC应用时,检测到NFC标签时自动选择我的NFC应用 最近在搞android NFC应用开发,我把输入的文本写入NFC标签后,请问在有第三方NFC应用程序的情况下,在手机桌面检测到NFC标签后能自动弹出一个弹出框显示NFC标签里的文本,而不需要选择NFC程序.请有这方面经验的大神指点下.

《Android NFC开发实战详解》——6.4节Android NFC P2P开发进阶

6.4 Android NFC P2P开发进阶 Android NFC开发实战详解 本节将介绍Android API 16+中引入的针对NFC P2P功能开发的新功能--文件传输进行介绍.该功能包括setBeamPushUrisCallback和setBeamPushUris两个方法.通过本节的介绍,大家可以结合NFC和蓝牙或WiFi很轻松的实现Android设备之间大数据(如图片.音乐等)的传输. 6.4.1 Beam实现文件传输的方法 Android4.1(Jelly Bean,Androi

《Android NFC开发实战详解》——6.2节Android NFC P2P开发基础

6.2 Android NFC P2P开发基础 Android NFC开发实战详解 本节主要介绍Android NFC P2P开发中的一些基础知识,为后续的实例开发提供基础.通过本章的学习,使读者熟悉Android中Beam实现的几种方式,Beam NDEF消息和接收Beam消息的方法,同时也会对第4章中提到的Intent过滤机制在P2P中的使用进行阐述. 6.2.1 Android Beam实现的几种方式 在Android中,目前,Beam功能实现的方式可以概括为三种,分别为setNdefPu

《Android NFC开发实战详解》——6.5节本章小结

6.5 本章小结Android NFC开发实战详解本章为大家介绍了Android NFC中P2P功能的详细开发过程.其中,包含各种API函数的介绍以及使用,以及Android Beam的概念及其消息接收(BNM)和发送(RBM)的方法.同时,本章还结合开发具体的实例进行了详细阐述.相信读者通过本章的学习,结合NDEF消息格式的理解以及NFC论坛定义的相关协议的学习,在Android设备上开发任何P2P或Beam功能的APP将会游刃有余.

用Android模拟器也可以开发和测试NFC应用

       从Android2.3开始支持NFC.不过NFC应用只能在Android手机(或平板电脑)上测试和开发,而且Android手机还必须有NFC芯片.而且如果测试NFC传输文件时至少需要两部支持NFC的手机.当然,如果测试读写NFC标签,还需要一些NFC标签或帖子.而且NFC在模拟器上时不能运行的.所以从这一点来说,NFC开发需要更多的设备,比较麻烦.这也蓝牙.传感器是一样的.都不能在Android模拟器上开发和测试.真不知道Google为什么不解决这一问题.        不过这种问