In diesem Dokument werden Best Practices für die Optimierung des Stromverbrauchs in einer mobilen Navigations-App beschrieben, die Sie mit dem Navigation SDK erstellen. Gleichzeitig werden die Kompromisse beschrieben, die bei der Anwendung dieser Praktiken zu berücksichtigen sind. In diesem Dokument wird insbesondere Folgendes behandelt:
- Quellen mit hohem Stromverbrauch, sortiert von der höchsten zur niedrigsten.
- Strategien zur Optimierung des Stromverbrauchs, nach Wichtigkeit geordnet, beginnend mit der Framerate.
- Strategien für Endnutzer, um Ihre App-Nutzer darüber zu informieren, wie sie die Gerätenutzung während der Navigation verwalten können.
Warum sollten Sie Ihre Navigations-App optimieren?
Je nach Situation kann es sein, dass Nutzer Ihrer App die Navigationsanweisungen über einen längeren Zeitraum verwenden. Fahrer und Lieferkuriere können beispielsweise lange arbeiten und Aufträge in unbekannten Gebieten ausführen. In diesen Fällen verlassen sie sich stark auf die detaillierte Routenführung in der App. Daraus ergeben sich einige typische Probleme:
- Akkuverbrauch und Verfügbarkeit von Ladegeräten: Eine intensive Nutzung der Navigation kann dazu führen, dass sich der Akku des Geräts schneller als erwartet entlädt. Viele Nutzer können dieses Problem beheben, indem sie ihr Gerät im Fahrzeug aufladen. Zweiradfahrer haben diese Möglichkeit jedoch nicht.
- Gerätedrosselung wegen Überhitzung: Auch bei Nutzern, die ihr Gerät ständig aufladen, können Probleme auftreten. Ein hoher Stromverbrauch über einen längeren Zeitraum kann dazu führen, dass sich das Gerät erwärmt. Dies führt zu einer thermischen Drosselung und einem anschließenden Leistungsverlust.
Apps für die detaillierte Routenführung sind auf energieintensive Funktionen wie Display, GPS und Funkkommunikation mit Mobilfunkmasten angewiesen. Daher empfiehlt es sich, den Energieverbrauch Ihrer mobilen App zu optimieren. Außerdem sollten Sie die Anforderungen Ihrer Zielgruppe an den Energieverbrauch berücksichtigen, um einen angemessenen Kompromiss zwischen Leistung und Energieverbrauch zu finden.
Was verbraucht am meisten Strom?
In diesem Abschnitt werden die In-App-Aktivitäten, die mit einem hohen Stromverbrauch verbunden sind, in zwei Kategorien unterteilt:
- Bildschirm-Rendering
- Standortaktualisierungen
Bildschirm-Rendering
Das Rendern des Bildschirms verursacht in der Regel den höchsten Stromverbrauch in mobilen Navigations-Apps. Jedes Mal, wenn das Gerät eine Karte und andere UI-Elemente auf dem Bildschirm darstellt, wird die GPU- und CPU-Verarbeitung verwendet. Wenn der Nutzer das Display über einen längeren Zeitraum eingeschaltet lässt, wird ebenfalls mehr Strom verbraucht.
In gewissem Maße ist ein hoher Stromverbrauch bei Fahrern zu erwarten, die sich auf eine sichtbare Karte verlassen, um zu navigieren, insbesondere wenn sie die App viele Stunden lang ununterbrochen verwenden. In diesem Szenario wird die Karte in Echtzeit aktualisiert, sodass die App auch eine höhere Renderingrate auf dem Bildschirm ausführt. In einigen Fällen kann der Bildschirm fast kontinuierlich neu gezeichnet werden, insbesondere wenn der Nutzer ohne Unterbrechung von Ort zu Ort fährt.
Standortaktualisierungen
Neben dem Bildschirm-Rendering verbrauchen zwei weitere Navigationsaktivitäten Gerätestrom:
- Nutzung von Mobilfunkmasten und GPS
- Standort-Updates und -freigabe, z. B. um eine voraussichtliche Ankunftszeit anzugeben oder die Positionen eines Fahrzeugs in einer Flotte zu melden.
Sowohl die GPS- als auch die Mobilfunkkommunikation sind auf energieintensive Startvorgänge angewiesen: GPS muss Satelliten finden und Mobilfunkschnittstellen müssen mit Mobilfunkmasten kommunizieren und eine Verbindung herstellen. Aus diesen Gründen laufen sie während der Navigation im Wesentlichen kontinuierlich, obwohl die Mobilfunkschnittstellen 20–30 Sekunden lang aktiv bleiben, um die Startkosten zu minimieren. Das Betriebssystem steuert diese Einstellungen, die Sie in Ihrer App nicht einfach konfigurieren können.
Bei Standort-Updates variiert der Stromverbrauch aufgrund unvorhersehbarer Faktoren. Beispielsweise bestimmt die Entfernung zwischen dem Gerät und der Mobilfunk-Basisstation den Stromverbrauch, da das Gerät das minimale Signal verwendet, das für die Navigation erforderlich ist, um einen Wechsel des Mobilfunkmasts zu vermeiden. Daher verbraucht ein Gerät, das sich in einem Gebiet mit schlechter Verbindung befindet, mehr Strom als ein Gerät, das sich in der Nähe einer Basisstation befindet. Außerdem können einige Apps Standortaktualisierungen an einen zentralen Flottenverwaltungsdienst senden und müssen daher mit einem Server kommunizieren, um dies zu erreichen.
Stromverbrauch deiner App optimieren
Die Herausforderung bei der Optimierung des Energieverbrauchs in Navigations-Apps besteht darin, dass diese Apps stark von energieintensiven Ressourcen abhängen. Dadurch sind Ihre Möglichkeiten, die Auswirkungen zu minimieren, begrenzt, ohne dass Sie Kompromisse eingehen müssen, z. B. die Nutzung des Displays einschränken. In diesem Abschnitt finden Sie eine Liste von Ansätzen, die Sie bei der Optimierung Ihrer App verfolgen können, sortiert nach ihrer Wirkung.
Framerate ändern
Der Bildschirm aktualisiert die Anzeige mit einer Frequenz, die als Framerate bezeichnet wird und normalerweise in Bildern pro Sekunde (FPS) gemessen wird. Da das Rendern des Bildschirms erhebliche CPU- und GPU-Verarbeitung erfordert, können Sie die Framerate reduzieren, um Strom zu sparen.
Wenn Sie die Framerate reduzieren, werden das Kartenrendering und interaktive Gesten (z. B. Schwenken, Zoomen oder Drehen) möglicherweise weniger flüssig dargestellt. Um ein ausgewogenes Verhältnis zwischen Energieeffizienz und einer reaktionsschnellen Nutzererfahrung zu erreichen, können Sie eine niedrige Baseline-Framerate beibehalten und diese bei aktiven Nutzerinteraktionen dynamisch erhöhen.
Weitere Informationen zum Ändern von Frameraten findest du im Abschnitt Framerate in der Entwicklerdokumentation des Android Media Dev Center.
Automatische Anpassung der Framerate
Ab Version 7.8.0 passt das Navigation SDK die Framerate der Karte während der aktiven Navigation automatisch an, um die Leistung zu verbessern und den Akkuverbrauch zu senken. Wenn das Gerät in den Energiesparmodus wechselt, sinkt die Framerate der Karte auf 10 fps. Sie wird auf 60 fps zurückgesetzt, wenn die Navigation beendet oder der Energiesparmodus deaktiviert wird.
Ohne Karte navigieren
Sie können zwar nicht steuern, wie der Endnutzer die Bildschirmhelligkeit seines Geräts einstellt oder wie lange er den Bildschirm eingeschaltet lässt, aber Sie können eine Option für die Navigation ohne Karte anbieten. So kann der Endnutzer diese Option auswählen, um Strom zu sparen. Wenn Fahrer beispielsweise regelmäßig in derselben Gegend arbeiten, benötigen sie möglicherweise nicht so oft eine kartenbasierte Routenführung. Die Navigation ohne Karte kann aktiviert werden, indem Sie im Navigation SDK ein Ziel festlegen und die Routenführung starten, aber keine Karte anzeigen lassen.
Wenn Sie die Navigations-UI ausblenden möchten, fügen Sie keine NavigationView oder kein SupportNavigationFragment hinzu. Falls Sie das bereits getan haben, entfernen Sie den entsprechenden Code. Der folgende Code ist eine modifizierte Version der Android-Demo-App des Navigation SDK. Er zeigt, wie Sie den Code, der die Navigations-UI hinzufügt, mithilfe von Kommentaren entfernen:
//Obtain a reference to the NavigationFragment
//setContentView(R.layout.activity_nav_fragment);
//mNavFragment = (SupportNavigationFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);
Das Navigation SDK aktualisiert weiterhin die an Straßen ausgerichteten Standorte, die voraussichtliche Ankunftszeit und die verbleibende Fahrstrecke. Ihre App kann weiterhin alle vom SDK ausgelösten Ereignisse abonnieren, während der Fahrer unterwegs ist. Das ist nicht für jeden Anwendungsfall geeignet und kein guter Rat, wenn der Fahrer die Karte sehen und visuellen Hinweisen folgen muss. Die folgenden Screenshots zeigen einen direkten Vergleich der Kartenansichten während der aktiven Navigation.
|
|
Dunklen Kartenstil verwenden
Sie können die Karte so gestalten, dass ein dunkles Design verwendet wird. Dadurch wird die Energie reduziert, die zum Rendern der Karte auf dem Bildschirm erforderlich ist.
Das Navigation SDK rendert seine Karten mit dem Google Maps SDK for Android, das Optionen zum Gestalten aller Nicht-Navigationskartenansichten in Ihrer App enthält. Die Navigationsansicht unterstützt auch die Funktion „Dunkles Design erzwingen“. Aufgrund der unterschiedlichen Bildschirmtypen wirkt sich dies möglicherweise nicht auf alle Geräte gleich aus, kann aber in einigen Fällen zu potenziellen Energieeinsparungen führen. In einer aktuellen Studie wurde festgestellt, dass die Menge an Energie, die durch den dunklen Modus auf einigen Bildschirmen eingespart wird, davon abhängt, wie hell der Bildschirm zu Beginn ist. Beispielsweise spart der dunkle Modus auf Displays, die auf volle Helligkeit eingestellt sind, mehr Energie als auf Displays, deren Helligkeit bereits auf 30–50% des Maximums eingestellt ist. Das ist wichtig, wenn du den dunklen Modus für deine Apps verwendest, da die Energieeinsparungen davon abhängen, wie der Endnutzer die Bildschirmhelligkeit einstellt.
Weitere Informationen zum Ändern der Navigations-UI finden Sie unter Navigations-UI ändern.
Wenn Sie einen dunklen Stil für Ihre Karte erstellen möchten, verwenden Sie ein MapStyleOptions-Objekt mit einem JSON-Stil, der den gewünschten dunklen Kartenstil darstellt. Legacy-JSON-Stile können mit dem Legacy-Stileditor unter https://mapstyle.withgoogle.com/ erstellt werden.
Häufigkeit der GPS-Standortaktualisierung ändern
Wenn du den Stromverbrauch von Standort-Updates berücksichtigst, die vom Gerät gesendet werden, solltest du dich mehr auf die Häufigkeit der Standort-Updates als auf die Menge der gesendeten Daten konzentrieren.
Dies ist nichts, was Sie im Navigation SDK direkt steuern können. Wenn Ihre Android-App jedoch unabhängig Standortdaten anfordert, sollten Sie die Hinweise im Artikel Standort für Akku optimieren in der Android-Entwicklerdokumentation beachten. Dasselbe gilt für die Verwendung von Standortquellen ohne GPS (Mobilfunk und WLAN).
Nutzer schulen
Die Nutzer deiner App möchten vielleicht wissen, wie sie ihren Stromverbrauch optimieren können. Damit Nutzer den Stromverbrauch ihrer Apps reduzieren können, empfehlen Sie ihnen Folgendes:
- Smartphone sperren
- Navigations-App im Hintergrund ausführen
- Navigation nach Möglichkeit ohne Karte verwenden
- Bildschirmhelligkeit verringern, entweder durch Verwendung des dunklen Modus für OLED- und AMOLED-Bildschirme oder durch Aktivieren der automatischen Helligkeit
- Gerät kühl halten
- Mit dem WLAN im Fahrzeug verbinden, falls verfügbar
Stromverbrauch messen
Du kannst professionelle Tools verwenden, um den Stromverbrauch zu messen, aber es ist oft schwierig oder kostspielig, sie zu beschaffen. Apps und IDE-Profiling-Tools wie der Power Profiler in Android Studio und der Bereich „Akkunutzung“ im XCode Organizer messen den Stromverbrauch. Es kann jedoch schwierig sein, die Auswirkungen von Hintergrundprozessen zu entfernen oder eine Leistungsbaseline festzulegen, mit der die Messwerte verglichen werden können. In einigen Fällen können Geräteeinschränkungen den Zugriff auf die erforderlichen Daten verhindern.
Du kannst spezielle Hardware zur Stromüberwachung verwenden und die Konfiguration der Akkuverbindung ändern. Es gibt kommerzielle Produkte und Dienste, die dich dabei unterstützen. Beachten Sie, dass durch eine solche Änderung der Geräte die Garantie des Geräts erlöschen kann.