NFC相关学习------第一篇

来源:互联网 发布:数据库镜像与备份 编辑:程序博客网 时间:2024/05/23 20:06

NFC的基础知识


一、前言                                                                                             

            在现如今的生活中,NFC已经遍布了我们生活的很多方面,我们的很多工具以及生活方式都离不开NFC。比如最常用的公交卡,现在逐渐流行的手机刷公交卡、各种接触式的卡片均使用了NFC的技术。还有一些接触式的工具,比如手机贴近一张卡片便可以自动链接上WiFi、手机闪付等。因为NFC的有效距离最远为4CM,其安全性高,又方便。由于其成本不高,而安全性却很强加上方便,故多使用于和支付相关的生活中。

二、NFC简介                                                                                      

           什么是NFC呢,深了说就是一堆协议,说的通俗点就是近距离自动识别链接传输数据包。生活中很多情况下,只需要把手机贴在某个物品或工具上就可以获取或发送信息,这种方式就是使用了NFC。NFC的识别传输信息的距离特别短,只有4cm之内才是有效距离。

三、NFC三种工作模式                                                                        

1)R/W模式

          R/W模式也就是读写模式,即最常用的从一个NFC TAG中读取或写入信息。该模式下只能由NFC device 向 NFC TAG中进行写入或读取操作,而并不能反着来。在R/W模式中的核心就是NFC TAG的操作,即如何识别TAG,根据不同的TAG进行不同的操作。在Google 的 Android 系统中有两个专门对NFC TAG进行分类,分派给不同activity进行操作处理的系统。他们就是TAG分发系统和前台分发系统。

【NFC TAG分发系统】

         mobile NFC control识别一个NFC TAG时,会首先分析这个TAG里的内容。

  • 当TAG 里的内容符合Android 数据类型标准时(也就是URI或MIME两种类型),那么NFC系统模块会将ACTION_NDEF_DISCOVERD 通知 和 该TAG对象一起装入一个Intent中发送给对ACTION_NDEF_DISCOVERD感兴趣的activity。如果没有找到对该通知感兴趣的activity,那么会重新将ACTION_TECH_DISCOVERD 和 该TAG对象一起装入一个Intent中发送给对 ACTION_TECH_DISCOVERD 感兴趣的activity。如果还是没找到,那么会再次重新将ACTION_TAG_DISCOVERD 和该TAG对象一起装入Intent中发送给对ACTION_TAG_DISCOVERD 感兴趣的activity。
  • 当TAG里的内容不符合Android数据类型标准时,那么NFC 系统模块会直接将ACTION_TECH_DISCOVERD 和该TAG 对象装入到一个Intent中然后发送给对ACTION_TECH_DISCOVERD感兴趣的activity。如果没找到,那么会再次重新将ACTION_TAG_DISCOVERD 和该TAG对象一起装入Intent中发送给对ACTION_TAG_DISCOVERD 感兴趣的activity。

【前台分发系统 和  TAG分发系统的区别】

  • 前台分发系统只会在当前活跃的activity(当前显示的activity)中查询,查询是否该activity对该通知感兴趣。如果配置了相应的filter即感兴趣,那么会将对应的TAG对象发给该activity。在该activity到后台运行的时候他需要取消前台分发功能,因为它不再是前台activity。
  •  TAG分发系统中,只要activity在AndroidManifest中配置了filter对该通知感兴趣,那么就会启动该activity,然后将TAG对象发给它。

2)P2P模式

        使用NFC devices对NFC TAG的操作是R/W模式,那么两个NFC devices之间通信怎么办呢?此时就要用到P2P模式了。

        P2P模式是用来为两个NFC devices之间进行NFC通信的。P2P模式简单的来说就是在发送端对两个函数的操作:

  •  setNdefPushMessageCallback:设置一个回调对象,如果该对象不为空,那么当前ACtivity

    会调用Android beam(Android 4.0以上才有)来发送所要发的内容。该函数作用是:两个设备

    在NFC有效的范围内时,系统会弹出数据发送通知框。如果用户选择本机发送数据,则NFC模块回调

    对象会获取需要发送的数据。
  •    setOnNdefPushCompleteCallback:当数据发送完毕后通知回调对象。当数据发送完毕后,

    系统会调用该回调对象的函数。

      P2P模式涉及到很多协议,例如 SNEP、LLCP等协议,这些协议以后讨论。

3)CE模式

        如果想将NFC Devices作为一个NFC TAG被使用,那么就需要用到CE模式了。生活中常讲的闪付也是这个道理。在上层操作NFC的CE模式,需要加载nfc_extras.jar包,然后才可以具体操作。这些后续会详细说明。




注:本文纯手打,文中有不对之处,请指出,谢谢。
博主原创,转载请标明出处,谢谢。






原创粉丝点击