現在對于短距離通信,尤其是一些附加設備,采用藍牙通信是一個很流行的選擇,因此,作為一名移動端開發人員,需要掌握藍牙開發的相關信息。
那麼,都有哪些知識需要掌握呢?我們一起來看一下。
一、藍牙開發的基本組件
在安卓系統中,藍牙開的基本組件有如下幾個:
1、BluetoothAdapter類。這個類代表本地的藍牙适配器,也是所有藍牙交互的入口點。利用該類,可以發現其它藍牙設備,查詢已經匹配了的設備,使用已知的MAC地址實例化一個藍牙設備從而能夠與該設備進行通信,以及作為服務器端,建立一個BluetoothServerSocket,來監聽來自其它設備的連接。
2、BluetoothDevice類。這個類代表了一個遠端的藍牙設備,使用它可以獲取掃描到的藍牙設備的各類信息,如名稱、MAC地址、各類和綁定狀态等。
3、BluetoothSocket類。這個類代表了一個藍牙套接字的接口(類似于TCP),它是應用程序通過輸入、輸出流與其它藍牙設備通信的連接點。
4、BluetoothServerSocket類。這個類代表打開服務連接監聽可能到來的連接請求(屬于server端),為了連接兩個藍牙設備必須有一個設備作為服務器打開一個服務接口。當遠端設備發起連接請求,并且已經連接上了的時候,該類會返回一個BluetoothSocket。
5、BluetoothClass類。這個類是一個描述類,描述了一個藍牙設備的一般特點和能力。他的隻讀屬性集中定義了設備的主、次類和一些相關服務。
二、需要在AndroidManifest.xml裡加入什麼權限
使用藍牙設備,需要加入
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
這兩個權限,在新一點的安卓版本中,為獲取到對方設備的名稱,還需要加入以下兩個權限。
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
三、如何初始化藍牙設備并判斷藍牙是否開啟
可以通過getDefaultAdapter()來獲取藍牙适配器BluetoothAdapter,當然,如果獲取到的值為空,就說明該設備不支持藍牙。如果成功了,就後用其中的isEnabled()函數來判斷藍牙是否啟用。
四、如何查找已匹配的設備
可以使用BluetoothAdapter中的getBondedDevices()來獲取匹配的設備集,代碼如下
Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
五、建立藍牙連接需要什麼
建立藍牙連接隻需要一個MAC地址就夠了,掃描到對方設備後,可以獲取對方的MAC地址。掃描設備使用startDiscovery()方法,在舊一點的版本中,使用startLeScan()進行掃描,不過這個方法已經被放棄了。
掃描到設備會抛出ACTION_FOUND動作,因此需要注冊一個BroadcastReceiver來接受掃描到的信息。而對于每一個掃描設備都會抛出一個ACTION_FOUND動作。
如果想建立兩個設備之間的連接,還需要實現客戶端和服務器端的代碼。一個持有打開的BluetoothServerSocket來監聽外來連接,監聽到之後返回一個BluetoothSocket給對方用于通信。
六、如何進行數據傳輸
通信通道建立好了之後,雙方都有了各自的BluetoothSocket。然後就可以通過調用getInputStream()和getOutputStream()方法來獲取輸入輸出流。然後通過read(byte[])和write(byte[])來讀取和寫入數據。
注意一點哦,讀取和寫入,都是阻塞行為,所以需要新起一個線程。
以上就是安卓開發藍牙設備的方法哦,大家學會了嗎?
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!