移動開發(fā)知識:Android平臺如何進行藍牙模塊開發(fā)(安卓藍牙模塊開發(fā))
現(xiàn)在對于短距離通信,尤其是一些附加設備,采用藍牙通信是一個很流行的選擇,因此,作為一名移動端開發(fā)人員,需要掌握藍牙開發(fā)的相關信息。
那么,都有哪些知識需要掌握呢?我們一起來看一下。
一、藍牙開發(fā)的基本組件
在安卓系統(tǒng)中,藍牙開的基本組件有如下幾個:
1、BluetoothAdapter類。這個類代表本地的藍牙適配器,也是所有藍牙交互的入口點。利用該類,可以發(fā)現(xiàn)其它藍牙設備,查詢已經(jīng)匹配了的設備,使用已知的MAC地址實例化一個藍牙設備從而能夠與該設備進行通信,以及作為服務器端,建立一個BluetoothServerSocket,來監(jiān)聽來自其它設備的連接。
2、BluetoothDevice類。這個類代表了一個遠端的藍牙設備,使用它可以獲取掃描到的藍牙設備的各類信息,如名稱、MAC地址、各類和綁定狀態(tài)等。
3、BluetoothSocket類。這個類代表了一個藍牙套接字的接口(類似于TCP),它是應用程序通過輸入、輸出流與其它藍牙設備通信的連接點。
4、BluetoothServerSocket類。這個類代表打開服務連接監(jiān)聽可能到來的連接請求(屬于server端),為了連接兩個藍牙設備必須有一個設備作為服務器打開一個服務接口。當遠端設備發(fā)起連接請求,并且已經(jīng)連接上了的時候,該類會返回一個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()函數(shù)來判斷藍牙是否啟用。
四、如何查找已匹配的設備
可以使用BluetoothAdapter中的getBondedDevices()來獲取匹配的設備集,代碼如下
Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
五、建立藍牙連接需要什么
建立藍牙連接只需要一個MAC地址就夠了,掃描到對方設備后,可以獲取對方的MAC地址。掃描設備使用startDiscovery()方法,在舊一點的版本中,使用startLeScan()進行掃描,不過這個方法已經(jīng)被放棄了。
掃描到設備會拋出ACTION_FOUND動作,因此需要注冊一個BroadcastReceiver來接受掃描到的信息。而對于每一個掃描設備都會拋出一個ACTION_FOUND動作。
如果想建立兩個設備之間的連接,還需要實現(xiàn)客戶端和服務器端的代碼。一個持有打開的BluetoothServerSocket來監(jiān)聽外來連接,監(jiān)聽到之后返回一個BluetoothSocket給對方用于通信。
六、如何進行數(shù)據(jù)傳輸
通信通道建立好了之后,雙方都有了各自的BluetoothSocket。然后就可以通過調(diào)用getInputStream()和getOutputStream()方法來獲取輸入輸出流。然后通過read(byte[])和write(byte[])來讀取和寫入數(shù)據(jù)。
注意一點哦,讀取和寫入,都是阻塞行為,所以需要新起一個線程。
以上就是安卓開發(fā)藍牙設備的方法哦,大家學會了嗎?