Является ли обычная реализация Android BLE синхронной по своей природе?

Я помню, как читал в "Руководстве и подсказке" -doc API Samsung BLE (заархивированная страница):

Одной из важнейших концепций Samsung F/W и стека является его синхронность. То есть, если мы вызываем, например, writeCharacteristic для конкретной характеристики, если она возвращает true, следующий вызов любого метода BluetoothGatt или BluetoothGattServer должен быть выполнен после onCharacteristicRead обратного вызова onCharacteristicRead. Это связано с тем, что стек предназначен для поддержки и обработки только одного вызова GATT за раз, и если, например, вы вызываете writeCharacteristic или readCharacteristic для какой-либо характеристики вскоре после первого, он игнорируется.

  1. Относится ли это также к нативной реализации BLE, представленной в Android 4.3?
  2. Samsung API также поддерживает только одно подключенное устройство GATT одновременно. Изменилось ли это в нативном API?

Ответ 1

Недавно Samsung опубликовала документ "миграции" на той же странице, которую я связал в своем вопросе. Они точно отвечают на мой вопрос, сравнивая новый родной BLE API с API Samsung BLE:

Синхронный характер стека и F/W не был затронут. То есть, если мы вызываем, например, writeCharacteristic для конкретного характеристика, если она возвращает true, следующий вызов любого BluetoothGattили BluetoothGattServer должен выполняться после получения обратного вызова onCharacteristicRead. Это связано с тем, что стек разработан для поддержки и обработки только одного вызова ГАТТ за раз, и если для Например, вы вызываете writeCharacteristic или readCharacteristic любого characteristic вскоре после первого, он игнорируется.

Ответ 2

  • Нет. большинство вызовов функций асинхронны.
  • Я не знаю. Официальные документы не упоминают об этом, но не говорят, что он поддерживает только одно устройство. Я считаю, что это возможно. Проверьте эту статью: http://blog.lemberg.co.uk/getting-bottom-android-bluetooth-low-energy-api#.UfvK6ZK-1cY

В нем говорится (я не знаю, что это за источник), что несколько периферийных устройств могут подключаться к одному устройству Android Central