Android 4.0 Bluetooth Android EEPROM RFID 藍牙配對 NDEF AIDL NFC ANT 藍牙

Android原生支援 NFC加快藍牙裝置配對

近距離無線通訊(NFC)論壇(Forum)提出簡單安全配對(SSP)協定,讓藍牙終端可透過NFC配對互連。SSP協定明確啟用頻外(Out-of-Band, OOB)配對概念,NFC鏈路可完成資訊交互,參與頻外配對過程。在實現SSP協定後,藍牙終端配對無需任何密碼,終端連接過程大幅簡化,使用將更加方便。例如,使用者只要在藍牙終端螢幕上點擊手機,藍牙終端就會發出頻外配對請求,與執行不同作業系統的手機、平板電腦或筆記型電腦等藍牙主設備配對連通。
本文將介紹支援國際標準組織(ISO)15693 NFC協定的雙介面可消除式唯讀記憶體(Electrically Erasable Programmable Read Only Memory, EEPROM),儲存容量在1K~8KB間。本文將使用此一射頻識別(RFID)產品,以SSP協定執行頻外配對,並透過可在Android智慧型手機和Google Nexus(Android 4.0)平板裝置上執行的應用軟體,做為範例基礎架構。

目前Android原生支援串列協定、醫療設備協定與耳機協定等協定,而新的Android 4.0更內建支援藍牙進階音效廣播協定(A2DP),可讓消費者過藍牙裝置串流音訊。

Android支援多種NFC/藍牙API

Android應用程式能在手機與藍牙揚聲器及耳機之間進行A2DP配對,整個配對過程需兩個步驟,首先從雙介面EEPROM記憶體讀取NFC資料交換檔案格式(NDEF)記錄,接著在兩個藍牙終端間配對連通。Android 4.0還支援NFC API應用程式介面。NFC技術基於電感耦合效應,耦合電感電路在幾毫米距離內共用電能和資料,感應式供電接收器支援各種NFC通訊模式,如被動通訊、主動通訊和無線射頻識別(RFID)模式。

NFC終端和RFID電子標籤及非接觸式智慧卡採用相同的基礎技術,ISO/國際電工委員會(IEC)、歐洲電信標準化協會(ETSI)和歐洲資訊通訊系統標準化協會(ECMA)等國際標準組織都接受這個標準。

NFC與電子標籤的通訊距離在4公分以內,可在NFC標籤與NFC讀寫器或兩個NFC讀寫器間共用資料有效載荷。此外,NFC採用13.56MHz載波通訊。

圖1 NDEF資料交換格式
NFC資料交換格式NDEF(圖1)是NFC論壇規定的資訊格式標準,並為NDEF記錄的集合,資訊由標頭和載荷組成,用於定義NDEF資料結構格式及有效NDEF資訊的構建規則。有效的NDEF資訊是指有序且連續的NDEF記錄集合,NDEF資訊定義資料類型指定機制,以指定採用NDEF記錄封包的應用資料的類型。

透過API利用NFC進行藍牙配對

NDEF標頭含有識別字、長度和載荷類型。NDEF載荷可以是統一資源定位符(URL)、媒體類型、NDEF資訊或具體的NDEF類型。

藍牙配對(BT-A2DP Pairing)是一個執行在Android 4.0以上的Android應用程式,用於展示在一個終端內整合藍牙和NFC兩種無線通訊技術的功能性。

透過EEPROM存取配對清單建立藍牙連結

在手機上啟動BT-A2DP Pairing應用程式後,手機將開始搜索NFC標籤。當手機與內建雙介面EEPROM的A2DP藍牙揚聲器距離很近時,手機上的NFC收發器將會發現標籤並建立連接。在打開應用程式,將手機移到揚聲器附近前,揚聲器必須處於可發現模式。

  建立連接後,手機開始從雙介面EEPROM的特定儲存單元讀取NDEF資訊,提取藍牙射頻的詳細資訊,包括媒體存取控制(MAC)位址和其他的藍牙射頻(RF)資訊。

