NFC技术简介

NFC技术简介1简介1.1技术背景无线近场通讯技术,最早是Sony和Philip这两家公司共同开发的一种非接触式识别和互联技术,现在已经发展为国际性的非盈利组

欢迎大家来到IT世界,在知识的湖畔探索吧!

1 简介

1.1技术背景

无线近场通讯技术(Near Field Communication,NFC),最早是Sony和Philip这两家公司共同开发的一种非接触式识别和互联技术,现在已经发展为国际性的非盈利组织 NFC Forum。该组织相当于蓝牙技术联盟(Bluetooth SIG)和WIFI联盟负责相关技术的规范制定和认证。

1.2技术原理

NFC利用无线射频技术实现设备之间的通信,工作频率为13.56MHz,有效距离为4cm左右,目前支持的数据传输速率有106Kbps、212Kbps和424Kbps这三种。

1.3技术应用

NFC提供了一种简单的、非接触式的解决方案,在移动设备、消费电子产品和智能设备间让使用者简单直观的交换信息、访问内容和服务。当前NFC技术整合了非接触式读卡器、非接触式智能卡和点对点(Peer-to-Peer)通信功能,为消费者创造了一个全新便利的生活方式

2 工作模式

NFC工作模式可以分为主动模式、被动模式与双向模式这三种。

2.1主动模式(读卡器模式)

NFC设备作为非接触读卡器使用,主动发出自己的射频场去识别具有NFC标签的设备,或者向NFC标签设备读写数据。应用领域包括广告读取、车票读取、电影海报读取、电影门票销售等。作为读卡器的NFC设备需要供电使用。

2.2被动模式(仿真卡模式)

具有NFC功能的设备模拟成一张NFC标签或非接触卡,只能在其他设备发出的射频场中被动响应。利用供电主设备产生的射频场转换成电能为自己供电接受主设备的数据并利用负载调制技术将自己的数据传回主设备。应用领域包括支持NFC功能的手机作为门禁卡、银行卡、公交卡等。

2.3双向模式(点对点模式)

具备NFC功能的设备间都主动发出射频场来建立点对点的连接进行数据交换。应用领域包括两个具备NFC功能的手机建立连接传输文件等。

3 数据结构

NDEF:NFC Data Exchange Format,NFC数据交换格式,NFC Forum约定的NFC Tag中的数据格式。一个NDEF message包含多个Record记录,真正的数据则都是封装在Record中的,NDEF与Record之间的关系及数据结构如图所示:

NFC技术简介

NDEF message

NFC技术简介

Record

4 NFC技术在Android中的应用

Android2.3.1(API Level = 9)才开始支持NFC技术,但Android2.x和Android3.x对NFC的支持还是非常有限的,而从Android4.0(API Level = 14)开始,Google向NFC发力才使得NFC技术在Android中得到了更进一步的支持。尤其是Android4.1,可以利用NFC技术传递较大的数据(NFC Handover也就是Android Beam技术)。Android9已经全面支持NFC的三种工作模式,从而以下分析也都是基于Android9。

5 NFC在安卓系统中的架构

NFC技术简介

NFC系统架构图

以下章节会依次说明NFC架构图中各个模块的启动及作用。

5.1 NFC Framework

Android对外提供NFC功能的API,API主要方法都在android.nfc package中,android.nfc.tech package补充了非NDEF数据格式的标签类型的连接及数据交互接口。相关Application直接通过NfcAdapter.getDefaultAdapter(Context)就可获取到NFC的适配器,应用apk的所有对NFC的操作都需要通过 NfcAdapter来工作。

NFC技术简介

NFC framework initialize

5.2 NFC Service

NFC service服务是由NFC apk提供的,源码路径为:packages\apps\Nfc\…,编译后会生成 NfcNci.apk 和 libnfc_nci_jni.so (下一节介绍)。

NfcNci.apk的AndroidManifest.xml中设置了安卓开机自启动属性:persistent=”true”,所以我们直接从NfcApplication.java开启NFC服务进程的讲解。

下图为简单的NFC Service启动时序图:

NFC技术简介

apk initialize

5.3 NFC JNI

源码路径:packages\apps\Nfc\nci\jni,编译生成 libnfc_nci_jni.so。由于编译JNI的so库包含有NFC Stack的so库,所以能直接在JNI中调用NFC协议栈中的相关方法。

NFC技术简介

加载JNI so库是在初始化NFC Service中的NativeNfcManager.java时,通过下面的调用加载进com.android.nfc所属进程中运行的。

NFC技术简介

5.4 NFC Stack

NFC协议栈的初始化主要是创建了NFC_TASK的线程,协议栈和底层Controller的消息交互主要是通过该线程转运的。

NFC技术简介

NFC Stack initialize

5.5 NFC HAL Server

HAL(硬件抽象层)是Google为了保护硬件厂商的利益而在Android架构中加入了HAL的概念,使得上层不需关心硬件实现的具体细节,只需传入抽象层所需参数,就可以达到控制硬件的目的。

前面一小节初始化的NFC协议栈通过HIDL技术获取到了NFC HAL Server端的对象。HAL Server中通过HAL技术打开NFC Controller提供的so库,从而可以操作NFC硬件。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/66018.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信