藍芽低功耗開發
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、低功耗藍芽裝置狀態通知
略。