基于Android系统的NFC技术实现陈文正.docx
《基于Android系统的NFC技术实现陈文正.docx》由会员分享,可在线阅读,更多相关《基于Android系统的NFC技术实现陈文正.docx(25页珍藏版)》请在冰点文库上搜索。
基于Android系统的NFC技术实现陈文正
摘要
NFC(NearFieldCommunieation)技术是在飞利浦公司提议下发起的,并由索尼、
诺基亚等国际著名厂商联合推出的一项近距离无线通信技术。
通过在NFC芯片上集成
感应式卡片、感应式读卡器和点对点通信的功能,能够在较短距离内与相关设备通信,
达到识别和数据交换的目的。
Android手机通过集成NFC芯片就可以读取相关NFC标
签或者设备的信息和进行电子支付。
NFC作用的距离短,这进一步简化整个识别认证过
程,可以让电子设备之间的相互访问更安全、更直接和更清楚。
电脑、手机、数码相机、
PDA等多个电子设备之间利用NFC技术可以很快速安全地进行无线通信。
论文主要包括以下几个方面内容:
首先,本文介绍了NFC技术的研究意义、发展现状和Android的基本概念,并对
Android开发模式做了详细的分析。
在对系统架构作了分析的基础上详细的描述Android
应用程序的构成。
其次,介绍了NFC技术的通讯模式、工作模式和应用场景,将NFC技术与其他的无
线通讯技术比如蓝牙、wIFI做了对比,对NFC技术标准中的LLCP(LogiealLinkControl
protocol)·NDEF(NFCDataExtrangeFormat)协议做了进一步的分析。
再次,本文的重点是在Android系统中实现NFC技术。
该技术实现的层次结构包括
应用层、硬件抽象层、主机控制接口层和数据链路层,文章中对各个层次特别是主机控
制接口层中HCP(HostControllerProtocol)协议进行了较为深入的研究。
在驱动程序中
详细描述了利用工2C协议完成Android手机和NFC芯片之间的数据传输过程,并在实际
的Andr。
id手机中集成该驱动程序完成NFC的通信过程。
最后,利用最常见的Mifare卡成功制作了搭载有NFC信息的卡片,详细描述了卡
片的制作、卡片的检测以及NFC数据检测的过程,通过实验进一步验证了NFC通信中读
卡器模式和点对点通信模式的正确性。
关键词:
NFC;Android;HCI;HCP
绪论
研究背景及意义
在最近几年,由于网络与通信技术的迅猛发展,无线通信在日常生活中的地
位越来越重要,移动支付也成为时下最为时尚的付费方式。
根据相关部门统计,
全球的移动支付市场将在2015年达到6700亿美元,比2011年2400亿美元增长
179%,而全球使用手机支付的用户人数预计达25亿,凸显出移动支付市场的巨
大。
正是看到了移动支付的广阔前景,包括Google、诺基亚和苹果在内的智能
手机巨头都己经把手机支付作为将来发展的一个重要方向。
其中NFC技术是眼
下最为热门的移动支付技术。
Google、HTC、三星、微软等公司都已经在其手机
上添加了NFC技术,推出或者即将推出支持NFC的手机支付解决方案。
Google
在2011年5月宣布将和万事达以及花旗银行合作,在纽约和旧金山测试其移动
支付系统GoogleWallet(Google钱包),随后在将在全国开展,其中其关键技术
就是NFCO
首先,在应用中将NFC集成到手机上可以让交通、购物等付款防守都通过
简单的近距离接触实现,就好像随身携带的钱包,大大节省了人力和时间[l]。
其
次,利用NFC传输少量数据是相当简单的。
两台带有NFC的设备只要近距离接
触就可以快速的完成数据交换,相比与蓝牙等技术,少了很多繁琐的操作I2]。
在
社交中也可以通过NFC非常方便的交换名片等操作。
除此之外,NFC还可以实
现电子身份识别,可以用做ID、门禁卡等。
综上所述,NFC为消费者提供了便
捷的触控式方案用来直观的交换访问内容、信息与服务。
2NFC的发展现状和趋势
为了进一步推动NFC的发展和普及,2004年3月18号NXP公司(前飞利
浦半导体)、诺基亚和索尼公司创建了NFC论坛,这是一个非盈利性的机构,主
要职责是进一步推进NFC技术的实施和标准化,用来保证NFC设备和相关服务
之间的有效合作[3]。
到2012年底,NFc论坛的成员遍布全球,拥有包括德州仪
器、万事达卡国际组织、微软、松下电子、摩托罗拉、三星在内的超过100个成
口」
贝。
在NFC发展之初,索尼公司和飞利浦半导体公司合作,计划在非接触式技
术的基础上发展一种无线通讯技术,由此产生了一种可以与15014443协议相兼
容的无线通讯技术,命名为NFc[4]。
NFc技术定义了工作在13.56MHZ频率、作
用范围在10厘米之内的无线通信方式,有利于设备之间进行安全、直观、便捷
的通信。
这个规范后来被提交国际标准组织150成为正式的国际标准,就是现
在所说的150/IEC18092标准[,]。
基于Android系统的NFC技术实现
大连理工大学硕士学位论文
在推出Android手机一年半的时间里创下的惊人记录。
在全美市场,根据NPD
集团发布的调查报告显示,20n年Android手机的市场份额到达33%,超过了
苹果的22%和黑葛的28%,首次超过黑葛成为美国只能手机市场操作系统的新
冠军。
Android操作系统拥有高达10多万的应用程序以及大量的开发人员的支持,
在移动设备和智能手机领域的地位日益提升。
正是看到了Andrnid的巨大前景,
在2010年12月9日恩智浦半导体(简称NXP)公司与Google宣布达成战略合
作协议,共同开发近距离无线通信NFC的开源协议栈并集成到代号为
Gingerbread的最新版本的Android平台中去。
于此同时,在Google与三星公司
合作开发的NexuSS手机中将使用恩智浦半导体公司提供的NFC控制器,为用
户提供基于NFC技术的服务和应用需求。
通过将NFC系统开源给Android开发人员,恩智浦可以帮助设计者将更多
的移动应用触摸屏接口扩展到显示屏或者那些令人振奋的创新领域。
同样的,设
备制造商可以通过该技术开发出研发和生产成本更低、更快上市的支持NFC的
设备[7]。
本文中正是通过将恩智浦半导体公司提供的NFC控制器Pn544芯片集成到
手机中,从而实现了近距离通信。
3NFC实现的两种方式
实现NFC功能的具体技术方案上都是基于两颗芯片,一个是智能卡芯片,
另外一个是NFC芯片。
虽然都是两颗芯片,但是在手机内部实现上,根据NFC
芯片和智能卡芯片之间的接口不同,厂商们提出了不同的架构。
根据智能卡芯片
分类,卡模拟的实现可以大致分为非SIM卡模式和SIM卡模式。
3.1非5IM卡模式
在非SIM卡模式下,NFC包括安全芯片(安全芯片就是标准的智能卡,目
前采用最多的是符合Java规范的Java智能卡,卡片内应用程序的数据组织形式
要根据应用程序数据的类型来决定)和NFC芯片两个组成部分。
该模式中NFC芯片和天线与手机的其他部分以及SIM卡相互独立,但是
NFC模块与手机共用手机上的电池。
在电池上电时,NFC模块有主动、被动和
双向三种工作模式;在电池断电时,只有卡模拟功能,工作在被动模式下[8]。
手
机开关机对NFC功能无影响,只要电池有电即使手机关机时也可使用NFC功能。
该模式实现有两种方案:
一是专门定制特别的手机,二是将NFC芯片与天线直
接相连,接着将电池紧贴着放在手机后盖和电池之间,这样用户就可以在不更换
手机的前提下使用该功能。
该模式下NFC模块不能和sIM卡通信,运营商无法通过控制SIM卡来控制
基于Android系统的NFC技术实现
NFC模块。
这会造成在手机上实现NFC功能却完全脱离运营商格局。
NFC芯片负责SmartMX安全芯片与外界的短距离通信,包括模拟成
15014443一A或者15014443一B标准,也可以模拟成Sony的Feliea标准。
非sIM卡模式安全级别中等,成本较低。
1.3.2基于SIM卡模式
GEMALTO公司基于对运营商需求的了解的基础上提出了SWP接口,它将
NFC芯片和SIM卡结合起来。
随后让一家法国公司Inside开发了支持SWP标准
的产品雏形。
出于商业利益的考虑,运营商(GSMA)的一致支持SWP架构。
但是刚提出的的SWP标准还很不成熟,还需要进一步的改善。
此后飞利浦公司
最终放弃了自己重新提出来的另外一种单线标准,并宣布支持Gemalto公司的
SWP规范,在和GEMALTO签署了战略合作协议的基础上一起进行SWP协议
的改进,并提交给ETSI。
在该模式下,NFC芯片与SIM卡的通讯主要由SWP协议完成,通过控制
SIM卡来控制NFC芯片。
1.4本文的内容安排
本文的内容安排如下:
(l)第一章绪论部分主要是介绍了NFC技术的研究背景和意义,比较了
实现NFC技术的集中方案,并分析了NFC技术的发展趋势。
(2)第二章介绍了Android的基本概念和系统架构,并对Android开发做
了详细的分析,系统的介绍了Android应用程序的构成。
(3)第三章主要介绍了NFC技术,并和其他相关的无线通信技术了比较,
对NFc中的关键技术如LLcP[9]、NDEFI`0]做了详细的分析。
(4)第四章主要分析了在Android系统中实现NFC技术的层次结构,通
过为NFC芯片编写驱动实现了Android手机和NFC芯片的通信。
(5)第五章利用最常见的Mifare卡成功制作了搭载有NFC信息的卡片,
通过实验进一步验证了NFC通信的正确性。
大连理工大学硕士学位论文
2Android系统概述
2.1基础知识和开发
2.1.1And阳id的基本概念
Google公司在2005年并购了成了不到两年的高科技公司Android,从此开
始了有关短信、搜索和定位等方面的业务,与此同时基于linux内核的Android
平台也开始进入开发阶段。
在2007年n月5号,Google公司发布了Android
的第一个版本,随着Google公司组织的OHA(OpenHandsetAlhanee)不断的壮大,
到现在为止,Android已经成长为能和iPhone对抗的生力军【川。
Android操作系统是是一个开源的系统,同时也是一个生态系统,它包含了
以下三个重要组成部分:
(1)Android源代码工程。
它包含了Android系统的所有源代码,主要用
于开发手机系统。
(2)Android开发者。
它包含了Android应用层的开发文档和API,这样
Android应用程序开发人员可以通过这些资料开发相应的应用程序。
(3)Android市场。
它是ooogle公司为Android的应用程序提供的一个交
易场所。
2.1.2Android的开发工作
Android是一个庞大的系统,开发人员根据分工主要有以下三类工作:
(l)移植开发手机系统和平板电脑。
主要是手机制造商进行这方面的开发。
开发的时候以硬件作为一前提,在己有的硬件平台上开发Android软件系统,开发
工作主要集中在底层。
NFC技术标准发展过程中,由于使用13.56MHz频率进行无线通信的不
只是NFC,所以在2005年1月发布的ISO/IEC21481标准对NFC通信模式的选
择做了补充说明,进一步完善了NFc技术[6]。
该标准全称《信息技术系统间近
距离无线通信及信息交换的接口和协议(NFCIP一2)》,即“NFCIP一2”,它增加了
对15015693协议的兼容。
因此NFC基于150/IEC18092、150/IEC21481、ETSI
TS102和190标准以及ECMA340、352、356标准,又可以兼容15014443A标
准,应用场合广泛,有自身的技术优势和特点。
随着NFC技术的发展,NFC在日常生活中的应用也越来越多。
索尼公司的
“Felica”技术,在15014443标准中被定义为升peC,已经在日本成为非接触
式IC卡近距离通信中广泛应用,信用卡、乘车券、学生证、网络结算、职工证、
会员证等方面都应用了该技术。
Felica不仅在日本的IC卡市场上应用广泛,还
在香港月票系统上发挥重要的作用,发型的IC卡超过1200万,超过了香港的人
口总和。
除了在公用场合上Felica得到应用,在市场上还可以买到个人使用的读
写器Pasori,在和电脑联机的情况上,用提供好的友好操作界面就可以对基于
Fehca的IC卡进行读取和写入操作。
法国INSIDE公司开发出“eNFC”技术,意为增强性NFC技术,宣称该技
术在原标准100%兼容的基础上增加了对15014443升peB和15015693标准的
支持。
巴黎地铁系统就是应用了该技术,在Bouygues电信公司的手机上得到实
现。
Bouygues电信公司使用这项新服务在日常生活中测试移动电话并实现了移
动电话付费,比如乘坐公交车、地铁的时候,乘客可以使用Bouygues电信公司
的手机取代平时的“Navigo”非接触式智能卡。
当搭乘公交车或者通过地铁口的
检票处时,乘客只需要使用手机“刷卡”进入了。
我国在这方面的研究也取得不少进展。
广州移动和广州地铁联合推出手机地
铁票的业务。
乘坐地铁的市民不需要地铁卡,也不需要排队买单程票,同样只需
要使用手机轻轻的“刷”一下就能方便的乘坐地铁。
该手机地铁票使用握奇数据
研发的“SIMpass”技术,该技术将非接触式IC卡集成到sIM卡上,只需要通
过加装小天线和更换SIM卡就可以实现手机支付地铁票的功能。
近距离通信在
地铁票上的应用是一个NFC商业化的一个重要标志。
近几年来,谷歌Android手机的发展可谓日新月异,随着Android手机的出
货量不断增加,它的市场份额也越来越大。
在日本,根据日本市场研究机构调查报告显示,2011年Android手机在日本
只能手机市场的占有率已经达到57%,手机发货量增长超过491万部,手机刚刚
在日本大范围推广之初年销售量仅仅是25万部,市场份额也仅仅是n%。
其竞
争对手苹果的iPhone的市场份额跌至38%。
在韩国,ZOn年Android手机用户
突破1000万,在约有1400多万用户的韩国手机市场占有率达到70%,这是韩国
基于Android系统的NFC技术实现
iava应用程序
java框架
图2.1Android移植开发的结构
F19.2.1ThestruetureoftransPIantanddeveloPmentinAndroid
如图2.1所示,Andro记移植开发分为以下两个方面:
①Linux内核中相关设备的驱动程序。
在Android系统中需要提供基本的触
摸屏、键盘、音频、蓝牙、摄像头和Wifi等各种各样的设备驱动程序。
②Android系统框架中的硬件抽象层开发。
硬件抽象层介于驱动程序和
Android系统之间,对上层应用程序提供了操作底层硬件的接口。
(2)Android应用程序的开发。
公司、个人和团体都可以进行第二种开发。
(3)Android系统级开发。
Android系统级开发主要是为系统本身添加功
能,举个典型的例子就是开发应用程序时需要系统提供某种功能,这时就需要从
底层到上层作整体的开发,主要步骤如下:
大连理工大学硕士学位论文
①增加C或者C++代码到本地库
②在Java层定义所需要的系统API
③封装州I相关的代码
④将则I和Java类结合起来
⑤应用程序调用相关的Java类
图2.2Android系统开发的结构
Fig.2.2ThestructureofsystemdeveloPmentinAndroid
图2.2展示了Android系统开发的结构。
在更多的情况下,Android系统开
发主要是在不改变系统应用程序接口的情况下对系统的一些缺陷做修正,以便于
基于Android系统的NFC技术实现
系统更加稳定的运行【'2】。
2.2Android系统开发综述
图2.3系统架构
Fig.2.3Systemarehiteeture
图2.3展示了Android系统的架构。
从图中看出,Android系统分为以下4
个层次:
(l)第一层次:
Linux操作系统及其驱动,主要由C语言实现。
Android
系统的核心服务主要由Linux2.6内核支持,包括内存管理、安全性、进程管理、
网络协议栈和驱动模型,是软件和硬件之间的抽象层。
<2)第二层次:
本地代码框架和Andro记运行环境,主要由C/C十十实现。
它们通过Android应用程序框架为程序开发者提供服务,主要有:
①系统C库:
一个标准C语言库(libc),专门为嵌入式Linux系统量身定制
的库。
②多媒体库:
该库支持多种媒体格式的编解码、回放和录制,主要是由
PaeketVideo
8
基于Andro记系统的NFC技术实现
命令。
(5)C++工具库libuti1s,是Android系统的底层库,为Android系统提供
了C++支持,编译的结果是libutils.so,用来给上层调用。
2.3.2运行环境
(1)Dalvik虚拟机和核心库
Dalvik是Andioid系统中的虚拟机,每一个应用程序都跑在虚拟机上。
它完
成对象生命周期管理、线程管理、堆栈管理、异常处理和安全,以及垃圾回收的
功能。
不同于java虚拟机,Dalvik虚拟机基于寄存器,应用程序的代码经过java
编译器编译完交由dx工具将其转化为dex格式,然后由Dalvik虚拟机执行。
dex
的文件针对小内存做了优化,更有利于手机操作系统的运行。
核心库(libcore)为系统提供基本java类库的支持,它包含了基础数据结构、
IO、数学、工具、网络、数据库等方面内容。
(2)nativehelper库
nativehelper库是作为一个工具库,它提供注册Java本地调用函数的功能,
在代码中需要使用JNI调用本地层次功能时需要用到该库。
2.3.3JNI的使用
州I是java本地接口,JavaNativeInterfaee的缩写,它允许Java代码和其他
语言进行交互。
大连理工大学硕士学位论文
的OPenCore构成。
③LibW亡bCore:
一种W亡b浏览器引擎,用来支持Android系统中浏览器的
实现。
④SGL:
一种图形库,是底层ZD图形的引擎。
⑤3Dlibraries:
该3D库主要基于openGLEs1.0实现的,支持硬件加速。
Android运行环境包括基本的Java类库DalvikJava虚拟机和DalvikJava虚
拟机。
Dalvik虚拟机可以高效同时运行多个虚拟机实例[`3]。
(3)第三层次:
Java框架,主要由Java实现。
主要包括以下几个部分:
①视图(ViewS):
提供构建应用程序的元素,包括列表、文本框、按钮等
Ul元素和控件。
②内容提供器(ContentProviderS):
可以让应用程序访问其他应用程序的
相关数据。
③资源管理器(ResoureeManager):
提供字符串、图形和布局配置文件等
非源代码资源的访问。
④通知管理器(NOtificationManager):
可以让应用程序在将自定义的提示
信息显示在状态栏中。
⑤活动管理器(ActivityManager):
对应用程序的生命周期进行管理并提供
有关Activity的一些相关操作例如导航回退功能。
(4)第四层次:
Java应用程序,主要由java实现。
第一层次和第二层次之间,从操作系统的角度来看,是用户空间和内核空间
的分界线。
第二层次和第三层次之间,是Java代码层和本地代码层的接口。
第
三层次和第四层次之间,是系统API[l41。
2.3Android的底层库、程序和运行环境
2.3,1Android的底层库和程序
Android的底层库和程序主要包含以下内容:
(l)标准C/C++库bionic,是一个轻量级标准库,专门为嵌入式系统设计,
它的内存占用和体积更小,包含标准C/C+十库的大部分功能,它还拥有Android
独特的功能,例如在底层增加了对109的支持。
(2)C语言工具库hbcuths,是Android系统中最基础的库,大部分的程
序和本地库都用到了这个库。
(3)init进程,是Andorid系统启动后运行的第一个可执行程序,它是一
个守护进程,提供了设备管理、解析启动脚本和执行启动脚本的功能和服务。
(4)Shell工具,在系统启动后提供了基本Shell界面以便于开发人员调试。
由工具箱和Sh程序两个部分组成,Sh程序提供控制台,工具箱提供各种Shell
大连理工大学硕士学位论文
JJJava应用程序序
iiiava类类
声声明本地接口口
JJJNIII
CCC/c+十本地库库
图2.4
Fig.2.4
JNI的使用
Theusageof用I
如图2.4所示,在Android提供州I可以让Java程序调用C语言程序,控制
底层硬件的运行。
2.3.4Android应用程序概述及其框架
Android应用程序使用系统API,是完全的Java程序。
它包含了代码、工程
文件以及各种资源,应用程序都被编译成Android系统的应用程序包,就是apk
文件工'5]。
一般情况下,Android系统中的应用程序分为以下四个部分:
(I)活动(Activity)
活动是Android应用程序中最基本的组件,通常每个用户界面都是一个活动。
每个活动作为一个独立类都从活动基类(Activity)继承,它显示由视图空间组成的
用户接口,并对相应的事件做出响应。
大部分程序会有多个应用程序界面,多个
对应的活动。
(2)广播接收器(BroadcastReeeiver)
广播接收器主要是让应用程序响应来自外部的事件,可能是系统发的事件,
也可能是其他应用程序发的事件。
(3)服务(Service)
服务是具有较长生命周期却没有用户界面的程序。
举个例子,在后台播放的
音乐。
(4)内容提供者(Contentprovider)
基于Android系统的NFC技术实现
应用程序可以将它们在运行过程中的数据保存到数据库或者文件中。
当其他
程序需要访问该程序的数据时,内容提供者就发挥作用了。
它实现了一组方法可
以让其他应用读取和保存该内容提供者处理的各种各样数据类型。
Androfd应用程序包含在一个单一的文件夹,有如下文件:
(1)Android.mk,自动化编译文件,系统开发时用到。
(2)AndroidManifest.xml,工程配置文件,里面定义了程序的各个组件,
经过打包工具aaPt打包成二进制格式的Android.xml,内容不变。
(3)java源代码,使用sunJDK将Java源代码编译成Java字节码(许多
的后缀名为class的文件),接着通过Android的工具软件dex把class文件变成
dex文件。
(4)资源文件,包含图片文件、xml文件、字符串文件等,经过aapt处理
成二进制文件,其中图片等文件内容不变。
最后将这些组成部分打包成一个apk包,再进行签名就可以使用。
基于Android系统的NFC技术实现
如图3.1所示,目标设备和发起设备都需要产生自己的射频场,这样有利于
通信。
在主动模式下通信双方可以获得非常迅速的连接,这就是点对点的标准模
式。
(2)被动模式
在被动模式下,作为NFC发起设备(也称主设备,主动启动NFC通信的设
备)的一方在整个通信过程中提供射频场。
鹦说一丫厂一于户羚年户
流鬓`一姆
襄露赓等缪
豁瀚靡缓臀
黔耗戮,介
独氰拿戴纵救瓢按取里鳞热丸数字女交声曹令瞬媲李亥终蛋氦毅潺瓤
数黔爹芝芥
拱曝
。