Android NFC开发(一)——初探NFC,了解当前前沿技术
Android NFC开发(一)——初探NFC,了解当前前沿技术
官方文档:http://developer.android.com/guide/topics/connectivity/nfc/index.html
我们根据Google的官方文档来
一.什么是NFC
NFC(Near Field Communication 近场通讯),他是当前逐渐火起来的一种技术,在以前,好像还一直不冷不热的样子,现在好像是块要爆发了,所以我们搞Android开发的感觉强撸了一把,随我来学习一下NFC的技术
二.NFC与WIFI,Bluetooth,红外线的差异
这些都是可以做数据传输的,但是差异最大的还是体现在有效距离上了,这里不能超过4CM
三.NFC的工作模式
- 读卡器模式(Reader/Witer Mode)
- 仿真卡模式(Card Emulation Mode)
- 点对点模式(P2P Mode)
四.读卡器模式(Reader/Witer Mode)
我们从某个支持NFC功能的媒介上读取相关数据
五.-仿真卡模式(Card Emulation Mode)
这也是运用比较广泛的,我们可以把手机刷公交,地铁之类的
功能就是这个模式,其原理就是将相应IC卡中的信息(支付凭证)封装成数据包存储起来,使用的时候NFC有个射频器,有设备靠近的时候,就会验证,读写,并且进行相应的处理,比如开门,支付什么的。
六.点对点模式(P2P Mode)
这个模式跟wifi热点有点类似,距离很短,两部设备连接起来可以共享数据,传输速度非常的快,而且如果两部手机都是Android4.2,NFC传输会直接利用蓝牙传输,这种技术称为Android Beam ,所以使用Android Beam传输数据的两部设备不再局限性在4CM内了
7.差异
图片借用了某网站哈
8.如何NFC标签被映射到MIME类型和URI
你开始写你的NFC应用之前,必须了解不同类型的NFC标签是很重要的,标签调度系统如何解析NFC标签和特殊的工作,当它检测到NDEF消息的标记调度系统一样。NFC标签来在广泛的技术和还可以有许多不同的方式写入到其中的数据。机器人具有用于NDEF标准
NDEF数据被封装的消息(内部NdefMessage),其中包含一个或多个记录(NdefRecord)。每个NDEF记录必须根据您要创建的记录类型的规格良好的。Android版 还支持其它类型的标签不包含NDEF的数据,您可以通过在使用类的工作android.nfc.tech包。要了解更多有关这些技术,请参阅高级NFC主题。这些其他类型的标签工作包括编写你自己的协议栈与标签进行通信,因此,我们建议使用NDEF在可能的情况,便于开发和最大支持Android的供电设备。
注意: 要下载完整NDEF的规格,请访问NFC论坛规范下载网站,看到 创建常见类型的NDEF记录了如何构建NDEF记录的例子。
现在,你有NFC标签的背景,下面的章节详细描述了Android的如何处理NDEF格式化的标签。当一个Android设备扫描包含NDEF格式的数据的NFC标签,它解析该消息并试图找出数据的MIME类型或标识的URI。要做到这一点,系统读取所述第一NdefRecord内侧NdefMessage以确定如何解释整个NDEF消息(一个NDEF消息可以有多个NDEF记录)。在一个结构良好的NDEF消息,第一NdefRecord 包含以下字段:
3-bit TNF (Type Name Format)
指示如何解释可变长度类型字段
Variable length type
描述了记录的类型。如果使用TNF_WELL_KNOWN,使用此字段指定记录类型定义(RTD)
Variable length payload
要读取或写入的实际数据的有效载荷。一个NDEF消息可以包含多个NDEF记录,所以不承担全部有效载荷在NDEF消息的第一NDEF纪录。
标签调度系统使用3-bit TNF (Type Name Format)和类型字段来尝试映射MIME类型或URI的NDEF消息。如果成功,它封装了一个内部的信息ACTION_NDEF_DISCOVERED与实际载荷一起意图。不过,也有当标签调度系统不能确定数据的基础上,第一个NDEF记录中的类型的情况。这种情况发生在NDEF数据不能被映射到一个MIME类型或URI,或当NFC标签不包含NDEF数据开始。在这种情况下,一个标签具有关于标签的技术和有效载荷信息对象被封装一个的内部ACTION_TECH_DISCOVERED意图代替。
表1描述了标签调度系统如何TNF和类型字段映射到MIME类型或URI的。它也描述了TNFs不能被映射到一个MIME类型或URI。在这些情况下,标签调度系统回落到 ACTION_TECH_DISCOVERED。
例如,如果标签调度系统遇到类型的记录TNF_ABSOLUTE_URI,它映射该记录成URI的可变长度类型字段。标签调度系统封装该URI在一个数据字段ACTION_NDEF_DISCOVERED意图提供关于标签的其他信息,例如有效载荷沿。在另一方面,如果遇到类型的记录TNF_UNKNOWN,它会创建一个封装标签的技术,而不是意图。
9.如何NFC标签被分派到应用程序
当标签调度系统做创建封装NFC标签和识别信息的意图,它发出的意图,对于意图过滤感兴趣的应用程序。如果有多个应用程序可以处理的意图,提出活动选配,以便用户可以选择的活动。标签调度系统定义了三个意图,这是在最高的顺序列出来最低优先级:
ACTION_NDEF_DISCOVERED:此意图是用来启动一个活动时,它包含一个NDEF净荷标签的扫描和是一个公认的类型。这是最高优先级的意图,并且标签调度系统尝试尽可能任何其他意图,之前启动这一意图的活动。
ACTION_TECH_DISCOVERED:如果没有活动登记办理
ACTION_TAG_DISCOVERED:如果没有活动处理这一意图开始-
- ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED 意图。
标签调度系统工作的基本方法如下:
尝试启动与由标签调度系统解析NFC标签(或时创建的意图一个Activity ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED)。
如果这一意图没有活动过滤器,尝试启动下一个优先级最低的意图(可以是活动ACTION_TECH_DISCOVERED或ACTION_TAG_DISCOVERED),直到意图或直至标签调度系统中的应用程序过滤器尝试所有可能的目的。
- 如果没有应用程序筛选任何意图的,什么也不做。
只要有可能,以NDEF消息和工作ACTION_NDEF_DISCOVERED意图,因为它是最特定出的三个。此意向,您可以在比其他两个意图更适当的时间启动应用程序,给用户更好的体验。
简介先讲到这里,后面就开始实战了,又不懂的可以翻越官方文档:http://developer.android.com/guide/topics/connectivity/nfc/nfc.html
Android NFC开发(一)——初探NFC,了解当前前沿技术的更多相关文章
- android游戏开发系列(2)——背景音乐播放技术
背景音乐通常播放时间较长,且文件体积也相对较大.这类资源如果放在内存中,一方面给硬件资源本身就很紧缺的手机造成了负担,另一方面通常也没有这方面的需求,放在内存中,在调用时播放速度较快,而长时音乐文件通 ...
- Android NFC开发(二)——Android世界里的NFC所具备的条件以及使用方法
Android NFC开发(二)--Android世界里的NFC所具备的条件以及使用方法 NFC的应用比较广泛,而且知识面也是比较广的,所以就多啰嗦了几句,我还还是得跟着官方文档:http://dev ...
- 《Android NFC 开发实战详解 》简介+源码+样章+勘误ING
<Android NFC 开发实战详解>简介+源码+样章+勘误ING SkySeraph Mar. 14th 2014 Email:skyseraph00@163.com 更多精彩请直接 ...
- 用Android模拟器也可以开发和测试NFC应用
从Android2.3开始支持NFC.不过NFC应用只能在Android手机(或平板电脑)上测试和开发,而且Android手机还必须有NFC芯 片.而且如果测试NFC传输文件时至少需要两部支持NFC的 ...
- Android NFC开发概述
NFC手机相比普通手机来说,有以下3个附加功能: 1.可以当成POS机来用,也就是“读取”模式 2.可以当成一张卡来刷,也就是NFC技术最核心的移动支付功能 3.可以像蓝牙.Wi-Fi一样做点 ...
- nfc开发
很多Android设备已经支持NFC(近距离无线通讯技术)了.本文就以实例的方式,为大家介绍如何在Android系统中进行NFC开发. Android NFC开发环境 使用硬件:Google Nexu ...
- 《NFC开发实战详解》笔记
地点:30教 5楼 男厕对面 * 时间:下午三点 * 天气:中雨 * 状态:3 * ******************************************************* ...
- Android NFC近场通信2——NFC标签调度
上面一篇文章简单介绍了NFC的背景和技术应用,今天主要是讲解一下NFC如何发起通信和标签通信(主要是翻译android官网的资料,中间加入个人心得). NFC总是在一个发起者和一个被动目标之间发生.发 ...
- NFC Basics(基本NFC)——翻译自developer.android.com
NFC Basics 关于收发NDEF格式的消息,以及相关的api. 非NDEFdata以及其它更深入技术请參见Advanced NFC. 在android端使用NDEF有两种情况: - 从标签读取N ...
随机推荐
- SpriteKit塔防游戏动态改变防御塔价格标签的颜色
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 本篇blog在DinoDefense塔防游戏基础之上做一处小的 ...
- ORACLE数据库学习之备份与恢复
oracle数据库的备份与恢复 第一部分:数据库的备份 备份的必要性 因为各种人为或外界的因素可能会造成数据库中灾难性的数据丢失,为了保证数据库中数据的安全,必须采取备份措施保证RDBMS中包含 ...
- Linux网络和进程管理
1) 计算机网络是通过外围的设备和连接,将分布在相同或不同区域的多台计算机 连接在一起所形成的集合.网络中的计算机实现彼此间互相通信,并且可以共 同使用硬件.软件和数据资源,实现资源共享.Lin ...
- 带你深入理解STL之迭代器和Traits技法
在开始讲迭代器之前,先列举几个例子,由浅入深的来理解一下为什么要设计迭代器. //对于int类的求和函数 int sum(int *a , int n) { int sum = 0 ; for (in ...
- The Chain Of Responsibility (1)
今天分享一下,设计模式中的责任链模式,其余的不过多叙述. 思路 在正式接触责任连之前,我们可以想象到的应该是一个链,链表?要处理一件事需要一个链似得?其实答案差不多就是这样.设计模式也都是从朴素的思维 ...
- Linux系统编程----僵尸进程
什么是僵尸进程? 僵尸进程, 指子进程退出后, 父进程还没有回收子进程的资源,这个子进程就处在于僵尸状态. 来看看如何产生? #include <stdio.h> #include < ...
- there was no endpoint listening at net.pipe://localhost/PreviewProcessingService/ReportProcessing
当你在开发reporting service报表时,进行报表的preview时报下图中的错误,以下方法可以让你直接跳过这个错误,继续查看报表的运行结果. 直接选择你需要运行查看的报表右击run就可以, ...
- 学习TensorFlow,浅析MNIST的python代码
在github上,tensorflow的star是22798,caffe是10006,torch是4500,theano是3661.作为小码农的我,最近一直在学习tensorflow,主要使用pyth ...
- 使用JavaScript在Canvas上画出一片星空
随着Html5的迅猛发展,画布也变得越来越重要.下面我就写一个关于在canvas上画出一片星空的简单的代码的示例. 理论基础 初始化一个canvas,获得一个用于绘制图形的上下文环境context.并 ...
- IOS中 浅谈iOS中MVVM的架构设计与团队协作
今天写这篇文章是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇文章的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...