移动应用开发结课论文月南君

在移动平台开发的课上,老师给了我们一份源码(其实是让我们自己写出来,她是为了给我们参考的哈哈哈),让我们添加她要求的功能,按照博主尿性这次博客肯定就不会介绍这个应用的开发了,我会把结课的论文发上来。

Android系统中NFC应用的开发

孙黎楠

关键词:Android;NFC;支持开发

现在,NFC工作模式主要有三种:

点对点模式(P2Pmode):这个模式和红外线差不多,可用于数据交换,只是传输距离较短,传输创建速度较快,传输速度也快些,功耗低(蓝牙也类似)。将两个具备NFC功能的设备链接,能实现数据点对点传输,如下载音乐、交换图片或者同步设备地址薄。因此通过NFC,多个设备如数位相机、PDA、计算机和手机之间都可以交换资料或者服务;

1.Android.nfcpackage包含顶层类用来与本地NFC适配器交互.这些类可以表示被检测到的tags和用NDEF数据格式。

描述

一个NFCadapter的管理器,可以列出所有此android设备支持的NFCadapter.

只不过大部分android设备只有一个NFCadapter,所以你大部分情况下可以直接用静态方法getDefaultAdapter(context)来取适配器。

表示本设备的NFCadapter,可以定义Intent来请求将系统检测到tags的提醒发送到你的Activity.并提供方法去注册前台tag提醒发布和前台NDEF推送。

前台NDEF推送是当前android版本唯一支持的p2pNFC通信方式。

And

NDEF是NFC论坛定义的数据结构,用来有效的存数据到NFCtags.比如文本,URL,和其他MIME类型。

在NdefMessage里的第一个NfcRecord的类型用来发送tag到一个android设备上的activity.

当一个tag被检测到,一个tag对象将被创建并且封装到一个Intent里,然后NFC发布系统将这个Intent用startActivity发送到注册了接受这种Intent的activity里。你可以用getTechList()方法来得到这个tag支持的技术细节和创建一个android.nfc.tech提供的相应的TagTechnology对象。

这个接口是下面所有tagtechnology类必须实现的。

支持ISO14443-3A标准的操作。ProvidesaccesstoNFC-A(ISO14443-3A)propertiesandI/Ooperations.

ProvidesaccesstoNFC-B(ISO14443-3B)propertiesandI/Ooperations.

ProvidesaccesstoNFC-F(JIS6319-4)propertiesandI/Ooperations.

ProvidesaccesstoNFC-V(ISO15693)propertiesandI/Ooperations.

ProvidesaccesstoISO-DEP(ISO14443-4)propertiesandI/Ooperations.

提供对那些被格式化为NDEF的tag的数据的访问和其他操作。

ProvidesaccesstoNDEFdataandoperationsonNFCtagsthathavebeenformattedasNDEF.

对那些可以被格式化成NDEF格式的tag提供一个格式化的操作

如果android设备支持MIFARE,提供对MIFAREClassic目标的属性和I/O操作。

如果android设备支持MIFARE,提供对MIFAREUltralight目标的属性和I/O操作。

通常,除非是在设备的设置菜单中NFC被禁用,否则Android设备会在非锁屏的状态下搜索NFC当Android设备发现NFC标签时,期望的行为是用最合适的Activity来处理该Intent,而不是询问用户使用什么应用程序因为设备只能在很短的范围内扫描到NFC标签,强制的让用户手动的选择一个Activity,会导致设备离开NFC标签,从而中断该连接。因此,在自己开发activity时应注意阻止选择器的操作。Android提供了特殊的标签调度系统,来分析扫描到的NFC标签,通过解析数据,在被扫描到的数据中尝试找到感兴趣的应用程序,具体做法如下:

1.解析NFC标签并搞清楚标签中标识数据负载的MIME类型或URI;

2.把MIME类型或URI以及数据负载封装到一个Intent中

3.基于Intent来启动Activity。

当Android设备扫描到包含NDEF格式数据的NFC标签时,它会解析该消息,并尝试搞清楚数据的MIME类型或URI标识首先系统会读取消息(NdefMessage)中的第一条NdefRecord,来判断如何解释整个NDEF消息(一个NDEF消息能够有多条NDEF记录)在格式良好的NDEF消息中,第一条NdefRecord包含以下字段信息:

