安卓手机APP开发__近距离无线通信(NFC)概述

2024-05-26 00:20

本文主要是介绍安卓手机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)概述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1003034

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

关于最长递增子序列问题概述

《关于最长递增子序列问题概述》本文详细介绍了最长递增子序列问题的定义及两种优化解法:贪心+二分查找和动态规划+状态压缩,贪心+二分查找时间复杂度为O(nlogn),通过维护一个有序的“尾巴”数组来高效... 一、最长递增子序列问题概述1. 问题定义给定一个整数序列,例如 nums = [10, 9, 2

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char