Проблема чтения 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
                ));
Другие вопросы по тегам