基于Android手机的NFC开发与应用


    

    基Android手机NFC开发应


    着信息时代快速发展NFC作种RFID演变新型距离线通信技术受关注相较红外Wifi等线通信启动速度快安全低功耗等优点受众商家青睐然Android系统中已NFC技术相关协议NFC相关基础设施未普导致NFC手机端率较低文设计款综合性强NFC应提高众率
    设计基Android系统JAVA编译设计款基NFC技术应程序该应实现读写器模式P2P模式卡模拟模式三种功读卡器模式识非接触式标签中信息P2P模式配情况完成点点式非接触传输提高信息传输效率卡模拟模式宿舍门禁等场代校园卡完成身份识应中三功模块相互独立互干扰户根需求选择模块进行操作适应场景较高价值
    关键词 NFC读写器模式P2P模式卡模拟模式








    Development and Application of NFC
    Based on Android Phone

    Abstract
    With the rapid development of network technologies NFC has attracted public entrepreneurs and consumers by new short term communication technologies developed through RFID Compared with other wireless communications such as infrared and Wifi it has a fast startup speed safety and low power The advantages such as consumption are favored by many businesses Although NFC technology and related protocols already exist in Android system the infrastructure related to NFC is not widely used so the use rate of NFC by mobile phone users is relatively low Therefore a comprehensive NFC application is designed to improve public utilization
    This design is based on the Android system using JAVA to compile and design an application program based on NFC technology The application mainly implements three functions reader mode P2P mode and card emulation mode Card reader mode can be used to identify information in contactless tags P2P mode can complete pointtopoint contactless transmission without pairing which improves the efficiency of information transmission card simulation mode can be used in places such as dormitory access control instead of campus cards Identification The three functional modules of the application program do not interfere with each other independently Users can choose from different modules work as needed and use them in multiple highvalue scripts
     Keywords NFCReaderwriter modeP2P modeCard emulation mode





    目 录
    1 前言 1
    11 设计目 1
    12 发展概况 2
    2 NFC设计原理 3
    21 NFC技术简介 3
    22 NFC通信原理 3
    221 动模式 3
    222 动模式 4
    23 NFC工作模式 5
    24 NFC优势 5
    25 NFC应关键技术 6
    251 Android NFC API 简介 6
    252 NDEF简介 8
    253 声明Android Manifestxml元素 10
    3 APP设计 11
    31 需求分析 11
    311 设计需求分析 11
    312 功需求分析 11
    313 环境需求分析 12
    32 软件开发环境搭建 12
    33 系统程序设计 15
    34 卡模拟模块设计 16
    341 工作模块设计 16
    342 读卡器端选择 17
    35 点点传输模块设计 18
    36 读卡器模块设计 20
    361 工作模块设计 20
    362 电子标签选择 22
    4 结 24
    41 文总结 24
    42 问题展 24
    参考文献 25
    谢 辞 26
    附 录 27





    1 前言
    11 设计目
    1902年类史第台线电话装置美国森·斯塔布菲尔德创造类探索电话旅程开始1999年摩托罗拉推出智手机——世界第台拥触摸屏手机2004年着众智手机市智手机时代开启手机操作系统功存容量着智手机更新断更新众智手机中Android系统免费开源操作系统软件台系统结构具良移植性安卓阵营断扩市场份额成全球智手机操作系统
    着智手机快速发展线通信技术应运生中场通信(Near Field Communication简称NFC)移动通信领域备受关注项新型线通信技术[1]远程通信技术电子设备双通信提供短距离线连接NFC技术然RFID(非接触线频率识)发展制定特定标准集保障NFC设备间相互通信NFC采电子耦合感应技术发起设备采频率1356 MHz信号天线产生磁场通距离耦合量传递目标目标调制磁场数传送发起设备完成通信通信程需手动辅助设备支持NFC两设备中交换信息短距离线通信相NFC具更安全反应时间更短耗低等优点[2]
    NFC作项新技术户率远远高宣传普工作需时日2017年5月发布篇学硕文NFC手机场支付户意愿调查研究中揭示NFC支付户情况353份效问卷中采集数象集中8090(占734)学历学硕士占697报告中显示297访问者体验NFC中体验中26~35岁占较8725户表示愿意未影响消费者NFC手机支付原中八成访问者选择安全性紧原便捷性[3]份调查颇具代表性体现出NFC户率较低问题
    结合Android系统NFC技术户设计功应提高NFC户率篇文章研究问题提高NFC户率文设计款基Android台NFC应款应利NFC三种工作模式实现三种功分卡模拟功读卡器功点点传输功款应综合性高场景例Android NFC手机卡模拟功学校代校园卡通着学校通信息化理社会化服务学卡通根性改善NFC技术代卡通学校提供更服务[4]
    应集成3种功第种卡模拟功校园代IC卡完成身份识例宿舍门禁图书馆食堂医务室等场第二种读卡器功信息查询例海报附NFC标签读卡器功获取海报相关信息第三种点点信息传输功两手机均开功相互完成信息传输节省手机配时间赖网络者辅助线提高传输效率
    12 发展概况
    2003年飞利浦索尼联合研发场线通信2004年诺基亚创建NFC坛全球推广NFC技术[5]NFC安全快速便捷等特性受众企业青睐截止2007年NFC坛全球拥超100成员包括:万事达卡国际组织微软公司三星公司Visa国际组织[6]2006年7月复旦微电子成首家加入NFC联盟中国企业[7]2007年6月法国ORANGE电信公司宣布2008年初法国波尔联合广告业务提供商ClearChannel公交通服务提供商Veolia金融服务提供商LaSer等合作伙伴推出基NFC移动非接触式业务[8]年约3万名韩国SK电信公司户正享受通LG提供WCDMA手机购物中心零售店购买商品服务[9]着NFC技术发展谷歌万事达花旗First datasprint2011年9月正式推出基NFC谷歌钱包Google Wallet [10]阶段然NFC已定发展种技术始终未广消费群众接受直2015年苹果公司发布iPhone 6 时推出Apple PayNFC技术次进入家视线[11]
    2006年6月国首次开展NFC支付试点测试NXP诺基亚中国移动厦门分公司厦门易通卡厦门支持NFC功NOKIA 3220手机完成厦门易通卡覆盖营业网点(例公交车轮渡便利店等)支付测试[12]



    2 NFC设计原理
    21 NFC技术简介
    NFC(Near Field Communication距离线通信)项距离高频线通信技术允许设备短距离(10厘米)非接触式数传输NFC消费者提供简单直观信息交换存取容触控解决方案该技术非接触线频率识(RFID)发展成RFID处手机等设备NFC技术着天然安全性移动消费领域应高性NFC芯片中综合非接触式读卡器非接触式卡片P2P功消费者提供更新生活方式
    22 NFC通信原理
    NFC般NFC设备NFC设备NFC标签间完成通信发起通信设备称发起设备应答接收设备目标设备两种NFC设备通交互磁场相互连接通载波传送数字信号发起设备产生射频场初始化通信编码调制方式传输速度等目标设备接收信号选择两种磁场进行应答发起设备线射频磁场二产生线射频磁场NFC设备具两种通信模式:动模式动模式[13]
    221 动模式
    动模式双方设备发起设备通身创建射频场目标设备发送数目标设备样需创建身射频场发起设备应答需发起设备产生射频场动模式图21示

    设备
    NFC
    发起者
    NFC
    目标设备
    设备
    供电产生RF场
    初始命令
    1发起者选定传输速度开始通信
    设备
    NFC
    发起者
    NFC
    目标设备
    设备
    供电产生RF场
    数字处理供电
    应答
    2设备目标相速度应答
    数字处理供电

    图21 NFC动模式
    种广义点点(P2P)通信模式种通信模式双方设备均身产生射频场进行通信迅速传送数双方设备建立连接更加方便
    222 动模式
    通信程中发起设备创建射频场动模式目标设备发送数目标设备发起设备创建射频场发起设备应答动模式目标设备需创建射频场完成数传输发起设备称设备目标设备称设备NFC设备置NFC芯片中天线收发线数天线进入射频场开始通信降低电池寿命损耗动模式图22示

    NFC
    发起者
    NFC
    目标设备
    设备
    供电产生RF场
    数字处理供电
    设备
    1发起者选定传输速度开始通信
    2目标设备相传输速度负载调制数应答

    图22 NFC动模式

    动模式动模式区发起设备目标设备创建电磁场量消耗动通信模式双方设备需创建通信需射频场动通信模式发起设备创建电磁场需双方设备通信提供传输通道会消耗目标设备更电力NFC终端设备动模式运行更减少电力消耗延长电池寿命应程序通信程中NFC设备两种工作模式转换允许设备电量足甚关机情况动转换成动模式作目标设备发起设备提供射频场完成数传输
    23 NFC工作模式
    NFC分读写模式点点模式卡模拟模式三种工作模式
    1读写模式(ReaderWriter Mode)
    NFC设备作非接触式读取器例通展会信息海报产品外包装外部非接触式卡片非接触式标签直接读取中信息
    2点点模式(PeertoPeer Mode)
    交换数优点传输距离短传输生成速度快电力消耗低连接两NFC支持设备传送文信息网址程序调图片等数支持NFC种设备交换数服务
    3卡模式(NFC Card Emulation Mode)
    实际种射频识技术IC卡模式购物中心公交卡出入制车票车票等IC卡(包括信卡)代[14]通种方式终端机设备(手机等)没电源通非接触式读取器射频场卡中提供电源完成信息识
    24 NFC优势
    线频率传输距离启动速度配难易程度安全性通信模式成等方面较NFCBluetoothWifi红外具体较程见表21

    表21 NFC蓝牙Wifi红外技术
    技术
    NFC
    蓝牙
    Wifi
    红外
    线电频率
    1356MHz
    24GHz
    24GHz5GHz
    38kHz
    传输距离
    <01m
    100m
    300m
    1152kbits
    速度
    106212
    424kbits
    1~3Mbits
    300Mbits
    1152kbits
    启动速度
    <01s
    1~6s
    5s
    05s
    配难度
    需配
    较难
    较难
    较难
    安全性
    具备软硬件实现
    具备软件
    实现

    具备IRFM外
    通信模式
    动动动
    动动

    动动





    三种通信技术相NFC具启动速度快安全性高种通信模式配难度低成低优点NFC传送数求红外线样精准齐求Bluetooth样复杂配程序两者简单快速外NFC传送距离较短次连接台设备保密性安全性强传送数时盗危险减少更适合传输金融信卡等敏感信息避免交易中出现盗
    25 NFC应关键技术
    251 Android NFC API 简介
    API应程序调接口Android系统API 9引入NFC API 目前止系统NFC应开发提供两JAVA包分 androidnfcandroidnfctech [15]

    1androidnfc包
    包中类支持NFC设备间完成数交换NFC标签中读取写入操作类名描述表22
    表22 androidnfc包类
    类名
    描述
    NfcManager
    NFC Adapter理器直接静态方法getDefaultAdapter 获取系统支持适配器
    NfcAdapter
    NFC适配器定义Intent请求系统检测tags提醒发送预先定义Activity提供方法注册前台tag提醒发布前台NDEF推送
    NdefMessage
    NDEF消息NFC坛定义数结构效存储数NFC tags(文URLMIME类型)NdefMessage象包含记录(NdefRecord)
    NdefRecord
    NdefMessage中包括记录中存放原始记录
    NfcEvent
    封装NFC相关信息
    Tag
    手动检测标签象果检测标签会Intent中生成标签封装然传送接受注册Intentactivity中getTechList()方法tag支持技术细节创建androidnfctech 提供相应TagTechnology象






    2androidnfctech包
    提供类型标签读写操作提供前支持标签类型描述读写操作表23
    表23 androidnfctech包类
    类名
    描述
    TagTechnology
    获取连接NFC标签
    NfcA
    提供NFCA(ISO 144433A)属性IO操作访问
    NfcB
    提供NFCB(ISO 144433B)属性IO操作访问
    NfcF
    提供NFCF(JIS 63194)属性IO操作访问
    NfcV
    提供NFCV(ISO 15693)属性IO操作访问
    IsoDep
    提供ISODEP (ISO 144434)属性IO操作访问
    Ndef
    提供格式化NDEFtag数访问操作
    NdefFormatable
    格式化成NDEF格式tag提供格式化操作
    MifareClassic
    果android设备支持MIFARE提供MIFARE Classic目标属性IO操作
    MifareUltralight
    果android设备支持MIFARE提供MIFARE Ultralight目标属性IO操作
    NfcBarcode
    支持仅包含barcode(条形码)Tag
    252 NDEF简介
    NDEF (NFC Data Exchange Format)动模式动模式动模式NFC设备间数交换时通数格式NFC坛定义
    NDEF类型应定义效载荷封装NDEF Message中效载荷TypeLengthIdentifier描述类型标识URLMIME媒体类型特定NFC数类型NDEF种样数记录组成张记录报头(Header)效载荷(Payload)组成NDEF记录数类型报头表示中包括三部分长度(Length)类型(Type)标识(Identifier)NDEF结构图23示

    NDEF信息
    Record1 Record2 Record3


    Header Payload
    Identifier Length Type


    图23 NDEF结构
    Length相NDEF中表示payload字节长度PAYLOAD_LENGTHType相NDEF中TNF_TYPE类型域指定载荷类型Identifier制定指定载荷否含NDEF记录
    中TNF值说明TYPE值格式值具体定义表24示
    表24 TNF定义

    TNF
    定义
    0x00
    TNF_EMPTY
    表示存该记录相关类型效载荷
    0x01
    TNF_WELL_KNOWN
    表示TYPE字段包含值遵循NFC坛RTD规范中定义RTD类型名称格式
    0x02
    TNF_MIMIE_MEDIA
    表示TYPE字段包含值遵循RFC 2046中定义媒体类型BNF构造
    0x03
    TNF_ABSOLUTE_URI
    表示该类型字段包含值该值遵循RFC 3986中定义绝BNF结构
    0x04
    TNF_EXTERNNAL_TYPA
    表示TYPE字段包含值遵循NFC RTD外部类型名称定义类型名称格式
    0x05
    TNF_UNKNOWN
    指示未知类型效负载
    0x06
    TNK_UNCHANGED
    必须分块效载荷中间记录块终止记录块中
    0x07
    Reserved
    保留
    253 声明Android Manifestxml元素
    应通AndroidManifestxml中声明项Android系统申请访问NFC硬件权限设置intent滤器
    1 NFC通元素访问NFC硬件

    2 API 9支持少数tag属性包括:
    (1)通ACTION_TAG_DISCOVERED发布Tag信息
    (2)通EXTRA_NDEF_MESSAGES扩展访问NDEF消息
    API 9支持剩余tag属性IO操作需API 10支持

    3usesfeature 元素定义:声明应程序必须赖NFC硬件

    4 Activity滤器中添加intent滤器权限:

      
     



      
                       androidresource@xmlnfc_tech_filterxml >



      




    3 APP设计
    31 需求分析
    311 设计需求分析
    文目设计基Android系统拥三种功APP卡模拟功点点信息传输功读取电子标签功三种功设计原理分基卡模拟模式P2P模式读写器模式三种模式图31示

    卡模拟模式
    NFC应
    P2P模式
    读写器模式
    卡模拟功
    P2P信息传输功
    读取电子标签功

    图31 应功模块原理
    312 功需求分析
    该APP需实现功:
    (1)卡模拟功:该功基卡模拟模式Android手机进入动模式充目标设备读卡器充发起设备手机读卡器时通读卡器产生射频场手机产生线频率射频场耦合达读卡器识手机模拟卡读取卡信息
    (2)点点信息传输功:该功基P2P模式两部Android手机进入动模式部手机充发起设备部设备充目标设备两者产生射频场需助外部辅助工具完成信息传输
    (3)读取电子标签功:该功基读写器模式Android手机进入动模式充发起设备电子标签充目标设备手机产生射频场电子标签手机时通射频场手机识电子标签读取里面信息

    313 环境需求分析
    整APP开发程中需开发环境分硬件环境软件环境:
    (1)硬件环境:电脑支持NFCAndroid手机NFC电子标签NFC读卡器
    (2)软件环境:Windows 7Android Studio
    具体描述表31示
    表31 APP开发环境
    环境类型
    名称
    描述
    硬件环境
    电脑
    NFC应代码编写编译均电脑完成
    安卓手机
    APP基安卓系统开发应手机安卓系统
    NFC电子标签
    APP中读卡器功需读取NFC标签验证该功否电子标签中读取中信息
    NFC读卡器
    APP中卡模拟功需NFC读卡器验证该功否读取出卡中信息
    软件环境
    Windows 7
    PC机操作系统
    Android Studio
    Android APP开发环境
    32 软件开发环境搭建
    1载JDK新建两环境变量变量名分:
    1)JAVA_HOME表示配置JDK安装路径(图32)
    2)CLASSPATH表示Java虚拟机类型文件位置(图33)


    图32 新建环境变量JAVA_HOME


    图33 新建环境变量CLASSPATH
    2PATH变量中新建两变量值图34


    图34 PATH变量中新建变量值
    3载完SDK系统变量中新建环境变量(图35示)PATH变量中新建两环境变量(图36示)


    图35 新建环境变量ANDROID_SDK_HOME


    图36 PATH变量中新建变量值
    4载完Android Studio图37处设置JDKSDK路径


    图37 设置JDKSDK路径


    33 系统程序设计
    系统程序模块组成图38示该程序三模块组成分卡模拟模块点点传输模块读卡器模块程序运行时先模块初始化然根需求点击进入模块开始执行相应功结束回界面等次功选择


    图38 程序组成模块
    程序中需首先声明NFC添加相应权限应Android系统中运行代码图39中示


    图39 声明NFC开通相应权限
    然检测设备否已开启NFC功首先获取设备中默认NFC适配器判断适配器否空空表示该手机没NFC功令函数返回值0应法继续空进入步判断手机否已开NFC功果检测没开启跳NFC设置界面开启NFC果检测已开启返回值1具体代码图310示


    图310 检测NFC状态
    34 卡模拟模块设计
    341 工作模块设计
    模块应NFC工作模式中卡模模式手机模拟成IC卡读卡器完成读卡器成功识出IC卡中信息模块采机卡模式(HCE)实现卡模拟功
    卡模拟模块工作流程图图311示户根需求选择新建模拟卡卡中填写相关信息然卡片库中挑选需模拟卡手机NFC读卡器读卡器接收数解析显示出卡片相关信息



    进入卡模拟模块
    创建IC卡
    录入卡片库
    否录入成功
    选择需模拟卡片
    开始模拟
    读卡器否识
    结束
    否需创建IC卡





    图311 卡模拟模块流程图
    342 读卡器端选择
    读卡器端采PN532作发起设备发射电磁场手机作目标设备时读取手机模拟卡中信息PN532包含80C51微控制核(40KB ROM1KB RAM)高度集成解调器解码器拥射频电检测器射频场检测器数模式检测器集成种动动式非接触通信方法协议PCB原理图312示

    图312 PN532 PCB原理图
    35 点点传输模块设计
    模块利NFC中P2P传输功实现两台NFC设备间短距离非接触时完成数传输点点传输运行流程图图313示发送端输入文信息会信息封装NDEF中通前台Activity功NDEF消息传送接收端接收端获取NDEF判断NDEF Record中TNFTYPE类型根类型解析方式终解析里面信息

    点点传输模块
    选择传输模式
    选择接收模式
    输入传输信息
    开始传送
    接收设备否收信息

    结束
    开始接收信息
    否收信息




    图313 点点传输模块流程图
    系统中前台推送功支持设备设备间数交换3条件满足运行前台推送功:1)推送数Activity必须前台Activity2)必须需发送数封装NdefMessage中3)接收设备必须支持comandroidnpp NDEF推送协议
    发送端根调Android提供isNdefPushEnable()函数判断手机Beam功否开启返回值T时开始发送Beam NDEF消息选择文件文件封装NDEF中检测接收端时文件传输接收端中
    接收端样首先根调Android提供isNdefPushEnable()函数判断返回值F时接收发送端传输Beam NDEF消息接收设备接收数首先intent中提取出MessageMessage中提取出RecordRecord中提取出终传送数(解析数代码见附录1)

    36 读卡器模块设计
    361 工作模块设计
    模块利NFC读写功实现NFC电子标签中读取存储信息功完成解析程模块采标签调度机制完成读取信息读取电子标签信息流程图314示

    进入读卡器模块
    初始化NFC参数
    检测NFC标签
    获取NDEF消息
    解析NDEF消息
    结束

    图314 读卡器模块流程
    (1)初始化前台标签调度系统应参数
    (2)设备扫描标签时系统会安排适合标签Activity处理先程序中Acytivity里声明识NFC标签图315示


    图315 Activity中声明识NFC标签
    (3)获取识tagAndroid系统会提供Intent发布系统前台Activity发布系统两系统处理识tag前台调度系统开(调代码图316)运行Activity时intent发布系统更高优先级处理tag果前台Activity处理调NfcUtils()函数(函数具体代码见附录2)读取NFC数调代码见图317果前台Activity支持处理tag传递Intent发布系统处理Intent发布系统启动Intent3操作启动优先级高低分:
    1)androidnfcactionNDEF_DISCOVERED
    2)androidnfcactionTECH_DISCOVERED
    3)androidnfcactionTAG_DISCOVERED
    高优先级操作先启动判断否符合检测tag果符合低优先级操作便启动等次检测果符合低优先级操作启动判断否符合符合低优先级操作启动Intent发布系统流程图318示


    图316 调前台调度系统


    图317 调工具读取NFC数

    TAG_DISCOVERED
    Yes
    Yes
    Yes
    NDEF格式标签
    NDEF_DISCOVERED
    存注册处理
    NDEF_DISCOVER类型IntentActivity
    非NDEF格式标签
    TECH_DISCOVERED
    存注册处理
    TECH_DISCOVER类型IntentActivity
    存注册处理
    TAG_DISCOVER类型IntentActivity
    Intent发送Activity
    No
    No

    图318 Intent发布系统流程
    (4)获取NDEF判断NDEF Record中TNFTYPE类型根类型解析方式
    362 电子标签选择
    NTAG21x系列恩智浦半导体公司研发NFC设备通信标准标签通信模式图319示市场中常见NFC电子标签样式图320示左右分卡片式贴纸式滴胶式贴纸式意位置粘贴例商品外包装宣传海报等轻轻触碰读取商品者海报中信息滴胶式身携带起非常灵活方便
    文选择NTAG21x系列中NTAG216作目标设备存储容量888字节手机进入读卡器模式电子标签进入手机产生射频场中手机读取标签中信息NTAG216通FAST_READ命令快速扫描完整NDEF消息


    图319 NTAG216工作模式


    图320 市场中常见NFC电子标签



    4 结
    41 文总结
    着线技术快速发展NFC技术具安全反应时间更短耗低等优点受众企业青睐具良发展前景国基础设施产业链完善导致NFC技术没完全开发出众消费者普率率较低根情况文设计开发基Android系统NFC应实现卡模拟读取电子标签P2P传输三种功
    整APP设计程中研究设计中关NFC关键技术例NFC 调接口命令(API)NDEF协议声明Android Manifestxml元素等根设计需求完成基AndroidNFC应实现读取电子标签点点通信卡模拟功整设计程中学调度Intent发布系统前台Activity发布系统明白发送时封装需传送数接收时收数解析成传送数
    42 问题展
    文完成基Android系统NFC应设计实现应中三功模块独立互干扰户根需求选择模块进行操作场景较高价值技术水时间限文存完善方需日工作中进步完善具体分点:
    1 读卡器模块实现读取电子标签功未继续研究电子标签写入信息功
    2 P2P模块中未够增加网址位置等信息传输功
    3 未卡模拟模块加入数库完成扫卡记录统计
    4.APP交互界面优化空间



    参考文献
    [1]王宇伟张辉基手机NFC应研究[J]中国线电20076:38
    [2]宋海燕基AndroidNFC文件传输系统设计实现[D]北京:北京邮电学2012
    [3]马欢NFC手机场支付户意愿调查研究[D]天津:天津财学2017
    [4]李娟 NFC技术校园应方案分析[J] 物联网技术2013(09):5354
    [5]NFC ForumNFC_Forum_Mobile_NFC_Ecosystem_White_Paper[OL]
    httpnfcforumcom2006
    [6]晓晨 NFC技术全球支付领域试运行[J] 中国电子商情(RFID技术应)
    2009(06):1315
    [7]李晓延 巨头带队NFC开始升温[J] 日电子2011(07):88
    [8]Vincent Poulbere NFC商全球起步规模部署时日[EBOL]通信世界网200711 httpzhuanticwwnetcnnewshtml20071120
    [9]手机支付具强市场力量商业潜力[J]IT时代周刊20160810
    [10]王洋洋针NFC技术云端体系架构研究[D]重庆:西南学3013
    [11]吴勇毅 Apple Pay开启手机NFC支付时代[J] 海信息化2016(5):44
    [12]李林陈吉慧国移动支付商业模式发展趋势研究[J]商业时代20100330
    [13]陈文正予Android系统NFC技术实现[D]连:连理工学2011
    [14]孙成丹 彭木根 场通信技术1[J] 中兴通讯技术2013(04):6770
    [15]Tom IgoeDon ColemanBrian JeponBeginning NFC Near Field Communi cation with ArduinoAndroidand PhoneGap O’ Reilly MediaInc1005 Graven stein Highway NorhSSebastopolCA95472 20130113



    谢 辞
    天没散宴席学四年转瞬逝生活历历目现已毕业四年学生涯中成长学东西中老师学朋友方面予帮助私爱心帮助表达衷感谢
    首先感谢指导老师孟老师回文句话离开孟老师帮助题目拟定容选择结构框架资料搜集整理提炼字句反复斟酌环节孟老师指点文终完成波三折程断完善修改程中更加懂分耕耘分收获道理
    次感谢学感谢学文完成程中予建议思路点拨思路卡住时柳暗花明村学四年生活中夕相处学难忘回忆起欢笑起悲伤互相帮助进步感谢学关心留美回忆没会生活中遇更困难
    感谢父母心良苦支持鼓励四年成功否总鼓励监督帮助会沉沦会迷茫谢谢会继续努力




    附 录
    附录1
    接收数中提取出传送信息
    private void resolveIntent(Intent intent) {
    String action intentgetAction()
    判断遍
    if (NfcAdapterACTION_NDEF_DISCOVEREDequals(action)) {

    NdefMessage[] messages null
    通EXTRA_NDEF_MESSAGES_KeyNFC发Message数组
    Parcelable[] rawMsgs
    intentgetParcelableArrayExtra(NfcAdapterEXTRA_NDEF_MESSAGES)
    if (rawMsgs null) {
    messages new NdefMessage[rawMsgslength]
    for (int i 0 i < rawMsgslength i++) {
    messages[i] (NdefMessage) rawMsgs[i]
    }
    } else {
    未知TagType
    byte[] empty new byte[]{}
    NdefRecord record
    newNdefRecord(NdefRecordTNF_UNKNOWN empty empty empty)
    NdefMessage msg new NdefMessage
    (new NdefRecord[]{record})
    messages new NdefMessage[]{msg}
    }
    Message中取出Record(定义方法)
    progressNDEFMsg(messages)
    } else if (NfcAdapterACTION_TECH_DISCOVEREDequals(action)) {
    DebugUtilsLogI(Tag_ASSIST + ACTION_TECH_DISCOVERED
    getClass())
    }
    else if (NfcAdapterACTION_TAG_DISCOVEREDequals(action)) {
    DebugUtilsLogI(Tag_ASSIST + ACTION_TAG_DISCOVERED
    getClass())
    } else {
    DebugUtilsLogI(Tag_ASSIST + UnKnown TAG getClass())
    finish()
    return
    }

    }

    private void progressNDEFMsg(NdefMessage[] messages) {
    非空
    if (messages null || messageslength 0) {
    return
    }
    for (int i 0 i < messageslength i++) {
    int length messages[i]getRecords()length
    NdefRecord[] records messages[i]getRecords()
    for (NdefRecord record records) {
    首先需确定文字
    if (isTextRecord(record)) {
    然 取出数
    parseRTD_TEXTRecord(record)
    }
    }
    }
    }

    private void parseRTD_TEXTRecord(NdefRecord record) {
    记录格式验证
    PreconditionscheckArgument(recordgetTnf()
    NdefRecordTNF_WELL_KNOWN)
    记录类型验证
    PreconditionscheckArgument(Arraysequals(recordgetType() NdefRecordRTD_TEXT))

    String payloadStr
    byte[] payload recordgetPayload()
    Byte statusByte recordgetPayload()[0]
    String textEncoding ((statusByte & 0200) 0) UTF8 UTF16
    0x800200 获取状态字节编码
    获取语言码长度
    int languageCodeLength statusByte & 0077 & 0x3F0077(bit 5 to 0)
    String languageCode new String(payload 1 languageCodeLength CharsetforName(UTF8))
    try {
    payloadStr new String(payload languageCodeLength + 1 payloadlength languageCodeLength 1 textEncoding)
    } catch (UnsupportedEncodingException e) {
    DebugUtilsLogI(异常信息 + egetMessage() getClass())
    }
    }



    附录2
    封装NFC读写
    public class NfcUtils {

    nfc
    public static NfcAdapter mNfcAdapter
    public static IntentFilter[] mIntentFilter null
    public static PendingIntent mPendingIntent null
    public static String[][] mTechList null

    **
    * 构造函数初始化nfc
    *
    public NfcUtils(Activity activity) {
    mNfcAdapter NfcCheck(activity)
    NfcInit(activity)
    }

    **
    * 检查NFC否开
    *
    public static NfcAdapter NfcCheck(Activity activity) {
    NfcAdapter mNfcAdapter NfcAdaptergetDefaultAdapter(activity)
    if (mNfcAdapter null) {
    return null
    } else {
    if (mNfcAdapterisEnabled()) {
    Intent setNfc
    new Intent(SettingsACTION_NFC_SETTINGS)
    activitystartActivity(setNfc)
    }
    }
    return mNfcAdapter
    }

    **
    * 初始化nfc设置
    *
    public static void NfcInit(Activity activity) {
    mPendingIntent PendingIntentgetActivity(activity 0 new Intent(activity activitygetClass())addFlags(IntentFLAG_ACTIVITY_SINGLE_TOP) 0)
    IntentFilter filter new
    IntentFilter(NfcAdapterACTION_NDEF_DISCOVERED)
    IntentFilter filter2 new
    IntentFilter(NfcAdapterACTION_TAG_DISCOVERED)
    try {
    filteraddDataType(**)
    } catch (IntentFilterMalformedMimeTypeException e) {
    eprintStackTrace()
    }
    mIntentFilter new IntentFilter[]{filter filter2}
    mTechList null
    }

    **
    * 读取NFC数
    *
    public static String readNFCFromTag(Intent intent) throws
    UnsupportedEncodingException {
    Parcelable[] rawArray
    intentgetParcelableArrayExtra(NfcAdapterEXTRA_NDEF_MESSAGES)
    if (rawArray null) {
    NdefMessage mNdefMsg (NdefMessage) rawArray[0]
    NdefRecord mNdefRecord mNdefMsggetRecords()[0]
    if (mNdefRecord null) {
    String readResult new String(mNdefRecordgetPayload() UTF8)
    return readResult
    }
    }
    return
    }


    **
    * nfc写入数
    *
    public static void writeNFCToTag(String data Intent intent) throws
    IOException FormatException {
    Tag tag intentgetParcelableExtra(NfcAdapterEXTRA_TAG)
    Ndef ndef Ndefget(tag)
    ndefconnect()
    NdefRecord ndefRecord NdefRecordcreateTextRecord(null data)
    NdefRecord[] records {ndefRecord}
    NdefMessage ndefMessage new NdefMessage(records)
    ndefwriteNdefMessage(ndefMessage)
    }

    **
    * 读取nfcID
    *
    public static String readNFCId(Intent intent) throws
    UnsupportedEncodingException {
    Tag tag intentgetParcelableExtra(NfcAdapterEXTRA_TAG)
    String id ByteArrayToHexString(taggetId())
    return id
    }

    **
    * 字节数组转换字符串
    *
    private static String ByteArrayToHexString(byte[] inarray) {
    int i j in
    String[] hex {0 1 2 3 4 5 6 7 8 9 A B C D E F}
    String out

    for (j 0 j < inarraylength ++j) {
    in (int) inarray[j] & 0xff
    i (in >> 4) & 0x0f
    out + hex[i]
    i in & 0x0f
    out + hex[i]
    }
    return out
    }
    }

    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 60 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    基于Android的FTP文件传输

     毕业设计(论文) 题 目 基于Android的FTP文件传输 姓 名 学 ...

    5年前   
    1057    0

    基于Android植物大战僵尸

    摘要 手机游戏,顾名思义就是指在手机上运行的游戏软件。目前用来编写手机程序使用最多的是 Java 语言。随着科技的发展,手机的硬件更新速度越来越快,功能也越来越强大。现在的手机游戏具有很强的...

    5年前   
    1300    0

    基于Android智能风扇的设计

    由于科技越来越发达,智能硬件也使用越来越多,基于蓝牙的技术开发以及应用也是快速的发展。其使用在Android系统和Windows系统等平台上都可以使用蓝牙无线模块。可以实现了主蓝牙设备和从设备它...

    3年前   
    969    0

    基于Android Studio的饼图账单的设计与开发Android毕业论文

    毕 业 论 文 基于Android Studio的饼图账单的设计与开发Design and Development of PieChart Billing Based on Android S...

    4年前   
    786    0

    Android实训报告基于Android的游戏开发

    通信与电子信息专业实训报告项目名称:基于Android的游戏开发 班 级 通信班 姓 名 ...

    3年前   
    1078    0

    基于Android的教学课程系统设计与开发

    摘 要移动应用已经成为人们生活必不可缺的一部分,大学生身为移动应用的最大用户群体,在生活学习娱乐各个方面都与移动应用有着紧密联系,然而针对大学生校园学习的移动应用却寥寥无几,因为不同的...

    3年前   
    611    0

    基于Android的中国象棋毕业设计

    基于Android的中国象棋毕业设计 摘 要 现在智能操作系统迅速发展,使得智能手机和其他的智能移动设备得到广泛普及,因此,智能操作系统的应用软件开发及其需要的服务将有广阔的发展前景...

    5年前   
    1210    0

    基于android的物业管理系统的设计与实现19.8

     目录基于android的物业管理系统的设计与实现 3摘 要 3Android property managemengt system 5Abstract 51 绪论 61.1 选题背景 6...

    3年前   
    798    0

    基于Android的网上订餐系统毕业论文

    XX 大 学 毕 业 设 计( 论 文 ) 题目 基于Android的网上订餐系统 作者 学院 专业 学号 指导教师 二〇XX 年 X月 X日 摘 要 ...

    5年前   
    1804    0

    基于Android的志愿活动平台的设计与实现

     基于Android的志愿活动平台的设计与实现 ...

    11个月前   
    467    0

    基于Android的外卖点餐类的app的设计与开发

    基于Android的外卖点餐类app的开发与设计 摘 要:在这千变万化的岁月中,手机已不是稀奇之物。规矩的传统订餐已经不能在我们生活中得到满足,用户们需要一个可以在家查看餐厅以及点餐的服务。...

    7个月前   
    192    0

    论文开题报告:定稿基于Android的快递APP设计与实现

    目前,为了提高取件效率,快递公司在一些快递密集型的投放点放置了智能云柜,取件人通过快递公司发送的密码来开启云柜。虽然这种方式大大提高了取件效率,让取件人的取件时间更加自由,但是云柜只能存放一些体...

    5年前   
    2904    0

    基于Android的电子书阅读器的设计与实现

    毕业设计说明书(论文)中文摘要Android平台现在非常的火,我们平时使用的智能手机,平板电脑,还有新的智能电视,有很大部分是基于Android平台的,很显然,它在人们生活中的表现得越来越重要...

    3年前   
    634    0

    基于安卓Android智能家居详细设计毕业论文

    基于Android的智能家居目 录第 1 章 项目概述 11.1 项目背景 11.2 术语定义 2第 2 章 技术方案 32.1 系统描述 32.2 功能描述 32.3 项目功能图 4...

    3年前   
    1130    0

    基于Android的智能停车系统的设计与开发(修改版)

    在对城市停车位供给紧缺、停车难以及乱停车等问题进行解决时,可以研究其根源,对城市的有效停车位进行增加,构建现代化停车场,另外也可以针对目前已有的停车场进行科学合理的配置、控制以及调度。

    3年前   
    488    0

    基于Android移动平台图像处理系统开发

    在今天的全球化世界里,科技不断的进步与创新更加促进了外语学习途径的多样化,随着人们学习方式的便捷并迅速的发展,特别是以电子词典为主工具的出现,用户对此类产品的便捷、功能的要求越来越高。目前,电子...

    3年前   
    3342    0

    基于Android的天气预报查询系统的实现毕业设计

     基于Android的天气预报查询系统的实现 摘要:随着智能手机一步步走进人们的生活,它将成为人们获取信息的主要设备,相关应用越来越广泛,并在人们的日常生活中扮演着越来越重要的角色。因此,...

    5年前   
    1958    0

    基于旅行类手机APP的测试的初步研究

    随着人们生活水平的不断提高,人们对生活的对生活的要求已经不满足于温饱,更加追求精神上的追求和放松,加上现在社会节奏变快,现代人都“绷着一根弦”生活。因此,外出旅行成了人们放松精神,释放压力的不二选择。

    3年前   
    930    0

    Lightboard在线教学开发与应用

    Lightboard在线教学开发与应用摘要:随着教师出镜在网络课程中获得日益普遍的使用,学生对影响他们的注意状况和学习效果、显著增强沉浸感以及师生的互动性也提出了更高的要求。为解决目前广泛使用...

    1年前   
    305    0

    android学习心得

    android学习心得第一篇:android学习心得android入门心得工具使用1. 打开已有工程:方法1:eclipse>file>new>android project>next>cre...

    8年前   
    623    0

    文档贡献者

    平***苏

    贡献于2023-03-09

    下载需要 60 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档