RxAndroidBle: программа сопоставления вернула нулевой одноисточник

#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 было null

2. Вы правы. Оно равно нулю.

3. @EpicPandaForce Вы знаете, как получить правильный UUID?