1. 程式人生 > >安卓藍芽技術之中央BluetoothGatt和周邊BluetoothGattServer的實現

安卓藍芽技術之中央BluetoothGatt和周邊BluetoothGattServer的實現

BluetoothAdapter.LeScanCallback 

Class Overview:回撥介面被用於傳輸LE掃描後的結果;

詳情請查:

onLescan(BluetoothDevice , int , byte[])

是通過startLeScan(BlueToothAdapter.LeScanCallback)函式呼叫之後 , 會初始化一個device物件 ; 當一個LE裝置被發現的時候 , 這個物件device作為引數傳遞進來 ,

device : 識別的遠端裝置

rssi : RSSI的值作為對遠端藍芽裝置的報告; 0代表沒有藍芽裝置;

scanRecode: 遠端裝置提供的配對號(公告)

.建立一個周邊(雖然目前周邊APIAndroid手機上不工作,但還是看看)

 a)先看看周邊用到的class,藍色橢圓


b)說明:

每一個周邊BluetoothGattServer,包含多個服務Service,每一個Service包含多個特徵Characteristic

1.new一個特徵:character = new BluetoothGattCharacteristic(

UUID.fromString(characteristicUUID),

BluetoothGattCharacteristic.PROPERTY_NOTIFY,

BluetoothGattCharacteristic.PERMISSION_READ);

2.new一個服務:service = new BluetoothGattService(UUID.fromString(serviceUUID),

BluetoothGattService.SERVICE_TYPE_PRIMARY);

3.把特徵新增到服務:service.addCharacteristic(character);

4.獲取BluetoothManager

manager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);

5.獲取/開啟周邊:BluetoothGattServer server = manager.openGattServer(this,

new BluetoothGattServerCallback(){...}); 

6.service新增到周邊:server.addService(service);

7.開始廣播serviceGoogle還沒有廣播ServiceAPI,等吧!!!!!所以目前我們還不能讓一個Android手機作為周邊來提供資料。

.建立一箇中央(這次不會讓你失望,可以成功建立並且連線到周邊的)

a)先看看中央用到的class,藍色橢圓


b)說明:

為了拿到中央BluetoothGatt,可要爬山涉水十八彎:

1.先拿到BluetoothManager

bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);

2.再拿到BluetoothAdaptbtAdapter = bluetoothManager.getAdapter();

3.開始掃描:btAdapter.startLeScan( BluetoothAdapter.LeScanCallback);

4.LeScanCallback中得到BluetoothDevicepublic void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {.....}

5.BluetoothDevice得到BluetoothGattgatt = device.connectGatt(this, true, gattCallback);

終於拿到中央BluetoothGatt了,它有一堆方法(查API吧),呼叫這些方法,你就可以通過BluetoothGattCallback和周邊BluetoothGattServer互動了。