Obecnie opracowuję aplikację, która będzie korzystać z Bluetooth Low Energy (testowanie na Nexusie 4). Po rozpoczęciu pracy z oficjalnymi interfejsami API BLE w Androidzie 4.3 zauważyłem, że po pierwszym podłączeniu urządzenia rzadko jestem w stanie pomyślnie połączyć się z tym urządzeniem lub innym urządzeniem.
Zgodnie z instrukcjami tutaj , mogę z powodzeniem podłączyć do urządzenia, usługi skanowania i charakterystyki i odczytu / zapisu / odbierać powiadomienia, bez żadnych problemów. Jednak po rozłączeniu i ponownym połączeniu często nie mogę skanować usług / cech lub nie mogę zakończyć odczytu / zapisu. Nie mogę znaleźć w dziennikach niczego, co wskazywałoby, dlaczego tak się dzieje.
Gdy to się stanie, muszę odinstalować aplikację, wyłączyć Bluetooth i ponownie uruchomić telefon, zanim zacznie ponownie działać.
Za każdym razem, gdy urządzenie zostanie odłączone, wywołuję funkcję close () na obiekcie BluetoothGatt i ustawiam na zero. Jakieś spostrzeżenia?
EDYCJA:
Zrzuty dziennika: dla tych dzienników zrootowałem swój telefon i podniosłem poziomy śledzenia powiązanych elementów w /etc/bluetooth/bt_stack.conf
Udane połączenie - pierwsza próba po ponownym uruchomieniu telefonu i zainstalowaniu aplikacji. Jestem w stanie połączyć się, odkryć wszystkie usługi / cechy oraz czytać / pisać.
Nieudana próba 1 - to kolejna próba po rozłączeniu się z udanym połączeniem powyżej. Wygląda na to, że byłem w stanie odkryć cechy, ale pierwsza próba odczytu zwróciła wartość zerową i wkrótce potem się rozłączyła.
Nieudana próba 2 - przykład, w którym nie jestem nawet w stanie odkryć usług / cech.
EDYCJA 2:
Urządzenie, z którym próbuję się połączyć, oparte jest na układzie scalonym CC2541 TI. Otrzymałem TI SensorTag (również oparty na CC2541) do zabawy i odkryłem, że TI wydało wczoraj aplikację na Androida dla SensorTag. Jednak ta aplikacja ma ten sam problem. Przetestowałem to na dwóch innych Nexusach 4 z tym samym rezultatem: połączenie z SensorTag jest udane za pierwszym lub drugim razem, ale (zgodnie z logami) później nie wykrywa usług, powodując różnego rodzaju awarie. Zaczynam się zastanawiać, czy to problem z tym konkretnym układem?