Проблема чтения Android
Я использую код с официального сайта разработчиков Android и нахожу трудности в чтении характеристик
я использую этот код для создания вызова чтения характеристики gatt в классе DeviceControlActivity в функции displayGattServices при итерации всех uuid:
mBluetoothLeService.readCharacteristic(new BluetoothGattCharacteristic(
UUID.fromString(uuid),
BluetoothGattCharacteristic.PERMISSION_READ,
BluetoothGattCharacteristic.PROPERTY_READ));
Функция readCharacteristic int BluetoothLeService calss:
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);
}
я ставлю точку останова на обратный вызов, и меня там никогда не останавливают... это может быть разрешение или собственность? что-то еще?... у кого-нибудь есть рабочий пример?
2 ответа
Обычно это не то, как вы читаете характеристики. Шаги, которые вы должны выполнить: - Найти устройство - Подключиться к устройству - Обнаружить службы - Выбрать характеристику, которую вы хотите от вашей службы - Используйте эту характеристику, чтобы прочитать значение
Вы должны сначала получить ссылку на характеристику в службе, чтобы прочитать ее, а не просто создать новую характеристику с помощью конструктора.
Дайте мне знать, если вам нужно это уточнить в дальнейшем.
BluetoothGattCharacteristic(UUID uuid, int properties, int permissions)
Ссылка: BluetoothGattCharacteristic
документация
Так:
mBluetoothLeService.readCharacteristic(new BluetoothGattCharacteristic(
UUID.fromString(uuid),
BluetoothGattCharacteristic.PROPERTY_READ,
BluetoothGattCharacteristic.PERMISSION_READ
));