透過手機NFC收到NDEF資訊後,BT-A2DP Pairing應用軟體從資訊中提取藍牙設備的媒體存取控制位址,然後啟動與A2DP設備的藍牙連接過程。

在與設備建立連接前,應用程式先檢索已配對設備清單,即曾經與手機配對的設備。若擁有該MAC位址的設備從未與手機配對,則需幾毫秒的時間完成配對過程;如果已配對,則消費者毋須花費配對時間。

Android應用程式提供開發資源

Android應用開發框架提供豐富的應用程式介面,讓開發人員能夠開發各類應用程式,其中在通訊連接方面,Android開發框架支援藍牙協定。android.bluetooth封包內含有用於管理藍牙連接的API介面,如設備掃描和連接、設備間資料傳輸管理。在封包內還含有不同的類檔,例如BluetoothA2DP、BluetoothAdapter、BluetoothClass、BluetoothHeadset等。

其中,BluetoothA2DP類檔用於A2DP協定藍牙應用配對,透過進程間通訊(IPC)控制藍牙A2DP服務的代理物件,並包含用於控制藍牙A2DP協定的公共API。Android一次只支援一個相連的藍牙A2DP設備,每種連接方法都有適當的保護許可權。公開連接方法是getConnectedDevices()、getConnectionState()、isA2DPPlaying()等。但是有些連接方法是隱藏的,亦即在API中看不見,不能用作公共API。用於在應用中建立藍牙連接的Connect()就是其中一例,因為這個方法不包含在這個類中,所以調用這個隱藏的方法非常地困難。

Android介面定義語言(AIDL)用於產生代碼,在Android終端上使兩個進程能透過IPC對話。當使用者從一個進程(如在一個Activity)調用另一個進程的連接方法(如一個Service)時,建議使用AIDL。

AIDL強化藍牙裝置對話能力

建立AIDL的方式為在專案根資料夾內建立一個叫做stubs的資料夾,該檔下面還有src/android/bluetooth子資料夾,所有的類檔,如BluetoothA2DP、BluetoothDevice和BluetoothSocket,都建立於stubs/src/android/bluetooth資料夾內。Connect()函數用於建立藍牙連接,該函式定義在stubs/src/android/bluetooth子資料夾裡的BluetoothDevice類文件內。

當藍牙設備上的協定未在連接狀態時,這個物件將返回false值。如果返回true值,則保證連接狀態變化intent與狀態一起廣播。當在專案內增加android.bluetooth封包時,這個物件將指向stubs資料夾內用戶定義的類檔。

在src/資料夾內建立或導入AIDL文件時,Android開發工具(ADT)外掛程式將在gen/目錄內自動產生介面定義和stubs資料夾,做為專案建立的組成部分。

ANT工具建構腳本

ANT是一個與平台無關的腳本編寫工具,工程師可利用這個工具建構腳本。建構方式與C或C++的"make"工具十分相似,工程師可直接引用大量的ANT內建任務,毋須任何自訂修改。

由於Connect()不是公共連接方法,因此不會被Eclipse Tool工具識別,故本文使用ANT工具編譯和建立BT-A2DP Pairing應用軟體。透過使用ANT工具,應用軟體可利用AIDL調用隱藏函數。

使用ANT工具建立應用程式有兩種方法,第一種為除錯模式,可用於測試/除錯應用軟體;第二種模式為發行模式,用於建立最終的發行版本應用軟體。無論使用者是在除錯還是發行模式下建立應用程式,該工具都會建立一個可安裝在終端上的.apk文件。

在除錯模式下的操作步驟為打開Command Prompt,將檔案目錄改至專案的bin資料夾,再輸入ant debug,然後按Enter鍵,即可在除錯模式下建立.apk文件。

在發行模式下的操作步驟則是打開Command Prompt,將檔案目錄改至專案的bin資料夾後,輸入ant release,然後按Enter鍵。

BT-A2DP Pairing是一個簡單快速地在兩個終端間建立藍牙連接的解決方案,該解決方案整合藍牙和NFC技術,能利用安全媒介在幾秒內自動完成配對連接。

(本文作者任職於意法半導體)

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!