Dodam, że mam nawigację samochodową Nuvi kupioną w 2011 i nie dość, że ciągle w pełni aktualna w przeciwieństwie do np. TomTom'a znajomego, który miał też otrzymywać dożywotnie aktualizacje, ale producent stwierdził, że po paru latach dla niego starsze produkty "umarły" i wspierać ich nie będzie. I co mu zrobisz?
Ale, żeby przestać kitować o tym, że mi działa / nie działa BT - jak pisałem, na ogół nie używam w czasie jazdy rowerem BT ze smartfonem, nie potrzebuję komunikatów sms czy mediów społecznościowych, sytuację meteorologiczną rozpoznaję przed wyjazdem łącznie z pobraniem informacji o sile i kierunku wiatru dla pola wskazującego mi te dane na jednym z pól Edge (Wind Field - po moich ostatnich uzgodnieniach z twórcą wprowadził tryb "offline" czyli bez połączenia ze smartfonem), jednak rozumiem, że spora grupa potrzebuje stabilnego połączenia BT, nawet dla samego komfortu psychicznego, żeby nie słyszeć bzdur typu "a u mnie na Wahoo działa, garmin do dupy".
Powyższe, jak również użyteczność LiveTrack, a właściwie GroupTrack rozwiązującego problem prób odszukania gdzie kto z grupy czy umówionych znajomych w danej chwili się znajduje, spowodowało, że postanowiłem przyjrzeć się bliżej problemowi.
Jak się okazało, problem leży nie po stronie urządzeń Edge, tylko jak (prawie) zawsze po stronie smartfona.
Rozwiązanie problemu dotyczy tylko urządzeń działających na Androidzie, bo co prawda sam problem dotyczy również urządzeń działających na iOS, ale jako, że nie mam tego i raczej mieć nie przewiduję, to analogicznego rozwiązania tego problemu użytkownicy ogryzków muszą poszukać sami.
Ok, to do rzeczy. Po pierwsze należy pamiętać, żeby smartfon miał włączone usługi lokalizacyjne. Zwłaszcza Connect musi mieć te uprawnienia, żeby mieć możliwość wymiany danych przez BT. Może to i głupio brzmi, ale BT jest w paczce uprawnień lokalizacyjnych Androida. Przy okazji ustawić powiadomienia, również priorytetowe (wymagane dla Huwaei, ale nie tylko!).
Kolejny problem polega na tym, że Android od chyba wersji powyżej 4 dość restrykcyjnie podchodzi do oszczędzania energii. Aplikacje pracujące w tle często są usypiane, do czasu przywrócenia na ekran. Już same narzekania, że połączenie jest tylko wtedy, gdy jest uruchomiony Connect wskazuje, że brak widoczności apki Connect oznacza jej uśpienie również z zamknięciem połączeń BT. Rozwiązaniem (choć nie do końca i nie u każdego kompletnym) jest dodanie apki Connect do wyjątków czy też wyłączenie optymalizacji zużycia energii dla tej aplikacji. Różnie to się nazywa w różnych smartfonach czy wersjach Androida, u mnie
Ustawienia zaawansowane -> Zarządzaj baterią -> Optymalizacja baterii. Wskazać Connect (sugeruję również Bluetooth) i wybrać "brak optymalizacji". Ewentualnie Ustawienia -> Aplikacje -> Connect -> Bateria: brak optymalizacji.
W niektórych smartfonach/wersjach Androida wymagane jest również wymuszenie działania aplikacji Connect po wyłączeniu ekranu: Ustawienia -> Aplikacje -> Connect -> Bateria: utrzymuj działanie aplikacji po wyłączeniu ekranu (na pewno w Huawei, ale warto sprawdzić wszędzie)
Powyższe w teorii powinno zapobiec w wyłączaniu działania procesu, aczkolwiek okazuje się, że system i tak ogranicza lub całkowicie wyłącza połączenia BT dla aplikacji, która nie prowadzi stałej sesji połączeń, tylko żąda od czasu do czasu wymiany danych. Powoduje to rozłączenie połączenia, a po zażądaniu danych następuje proces negocjacji połączenia, co może dość długo trwać i co gorsza po wymianie paczki danych i zakończeniu transmisji sytuacja może się powtarzać (właściwie na ogół powtarza się).
Jest to słabość albo samego protokołu BTLE, albo rozwiązania w systemach Android/iOS.
Jak rozwiązać powyższy problem? Pierwsze rozwiązanie to napisanie aplikacji będące jednak w konflikcie z zasadami obowiązującymi dla aplikacji która musi być uruchomiona nonstop i wymieniać dane z urządzeniami typu zegarki czy opaski. Rozwiązanie to polega na wymuszaniu podtrzymania stałego połączenia BTLE, bez możliwości zamykania sesji łączności.
Zwiększa to znacznie zużycie energii, zwłaszcza w terminalu czyli smarfonie: głównym prądożercą okazuje się właśnie BT, potrafi dość mocno wydrenować akumulator. Widać to też przy zastosowaniu kolejnego rozwiązania.
O tym "kolejnym" (i póki co ostatecznym) rozwiązaniu już wspominałem. Są to aplikacje Reconnect Garmin Watch - jedna legacy dla starszych urządzeń z Androidem 4 (ale ponoć aktualne wymagania Connect to minimum 5), 5, 6 (choć może być używana również do 7.1), druga z nowszymi wersjami systemu.
No i ta aplikacja robi cuda utrzymujące połączenie z urządzeniami Garmina. Robi coś, czego nie jest w stanie zrobić poprawnie (choć do idealnej użyteczności daleko - poprawnie pod względem programistycznym) do bólu napisana aplikacja Connect. "Do bólu" jest tu jak najbardziej adekwatne, bo zrywanie połączeń boli i wkurza. Reconnect Garmin Watch jest co prawda dedykowany do utrzymywania połączeń z zegarkami typu Fenix czy FR, ale nie ogranicza się tylko do nich - wystarczy wybrać sparowane wcześniej przez BT w connect inne urządzenie Garmina np. Edge i... od tego momentu połączenie jest stabilne. Nawet po przejściu do autouśpienia, bezpośrednio po "pobudce" Edge połączenie jest nawiązywane niemalże natychmiastowo.
Aplikacja głównie ma za zadanie utrzymać tak włączonego w tle Connect, jak również podtrzymać połączenie BT ze wskazanym urządzeniem. To ważne, bo o ile ktoś ma np. Fenixa i dla niego wykona procedurę utrzymania połączenia, nie oznacza to, że utrzymanie będzie działać również dla Edge. Z moich doświadczeń wynika, że nie. Należy wykonać procedurę setupu po kolei dla każdego z urządzeń. Bez obawy, kolejne urządzenie nie spowoduje, że poprzednie przestanie poprawnie działać. Wtedy działa tak dla poprzedniego, jak również później dodanego.
Dlaczego nie utrzymuje połączeń "hurtem" dla wszystkich? Bo na liście może być dużo urządzeń, niekoniecznie garminowskich (np. OBD2 używany tylko w samochodzie i to incydentalnie, termometr, czy cokolwiek innego) i wymuszanie połączeń dla wszystkich z listy byłoby bez sensu.
Jeszcze jedno - jeśli ktoś ma poprawnie sparowane urządzenia (FR, Fenix, Edge itd.) ze smartfonem to na ogół nie ma potrzeby wykonywania pełnej procedury parowania, wystarczy przeskoczyć do końca setupu i powinno wszystko działać poprawnie. Jeśli nie, to sugerowałbym usunięcie sparowań tak w urządzeniach garmina, jak również w smartfonie, ponowne uruchomienie (wszystkiego) i sparowanie zgodnie z instrukcjami aplikacji.
Smartfony: Lenovo S960 VIBEX, Meizu mx4, Samsung J3 Model J320FN mogą sprawiać problemy, nie przeszły testów kompatybilności Garmina. Mogą działać, ale nie muszą. Podobnie zresztą jak inne chińskie wynalazki, których Garmin nie sprawdzał. Używanie ich na własne ryzyko
Smartfony z Android GO są niekompatybilne z uwagi na to, że ta wersja systemu ma dość mocne ograniczenia wykluczające możliwość poprawnej pracy Connect.
Na deser problemy z Huawei Smartphone and Garmin Watch Bluetooth : - w linku opisano dokładnie co i jak, jednak większość informacji powtarza tu zawarte.
Wczoraj sprawdziłem - działa nienagannie. Polecam wszystkim, którzy mają problemy z łącznością Smartfon <-> Edge. Przypominam o kolejności: włączenie uprawnień lokalizacyjnych, powiadomień (w tym priorytetowych), wyłączenie optymalizacji baterii dla Connect i umożliwienie działania aplikacji po wyłączeniu ekranu (jeśli smartfon wymaga), ewentualnie wymuszenie podtrzymania połączenia i działania Connect poprzez aplikację Reconect.
Jak w/w zrobić w iOS to może jakiś kumaty właściciel ogryzka pokombinuje
(dodaję informację do pierwszego wpisu wątku).