Проблема:
Я слушаю уведомление с использованием следующего кода:
bleDevice.establishConnection(false)
.flatMap { rxBleConnection -> rxBleConnection.setupNotification(charUUID) }
.doOnNext { }
.flatMap { notificationObservable -> notificationObservable } // <-- Notification has been set up, now observe value changes.
.subscribe(
{ bytes ->
run {
// Log.i("Notification!", bytes!!.contentToString())
// println(bytes.toHex())
sp?.play(pool?.get(mRandom.nextInt(pool!!.size))!!, 1F, 1F, 0, 0, 1F)
}
},
{ throwable -> Log.i(TAG, throwable.toString())}
)
Это уведомление работает. Я могу видеть значение изменения уведомления, когда датчик моего устройства активирован.
Теперь я хочу нажать кнопку и отправить операцию записи, используя следующий код:
bleDevice.establishConnection(false)
.flatMapSingle({ rxBleConnection -> rxBleConnection.writeCharacteristic(charUUID, bytesToWrite) })
.subscribe(
{ characteristicValue ->
run {
Log.d(TAG, "Write Command Succeeded")
}
},
{ throwable ->
run {
Log.d(TAG, "Write Command Failed")
Log.d(TAG, throwable.toString())
}
}
)
Когда я нажимаю кнопку, я получаю сообщение об ошибке в выводе журнала ниже. Он говорит, что я уже подключен. Как я могу отправить операцию записи, не пытаясь снова подключиться?
Ожидаемое поведение Я ожидаю, что смогу прослушивать уведомления, а также отправлять операции записи в том же действии.
Вывод журнала
D/ColorsFragment: Write Command Failed
com.polidea.rxandroidble2.exceptions.BleAlreadyConnectedException: Already connected to device with MAC address 34:81:F4:C6:09:0F