NFC 基础

本文档介绍了在Android上的基本的NFC任务。它说明了如何发送和接收的NDEF消息(NDEF messages)的形式的表单里包含的NFC数据(NFC data),并介绍Android框架里支持这些功能的API。对于更高级的主题,包括与非NDEF数据的讨论,请参阅高级NFC。

当使用NDEF 数据和Android时,有两个主要的使用场景:

•从一个NFC 标签里读取NDEF 数据

•使用 Android Beam™ 快速传输Beaming NDEF messages从一台设备到另一台

<__译者注:__Android Beam__是__android__系统的一个传输套件,对于具有__NFC__设备的手机,可通过该功能在两台手机之间传输联系人图片等数据,使用方法也很简单,将两个手机背靠背,这时候位于上面的手机会提示你“敲击屏幕即可穿数据__”>

从一个NFC tag里读取NDEF data 将会经过 tag dispatch system,分析被发现的NFC标签,进行适当的数据归类,并启动一个对该分类的数据感兴趣的应用程序。那些想要处理被扫描到的NFC标签的应用程序可以声明一个意图过滤器(declare an intent filter ),并要求处理这些数据。

Android Beam™功能,它允许通过轻轻敲击设备的方式,推送一个NDEF message从一台设备到另一台设备上。这种相互作用提供了一个简单的方法来发送数据,比其它无线技术,比如蓝牙,因为有了NFC,不再需要手动设置发现或配对(_译者注:蓝牙需要设置搜索设备和配对_)。当两个设备进入范围内(_译者注:__NFC__要求在几厘米内_),自动启动连接。 Android Beam可通过一组NFC API被使用,因此,任何应用都可以在设备之间传输信息。例如,联系人,浏览器和YouTube应用程序使用Android Beam与其他设备共享联系人,网页和视频。

标签分发系统 (The Tag Dispatch System)


Android的设备通常是在屏幕解锁的时候寻找NFC标签,除非在设置菜单中禁用了NFC设备。当Android手机发现了一个NFC标签,所希望的行为是最适当的activity来处理它,而不是要求用户选择处理它的应用程序。因为设备扫描NFC标签,在很短的范围内,它很可能导致当用户手动选择(处理该tag的应用)时强行移动设备远离标签而断开连接。您最好让你开发的应用程序仅仅关注您制定的NFC标签,以防止用户手动选择处理的活动的页面出现。

为了帮助你实现这个目标,Android提供了一个特殊的标签分发系统,它会分析被扫描到的NFC标签,解析他们,并试图定位到对这个被扫描到的标签感兴趣的应用程序。这是通过:

1。解析NFC标签和搞清楚MIME类型,或者被包含在标签中的有标记的一个URI。

2。先封装MIME类型或URI,在装入一个intent内。前两个步骤中描述了NFC标签是如何映射到MIME类型和URI的。

3。使用封装好的intent启动应用程序。这是描述如何将NFC标签分派到对其感兴趣的应用程序。

<_译者注:__android_ _的标签分发系统做了下面一些事情:解析标签里的数据,并装入__intent__内,并启动关注该类型的标签的应用程序_>

NFC 标签是如何被映射到 MIME 类型和URIs

NFC标签是如何映射到MIME类型和URI

在你开始写你的NFC应用之前,重要的是要了解不同类型的NFC标签,标签分发系统如何解析NFC标签,当它(标签分发系统)检测到一个NDEF消息后如何分发到应用程序。NFC标签是一种比较广泛的技术(_译者注:标签的种类样式多_),也有许多不同的数据写入方式。 Android最大化的支持NDEF标准,它是由NFC论坛(NFC Forum.)定义的。

NDEF数据被封装一个消息(NdefMessage)的内部,一个消息包含一个或多个的记录(NdefRecord)。每个NDEF记录必须是格式有效的,符合规范的。当然,你的NDEF记录也可以符合你创建的类型的规范。 Android还支持其他不包含NDEF数据的标签,您可以通过使用包含在android.nfc.tech包的类来实现它。要了解有关这些技术的更多信息,请参见高级NFC主题。工作涉及到编写自己的协议栈与这些其他类型的标签进行通信,因此我们建议在可能易于开发的情况下使用NDEF和采用Android的设备的最大支持。

注意:要下载完整的NDEF规格,请到NFC Forum Specification Download 页面下载和查看 《创建一般类型的NDEF记录Creating common types of NDEF records 》寻找如何建设NDEF记录的示例。

现在,你有NFC标签的一些背景知识,下面的章节更详细描述了Android是如何处理NDEF格式的标签的。当Android手机扫描一个包含了NDEF格式数据的NFC标签,解析消息,并试图找出数据的MIME类型或标识URI。要做到这一点,系统读取Ndef Message里面的第一个NdefRecord,以确定如何解释整个NDEF消息(NDEF消息可以包含多个NDEF记录)。在一个格式良好的NDEF消息中,第一个NdefRecord包含以下字段:

3-bit TNF (Type Name Format)  - 类型名格式

指示如何解释变量长度类型字段。有效的值记载在表1中描述的。

变量长度类型

描述记录类型。如果使用TNF_WELL_KNOWN,使用此字段指定的记录类型定义(RTD)。有效的RTD值描述于表2中。

变量长度ID

记录的唯一标识符。此字段不经常使用,但如果您需要一个具有唯一标识的标签,你可以创建一个ID来这么做。

变量长度的有效载荷

要读取或写入的实际数据负载。 一个NDEF消息可以包含多个NDEF记录,所以不要以为全部负载存在于这个NDEF消息的第一条NDEF纪录内。

更多相关文章

  1. 协程 Flow 最佳实践 | 基于 Android(安卓)开发者峰会应用
  2. 物联网温湿度显示控制项目(网页、Android双端显示&搭载linux平台
  3. android连接小票打印机,打印小票数据的两种模式
  4. Android(安卓)系统(102)---Android(安卓)APP耗电优化
  5. Android、iOS 市场份额下降?“奇怪数据”背后的原因
  6. 使用MVP+Retrofit+RxJava实现的的Android(安卓)Demo (上)使用Nuclu
  7. 51 信用卡管家 Android(安卓)客户端内部数据库文件可被盗取
  8. Android平台上四种保存数据的方法
  9. Android(Java)加载SO文件

随机推荐

  1. Android(安卓)NestedScrollView嵌套Recyc
  2. Android(安卓)app 权限
  3. Android布局 android:gravity 和 android
  4. Android(安卓)studio黑科技
  5. Android 应用程序快速启动的秘诀
  6. Android(安卓)UI设计
  7. android中的SVG图像的各个属性意义
  8. T-Mobile G3是华为的android
  9. 从源码看Android常用的数据结构 ( SDK23
  10. 《Android 手机程序设计实用教程》PDF版