安卓手机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

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问