Android BLE характеристика написать

Я работаю над BLE-проектом для Android и пытаюсь написать удаленную характеристику.

Когда я использую BluetoothGatt.writeCharacteristic() написать удаленную характеристику, функцию обратного вызова onCharacteristicWrite() вызывается на локальной стороне, показывая, что он получил sendResponse() с отдаленной стороны

Но на удаленной стороне, обратный вызов onCharacteristicWriteRequest() не вызывается.

Я проверил соединение, и оно работает нормально, и нет других функций, которые будут вызывать sendResponse() Кроме onCharacteristicWriteRequest()

У кого-нибудь есть идея, почему это происходит?

1 ответ

Поскольку вы не предоставили никакого кода, трудно сказать, почему это происходит.

Во всяком случае, вот как это должно выглядеть;

// scan devices
...

// connect to server
device.connectGatt(..)

в обратном вызове OnConnectionStateChanged (на стороне клиента)

if ( BluetoothGatt.GATT_SUCCESS != status ) {
    System.out.println("Connecting to server failed");
    return;
}

// discover services
bluetoothGatt.discoverServices()

в обратном вызове OnServicesDiscovered (на стороне клиента)

if ( BluetoothGatt.GATT_SUCCESS != status ) {
    System.out.println("Could not discover services");
    return;
}

List<BluetoothGattService> services = bluetoothGatt.getServices();
for (BluetoothGattService service : services) {
    if ( MY_SERVICE_UUID == service.getUuid() ) {
        System.out.println("Found my service on this server");

        // get characteristic from service
        BluetoothGattCharacteristic myCharacteristic = service.getCharacteristic(MY_CHARACTERISTIC_UUID);

        // change value
        myCharacteristic.setValue("this is my value");

        // write
        bluetoothGatt.writeCharacteristic(myCharacteristic);
    }
}

теперь на этом этапе он должен перейти в обратный вызов OnCharacteristicWriteRequest (на стороне сервера!), где вы можете получить новое значение

Если это не работает, проверьте на сервере, есть ли в настройках вашего рекламодателя Bluetooth .setConnectable(true) задавать.

Также проверьте, запущен ли у вас сервер gatt с правильными сервисом и характеристиками.

Надеюсь это поможет

Другие вопросы по тегам