Android 单个指定蓝牙设备通讯流程
1、初始化藍牙基礎信息
1) 設備名稱 - 用于區分其他設備(有可能會設置多個名稱)
2) 設備秘鑰 - 用于獲取通訊秘鑰(每次APP與設備建立連接時重新獲取)
…
2、掃描設備
1)獲取BluetoothManager、BluetoothAdapter
2)通過BluetoothAdapter對象的startLeScan方法搜索周圍設備,
在onLeScan回調方法中對設備過濾(既要過濾非己方設備、又要過濾重復設備)
onLeScan方法參數解釋: device - 設備實例, rssi - 信號強度(負值), scanRecord - 設備提供的廣播數據內容
3、與設備建立連接
1)先根據Mac地址創建設備實例: BluetoothDevice device = bluetoothAdapter.getRemoteDevice(macAddress);
2)建立連接:device.connectGatt()
3)連接成功后,需要根據特定的UUID找到需要的服務(一個藍牙設備可以有多個服務,每個服務都有自己的特征值)
---------byte數據交互------------
4、獲取通訊秘鑰
1)向設備發送“設備秘鑰”
2)從設備獲取“通訊秘鑰”
5、發送指令與設備通訊
1)指令包含:
數據頭 - 一般是固定值,
隨機數 - 用于加密,
通訊秘鑰,
命令字 - 具體的操作,
…
2) 指令一byte[]形式發送
如:byte[0]表示數據頭,
byte[6]表示命令字,
byte[10-14]表示操作時間戳,
…
---------byte數據交互------------
6、斷開連接
關鍵點: 數據加解密、CRC8計算、CRC16計算
CRC8計算:數據包共16位,其中第16位表示前15位數據經過CRC8計算后得到的校驗值
總結
以上是生活随笔為你收集整理的Android 单个指定蓝牙设备通讯流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 找坏球——面试智力题
- 下一篇: dBm、mw、dB三者之间的关系