Android近场通信---高级NFC(一)

news/2025/3/27 23:56:05/

本文译自:http://developer.android.com/guide/topics/connectivity/nfc/advanced-nfc.html

本文介绍一些高级的NFC专题,如多样的NFC标签技术、编写NFC标签、以及前台调度,前台调度允许在前台的应用程序优先调度Intent事件,即使还有其他的过滤同样的Intent事件的应用程序存在。

Android所支持的NFC标签技术

在使用NFC标签和Android设备来进行工作的时候,使用的读写NFC标签上数据的主要格式是NDEF。当设备扫描到带有NDEF的数据时,Android会提供对消息解析的支持,并在可能的时候,会以NdefMessage对象的形式来发送它。但是,有些情况下,设备扫描到的NFC标签没有包含NDEF数据,或者该NDEF数据没有被映射到MIME类型或URI。在这些情况下,你需要打开跟NFC标签的通信,并用自己的协议(原始的字节形式)来读写它。Android用android.nfc.tech包提供了对这些情况的一般性支持,这个包在下表1中介绍。你能够使用getTechList()方法来判断NFC标签所支持的的技术,并且用android.nfc.tech提供的一个类来创建对应的TagTechnology对象。

表1.NFC标签所支持的技术

介绍

TagTechnology

所有的NFC标签技术类必须实现的接口。

NfcA

提供对NFC-A(ISO 14443-3A)属性和I/O操作的访问。

NfcB

提供对NFC-B(ISO 14443-3B)属性和I/O操作的访问。

NfcF

提供对NFC-F(ISO 6319-4)属性和I/O操作的访问。

NfcV

提供对NFC-V(ISO 15693)属性和I/O操作的访问。

IsoDep

提供对NFC-A(ISO 14443-4)属性和I/O操作的访问。

Ndef

提供对NDEF格式的NFC标签上的NDEF数据和操作的访问。

NdefFormatable

提供了对可以被NDEF格式化的NFC标签的格式化操作。

表2.可选的NFC标签所支持的技术

介绍

MifareClassic

如果Android设备支持MIFARE,那么它提供了对经典的MIFARE类型标签属性和I/O操作的访问。

MifareUltralight

如果Android设备支持MIFARE,那么它提供了对超薄的MIFARE类型标签属性和I/O操作的访问。

 

NFC标签和ACTION_TECH_DISCOVERED类型的Intent协同工作

当设备扫描到带有NDEF数据的NFC标签,但却不能映射到MIME或URI时,NFC标签调度系统就尝试使用ACTION_TECH_DISCOVERED类型的Intent来启动一个Activity。在被扫描到的NFC标签上没有NDEF数据时,也会使用ACTION_TECH_DISCOVERED类型的Intent。有了这种回退机制,如果调度系统不能够帮你解析数据,那么你就可以直接使用NFC标签上数据来工作。基本步骤如下:

1. 给你希望处理的NFC标签指定ACTION_TECH_DISCOVERED类型的Intent过滤器。更多信息请看“NFC的Intent过滤”。通常,在NDEF消息不能被映射到MIME类型或URI时,或者被扫描到的NFC标签不包含NDEF数据时,NFC标签调度系统会尝试启动一个ACTION_TECH_DISCOVERED类型的Intent。更多信息,请看“NFC标签调度系统”。

2. 应用程序接收到Intent对象时,从该Intent对象中获取Tag对象:

Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

3. 通过调用android.nfc.tech包中对应类的一个get工厂方法,来获取一个TagTechnology对象实例。在调用get工厂方法之前,通过调用getTechList()方法来枚举NFC标签所支持的技术。例如,用下列方法从Tag对象中获取MifareUltralight对象实例:

MifareUltralight.get(intent.getParcelableExtra(NfcAdapter.EXTRA_TAG));

http://www.ppmy.cn/news/436368.html

相关文章

PN532读写卡器(支持NFC、RFID)

简介:一个基于PN532的RFID读写器,可以读写M1、UID、CUID、FUID、带NFC功能的手环、手机等,门禁卡解决方案的不二之选。 经作者允许,转载自PN532读写卡器(支持NFC、RFID) - 嘉立创EDA开源硬件平台 开源协议…

Android MTK支持哪些NFC芯片 M

前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net 雨季o莫忧离:http://blog.csdn.net/luckkof 正文 目前MTK支持的NFC芯片有两颗&am…

nfc pm3 模拟加密门禁卡_关于如何用PM3将有密门禁卡写入支持NFC的手机

手上正好有个Proxmark3,网上搜了很久,没找到怎么玩,自己摸索了一下,供大家参考。此方法只针对IC卡,ID卡好像不支持,并且有局限性,读卡机验证信息多的话,会被识破,这部分放…

矩阵卷积之边缘计算

目录 note code test note code // 不扩充边缘的矩阵卷积,输出矩阵和输入矩阵一样大 void MyMatConvolute2(Mat& src, Mat& kernel, Mat& res) {if (src.type() ! CV_8UC1) {return;}if ((kernel.type() ! CV_8UC1) || (kernel.rows ! kernel.cols) …

2020年最新款 GPU 选择建议-助你选择最合适你的 GPU

最优(SOTA)的深度学习模型往往需要占用巨大内存。许多GPU通常没有足够的VRAM来存储并训练这些模型。 在这篇文章中,将对现有不同型号的GPU进行测试,给出在不超过它们显存的条件下,可以支持训练SOTA的语言/图像模型大小进行测试;还…

某达摄像头的漏洞挖掘经历

目录 前言 串口获取shell 分析 总结 转载地址 前言 在看了一位师傅的关于摄像头的文章之后,我也心血来潮找了一款摄像头(某达最新款CP7)固件去挖一下练练手。 串口获取shell 拿到摄像头拆下来之后尝试了一波串口获取shell。

解决M1处理器安装Pr闪退问题 Adobe Premiere 2020 Mac M1优化稳定版(支持最新款M1芯片Mac)

苹果公司最新发布的基于M1芯片的Mac笔记本电脑应该很多小伙伴都入手了,但是最新的Mac由于采用的是基于ARM架构的核心,对很多基于Intel(英特尔)处理器的老款mac的软件应用兼容不太好,导致很多现有软件安装好后无法运行&…

2020年最新款GPU选择建议-助你选择最合适你的GPU

最优(SOTA)的深度学习模型往往需要占用巨大内存。许多GPU通常没有足够的VRAM来存储并训练这些模型。 在这篇文章中,将对现有不同型号的GPU进行测试,给出在不超过它们显存的条件下,可以支持训练SOTA的语言/图像模型大小进行测试;还…