Мой вопрос: может ли Android 4.3 (клиент) иметь активные соединения с несколькими устройствами (серверами) BLE? Если да, то как мне этого добиться?
Чем я занимался до сих пор
Я пытаюсь оценить, какой пропускной способности вы можете достичь с помощью BLE и Android 4.3 BLE API. Кроме того, я также пытаюсь выяснить, сколько устройств может быть подключено и активно одновременно. Я использую Nexus 7 (2013), Android 4.4 в качестве главного и TI CC2540 Keyfob в качестве подчиненных.
Я написал простое серверное программное обеспечение для ведомых устройств, которое передает 10000 20-байтовых пакетов через уведомления BLE. Я основал свое приложение для Android на Application Accelerator от Bluetooth SIG.
Он хорошо работает для одного устройства, и я могу достичь пропускной способности полезной нагрузки около 56 кбит при интервале подключения 7,5 мс. Чтобы подключиться к нескольким ведомым устройствам, я последовал совету сотрудника из Северной Европы, который написал в Nordic Developer Zone:
Да, с помощью одного приложения можно обрабатывать несколько ведомых устройств. Вам нужно будет обрабатывать каждое ведомое устройство с помощью одного экземпляра BluetoothGatt. Вам также понадобится специальный BluetoothGattCallback для каждого подчиненного устройства, к которому вы подключаетесь.
Я попробовал это, и это частично сработало. Я могу подключиться к нескольким ведомым устройствам. Я также могу зарегистрироваться для получения уведомлений на нескольких ведомых устройствах. Проблема начинается, когда я запускаю тест. Сначала я получаю уведомления от всех ведомых устройств, но после пары интервалов подключения приходят только уведомления от одного устройства. Примерно через 10 секунд другие подчиненные устройства отключаются, потому что кажется, что они достигли тайм-аута соединения. Иногда я получаю сразу с самого начала теста только уведомления от одного ведомого.
Я также попытался получить доступ к атрибуту через операцию чтения с тем же результатом. После нескольких прочтений пришли ответы только с одного устройства.
Мне известно, что на этом форуме есть несколько похожих вопросов: Поддерживает ли Android 4.3 несколько подключений устройств BLE?, Имеет ли собственная реализация BLE GATT для Android синхронный характер? или Ble multiple connection. Но ни один из этих ответов не дал мне понять, возможно ли это и как это сделать.
Буду очень признателен за совет.