Android 低功耗藍芽簡單整合記錄

jf1011發表於2017-12-08

藍芽低功耗開發

1、低功耗藍芽許可權

permission.BLUETOOTH
permission.BLUETOOTH_ADMIN
//api >= 23
permission.ACCESS_FIND_LOCATION
permission.ACCESS_COARSE_LOCATION
複製程式碼

2、確認裝置是否支援低功耗藍芽

1、應用僅執行在支援低功耗藍芽裝置,清單配置

<use-feature android:name="android.hardware.bluetooth_le" android:required="true" />
複製程式碼

2、android:required="false" ,情況下應用內部判斷是否支援低功耗藍芽

if(!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)){
    //不支援低功耗藍芽,關閉所有低功耗藍芽功能
}
複製程式碼

3、確認裝置是否開啟低功耗藍芽

1、獲取藍芽介面卡

//api >= 18
BluetoothManager bluetoothManager = (BluetoothManager)getSystemService(Context.BLUETOOTH_SERVICE)
BluetoothAdapter bluetoothAdapter = bluetoothManager.getBluetoothAdapter();
複製程式碼

2、判斷藍芽是否開啟

if(!bluetoothAdapter.isEnabled()){
    startActivityForResult(new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE), 0x001);
}
複製程式碼

4、掃描低功耗藍芽裝置,獲取裝置列表

獲取低功耗藍芽裝置startLeScan(),接受一個LeScanCallback 掃描結果回撥引數 注意:找到裝置立即停止掃描,掃描超時立即停止掃描。

bluetoothAdapter.startLeScan(new BluetoothAdapter.LeScanCallback () {
    public void onLeScan(BluetoothDevice deivce, int rssi, byte[] sacnRecord) {
        //掃描結果
    }
})
複製程式碼

5、連線指定低功耗藍芽裝置

連線一個低功耗藍芽裝置一般分為一下步驟 1、連線GATT

gattCallback = new BluetoothGattCallback() {
    //gatt 連線狀態改變
    public void onConnectionStateChanged(BluetoothGatt gatt, int state, int newState) {
        //newState: 當前連線Gatt狀態
        //newState == connected,獲取gatt例項,發現Gatt 中的 Service
        gatt.discoverServices();
    }
    //service 被發現
    public void onServiceDiscovered (BluetoothGatt gatt, int state) {
        //state == Gatt_Connected
    }
    //Characteristics 特性被載入
    public void onCharacteristicRead(BluetoothGatt gatt, Characteristics characteristics, int state) {
        //state == Gatt_success
    }
}
device.connectGATT(context, autoConnect, gattCallback);
複製程式碼

2、發現GATT 中的Service

gatt.discoverServices();
複製程式碼

3、獲取Service中的Characteristics

services = mBluetoothLeService.getSupportedGattServices();//獲取gatt支援的所有service也可以利用股uid獲取指定service
services.getCharacteristics();
複製程式碼

//獲取指定service所有Charactistics,也可根據uuid獲取指定Characteristics.

6、與已連線低功耗藍芽裝置進行資料通訊

利用該Characteristics 設定gatt的Characteristics 的通知監聽 觸發onCharacteristics 進行資料通訊

7、低功耗藍芽裝置狀態通知

略。

相關文章