Android 4.3: Jak połączyć się z wieloma urządzeniami Bluetooth Low Energy

Moje pytanie brzmi: czy system Android 4.3 (klient) może mieć aktywne połączenia z wieloma urządzeniami (serwerami) BLE? Jeśli tak, jak mogę to osiągnąć?

Co zrobiłem do tej pory

Próbuję ocenić, jaką przepustowość można uzyskać za pomocą BLE i Androida 4.3 BLE API. Ponadto próbuję również dowiedzieć się, ile urządzeń można jednocześnie podłączyć i aktywować. Używam Nexusa 7 (2013), Androida 4.4 jako master, a TI CC2540 Keyfob jako slave.

Napisałem proste oprogramowanie serwerowe dla slave'ów, które przesyła 10000 pakietów 20-bajtowych poprzez powiadomienia BLE. Oparłem moją aplikację na Androida naApplication Accelerator z Bluetooth SIG.

Działa dobrze dla jednego urządzenia i mogę osiągnąć przepustowość około 56 kBits przy interwale połączenia 7,5 ms. Aby połączyć się z wieloma niewolnikami, posłuchałem rady nordyckiego pracownika, który napisał wNordic Developer Zone:

Tak, możliwe jest obsługiwanie wielu niewolników za pomocą jednej aplikacji. Musisz obsługiwać każdego urządzenia podrzędnego za pomocą jednej instancji BluetoothGatt. Będziesz także potrzebował określonego BluetoothGattCallback dla każdego urządzenia podrzędnego, z którym się łączysz.

Więc próbowałem tego i częściowo działa. Mogę połączyć się z wieloma niewolnikami. Mogę również zarejestrować się, aby otrzymywać powiadomienia o wielu urządzeniach podrzędnych. Problem zaczyna się, gdy rozpoczynam test. Na początku otrzymuję powiadomienia od wszystkich niewolników, ale po kilku interwałach połączenia przechodzą tylko powiadomienia z jednego urządzenia. Po około 10 sekundach inni niewolnicy rozłączają się, ponieważ zdają się osiągać limit czasu połączenia. Czasami od początku testu otrzymuję tylko powiadomienia od jednego niewolnika.

Próbowałem również uzyskać dostęp do atrybutu przez operację odczytu z takim samym wynikiem. Po kilku odczytach pojawiły się tylko odpowiedzi z jednego urządzenia.

Wiem, że na tym forum jest kilka podobnych pytań: Czy Android 4.3 obsługuje wiele połączeń urządzeń BLE?, Czy ma natywną synchronizację implementacji BLE GATT dla Androida? lubBle wielokrotne połączenie. Ale żadna z tych odpowiedzi nie wyjaśniła mi, czy jest to możliwe i jak to zrobić.

Byłbym bardzo wdzięczny za porady.

questionAnswers(5)

yourAnswerToTheQuestion