当前位置 - 股票行情交易網 - 國際漫評 - android藍牙通信要怎麽設計

android藍牙通信要怎麽設計

Android平臺支持藍牙網絡協議棧,實現藍牙設備之間數據的無線傳輸。本文檔描述了怎樣利用android平臺提供的藍牙API去實現藍壓設備之間的通信。藍牙具有point-to-point 和 multipoint兩種連接功能。

使用藍牙API,可以做到:

* 搜索藍牙設備

* 從本地的Bluetooth adapter中查詢已經配對的設備

* 建立RFCOMM通道

* 通過service discovery連接到其它設備

* 在設備之間傳輸數據

* 管理多個連接

基礎知識

本文檔介紹了如何使用Android的藍牙API來完成的四個必要的主要任務,使用藍牙進行設備通信,主要包含四個部分:藍牙設置、搜索設備(配對的或可見的)、連接、傳輸數據。

所有的藍牙API在android.bluetooth包中。實現這些功能主要需要下面這幾個類和接口:

BluetoothAdapter

代表本地藍牙適配器(藍牙發射器),是所有藍牙交互的入口。通過它可以搜索其它藍牙設備,查詢已經配對的設備列表,通過已知的MAC地址創建BluetoothDevice,創建BluetoothServerSocket監聽來自其它設備的通信。

BluetoothDevice

代表了壹個遠端的藍牙設備, 使用它請求遠端藍牙設備連接或者獲取 遠端藍牙設備的名稱、地址、種類和綁定狀態。 (其信息是封裝在 bluetoothsocket 中) 。

BluetoothSocket

代表了壹個藍牙套接字的接口(類似於 tcp 中的套接字) ,他是應用程 序通過輸入、輸出流與其他藍牙設備通信的連接點。

BluetoothServerSocket

代表打開服務連接來監聽可能到來的連接請求 (屬於 server 端) , 為了連接兩個藍牙設備必須有壹個設備作為服務器打開壹個服務套接字。 當遠端設備發起連 接連接請求的時候,並且已經連接到了的時候,Blueboothserversocket 類將會返回壹個 bluetoothsocket。

BluetoothClass

描述了壹個設備的特性(profile)或該設備上的藍牙大致可以提供哪些服務(service),但不可信。比如,設備是壹個電話、計算機或手持設備;設備可以提供audio/telephony服務等。可以用它來進行壹些UI上的提示。

BluetoothProfile

BluetoothHeadset

提供手機使用藍牙耳機的支持。這既包括藍牙耳機和免提(V1.5)模式。

BluetoothA2dp

定義高品質的音頻,可以從壹個設備傳輸到另壹個藍牙連接。 “A2DP的”代表高級音頻分配模式。

BluetoothHealth

代表了醫療設備配置代理控制的藍牙服務

BluetoothHealthCallback

壹個抽象類,使用實現BluetoothHealth回調。妳必須擴展這個類並實現回調方法接收更新應用程序的註冊狀態和藍牙通道狀態的變化。

BluetoothHealthAppConfiguration

代表壹個應用程序的配置,藍牙醫療第三方應用註冊與遠程藍牙醫療設備交流。

BluetoothProfile.ServiceListener

當他們已經連接到或從服務斷開時通知BluetoothProfile IPX的客戶時壹個接口(即運行壹個特定的配置文件,內部服務)。

藍牙權限

為了在妳的應用中使用藍牙功能,至少要在AndroidManifest.xml中聲明兩個權限:BLUETOOTH(任何藍牙相關API都要使用這個權限) 和 BLUETOOTH_ADMIN(設備搜索、藍牙設置等)。

為了執行藍牙通信,例如連接請求,接收連接和傳送數據都必須有BLUETOOTH權限。

必須要求BLUETOOTH_ADMIN的權限來啟動設備發現或操縱藍牙設置。大多數應用程序都需要這個權限能力,發現當地的藍牙設備。此權限授予其他的能力不應該使用,除非應用程序是壹個“電源管理”,將根據用戶要求修改的藍牙設置

註釋:要請求BLUETOOTH_ADMIN的話,必須要先有BLUETOOTH。

在妳的應用manifest 文件中聲明藍牙權限。例如:

<manifest ... >

<uses-permission android:name="android.permission.BLUETOOTH" />

...

</manifest>

通過查看<uses-permission>資料來聲明應用權限獲取更多的信息。

藍牙設置

在妳的應用通過藍牙進行通信之前,妳需要確認設備是否支持藍牙,如果支持,確信它被打開。

如果不支持,則不能使用藍牙功能。如果支持藍牙,但不能夠使用,妳剛要在妳的應用中請求使用藍牙。這個要兩步完成,使用BluetoothAdapter。