Android BLE學習(三):編寫自己的 BLE藍芽讀寫工具(功能仿照nrf master control panel)
阿新 • • 發佈:2019-02-10
背景
由於nordic官方的nrf master control panel只提供了apk,很多同學學習起來都得自己摸索藍芽的讀寫,專案中整理了BLE模組的基本讀寫方法以及一些常用的UUID,並且抽取了一些藍芽操作的流程,方便Android app程式碼開發,希望能幫到正在學習BLE藍芽的同學們。
上一篇文章總結了51822 BLE藍芽模組的連線以及一些藍芽協議相關的知識,本文將綜合前述內容,參照官方的nrf master control panel,實現Android手機與藍芽模組的搜尋,連線,及相關的讀寫。
流程
activity與藍芽服務通訊
監聽藍芽服務的變化,變化後給BLEStatusChangeReceiver傳送廣播
通過回撥函式獲取藍芽變化後的資料,這樣就可以靈活將不同型別顯示在不同地方。這樣比較方便模仿官方master的藍芽日誌功能,同時兼顧在其他控制元件中顯示資料,增強了程式的靈活性。
藍芽寫入與讀取寫入特徵值和描述符資料或者其他資料時,都需要在BLEControlService中提供相應的方法,而其底層實現需要呼叫mBluetoothGatt中提供的方法。具體功能見mBluetoothGatt提供的資料。此處我們提供了以下幾個示例方法
public boolean connect(final String address) 藍芽連線
public void disconnect() 藍芽斷開
public void close() 藍芽關閉
public void readCharacteristic(BluetoothGattCharacteristic characteristic) 讀取readCharacteristic的資訊
public void writeCharacteristic(BluetoothGattCharacteristic characteristic, byte[] value) 寫入readCharacteristic的資訊
public void readDiscriptor(BluetoothGattDescriptor descriptor) 讀取描述符資訊
public void readRemoteRssi() 讀取ble的rssi
public void enableXXXXXNotification() 將某Characteristic設定為Notification
當我們接受到資料時,就會觸發MyBluetoothGattCallback中的方法,獲取到接收的資料。
專案效果
BLE裝置列表
資料變化列表
BLE詳細資訊讀寫