1)3-bitTNF(类型名称格式)指示如何解释可变长度类型字段,在下表1中介绍有效值

2)可变长度类型说明记录的类型,如果使用TNF_WELL_KNOWN,那么则使用这个字段来指定记录的类型定义(RTD)在下表2中定义了有效的RTD值

3)可变长度ID唯一标识该记录这个字段不经常使用,但是,如果需要唯一的标识一个标记,那么就可以为该字段创建一个ID

4)可变长度负载你想读/写的实际的数据负载一个NDEF消息能够包含多个NDEF记录,因此不要以为在NDEF消息的第一条NDEF记录中包含了所有的负载

当标签调度系统完成对NFC标签和它的标识信息封装的Intent对象的创建时,它会把该Intent对象发送给感兴趣的应用程序。如果有多个应用程序能够处理该Intent对象,就会显示Activity选择器,让用户选择Activity。标签调度系统定义了三种Intent对象,以下按照由高到低的优先级列出这三种Intent对象:

1.ACTION_NDEF_DISCOVERED:这种Intent用于启动包含NDEF负载和已知类型的标签的Activity。这是最高优先级的Intent,并且标签调度系统在任何其他Intent之前,都会尽可能的尝试使用这种类型的Intent来启动Activity。

2.ACTION_TECH_DISCOVERED:如果没有注册处理ACTION_NDEF_DISCOVERED类型的Intent的Activity,那么标签调度系统会尝试使用这种类型的Intent来启动应用程序。如果被扫描到的标签包含了不能被映射到MIME类型或URI的NDEF数据,或者没有包含NDEF数据,但是是已知的标签技术,那么也会直接启动这种类型的Intent对象(而不是先启动ACTION_NDEF_DISCOVERED类型的Intent)

3.ACTION_TAB_DISCOVERED:如果没有处理ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED类型Intent的Activity,就会启动这种类型的Intent。

标签调度系统的基本工作方法如下:

1.用解析NFC标签时由标签调度系统创建的Intent对象(ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED)来尝试启动Activity;

2.如果没有对应的处理Intent的Activity,那么就会尝试使用下一个优先级的Intent(ACTION_TECH_DISCOVERED或ACTION_TAG_DISCOVERED)来启动Activity,直到有对应的应用程序来处理这个Intent,或者是直到标签调度系统尝试了所有可能的Intent。

3.如果没有应用程序来处理任何类型的Intent,那么就不做任何事情。

在可能的情况下,都会使用NDEF消息和ACTION_NDEF_DISCOVERED类型的Intent来工作,因为它是这三种Intent中最标准的。这种Intent与其他两种Intent相比,它会允许在更加合适的时机来启动应用程序,从而给用户带来更好的体验。

2.取决于应用程序所支持的最小的SDK版本。APILevel9只通过ACTION_TAG_DISCOVERED来支持有限的标签调度,并且只能通过EXTRA_NDEF_MESSAGES来访问NDEF消息。没有其他的标签属性或I/O操作可用。APILevel10中包含了广泛的读写支持,从而更好的推动了NDEF的应用前景,并且APILeve14用AndroidBeam和额外的方便的创建NDEF记录的方法,向外提供了更容易的把NDEF消息推送给其他设备的方法。

3.使用uses-feature元素,在GooglePlay中,以便应用程序能够只针对有NFC硬件的设备来显示。

要在想要处理被扫描到的NFC标签时启动应用程序,可以在应用程序的Android清单中针对一种、两种或全部三种类型的NFC的Intent来过滤。

1.通常想要在应用程序启动时控制最常用的ACTION_NDEF_DISCOVERED类型的Intent。

2.在没有过滤ACTION_NDEF_DISCOVERED类型的Intent的应用程序,或数据负载不是NDEF时,才会从ACTION_NDEF_DISCOVERED类型的Intent回退到ACTION_TECH_DISCOVERED类型的Intent。

3.通常ACTION_TAB_DISCOVERED是最一般化的过滤分类。很多应用程序都会在过滤ACTION_TAG_DISCOVERED之前,过滤ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED,这样就会降低应用程序被启动的可能性。ACTION_TAG_DISCOVERED只是在没有应用程序处理ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED类型的Intent的情况下,才使用的最后手段。

