Android 蓝牙ble 4.0开发

蓝牙ble 4.0 是android在4.3,即API 18引进来的。APP通过ble可实现发现设备,查询服务和数据读写的功能。具有更低功耗。

关键概念:

1.GATT(Generic Attribute Profile): GATT配置文件作为通用规范,用于在ble链路上发送和接收数据块。配置文件是设备如何在特定的应用程序中工作的规格说明。一个设备可以实现多个配置文件。

2.ATT(Attribute Protocol):每个属性通过一个唯一的统一标识符(UUID)来实现,每个String类型的UUID使用128 bitb标准格式。

3. Characteristic: 一个Characteristic包括一个单一的变量和N个用来描述Characteristic变量的descriptor。

4.Descriptor :用来描述Characteristic变量的属性。

5.Service:是Characteristic的集合。

具体实现:

1.实现BluetoothGattCallback回调:

private final BluetoothGattCallback mGattCallback=new BluetoothGattCallback() {

@Override

public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {

if(status == BluetoothGatt.GATT_SUCCESS) {

bleSetState(State.from(newState));

}

}

@Override

public void onServicesDiscovered(BluetoothGatt gatt, int status) {

if(status == BluetoothGatt.GATT_SUCCESS) {

}

}

@Override

public void onCharacteristicChanged(BluetoothGatt gatt,BluetoothGattCharacteristic characteristic) {

if(mCallback!=null) {

}

}

@Override

public void onCharacteristicWrite(BluetoothGatt gatt,BluetoothGattCharacteristic characteristic, intstatus) {

if(mCallback!=null) {

}

}

@Override

public void onCharacteristicRead(BluetoothGatt gatt,BluetoothGattCharacteristic characteristic, intstatus) {

if(mCallback!=null) {

}

}

@Override

public void onDescriptorRead(BluetoothGatt gatt,BluetoothGattDescriptor descriptor, intstatus) {

if(mCallback!=null) {

}

}

@Override

public void onDescriptorWrite(BluetoothGatt gatt,BluetoothGattDescriptor descriptor, intstatus) {

if(mCallback!=null) {

}

}

};

2. 得到BluetoothAdapter:

BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();

3.得到BluetoothDevice:

BluetoothDevice device = adapter.getRemoteDevice(mac);

4.执行具体的连接,断开等操作

BluetoothGatt mBluetoothGatt = device.connectGatt(context, false, mCallback);

//disconnect

mBluetoothGatt.disconnect();

//close

mBluetoothGatt.close();

//获取BluetoothGattCharacteristic

BluetoothGattService gattService =mBluetoothGatt.getService(UUID_IR_SERVICE);

BluetoothGattCharacteristic characteristic = gattService.getCharacteristic(UUID_IR_CTRL);

5.数据之间的传输(重点)

int writeType = BluetoothGattCharacteristic.PROPERTY_WRITE;

characteristic.setWriteType(writeType);

characteristic.setValue(values); //value就是封装好的byte[]

mBluetoothGatt.writeCharacteristic(characteristic)


目前为止,一个最基本的蓝牙ble开发就差不多了。

回头再整理整理,希望能做个demo上传到github上。

你可能感兴趣的:(Android 蓝牙ble 4.0开发)