Android NFC近場通信1——NFC概述


  最近對NFC挺感興趣,而且新換的手機也支持NFC功能(最近換了Find5,感覺還不錯O(∩_∩)O),所以打算學學NFC編程。NFC就是我們經常說的近場通信。通常距離是4厘米或更短。NFC工作頻率是13.56M Hz,傳輸速率是106kbit/s 到848kbit/s。不過網上查了一下,發現NFC的資料並不多,所以還是去看看android.developer上面的介紹和基本教程。下面資料主要是參考android官網,中間加入一些個人的心得筆記。

 

1、NFC可以做的事情

  NFC通信時是使用一種叫做NDEF的數據格式來通信,簡單來說就是NFC芯片使用的一種通信協議。一般我們可以使用NFC完成下面的工作:

  • 從NFC標簽中讀取NDEF數據
  • 把NDEF消息從一個設備發送給另一個設備

  第一,NFC標簽其實就是一種電子標簽,里面寫入了指定的數據,我們通過支持NFC的設備,就可以讀取這些標簽的數據。例如我在某個標簽寫入啟動MP3播放器,但我把手機靠近這個標簽時,手機就會啟動音樂播放器。

  第二,這個功能就是一般的無線通信功能,可以取代我們用的藍牙發送文件。

 

2、Android  Beam功能

  Android Beam是一個基於近場通信所做的新功能,這個功能可以為其他手機分享你正在使用的功能。Android升級到4.1后,Android Beam現在可以在兩台支持NFC的Android設備間分享照片和視頻,還可以與支持NFC的藍牙設備相連。同時兩部NFC手機只有靠近即可完成消息傳遞,藍牙配對等

 

3、NFC標簽調度系統
  通常,除非是在設備的設置菜單中NFC被禁用,否則Android設備會在非鎖屏的狀態下搜索NFC。當Android設備發現NFC標簽時,期望的行為是用最合適的Activity來處理該Intent,而不是詢問用戶使用什么應用程序。因為設備只能在很短的范圍內掃描到NFC標簽,強制的讓用戶手動的選擇一個Activity,會導致設備離開NFC標簽,從而中斷該連接。你應該開發你自己的Activity來處理你所關心的NFC標簽,從而阻止 選擇器的操作。
為了幫助你達到這個目標,Android提供了特殊的標簽調度系統,來分析掃描到的NFC標簽,通過解析數據,在被掃描到的數據中嘗試找到感興趣的應用程序,具體做法如下:
1.  解析NFC標簽並搞清楚標簽中標識數據負載的MIME類型或URI;
2.  把MIME類型或URI以及數據負載封裝到一個Intent中。
3.  基於Intent來啟動Activity。

 

4、相關數據格式

3-bit TNF(類型名稱格式)
  指示如何解釋可變長度類型字段,在下表1中介紹有效值。
可變長度類型
  說明記錄的類型,如果使用TNF_WELL_KNOWN,那么則使用這個字段來指定記錄的類型定義(RTD)。在下表2中定義了有效的RTD值。
可變長度ID
  唯一標識該記錄。這個字段不經常使用,但是,如果需要唯一的標識一個標記,那么就可以為該字段創建一個ID。
可變長度負載
你想讀/寫的實際的數據負載。一個NDEF消息能夠包含多個NDEF記錄,因此不要以為在NDEF消息的第一條NDEF記錄中包含了所有的負載。


  標簽調度系統使用TNF和類型字段來嘗試把MIME類型或URI映射到NDEF消息中。如果成功,它會把信息跟實際的負載一起封裝到ACTION_NEDF_DISCOVERED類型的Intent中。但是,會有標簽調度系統不能根據第一條NDEF記錄來判斷數據類型的情況,這樣就會有NDEF數據不能被映射到MIME類型或URI,或者是NFC標簽沒有包含NDEF開始數據的情況發生。在這種情況下,就會用一個標簽技術信息相關的Tag對象和封裝在ACTION_TECH_DISCOVERED類型Intent對象內部的負載來代替。
表1.介紹標簽調度系統映射如何把TNF和類型字段映射到MIME型或URI上。同時也介紹了那種類型的TNF不能被映射到MIME類型或URI上。這種情況下,標簽調度系統會退化到ACTION_TECH_DISCOVERED類型的Intent對象。
  例如,如果標簽調度系統遇到一個TNF_ABSOLUTE_URI類型的記錄,它會把這個記錄的可變長度類型字段映射到一個URI中。標簽調度系統會把這個URI跟其他相關的標簽的信息(如數據負載)一起封裝到ACTION_NDEF_DISCOVERED的Intent對象中。在另一方面,如果遇到了TNF_UNKNOWN類型,它會創建一個封裝了標簽技術信息的Intent對象來代替。

 

 

上面是NFC主要的屬性和URL以及MIME類型。今天主要是對NFC有個了解,后面打算寫個測試例子讀取公交卡的數據。

 

Edited by mythou

原創博文,轉載請標明出處:http://www.cnblogs.com/mythou/p/3187425.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM