简介
本文介绍Nokia设备所支持的近场通信技术(NFC)及相关的功能。旨在为使用 Qt/Symbian/Java™ API为Nokia手机开发应用的开发者,刚开始接触NFC开发时提供有用的信息。
什么是NFC?
NFC是Near Field Communication的缩写,即近场通信。这是一种短距离无线电技术,使得两台设备在接触或靠得很近时互相通信。
- NFC是一种开放平台技术,由NFC论坛标准化。
- NFC基于RFID的扩展。NFC工作在13.56 MHz的频率。
- NFC通信距离最大10cm。但是为了在Nokia手机上获得最佳用户体验,建议两台手机互相接触。
- NFC标准支持不同的数据传输率如 106 kBps, 212 kBps, 和424 kBps。
标签和读取器
两台设备进行基于NFC的通信时,可能是一台设备做为读/写者,另一个做为标签。
标签
标签是一个简单的薄薄的设备,包含一个天线和小容量的存储空间。标签是一个被动设备,由电磁场提供电力。标签的内存有只读、可擦写、只能写一次这些不同的类型。
读取器
读取器是一个主动设备,产生无线电信号与标签通信。在被动通信模式,当读取器与被动设备靠得很近时,读取器为被动设备提供电力。
NFC模式
通信模式
NFC设备支持两种通信模式。
主动模式
在这种模式,目标设备和发起通信设备都有动力,互相之间可以轮流传输信号。
被动模式
发起设备产生无线电信号,目标设备由这个信号的电磁场提供动力。目标设备通过调制电磁场回应发起设备。
操作模式
NFC可以运行在ISO/IEC 18092, NFC IP-1, 和ISO/IEC 14443三种无线智能卡标准下(contactless smart card standard)
读/写
在这种模式,开启NFC功能的手机可以读写任何支持的标签,读取其中的NFC数据格式标准的数据。
点对点
在这种模式下,两个NFC设备可以交换数据。 例如,你可以分享启动蓝牙或Wi-Fi连接的参数来启动蓝牙或Wi-Fi连接。你可以交换如虚拟名片或数字相片等数据。点对点模式符合ISO/IEC 18092标准。
注意:NFC的symbian实现现在支持建立蓝牙连接,还不支持Wi-Fi。Java实现还不支持点对点模式。
模拟卡片
支持NFC的手机在与标签交互时扮演读取器的角色。在这种模式手机也可做为标签或被读取的无线卡片。 注意:Symbian和Java实现还不支持这种模式。
NFC用例
本章我们来看看NFC的使用场景和案例
用于启动服务
在这种场景中,你可以使用带有NFC功能的Nokia手机触及NFC标签,接收URL,电话号,文本,然后可以用这些来定义启动某项服务所需要得信息。
智能海报是这种应用的例子,在智能海报背面贴上NFC标签,当带有NFC功能的Nokia手机触及NFC标签时,手机读取标签的信息,然后根据信息的种类,Nokia手机会打开一个视频流,或打开网页浏览器,或询问用户是否愿意拨打一个电话。
用于分享
带有NFC功能的手机可以在点对点模式下分享数据。例如,两台具有NFC的Nokia手机可以分享名片信息。当一个用户选择要分享的联系人信息后,手机向另一台手机在NFC无线范围内发送一个无线信号,另一台手机会识别NFC数据格式中包含的分享信息。
注意:分享不是通过NFC完成的。NFC会初始化蓝牙服务,分享实际是通过蓝牙完成的。
用于连接设备
NFC能帮助建立设备链接,而不需要任何配置或安装。例如,只需用带NFC的手机触及蓝牙耳机即可建立蓝牙配对。蓝牙耳机中内置一个NFC标签,其中有建立蓝牙配对所需要的所有信息,信息保存成NFC数据格式。这里手机扮演一个读取者的角色。
用于买票
带NFC的手机可以用于票务应用,作为车票可以替代传统物理车票。使用是手机接触读票器。用户,可以在售票机支付后,用手机接触售票机给手机票充值。这里NFC手机扮演卡片的角色,工作在模拟卡片模式。
要使用NFC手机作为旅行票,手机里必须有一个叫保密元素(secure element)的保密环境。保密环境运行票务应用,这里保存比如,剩余的旅行时间,或预付的旅程。
注意:票务用例目前不被Nokia手机支持。
用于支付
带NFC的手机可以像信用卡一样用于支付。 支付时,用户必须将手机与支付终端接触。这里NFC手机扮演一个卡片(带芯片的信用卡),支付终端是读取者,工作在模拟卡片模式。
NFC手机必须有保密元素,在其中像基于芯片的信用卡一样运行支付应用程序。
注意:支付用例目前不被Nokia手机支持。
NFC标签
NFC标签可以用在如海报的应用,记录少量信息提供给活动的NFC设备。储存的数据可以包括任何数据例如URL,电话号码或日历信息等。为了使不同NFC标签提供者和NFC设备制造商的产品相互协作,NFC论坛定义了四种标签。要查看目前Symbian和MeeGo 1.2支持的标签,请看‘NFC 标准和标签支持’。
NFC论坛标签种类
NFC 论坛是一个推广NFC技术的联盟,NFC论坛推出技术规范来保证设备和服务之间的配合,并为市场提供NFC技术培训。
在NFC论坛的技术规范网站http://www.nfc-forum.org/specs/spec_list/查看NFC论坛的标签种类。 标签的规范定义了实现 阅读器/擦写器的技术信息和相应的与之互动的NFC设备的控制功能
标签类型1
类型1标签比较便宜适合于多种NFC应用。
- 基于ISO-14443A标准
- 可读可重写,可配置成只读
- 96 byte内存,可扩展到2KB
- 传输速率 106kbits/s
- 没有数据冲突保护
- 市场上有兼容的产品 ———— Innovision Topaz, Broadcom BCM20203
NFC论坛设备如何操作类型1标签,如何发现,读取和写入NDEF数据(参看章节'NDEF')参看类型1标签操作规范:http://www.nfc-forum.org/specs/spec_list/
标签类型2
类型2与类型1类似,也是由NXP/Philips MIFARE Ultralight标签衍生而来的。
- 基于ISO-14443A标准
- 可读可重写,可配置成只读
- 传输速率 106kbits/s
- 支持数据冲突保护
- 市场上有兼容的产品 ———— NXP MIFARE Ultralight
标签类型3
类型3由索尼FeliCa标签的非保密部分衍生而来。比类型1,2的标签昂贵。
- 基于日本工业标准(JIS) X 6319-4
- 在生产时定义可读,可重写或只读的属性。
- 可变内存,每个服务最多1MB空间
- 支持两种传输速率: 212或424kbits/s
- 支持数据冲突保护
- 市场上有兼容的产品 ———— Sony FeliCa
标签类型4
类型4与类型1类似,是由NXP DESFire标签衍生而来的。
- 基于ISO-14443A标准
- 在生产时定义可读,可重写或只读的属性。
- 可变内存,每个服务最大32kB
- 支持三种传输速率: 106,212或424kbits/s
- 支持数据冲突保护
- 市场上有兼容的产品 ———— NXP DESFire, SmartMX-JCOP
NXP规范标签类型
这是由NXP半导体定义的私有标签类型。
MIFARE类型经典标签
- 基于ISO-14443A标准
- 可读可重写,可配置成只读
- 可变内存192/768/3584 bytes
- 传输速率 106kbits/s
- 支持数据冲突保护
- 市场上有兼容的产品 ———— NXP MIFARE Classic 1K, MIFARE Classic 4K, and Classic Mini
更多关于 MIFARE经典标签的信息请查看 NXP网站:http://www.nxp.com/.
NFC相关规范
更多关于Symbian和MeeGo 1.2 Harmattan平台支持的标准请看'NFC标准和支持的标签'一章。
ISO 14443
ISO 14443是著名的国际标准,原来是为非接触芯片卡片在13.56MHz无线电通信设计的。 ISO 14443 从无线层到命令协议定义了一个协议栈。 无线层ISO14443-2有两个版本,具有不同的调制和bit编码方法。称为A,B版。类似的,ISO 14443指定了两个版本的包框架和底层协议部分(ISO 14443-3)。 ISO协议栈的最高层定义了传输信息的命令接口(ISO 14443-4)。
NFCIP-1
两台NFC设备间的点到点通信是由近场通信--接口和协议规范,NFCIP-1定义的机制实现的。这个NFC关键规范也被称为ISO 18092和ECMA-340。
NFCIP-1的协议栈基于ISO 14443. 主要的不同是一个新的命令协议,替换了之前协议栈的最高层。
NFCIP-1 包括两个通信模块,使得NFC设备之间能工作在点对点的模式,也支持与基于NFCIP-1的NFC标签通信。
MIFARE
MIFARE 指由NXP半导体开发的NFC标签类型。MIFARE标签被广泛用于运输工具应用的内存卡。 ISO 14443定义了从无线层到命令协议的协议栈。
FeliCa
FeliCa是Sony公司开发的的专利NFC标签技术,被广泛用于专买支付和亚洲的运输工具应用。FeliCa标签也被集成在移动FeliCa系统的手机模型中。Felica标签属于日本的工业标准。标签基于被动模式的ISO 18902,带有额外的认证和加密功能。
NFC论坛标准
NDEF NFC数据交换格式
为实现标签和NFC设备,及NFC设备之间的交互通信,NFC论坛定义了称为NFC数据交换格式(NDEF)的通用数据格式。
NDEF是轻量级的紧凑的二进制格式,可带有URL,vCard和NFC定义的各种数据类型。
NDEF使得NFC的各种功能能容易的使用各种支持的标签类型传输数据,因为NDEF封装了标签的种类细节信息,使得应用不用关心与何种标签在通信。
NDEF交换的信息由一系列记录组成。每条记录包含一个有效载荷。自爱和内容可以似乎URL,MIME媒质,或NFC定义的数据类型。使用NFC定义的数据类型,载荷内容必须被定义在一个NFC记录类型定义(RTD)文件中。
记录中数据的类型和大小由记录载荷的头部注明。
头部包含,类型域用来指定载荷的类型。载荷的长度数的单位是字节(octet)。可选的指定载荷是否带有一个NDEF记录。
类型域的值由类型名字格式指定,请在NFC论坛网站http://www.nfc-forum.org/specs/spec_list/ 的NDEF技术规范的3.2.6章查看支持的类型及相应的TNF值。
RTD 记录类型定义
NFC论坛定义了几种优化的记录类型,用在NDEF记录中。每个NFC论坛记录类型定义在记录类型定义(RTD)文档中
NFC定义了一下RTD:
- NFC文本RTD
- NFC URI RTD
- NFC 智能海报 RTD
- NFC 通用控制 RTD
- NFC 签名 RTD
最简单的文本记录类型,可携带Unicode字符串。文本记录可包含在NDEF信息中作为另一条记录的描述文本。 URI记录类型可用于存储网站地址,邮件,和电话号码,存储成经过优化的二进制形式。
智能海报RTD第一了如何将,URL,短信或电话号码编入NFC论坛标签,及如何在设备间传递这些信息。
LLCP 逻辑链路控制协议
为加强点对点模式的操作,NFC论坛定义了一个链路级的协议称为逻辑链路控制协议(LLCP)。 在NFC点对点协议栈中,LLCP提供对NFCIP-1/ISO18092的额外支持。
LLCP提供两种链路层连接,都支持收发数据,使用下面的数据交换方法:
- 定向连接传输,这里数据交换是可知的
- 无连接传输,这里数据交换不可知
在Nokia手机中所使用NFC
Qt API
Qt NFC API包含在跨平台的Qt Mobility工程中。做为connectivity API的一部分,集成在Qt SDK中。
注意:截止本文发布时间,NFC API可能还处在技术预览阶段。
更多关于Qt Mobility API的NFC信息,请参阅 http://doc.qt.nokia.com/qtmobility-1.2.0-tp1/connectivity-api.html. Qt Mobility 信息请参阅 Qt Mobility 开发。
用例
Qt NFC API支持一下用例:
- 与NFC论坛标签和NFC论坛设备交互
- 目标发现和丢失
- 注册NDEF消息 handler
- 向NFC论坛标签读写NDEF消息
- 发送指定标签命令
- 用于点对点通信的客户端和服务器的LLCP socket连接
类
API | 描述 |
QLlcpServer | NFC LLCP 基于socket的服务器 |
QLlcpSocket | NFC LLCP socket |
QNdefFilter | 过滤符合条件的 NDEF 消息的过滤器 |
QNdefMessage | NFC NDEF 消息 |
QNdefNfcTextRecord | NFC 文本 RTD |
QNdefNfcUriRecord | NFC URI RTD |
QNdefRecord | NFC NDEF 记录 |
QNearFieldManager | 通过这个类访问NFC事件的通知 |
QNearFieldTagType1 | 与NFC Tag Type 1 标签通信的接口 |
QNearFieldTagType2 | 与NFC Tag Type 2 标签通信的接口 |
QNearFieldTagType3 | 与NFC Tag Type 3 标签通信的接口 |
QNearFieldTagType4 | 与NFC Tag Type 4 标签通信的接口 |
QNearFieldTarget | 与目标设备通信的接口 |
例子
- NFC注释URL: 从NFC标签显示包含在NDEF消息中的URL,包含标题和图片。
- NDEF编辑器: 创建Connectivity API支持的NDEF记录保存到支持的NFC论坛标签中。
Symbian API
Symbian^3 提供下列NFC API:
API | Description |
NFC Discovery API | 提供订阅和发现标签和NDEF消息的方法 |
NFC Tag Extension API | 提供实现和访问(读/写)各种NFC目标的方法 |
NDEF API | 提供处理NDEF消息和访问NDEF消息的方法 |
NFC Peer-to-Peer API | Provides LLCP API for peer-to-peer communication between NFC devices |
NFC Content Handler API | 提供订阅和接收NDEF消息的ECOM插件接口 |
用例
Symbian API 支持一下用例:
- 创建内容处理器插件
- 建立蓝牙连接
- 分享文件或数据
- 读取NDEF信息
- 发现NFC标签
- 与NFC论坛类型4标签交换数据
- 读取NFC论坛类型1,2,3标签
- 向NFC论坛类型1,2,3标签写数据
- 使用(无连接)LLCP 栈传输和接收“Hello World!”ASCII文本
- 使用(定向连接)LLCP 栈传输和接收“Hello World!”ASCII文本
注意:NFC的Symbian实现不支持模拟卡模式的操作。
例子
- 使用NFC栈和AIW框架分享: 演示了标签发现,NDEF发现API(Tag Discovery API,NDEF Discovery API),和各种标签上的读写操作
- 标签发现和NDEF发现: 演示了如何通过NFC通道建立两台设备的配对,并使用次级通讯渠道(如蓝牙)分享文件。通过使用AIW框架,演示了如何分享vCard和vCal。
在Nokia开发者文档库查看Symbian^3 开发者库中的NFC Symbian API,并下载例子: http://library.developer.nokia.com/topic/GUID-E35887BB-7E58-438C-AA27-97B2CDE7E069/GUID-7A72B008-901E-454D-AD93-F99555CA904A.html#GUID-7A72B008-901E-454D-AD93-F99555CA904A.
Java API
JSR 257 Contactless Communication API 1.0 在Symbian 设备上支持NFC功能。 Contactless Communication API使中间件(MIDlet)能使用移动设备上的NFC功能。中间件能读写标签(集成电路)上的小量数据。
用例
Contactless Communication API支持下列用例:
- 发现非接触目标
- 与非接触目标间交换数据
注意:NFC的Java实现不支持模拟卡模式或点对点模式的操作。
例子
- UIDReader: 显示如何创建从非接触目标中读取数据的中间件
- URLWriter: 显示如何创建件向非接触目标写入数据的中间件
参看Nokia开发者文档库中Java开发者库的NFC Java API用例并下载例子: http://library.developer.nokia.com/index.jsp?topic=/Java_Developers_Library/GUID-9248DD7F-23BE-40A6-A8DC-823783443F10.html.
支持NFC的Nokia手机
在下面链接查看支持NFC的Nokia手机信息:
http://www.developer.nokia.com/Devices/Device_specifications/?filter1=all&filter2=nfc.
支持的NFC标准和标签种类
Symbian和MeeGo 1.2 Harmattan平台都支持下列NFC标准和标签:
- NFC A technology
- NFC B technology
- NFC F technology (JIS 6319-A)
- ISO DEP protocol (ISO 14443)
- NFC DEP protocol (NFCIP1 - ISO 18092)
支持下列NFC论坛标签种类
- NFC 论坛标签种类 1
- NFC 论坛标签种类 2
- NFC 论坛标签种类 3
- NFC 论坛标签种类 4
注意: NFC的Java实现不支持NFC 论坛标签种类 4
其他支持的专利标签种类:
- MIFARE Classic
Nokia手机中的NFC数据处理
Symbian实现中应用程序不能在后台处理保留RTD如 智能海报,URI, 蓝牙耳机,和其他通用MIME类型。
当发现一个包含保留RTD的标签时(参看下面的章节)应用程序的UI前台会收到一个callback,类似的,分享(或快捷设置)智能当应用程序在前台是触发。
尽管如此,用户可以定义自己的数据类型,这样应用程序在前台后台都可以处理用户自定义数据类型。
NDEF记录处理
Symbian实现支持多NDEF记录处理,首先读取第一条记录,检查是否有处理器(NFC DIscovery API 或者一个NFC Content Handler API 客户端)更具记录类型来处理数据。如果有,则停止处理,将整个NDEF消息交给特定的处理器。。 如果第一条记录没找到处理器,则移向第二条,重复查找过程。就是说,如果找到一个记录的任何处理器,则整个NDE消息都交给这个处理器处理。
注意: 支持多NDEF记录但不支持多NDEF消息。
支持的保留RTD
NFC的Symbian实现提供对一下RTD处理的支持:
RTD | Identifier |
Bluetooth 2.0 | urn:nfc:ext:nokia.com:bt |
Bluetooth 2.1 | application/vnd.bluetooth.ep.oob |
Handover Request | urn:nfc:wkt:Hr |
Handover Select | urn:nfc:wkt:Hs |
Smart Poster | urn:nfc:wkt:Sp |
URI record | urn:nfc:wkt:U |
要处理保留RTD,应用程序必须在前台,不能从后台进程读取保留NDEF,参见 “ Nokia手机中的NFC数据处理 ”章节。
支持的MIME类型
Symbian实现可以从NFC标签中读取一下文件类型:
类型 | 子类型 |
image | 支持所有子类型 |
audio | 支持所有子类型 |
text | 支持所有子类型 |
video | 支持所有子类型 |
application | vnd.Nokia.ringing-tone |
application | vnd.symbian.install |
application | java-archive |
application | x-java-archive |
application | vnd.wap |
处理智能海报RTD
智能海报消息可包含多条记录。