Сначала убедитесь, что у вас никогда не было более одного невыполненного запроса GATT за раз. См. Android BLE BluetoothGatt.writeDescriptor () иногда возвращает false .
Когда вы получаете onCharacteristicChanged, вы можете использовать getValue непосредственно для объекта характеристики, чтобы получить уведомленное значение.
После вызова readCharacteristic необходимо дождаться onCharacteristicRead, прежде чем вы сможете вызвать getValue.
<Label><TextBlock>Lorem<LineBreak/>ipsum</TextBlock></Label>
необходимо использовать TextBlock, потому что TextBlock принимает как детей набор Вложенных объектов. Таким образом, Вы даете элементу TextBlock три Встроенных объекта: Выполненный текст = "Lorem", LineBreak и текст Выполнения = "ipsum".
Вы не можете сделать следующего:
<Label>Lorem<LineBreak/>ipsum</Label>`
, потому что маркировка принимает один дочерний элемент содержания.
кроме того, не уверенный точно, что Ваш вариант использования является всего лишь уведомлением, я разместил TextBlock в Вашем элементе Маркировки. Действительно ли это является повторяющимся? Едва ли, в зависимости от Вашей потребности. Вот хорошая статья о различиях между этими двумя элементами: Различие между Маркировкой и TextBlock