我正在使用官方Android开发者网站的代码,并发现阅读charactaristics的困难
在迭代所有uuid时,我使用此代码在displayGattServices函数的DeviceControlActivity类中创建gatt特性读取调用:
mBluetoothLeService.readCharacteristic(new BluetoothGattCharacteristic(
UUID.fromString(uuid),
BluetoothGattCharacteristic.PERMISSION_READ,
BluetoothGattCharacteristic.PROPERTY_READ));
BluetoothLeService calss中的readCharacteristic函数是:
public void readCharacteristic(BluetoothGattCharacteristic characteristic) {
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return;
}
mBluetoothGatt.readCharacteristic(characteristic);
}
并且BluetoothLeService类中的回调是:
@Override
public void onCharacteristicRead(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic,
int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
}
我在回调中设置了一个断点,我从未停止过... 它可能是许可还是财产?别的什么?...... 有人有一个有效的例子吗?
答案 0 :(得分:1)
这通常不是您阅读“特征”的方式。您应遵循的步骤是: - 找到设备 - 连接到设备 - 发现服务 - 从您的服务中选择您想要的特征 - 使用该特征读取值
您必须首先获取服务中的特征的引用才能读取它,而不是仅使用构造函数创建新特性。
如果您需要进一步澄清,请告诉我。
答案 1 :(得分:0)
BluetoothGattCharacteristic(UUID uuid, int properties, int permissions)
参考:BluetoothGattCharacteristic
documentation
所以:
mBluetoothLeService.readCharacteristic(new BluetoothGattCharacteristic(
UUID.fromString(uuid),
BluetoothGattCharacteristic.PROPERTY_READ,
BluetoothGattCharacteristic.PERMISSION_READ
));