W tym dokumencie opisujemy sprawdzone metody optymalizacji zużycia energii w aplikacji do nawigacji mobilnej, którą tworzysz za pomocą pakietu Navigation SDK. Opisuje też kompromisy, które należy wziąć pod uwagę przy stosowaniu tych praktyk. W szczególności ten dokument obejmuje te kwestie:
- Źródła wysokiego zużycia energii, uszeregowane od najwyższego do najniższego.
- Strategie optymalizacji zużycia energii w kolejności ważności, zaczynając od liczby klatek na sekundę.
- Strategie dla użytkowników, które pomogą im zarządzać sposobem korzystania z urządzenia podczas nawigacji.
Dlaczego warto zoptymalizować aplikację do nawigacji?
W zależności od sytuacji użytkownicy aplikacji mogą korzystać z wskazówek nawigacyjnych przez długi czas. Na przykład kierowcy i kurierzy mogą pracować przez wiele godzin, wykonując zadania na nieznanym terenie. W takich przypadkach użytkownicy w dużym stopniu polegają na wskazówkach nawigacyjnych w aplikacji. Powoduje to typowe problemy:
- Szybkie zużycie baterii i dostępność ładowarek. Intensywne korzystanie z nawigacji może powodować szybsze niż oczekiwane wyczerpywanie się baterii urządzenia. Wielu użytkowników może rozwiązać ten problem, ładując urządzenie w pojeździe, ale kierowcy motocykli nie mają takiej możliwości.
- Ograniczenie wydajności urządzenia z powodu przegrzania. Problemy mogą wystąpić nawet u użytkowników, którzy stale ładują urządzenie. Wysokie zużycie energii przez dłuższy czas może spowodować nagrzewanie się urządzenia, co prowadzi do ograniczenia wydajności z powodu przegrzania i spadku wydajności.
Aplikacje do nawigacji krok po kroku korzystają z funkcji wymagających dużego zużycia energii, takich jak ekran, GPS i komunikacja radiowa z wieżami komórkowymi, dlatego warto zoptymalizować zużycie energii przez aplikację mobilną. Dodatkowo należy wziąć pod uwagę potrzeby docelowych odbiorców w zakresie zużycia energii, aby móc dokonać odpowiednich kompromisów między wydajnością a optymalizacją zużycia energii.
Co zużywa najwięcej energii?
Ta sekcja dzieli działania w aplikacji związane z wysokim zużyciem energii na 2 kategorie:
- Renderowanie ekranu
- Aktualizacje lokalizacji
Renderowanie ekranu
Wyświetlanie ekranu zwykle powoduje największe zużycie energii w mobilnych aplikacjach do nawigacji. Za każdym razem, gdy urządzenie rysuje mapę i inne elementy interfejsu na ekranie, korzysta z przetwarzania przez procesor graficzny i procesor. Podobnie, gdy użytkownik pozostawi ten ekran włączony na dłuższy czas, zużywa to więcej energii.
W przypadku kierowców, którzy korzystają z widocznej mapy do nawigacji, możesz spodziewać się wysokiego zużycia energii, zwłaszcza jeśli używają aplikacji w sposób ciągły przez wiele godzin. W takim przypadku aplikacja renderuje też obraz na ekranie z większą częstotliwością, ponieważ mapa jest aktualizowana w czasie rzeczywistym. W niektórych przypadkach ekran może być odświeżany niemal bez przerwy, zwłaszcza gdy użytkownik przemieszcza się z miejsca na miejsce bez zatrzymywania się.
Aktualizacje lokalizacji
Oprócz renderowania ekranu energię urządzenia zużywają 2 inne działania związane z nawigacją:
- Korzystanie ze stacji bazowych sieci komórkowej i GPS-u
- aktualizacje i udostępnianie lokalizacji, np. w celu podania szacowanego czasu dotarcia na miejsce lub zgłoszenia pozycji pojazdu we flocie;
Zarówno GPS, jak i komunikacja radiowa w sieci komórkowej wymagają energochłonnych operacji uruchamiania: GPS musi znaleźć satelity, a radia komórkowe muszą nawiązać połączenie z wieżami. Z tych powodów działają one w zasadzie nieprzerwanie podczas nawigacji, mimo że moduły radiowe pozostają aktywne przez 20–30 sekund, aby zminimalizować koszty uruchomienia. System operacyjny kontroluje te ustawienia, których nie można łatwo skonfigurować w aplikacji.
W przypadku aktualizacji lokalizacji zużycie energii zależy od nieprzewidywalnych czynników. Na przykład odległość między urządzeniem a stacją bazową sieci komórkowej określa zużycie energii, ponieważ urządzenie będzie używać minimalnego sygnału niezbędnego do kontynuowania nawigacji, aby uniknąć przełączania się między stacjami. Dlatego urządzenie nawigujące w obszarze o słabym połączeniu będzie zużywać więcej energii niż urządzenie znajdujące się w pobliżu stacji bazowej. Niektóre aplikacje mogą też udostępniać aktualizacje lokalizacji centralnej usłudze zarządzania flotą, dlatego będą musiały komunikować się z serwerem.
Optymalizowanie zużycia energii przez aplikację
Optymalizacja zużycia energii w aplikacjach do nawigacji jest trudna, ponieważ w dużym stopniu zależą one od zasobów o wysokim poborze mocy, co ogranicza możliwości zmniejszenia zużycia energii bez kompromisów, takich jak ograniczenie korzystania z ekranu. W tej sekcji znajdziesz listę podejść, które możesz zastosować podczas optymalizacji aplikacji. Są one uporządkowane od najbardziej do najmniej skutecznych.
Zmiana liczby klatek
Ekran odświeża wyświetlane treści z częstotliwością określaną jako liczba klatek na sekundę (FPS). Renderowanie ekranu wymaga znacznej mocy obliczeniowej procesora i GPU, więc możesz zmniejszyć liczbę klatek na sekundę, aby oszczędzać energię.
Gdy zmniejszysz liczbę klatek na sekundę, renderowanie mapy i gesty interaktywne (takie jak przesuwanie, powiększanie czy obracanie) mogą być mniej płynne. Aby zachować równowagę między oszczędnością energii a szybkością reakcji, możesz utrzymywać niską podstawową liczbę klatek na sekundę i dynamicznie ją zwiększać podczas aktywnych interakcji użytkownika.
Więcej informacji o modyfikowaniu liczby klatek znajdziesz w sekcji Liczba klatek w Centrum dla deweloperów Android Media.
Automatyczne dostosowywanie liczby klatek na sekundę
Od wersji 7.8.0 pakiet Navigation SDK automatycznie dostosowuje liczbę klatek na sekundę mapy podczas aktywnej nawigacji, aby zwiększyć wydajność i zmniejszyć zużycie baterii. Gdy urządzenie przejdzie w tryb oszczędzania energii, liczba klatek na sekundę na mapie spadnie do 10, a po zakończeniu nawigacji lub wyłączeniu trybu oszczędzania energii wróci do 60.
Nawigacja bez mapy
Nie możesz kontrolować, jak użytkownik ustawia jasność ekranu urządzenia ani jak długo pozostawia go włączonego, ale możesz udostępnić opcję wskazówek nawigacyjnych bez mapy. Dzięki temu użytkownik będzie mógł wybrać tę opcję, aby oszczędzać energię. Jeśli na przykład kierowcy regularnie pracują w tej samej okolicy, mogą rzadziej potrzebować wskazówek opartych na mapie. Nawigację bez mapy można włączyć, ustawiając miejsce docelowe i rozpoczynając wskazówki w pakiecie Navigation SDK, ale nie wyświetlając mapy.
Aby ukryć interfejs nawigacji, nie dodawaj elementu NavigationView ani SupportNavigationFragment. Jeśli już to zrobisz, usuń kod, który je dodaje. Poniższy kod został zmodyfikowany na podstawie aplikacji w wersji demonstracyjnej na Androida pakietu Navigation SDK. Pokazuje on użycie komentarzy do usunięcia kodu, który dodaje interfejs nawigacji:
//Obtain a reference to the NavigationFragment
//setContentView(R.layout.activity_nav_fragment);
//mNavFragment = (SupportNavigationFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);
Pakiet Navigation SDK będzie nadal aktualizować przyciągnięte do drogi lokalizacje, szacowany czas dotarcia na miejsce i pozostałą odległość do celu, a aplikacja będzie nadal mogła subskrybować wszystkie zdarzenia wywoływane przez pakiet SDK w miarę postępów kierowcy. Nie jest to odpowiednie w każdym przypadku użycia i nie jest dobrą radą w sytuacjach, gdy kierowca musi widzieć mapę i korzystać z wskazówek wizualnych. Na zrzutach ekranu poniżej widać porównanie widoków mapy podczas aktywnej nawigacji.
|
|
Używanie ciemnego stylu mapy
Rozważ zastosowanie ciemnego motywu mapy, aby zmniejszyć ilość energii potrzebnej do jej renderowania na ekranie.
Pakiet Navigation SDK renderuje mapy za pomocą pakietu Google Maps SDK na Androida, który zawiera opcje stylizowania wszystkich widoków mapy w aplikacji, które nie są widokami nawigacji. Widok nawigacji obsługuje też wymuszanie trybu ciemnego. Może to nie wpływać na każde urządzenie w ten sam sposób ze względu na różnice w rodzaju ekranu, ale w niektórych przypadkach może pozwolić na oszczędzanie energii. Z ostatnich badań wynika, że ilość energii zaoszczędzonej przez tryb ciemny na niektórych ekranach zależy od początkowej jasności ekranu. Na przykład tryb ciemny oszczędza więcej energii na ekranach ustawionych na pełną jasność niż na ekranach, których jasność jest już dostosowana do 30–50% maksymalnej wartości. Jest to ważne, gdy używasz ciemnego trybu w aplikacjach, ponieważ oszczędność energii będzie zależeć od tego, jak użytkownik ustawi jasność ekranu.
Więcej informacji o modyfikowaniu interfejsu nawigacji znajdziesz w artykule Modyfikowanie interfejsu nawigacji.
Aby utworzyć ciemny styl mapy, użyj obiektu MapStyleOptions z stylem JSON, który reprezentuje wybrany przez Ciebie ciemny styl mapy. Starsze style JSON można tworzyć w starszym edytorze stylów dostępnym na stronie https://mapstyle.withgoogle.com/.
Zmiana częstotliwości aktualizacji lokalizacji GPS
Jeśli chodzi o zużycie energii przez aktualizacje lokalizacji wysyłane z urządzenia, skup się bardziej na częstotliwości aktualizacji lokalizacji niż na ilości danych przesyłanych w ramach transmisji.
Nie możesz bezpośrednio kontrolować tego w pakiecie SDK Navigation, ale jeśli Twoja aplikacja na Androida niezależnie wysyła żądania dotyczące lokalizacji, zapoznaj się z poradami w artykule Optymalizacja lokalizacji pod kątem baterii w dokumentacji dla deweloperów Androida. Ta sama rada dotyczy korzystania ze źródeł lokalizacji innych niż GPS (sieci komórkowe i Wi-Fi).
Udostępnianie użytkownikom przydatnych informacji
Użytkownicy Twojej aplikacji mogą chcieć wiedzieć, jak zoptymalizować zużycie energii. Aby pomóc użytkownikom zmniejszyć zużycie energii przez aplikacje, poproś ich o wykonanie tych czynności:
- Blokowanie telefonu
- Uruchom aplikację do nawigacji w tle.
- W miarę możliwości korzystaj z nawigacji bez mapy
- Zmniejsz jasność ekranu, korzystając z trybu ciemnego na ekranach OLED i AMOLED lub włączając automatyczną jasność.
- Chroń urządzenie przed przegrzaniem
- Połącz się z Wi-Fi w samochodzie, jeśli jest dostępna
Pomiar zużycia energii
Do pomiaru zużycia energii możesz używać profesjonalnych narzędzi, ale ich zdobycie jest często trudne lub kosztowne. Aplikacje i narzędzia do profilowania IDE, takie jak Power Profiler w Android Studio i panel Zużycie baterii w XCode Organizer, mierzą zużycie energii, ale trudno jest wyeliminować wpływ procesów działających w tle lub ustawić podstawową wydajność, względem której można dokonywać pomiarów. W niektórych przypadkach ograniczenia urządzenia mogą uniemożliwiać uzyskanie dostępu do niezbędnych danych.
Możesz użyć specjalistycznego sprzętu do monitorowania zasilania i zmodyfikować konfigurację połączenia baterii. Istnieją też komercyjne produkty i usługi, które Ci w tym pomogą. Pamiętaj, że modyfikowanie urządzeń w ten sposób może spowodować utratę gwarancji.