AndroidBeam允许在两个Android设备之间进行简单的对等数据交换,想要把数据发送给另一个设备的应用程序必须是在前台,并且接收数据的设备必须不被锁定。当发射设备跟接收设备的距离足够近的时候,发射设备会显示“TouchtoBeam(触摸发射)”的UI。然后,用户能够选择是否把消息发射给接收设备。

通过调用下列两个方法中的任意一个,就能够为应用程序启用AndroidBeam:

1.setNdefPushMessage():这个方法把接收到的NdefMessage对象作为一个消息设置给Beam。当两个设备足够近的时候,就会自动的发送消息。

2.setNdefPushMessageCallback():接收包含createNdefMessage()方法的回调,当设备在发射数据的范围内时,这个回调方法会被调用。回调会让你只在需要的时候创建NDEF消息。

一个Activity一次只能推送一条NDEF消息,因此如果同时使用了这两种方法,那么setNdefPushMessageCallback()方法的优先级要高于setNdefPushMessage()方法。要使用AndroidBeam,通常必须满足以下条件:

1.发射数据的Activity必须是在前台。两个设备的屏幕都必须没有被锁定;

2.必须发要发射的数据封装到一个NdefMessage对象中;

3.接收发射数据的NFC设备必须支持com.android.nppNDEF推送协议或是NFC组织的SNEP协议(简单的NDEF交换协议)。在APILevel9(Android2.3)到APILevel13(Android3.2)的设备上需要com.android.npp协议。在APILevel14(Android4.0)和以后的设备上,com.android.npp和SNEP都需要。

注意:如果在前台的Activity启用了AndroidBeam,那么标准的Intent调度系统就会被禁用。但是,如果该Activity还启用了前台调度,那么在前台调度系统中,它依然能够扫描到跟Intent过滤器匹配的NFC标签。

本文通过参考资料,向读者详细介绍了目前在安卓系统的智能手机乃至windowsPhone上应用广泛的NFC的开发方法,对于像论文作者一样的初学者来说这方面的知识并不简单,但是希望大家能像作者一样,在看完这篇论文后能学到更多的知识.

参考文献:

[1]维基百科Wikipedia,自由的百科全书,近场通信词条.

[2]安卓上NFC应用开发介绍.

[3]《深入Android应用开发:核心技术解析与最佳实践》,苗忠良、曾旭、宛斌著,第一版,机械工业出版社.

