W tym dokumencie opisujemy sprawdzone metody optymalizacji zużycia energii w mobilnej aplikacji do nawigacji, którą tworzysz za pomocą pakietu Navigation SDK. Opisujemy też kompromisy, które należy wziąć pod uwagę podczas stosowania tych metod. W szczególności omawiamy te kwestie:
- Źródła wysokiego zużycia energii, uporządkowane od największego do najmniejszego.
- Strategie optymalizacji zużycia energii, uporządkowane według ważności, zaczynając od liczby klatek.
- Strategie dla użytkowników dotyczące informowania użytkowników aplikacji o tym, jak zarządzać zużyciem energii przez urządzenie podczas nawigacji.
Dlaczego warto zoptymalizować aplikację do nawigacji?
W zależności od sytuacji użytkownicy aplikacji mogą korzystać z nawigacji przez długi czas. Na przykład kierowcy i kurierzy mogą pracować przez wiele godzin, wykonując zadania w nieznanym terenie. W takich przypadkach 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.
- Ograniczanie wydajności urządzenia z powodu przegrzania. Problemy mogą występować nawet u użytkowników, którzy stale ładują urządzenie. Wysokie zużycie energii przez długi czas może spowodować przegrzanie urządzenia, co prowadzi do ograniczenia wydajności i jej późniejszego spadku.
Aplikacje do nawigacji krok po kroku korzystają z funkcji wymagających dużej ilości energii, takich jak ekran, GPS i komunikacja radiowa ze stacjami bazowymi. 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?
W tej sekcji dzielimy działania w aplikacji związane z wysokim zużyciem energii na 2 kategorie:
- Renderowanie ekranu
- Aktualizacje lokalizacji
Renderowanie ekranu
Renderowanie 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 procesora i układu graficznego. Podobnie, gdy użytkownik pozostawia ten ekran włączony przez długi czas, zużywa więcej energii.
W pewnym stopniu możesz spodziewać się wysokiego zużycia energii przez kierowców, którzy korzystają z widocznej mapy do nawigacji, zwłaszcza jeśli używają aplikacji nieprzerwanie przez wiele godzin. W takim przypadku aplikacja wykonuje też większą liczbę renderowań na ekranie, ponieważ mapa jest aktualizowana w czasie rzeczywistym. W niektórych przypadkach ekran może być odświeżany niemal nieprzerwanie, zwłaszcza gdy użytkownik jedzie z miejsca na miejsce bez zatrzymywania się.
Aktualizacje lokalizacji
Oprócz renderowania ekranu zużycie energii przez urządzenie powodują 2 inne działania związane z nawigacją:
- Korzystanie ze stacji bazowej i GPS-a.
- 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 ze stacjami bazowymi korzystają z energochłonnych operacji uruchamiania: GPS musi znaleźć satelity, a radia komórkowe muszą nawiązać połączenie ze stacjami bazowymi. Z tych powodów działają one zasadniczo nieprzerwanie podczas nawigacji, mimo że radia komórkowe pozostają aktywne przez 20–30 sekund, aby zminimalizować koszty uruchamiania. Te ustawienia są kontrolowane przez system operacyjny, którego nie można łatwo skonfigurować w aplikacji.
W przypadku aktualizacji lokalizacji zużycie energii zależy od nieprzewidywalnych czynników. Na przykład zużycie energii zależy od odległości między urządzeniem a stacją bazową sieci komórkowej, ponieważ urządzenie będzie używać minimalnego sygnału niezbędnego do kontynuowania nawigacji, aby uniknąć przełączania stacji bazowych. 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ę blisko stacji bazowej. Dodatkowo niektóre aplikacje mogą udostępniać aktualizacje lokalizacji centralnej usłudze zarządzania flotą, dlatego będą musiały komunikować się z serwerem.
Optymalizacja zużycia energii przez aplikację
Optymalizacja zużycia energii w aplikacjach do nawigacji jest trudna, ponieważ te aplikacje w dużym stopniu zależą od zasobów energochłonnych, co ogranicza możliwości zmniejszenia zużycia energii bez kompromisów, takich jak ograniczenie korzystania z ekranu. W tej sekcji znajdziesz listę metod, które możesz zastosować podczas optymalizacji aplikacji, uporządkowanych od najbardziej do najmniej skutecznych.
Zmiana liczby klatek
Ekran aktualizuje wyświetlane informacje z częstotliwością zwaną liczbą klatek. Liczba klatek jest zwykle mierzona w klatkach na sekundę (FPS). Ponieważ renderowanie ekranu zużywa dużo procesora lub układu graficznego, możesz zmniejszyć liczbę klatek, aby oszczędzać energię.
Kompromisem przy zmniejszaniu liczby klatek jest to, że renderowanie ekranu może wydawać się mniej płynne, zwłaszcza jeśli mapa jest często aktualizowana. Może to być najbardziej widoczne, gdy mapa jest powiększona, użytkownik porusza się z dużą prędkością lub gdy zmienia prędkość lub kierunek o dużą wartość.
Więcej informacji o modyfikowaniu liczby klatek znajdziesz w sekcji Liczba klatek w dokumentacji dla deweloperów w Centrum dla deweloperów Androida.
Automatyczne dostosowywanie liczby klatek
Od wersji 7.8.0 pakiet Navigation SDK automatycznie dostosowuje liczbę klatek mapy podczas aktywnej nawigacji, aby poprawić wydajność i zmniejszyć zużycie baterii. Gdy urządzenie przejdzie w tryb oszczędzania energii, liczba klatek mapy spadnie do 10 kl./s, a po zakończeniu nawigacji lub wyłączeniu trybu oszczędzania energii wróci do 60 kl./s.
Nawigacja bez mapy
Nie możesz kontrolować, jak użytkownik ustawia jasność ekranu urządzenia ani jak długo pozostawia ekran włączony, ale możesz udostępnić opcję nawigacji bez mapy. Umożliwi to użytkownikowi wybranie tej opcji w celu oszczędzania energii. Jeśli na przykład kierowcy regularnie pracują w tej samej okolicy, mogą nie potrzebować tak często wskazówek opartych na mapie. Nawigację bez mapy można włączyć, ustawiając miejsce docelowe i rozpoczynając nawigację 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 pakietu Navigation SDK na Androida i pokazuje 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ć lokalizacje przyciągane do drogi, szacowany czas dotarcia na miejsce i pozostałą odległość do celu, a Twoja aplikacja będzie nadal mogła subskrybować wszystkie zdarzenia generowane przez pakiet SDK podczas jazdy. Nie jest to odpowiednie w każdym przypadku użycia i oczywiście nie jest to dobra rada w sytuacjach, gdy kierowca musi widzieć mapę i postępować zgodnie ze wskazówkami wizualnymi. Na zrzutach ekranu poniżej widać porównanie przełączania widoków mapy podczas aktywnej nawigacji.
|
|
Używanie ciemnego stylu mapy
Rozważ zastosowanie ciemnego motywu mapy, aby zmniejszyć ilość energii potrzebnej do renderowania mapy na ekranie.
Pakiet Navigation SDK renderuje mapy za pomocą pakietu Google Maps SDK na Androida, który zawiera opcje stylizowania wszystkich widoków mapy innych niż nawigacyjne w aplikacji. Widok nawigacji obsługuje też wymuszanie trybu ciemnego. Ze względu na różnice w typach ekranów może to nie wpływać na wszystkie urządzenia w ten sam sposób, ale w niektórych przypadkach może pozwolić na oszczędzanie energii. Z niedawnego badania wynika, że ilość energii oszczędzanej przez tryb ciemny na niektórych ekranach zależy od tego, jak jasny jest ekran na początku. 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. Jest to ważne, gdy używasz trybu ciemnego 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 ciemny styl mapy. Starsze style JSON można tworzyć za pomocą starszego edytora stylów na stronie https://mapstyle.withgoogle.com/.
Zmiana częstotliwości aktualizacji lokalizacji GPS
Rozważając 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 wysyłanych w transmisji.
Nie możesz bezpośrednio kontrolować tego w pakiecie Navigation SDK , ale jeśli Twoja aplikacja na Androida niezależnie wysyła żądania lokalizacji, zapoznaj się z poradami w artykule Optymalizacja lokalizacji pod kątem baterii w dokumentacji dla deweloperów Androida. Te same porady dotyczą korzystania ze źródeł lokalizacji innych niż GPS (sieć komórkowa i Wi-Fi).
Szkolenie użytkowników
Użytkownicy Twojej aplikacji mogą chcieć dowiedzieć się, jak zoptymalizować zużycie energii. Aby pomóc im zmniejszyć zużycie energii w aplikacjach, poproś użytkowników o wykonanie tych czynności:
- Zablokuj telefon.
- Uruchom aplikację do nawigacji w tle.
- Jeśli to możliwe, korzystaj z nawigacji bez mapy.
- Zmniejsz jasność ekranu, używając trybu ciemnego na ekranach OLED i AMOLED lub włączając jasność adaptacyjną.
- Nie dopuszczaj do przegrzania urządzenia.
- Jeśli jest dostępna, połącz się z siecią Wi-Fi w pojeździe.
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. Zużycie energii mierzą aplikacje i narzędzia do profilowania IDE, takie jak Power Profiler w Android Studio i panel Zużycie baterii w XCode Organizer, ale trudno jest wyeliminować wpływ procesów działających w tle lub ustawić punkt odniesienia wydajności, względem którego można dokonywać pomiarów. W niektórych przypadkach ograniczenia urządzenia mogą uniemożliwić dostęp do niezbędnych danych.
Możesz używać specjalnego sprzętu do monitorowania zużycia energii i modyfikować konfigurację połączenia z baterią. 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.