Является ли обычная реализация Android BLE синхронной по своей природе?
Я помню, как читал в "Руководстве и подсказке" -doc API Samsung BLE (заархивированная страница):
Одной из важнейших концепций Samsung F/W и стека является его синхронность. То есть, если мы вызываем, например, writeCharacteristic
для конкретной характеристики, если она возвращает true
, следующий вызов любого метода BluetoothGatt
или BluetoothGattServer
должен быть выполнен после onCharacteristicRead
обратного вызова onCharacteristicRead
. Это связано с тем, что стек предназначен для поддержки и обработки только одного вызова GATT за раз, и если, например, вы вызываете writeCharacteristic
или readCharacteristic
для какой-либо характеристики вскоре после первого, он игнорируется.
- Относится ли это также к нативной реализации BLE, представленной в Android 4.3?
- Samsung API также поддерживает только одно подключенное устройство GATT одновременно. Изменилось ли это в нативном API?
Ответы
Ответ 1
Недавно Samsung опубликовала документ "миграции" на той же странице, которую я связал в своем вопросе. Они точно отвечают на мой вопрос, сравнивая новый родной BLE API с API Samsung BLE:
Синхронный характер стека и F/W не был затронут. То есть, если мы вызываем, например, writeCharacteristic
для конкретного характеристика, если она возвращает true, следующий вызов любого BluetoothGatt
или BluetoothGattServer
должен выполняться после получения обратного вызова onCharacteristicRead
. Это связано с тем, что стек разработан для поддержки и обработки только одного вызова ГАТТ за раз, и если для Например, вы вызываете writeCharacteristic
или readCharacteristic
любого characteristic
вскоре после первого, он игнорируется.
Ответ 2
В нем говорится (я не знаю, что это за источник), что несколько периферийных устройств могут подключаться к одному устройству Android Central