THE END
1.软件测试报告怎么写?软件测试报告是软件测试工作的重要成果之一,它对软件质量的评估和改进提供了重要依据。因此,如何撰写一份完整、准确、清晰的软件测试报告是每个测试人员都需要掌握的基本技能。下文将从软件测试报告的结构、内容和撰写要点等方面进行详细介绍。 首先,软件测试报告的结构通常包括标题、摘要、引言、测试H的、测试范围、测试环https://blog.csdn.net/m0_60889254/article/details/144346853
2.对毕业论文的总结优秀4篇经管文库(原现金交易版对毕业论文的总结优秀4篇 https://bbs.pinggu.org/thread-13159317-1-1.html
3.信息检索结课论文(精选6篇)也可以直接通过网络进行一次出版,出版形式多种多样,包括文本、图片、音频、视频、动画、软件、网络课程而中国网络产业在产品性能测试领域存在着严重不足,网络测试水平的高低可以说是决定了中国网络产业的前途信息检索结课报告04-29 信息检索论文综述05-26 信息检索论文总结04-08 信息检索分析论文04-16 信息检索https://www.360wenmi.com/f/file8239c8mc.html
4.结课论文格式模板范文(共13篇)财政学结课论文 财政专项资金在促进经济发展、推进民生改善、支持城市建设、加强社会管理等方面有着重要作用。根据当前财税体制改革、行政审批制度改革等相关部署要求,深化财政专项资金管理改革,是促进政府职能转变、履行财政事权和支出责任、提高财政资金绩效的重要内容。 一、推进财政专项资金管理改革的必要性 近年来,为适应https://www.hrrsj.com/wendang/lunwen/923792.html
5.大学生职业生涯与发展规划结课论文(精选33篇)大学生职业生涯与发展规划结课论文(精选33篇) 人生天地之间,若白驹过隙,忽然而已,又将迎来新的工作,新的挑战,先来制定一份职业规划吧。那么你真正懂得1)兴趣爱好: 看书,听音乐,下棋,Photoshop,网页设计,计算机信息管理,软件测试,编程 2)特长: 数据库维护管理,熟悉C 、Java、DELPHI、VB语言,精通C#语言,熟练https://www.yjbys.com/jiuyezhidao/zhiyeguihua/1650697.html
6.网站建设论文7000字?(网站建设文章)简介本篇文章给大家谈谈网站建设论文7000字,以及网站建设文章对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。跪求一篇论文“学院的网站 *** 与规划”大约6000-8000字百度知道是一个相互帮助 本篇文章给大家谈谈网站建设论文7000字,网站以及网站建设文章对应的建设知识点,希望对各位有所帮助,论文不要忘了收藏http://www.nybdqn.com/articles/594f899403.html
7.物理实验课程论文学院:汽车学院 班级:热动0504 姓名:张志强 学号:0120507210410大学物理实验论文 ---实验心得与体会通过这个学期的大学物理实验,我体会颇深。首先,我通过做实验了解了许多实验的基本原理和实验方法,学会了基本物理量的测量和不确定度的分析方法、基本实验仪器的使用等;其次,我已经学会了独立作实验的能力,大大提高了我https://www.zzmce.com/lunwen/135289.html
8.课程:软件工程综合实验2021每人一份。软件测试的目的,就是对软件系统的开发过程作总结,分析开发过程中出现的各种情况,采取的措施及达到的效果。通过总结积累经验,不断提高软件开发能力。 总结要包括软件系统开发的各个过程,包括需求分析,方案比较,总体设计,详细设计,系统实现和系统测试等。 https://aike.smu.edu.cn/course/view.php?id=1469
9.21调查丨“玄学”误判和偏见:高校检测AI论文背后南方+当时ChatGPT惊艳亮相不到半年,教育界一度担心学生有了“作弊神器”。在这一背景下,知名学术查重软件Turnitin率先推出了AI文本检测器,用来识别论文中的AI生成内容。国内的格子达、知网两大查重系统也先后上线了AIGC检测功能,王宇就是第一届被检测毕业论文AI率的学生。 https://static.nfapp.southcn.com/content/202402/27/c8638167.html
10.论文查重率用什么软件APP推荐论文查重率用什么软件下载豌豆荚论文查重率用什么软件榜单为您提供最新论文查重率用什么软件大全,这里不仅有论文查重率用什么软件安卓版本APP、历史版本应用下载资源,还有类似论文查重率用什么软件的应用推荐,欢迎大家前来豌豆荚下载。https://www.wandoujia.com/bangdan/393959/
11.土木工程论文(集合)通过借助办公自动化软件系统、施工平面图的设计系统、编制工程的进度网络系统、工程量的自动计算系统、施工组织设计的'自动生成系统、竣工图纸论文联盟www.LWlm.coM的绘制系统以及项目的管理系统等,实现对施工项目全过程的成本、物资台账、进度以及日常的信息管理。https://www.wenshubang.com/tumugongchengbiyelunwen/4598942.html
12.系统工程结课论文5篇(全文)高等工程力学结课论文 第3篇 摘要:弹塑性力学的理论基础得到了不断完善和补充,其理论体系日渐完善。同时,弹塑性力学的工程应用领域也在迅速扩大,一些原先纸上谈兵的理论已经变成工程师手中不可缺少的工具。弹塑性力学在工程方面的应用已经十分广泛,相信随着理论的不断充实完善以及新的施工设备及施工方法的不断涌现,弹https://www.99xueshu.com/w/filegs4ykbpq.html
13.地理信息系统论文大全15篇以我工作中应用到的办公软件“金土工程”中的地籍调查子系统为例,从一个方面展示一下地理信息系统是如何为城市测绘服务,有机的结合在一起成为城市测绘地理信息系统,为地籍调查工作提供依据及决策的。测量成果数字化。由测绘单位对外业采集的数据在计算机上进行数字化,在AutoCAD中绘制出数字地形图。(1)打开办公软件,https://www.fwsir.com/jy/html/jy_20240623160609_3888001.html