#android #bluetooth-lowenergy #rx-java2 #rxandroidble #rxbluetooth
#Android #bluetooth-низкое энергопотребление #rx-java2 #rxandroidble #rxbluetooth
Вопрос:
Я использую следующий код для прослушивания нежелательного сообщения с моего устройства Bluetooth LE. Я ожидаю массив байтов с текстом, который гласит «datc00099», например. Вместо этого программа сопоставления возвращает нулевой одноисточник. Что здесь может быть не так?
val charUUID = scanResult.scanRecord.serviceUuids?.get(0)?.uuid
/* Establish connection to device */
rxBleDevice!!.establishConnection(false) ?
.doOnNext {
_ ->
Log.d("Device: ", "Connection Established")
} ?
.flatMapSingle {
rxBleConnection ->
charUUID ? .let {
rxBleConnection.readCharacteristic(it)
}
} ? .subscribe({
count ->
// count should be in bytes
println("OUTPUT: $count")
}, {
throwable ->
Log.d("ERROR: ", "$throwable")
})
Ошибка:
D/ERROR:: java.lang.NullPointerException: The mapper returned a null SingleSource
Отладка:
Комментарии:
1. Возможно,
charUUID
было null2. Вы правы. Оно равно нулю.
3. @EpicPandaForce Вы знаете, как получить правильный UUID?