Android低功耗蓝牙开发,onCharacteristicChanged()怎么也不回调,原因查找:
1、查看蓝牙服务特征的Properties是否为 PROPERTY_NOTIFY
int properties = characteristic.getProperties();//16
2、BluetoothGattDescriptor写入是否正确
BluetoothGattDescriptor descriptor =
characteristic.getDescriptor(UUID
.fromString
("00002902-0000-1000-8000-00805f9b34fb"));
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
mBluetoothGatt.writeDescriptor(descriptor);
3、订阅通知是否设置成功
//订阅通知
boolean notification = mBluetoothGatt.setCharacteristicNotification(characteristic, true);//是否为true
@Override
public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) {
super.onDescriptorWrite(gatt, descriptor, status);
if (status == BluetoothGatt.GATT_SUCCESS) {
//开启监听成功,可以向设备写入命令了
Log.e(TAG, "开启监听成功");
}
}
4、如果以上均没有问题,就要确认数据的字节数,默认为20个字节,如果字节数过大需要设置接收字节
mBluetoothGatt.requestMtu(int len);