Является ли собственная реализация Android BLE синхронной по своей природе?
Я помню, как читал в "Руководстве и подсказке"-документ API Samsung BLE (заархивированная страница):
Одной из важнейших концепций Samsung F/W и стека является его синхронность. То есть, если мы позвоним, например,
writeCharacteristic
для конкретного признака, если он возвращаетtrue
, следующий звонок любомуBluetoothGatt
или жеBluetoothGattServer
метод должен быть сделан послеonCharacteristicRead
обратный звонок получен. Это связано с тем, что стек предназначен для поддержки и обработки только одного вызова GATT за раз, и если, например, вы вызываетеwriteCharacteristic
или жеreadCharacteristic
по любой характеристике вскоре после первой она игнорируется.
- Относится ли это также к нативной реализации BLE, представленной в Android 4.3?
- Samsung API также поддерживает только одно подключенное устройство GATT одновременно. Изменилось ли это в нативном API?
2 ответа
Samsung недавно опубликовал документ "Миграция" на той же странице, на которую я ссылался в своем вопросе. Они точно отвечают на мой вопрос, сравнивая новый собственный BLE API с Samsung BLE API:
Синхронный характер стека и F/W не был затронут. То есть, если мы позвоним, например,
writeCharacteristic
для определенного признака, если он возвращает true, следующий вызов любогоBluetoothGatt
или жеBluetoothGattServer
метод должен быть сделан послеonCharacteristicRead
обратный звонок получен. Это связано с тем, что стек предназначен для поддержки и обработки только одного вызова GATT за раз, и если, например, вы вызываетеwriteCharacteristic
или жеreadCharacteristic
любойcharacteristic
вскоре после первого оно игнорируется.
- Нет. Большинство вызовов функций являются асинхронными.
- Я не знаю. Официальные документы не упоминают об этом, но не говорят, что он поддерживает только одно устройство. Я верю, что это возможно сделать. Проверьте эту статью: http://blog.lemberg.co.uk/getting-bottom-android-bluetooth-low-energy-api
Он говорит (я не знаю, каков его источник), что несколько периферийных устройств могут подключаться к одному устройству Android Central