当我的代码不起作用时,我开始使用我找到here的项目并将其运行在我的moto-x上的自定义蓝牙设备上。对于配置文件的一般属性,我从以下代码中获取数据:
public void readCharacteristic(BluetoothGattCharacteristic characteristic) {
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return;
}
mBluetoothGatt.readCharacteristic(characteristic);
}
以异步方式返回数据:
public void onCharacteristicRead(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic,
int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
}
}
如果我针对心率监测器运行此代码,这也有效。
如果我在没有默认配置文件的情况下针对我们的某个自定义属性运行它,则数据永远不会返回。如初。
谷歌搜索包括:Cannot read characteristic. Android BLE,但设置通知并没有解决我的问题。
有什么建议吗?
答案 0 :(得分:0)
我认为您的自定义属性中未设置PROPERTY_READ,PROPERTY_WRITE。
检查BluetoothGattCharacteristic PROPERTIES - 我没有意识到需要在BLE硬件上启用PROPERTY_WRITE,PROPERTY_READ并浪费了大量时间。
检查PROPERTY的部分应该是:
if ((characteristic.getProperties() &&
BluetoothGattCharacteristic.PROPERTY_READ)> 0) {
// toast or log here
}
这些启用/禁用应用程序或任何应用程序连接到蓝牙低功耗设备
上提及servicesListClickListner