其他分享
首页 > 其他分享> > Android开发之深入理解NFC(一)

Android开发之深入理解NFC(一)

作者:互联网

NFC(Near field communication,近场通信)也叫做近距离无线通信技术。

从原理来说,NFC和wifi类似,二者都利用无线射频技术来实现设备之间的通信。

但是,和WIFI相比,NFC的工作频率为13.55Hz,有效距离为4cm,支持的传输速率有106kps、212kps和424kps三种。

1 NFC基础知识

1.1 NFC概述

NFC融合了三条主要的数据发展路线

NFC的技术框架

由图可知。

从用户角度(即Application层之上)来看,NFC有三种运行模式(operation mode)。

Reader/write模式:简称R/W,和NFC Tag/NFC Reader相关

Peer-to-Peer模式:简称P2P,它支持两个NFC设备交互。

NFC Card Emulation模式:简称CE,它能把携带NFC功能的设备模拟成Smart Card,这样就能实现诸如手机支付、门禁卡之类的功能。

1.2NFC R/W运行模式

NFC Forum定义了四种类型的Tag,分别为Type1,Type2,Type3和Type4.

NFC Forum定义了两个通用的数据结构用于NFC Device之间(包括R/W模式中的NFC Reader和NFC Tag)传递数据。这两个通用数据结构分别为NFC Data Exchange Format(NDEF)以及NFC Record

NFC四种不同类型的Tag有何区别

虽然NFC Tag有四种不同类型,但为了保证最大兼容性,NFC Forum建议NFC设备之间尽量使用通用数据结构NDEF和NFC Record来交换信息。

NFC R/W 模式涉及的规范较多,包括:

  1. NDEF和NFC Record

      (1)NDEF和NFC Record之间的关系

NFC设备之间每一次交互的数据都会封装在一个NDEF Message中,而一个NDEF Message可以包含多个NFC Record,真正的数据则封装在NFC Record中。

在一个NDEF Message中,第一个NFC Record需要设置其MB位(Message Begin)为1,表示它是该消息中第一个NFC Record,最后一个NFC Record需设置ME位(Message End)位为1,表示它是此消息中最后一个NFC Record。

NFC Record分为NFC Record Header(头部信息)和Payload(数据载荷)两大部分。

Record Header 中最重要的是其第一字节。该字节有6个标志信息,分别为

  (2)TNF和RTD

  TNF用于描述一个NFC Record中数据(Payload)的类型,NFC Forum规定了一些常用的数据类型。

      

  在TNF七大类型中,NFC Forum通过RTD规范定义了其中的WKT(Well-KnownType)和External Type两种类型。

  简单来说,WKT就是NFC Forum自己定义的一些常用数据类型,目前常用类型如下。

  URI Record Type:用于存储URI数据,对于Type字段取值为“U”

  Text Record Type:用于存储文本数据,对于Type字段取值为”T”

  Signature Record Type:用于存储数字签名数据,对于Type字段取值为“Sig”

  Smart Poster Record Type:智能海报,用于存储与该海报相关的一些咨询信息,如图片、相关介绍等,对于Type字段取值为”Sp”。

  Generic Control Record Type:用于传递控制信息,对于Type字段取值为“Ge”

  External Type:为第三方组织定义的类型,目前NFC Forum没有定义相关的数据类型

2.NFC Record实例

(1)URI Record Type

URI Record Type属于NFC Forum Well-known Type的一种,其对应的Type字段取值为“U”

对于这种类型的NFC Record,其Payload组织结构

 

在URI Record Payload中,第一个字节指明URI的ID码

像http://www.nfc.com这样的信息该如何封装为一个NDEF消息

由于该NDEF消息只包含一个NFC Record,所以这个唯一的NFC Record将设置MB和ME标志位为1,由于数据量小于255字节,所以SR标志位为1.最后,该Record携带的数据属于URI类型,它为Well-Known Type 的一种,所以TNF 取值为0x01.

Type Length字段取值为0x01,对应的Type字段取值为”U”,代表URI Record Type

URI Record的介绍,这种类型Record的Payload包含ID Code和data两个部分。

ID Code取值为0x01占据1字节(代表”http://www”),而data为”nfc.com”占据7个字节,所以整个Payload长度为8字节,故Payload length字段取值为0x08.

当应用程序获取Payload信息后,将根据ID Code和Data的取值最终计算出对应的URI为http://www.nfc.com

(2)Text Record Type实例

携带“Hello World”字符串信息的NDEF消息各字段的取值情况。

至此NFC R/W运行模式介绍完毕。在R/W模式下,对应用程序而言最重要的工作就是解析NDEF消息。NFC Forum定义了七种数据类型,其中内容比较丰富的属于NFC Forum Well Known Type。

标签:NFC,Forum,URI,Record,深入,Android,Type,Payload
来源: https://www.cnblogs.com/jiftle/p/16508357.html