本文主要是介绍安卓手机APP开发__近距离无线通信(NFC)概述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
安卓手机APP开发__近距离无线通信(NFC)概述
概述
近距离无线通信 (NFC) 是一组近距离无线技术,距离通常不超过 4 厘米才能
发起连接。通过 NFC,您可以在 NFC 标签和 Android 设备之间,或两台 Android 设备之间共享较小的数据载荷。
标签的复杂度可能各有不同。简单的标记仅提供读取和写入语义,有时还具有
一次性可编程区域,使卡片变为只读。更复杂的标签可提供数学运算,并具有
加密硬件来对扇区访问进行身份验证。最复杂的代码都包含操作环境,允许与
代码上执行的代码进行复杂的互动。存储在标签中的数据也可以采用多种格式
编写,但许多 Android 框架 API 都基于名为 NDEF(NFC 数据交换格式)的
NFC Forum 标准。
具有 NFC 功能的 Android 设备同时支持三种主要操作模式:
读取器/写入器模式,允许 NFC 设备读取和写入被动 NFC 标签和贴纸。
点对点模式,允许 NFC 设备与其他 NFC 对等设备交换数据;Android Beam 使用此操作模式。
卡模拟模式,允许 NFC 设备本身充当 NFC 卡。然后,可通过外部 NFC
读取器(例如 NFC 销售终端)访问模拟 NFC 卡。
NFC 基础知识
将 NDEF 数据与 Android 结合使用时,会有两个主要用例:
从 NFC 标签读取 NDEF 数据
使用 Android BeamTM 将 NDEF 消息从一台设备传输到另一台设备
从 NFC 标签读取 NDEF 数据的操作由标签调度系统处理,该系统分析发现的 NFC 标签,对数据进行适当分类,然后启动对分类数据感兴趣的应用。想要处理扫描的 NFC 标签的应用可以声明 intent 过滤器并请求处理数据。
借助 Android BeamTM 功能,设备可以将 NDEF 消息推送到另一台设备,只需将两台设备实际靠在一起即可。与蓝牙等其他无线技术相比,这种互动提供了一种更简便的数据发送方式,因为使用 NFC 时无需手动发现或配对设备。当两部设备接近时,连接会自动开始。Android Beam 通过一组 NFC API 提供,因此任何应用都可以在设备之间传输信息。例如,通讯录、浏览器和 YouTube 应用使用 Android Beam 与其他设备共享联系人、网页和视频。
标签调度系统
Android 设备通常会在屏幕解锁时查找 NFC 标签,除非在设备的“设置”菜单中停用了 NFC 功能。当 Android 设备发现 NFC 标签时,期望的行为是让最合适的 activity 处理 intent,而无需询问用户要使用哪个应用。由于设备在非常短的范围内扫描 NFC 标签,因此让用户手动选择 activity 可能会迫使用户将设备从标签中移除并断开连接。您应将 activity 开发为仅处理 activity 关注的 NFC 标签,以防止 activity 选择器显示。
为了帮助您实现这一目标,Android 提供了一个特殊的标签调度系统,该系统可以分析扫描的 NFC 标签、解析这些标签,并尝试定位对扫描的数据感兴趣的应用。其实现方式如下:
解析 NFC 标签并确定 MIME 类型或 URI(用于标识标签中的数据载荷)。
将 MIME 类型或 URI 与负载一起封装到 Intent 中。NFC 标签如何映射到 MIME 类型和 URI 中介绍了前两个步骤。
根据 Intent 启动 Activity。如何将 NFC 标签分发到应用中介绍了这一点。
如何将 NFC 标签映射到 MIME 类型和 URI
在开始编写 NFC 应用之前,请务必先了解不同类型的 NFC 标签、标签调度系统如何解析 NFC 标签,以及标签调度系统在检测到 NDEF 消息时所做的特殊工作。NFC 标签涉及多种技术,也可以通过多种不同方式将数据写入 NFC 标签。Android 对 NFC Forum 定义的 NDEF 标准的支持最多。
NDEF 数据封装在包含一条或多条记录 (NdefRecord) 的消息 (NdefMessage) 中。每条 NDEF 记录的格式都必须正确,符合您要创建的记录类型的规范。Android 还支持其他类型的不包含 NDEF 数据的标签,您可以使用 android.nfc.tech 软件包中的类来处理这些标签。如需详细了解这些技术,请参阅高级 NFC 主题。在处理这些其他类型的标签时,您需要编写自己的协议堆栈来与这些标签进行通信,因此我们建议您尽可能使用 NDEF,以简化开发并最大限度地支持 Android 设备。
高级 NFC
本文档将介绍可使用 Android 支持的各种标签技术的 API。如果您不处理 NDEF 数据,或者当您处理 Android 无法完全理解的 NDEF 数据,则必须使用自己的协议堆栈手动读取或写入原始字节中的标签。在这些情况下,Android 支持检测某些标签技术,并使用您自己的协议堆栈开放与标签的通信。
使用支持的标签技术
处理 NFC 标签和 Android 设备时,用于读取和写入标签数据的主要格式是 NDEF。当设备扫描包含 NDEF 数据的标签时,Android 会尽可能支持解析消息并在 NdefMessage 中传递。不过,在某些情况下,您扫描的标签不包含 NDEF 数据,或者 NDEF 数据无法映射到 MIME 类型或 URI。在这些情况下,您需要直接开启与标签的通信,并使用您自己的协议(以原始字节形式)对其执行读写操作。Android 通过 android.nfc.tech 软件包对这些用例提供一般性支持,如表 1 中所述。您可以使用 getTechList() 方法确定标签支持的技术,并使用 android.nfc.tech 提供的类之一创建相应的 TagTechnology 对象
基于主机的卡模拟
许多提供 NFC 功能的 Android 设备已经支持 NFC 卡模拟。在大多数情况下,卡由设备中的一个单独的芯片(称为安全元件)模拟。无线运营商提供的许多 SIM 卡也包含安全元件。
Android 4.4 及更高版本提供了一种不涉及安全元件的额外卡模拟方法,称为“基于主机的卡模拟”。这样一来,任何 Android 应用都可以模拟卡并直接与 NFC 读取器通信。本主题介绍了基于主机的卡模拟 (HCE) 在 Android 上的工作原理,以及如何开发使用此技术模拟 NFC 卡的应用。
使用安全元件进行卡模拟
使用安全元件提供 NFC 卡模拟时,要模拟的卡会通过 Android 应用配置到设备上的安全元件中。然后,当用户将设备靠近 NFC 终端时,设备中的 NFC 控制器会将来自读取器的所有数据直接路由到安全元件。
这篇关于安卓手机APP开发__近距离无线通信(NFC)概述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!