In diesem Dokument werden Best Practices für die Optimierung des Energieverbrauchs in einer mobilen Navigations-App beschrieben, die Sie mit dem Navigation SDK erstellen. Gleichzeitig werden die Kompromisse beschrieben, die bei der Anwendung dieser Praktiken berücksichtigt werden müssen. In diesem Dokument werden insbesondere die folgenden Themen behandelt:
- Quellen mit hohem Stromverbrauch, sortiert vom höchsten zum niedrigsten.
- Strategien zur Optimierung des Energieverbrauchs, nach Wichtigkeit geordnet, beginnend mit der Framerate.
- Strategien für Endnutzer, mit denen Sie Ihre App-Nutzer darüber informieren, wie sie die Gerätenutzung beim Navigieren verwalten können.
Warum sollten Sie Ihre Navigations-App optimieren?
Je nach Situation nutzen Ihre App-Nutzer die Navigationshilfe möglicherweise über einen längeren Zeitraum. So können Fahrer und Kurierfahrer beispielsweise lange Arbeitszeiten haben und Aufträge in unbekannten Gebieten erledigen. In diesen Fällen verlassen sie sich stark auf die In-App-Navigation. Das führt zu einigen häufigen Problemen:
- Akkulaufzeit und Verfügbarkeit von Ladegeräten Wenn Sie die Navigation häufig nutzen, kann sich der Akku des Geräts schneller als erwartet entladen. Viele Nutzer können dieses Problem beheben, indem sie ihr Gerät im Auto aufladen. Das ist für Fahrer von Zweirädern jedoch nicht möglich.
- Gerät wird aufgrund von Überhitzung gedrosselt 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, was zu einer thermischen Drosselung und einem anschließenden Leistungsverlust führt.
Apps für die Schritt-für-Schritt-Navigation nutzen leistungsintensive Funktionen wie Display, GPS und Funkkommunikation mit Mobilfunkmasten. Daher sollten Sie die Stromnutzung Ihrer mobilen App optimieren. Außerdem sollten Sie die Anforderungen Ihrer Zielgruppe an die Stromnutzung berücksichtigen, damit Sie die richtige Abwägung zwischen Leistung und optimiertem Energieverbrauch treffen können.
Was verbraucht am meisten Strom?
In diesem Abschnitt werden die In-App-Aktivitäten mit hohem Stromverbrauch in zwei Kategorien unterteilt:
- Bildschirm-Rendering
- Standortaktualisierungen
Bildschirm-Rendering
Das Bildschirm-Rendering verursacht in der Regel den höchsten Energieverbrauch in mobilen Navigations-Apps. Jedes Mal, wenn das Gerät eine Karte und andere UI-Elemente auf dem Bildschirm anzeigt, wird die GPU und CPU beansprucht. Wenn der Nutzer den Bildschirm längere Zeit eingeschaltet lässt, wird ebenfalls mehr Strom verbraucht.
Bei Fahrern oder Fahrgästen, die sich bei der Navigation auf eine sichtbare Karte verlassen, ist ein gewisser Stromverbrauch zu erwarten, insbesondere wenn sie die App viele Stunden lang ununterbrochen verwenden. In diesem Szenario wird die App auch mit einer höheren Bildwiederholrate auf dem Bildschirm gerendert, da die Karte dann in Echtzeit aktualisiert wird. In einigen Fällen kann der Bildschirm fast kontinuierlich neu gezeichnet werden, insbesondere wenn der Nutzer ohne Unterbrechung von einem Ort zum anderen fährt.
Standortaktualisierungen
Neben dem Bildschirm-Rendering verbrauchen zwei weitere Navigationsaktivitäten die Geräteleistung:
- Funkmasten und GPS-Nutzung
- Standortaktualisierungen und ‑freigaben, z. B. um eine geschätzte Ankunftszeit anzugeben oder die Positionen eines Fahrzeugs in einer Flotte zu melden.
Sowohl GPS als auch die Mobilfunkkommunikation erfordern einen energieintensiven Startvorgang: GPS muss Satelliten finden und Mobilfunk muss mit Funkmasten kommunizieren und eine Verbindung herstellen. Aus diesen Gründen laufen sie während der Navigation praktisch kontinuierlich, auch wenn die Mobilfunkschnittstellen 20 bis 30 Sekunden lang aktiv bleiben, um die Startkosten zu minimieren. Diese Einstellungen werden vom Betriebssystem gesteuert und können nicht einfach in Ihrer App konfiguriert werden.
Bei Standortaktualisierungen variiert der Stromverbrauch aufgrund unvorhersehbarer Faktoren. So wird beispielsweise der Energieverbrauch durch den Abstand zwischen dem Gerät und der Mobilfunkbasisstation bestimmt, da das Gerät das Mindestsignal verwendet, das für die Fortsetzung der Navigation erforderlich ist, um den Wechsel von Funkmasten zu vermeiden. Daher verbraucht ein Gerät, das in einem Gebiet mit schlechter Verbindung navigiert, mehr Strom als ein Gerät, das sich in der Nähe einer Basisstation befindet. Außerdem können einige Apps Standortaktualisierungen mit einem zentralen Flottenmanagementdienst teilen und müssen daher mit einem Server kommunizieren, um dies zu ermöglichen.
Energieverbrauch Ihrer App optimieren
Die Herausforderung bei der Optimierung des Energieverbrauchs in Navigations-Apps besteht darin, dass diese Apps stark von energiehungrigen Ressourcen abhängig sind. Das schränkt Ihre Möglichkeiten ein, die Auswirkungen zu verringern, ohne Kompromisse wie die Einschränkung der Bildschirmnutzung einzugehen. In diesem Abschnitt finden Sie eine Liste mit Optimierungsmöglichkeiten für Ihre App, sortiert nach der größten bis zur geringsten Auswirkung.
Framerate ändern
Das Display aktualisiert die angezeigten Inhalte mit einer bestimmten Häufigkeit, die als Framerate bezeichnet wird. Die Framerate wird in der Regel in Bildern pro Sekunde (Frames per Second, fps) gemessen. Da das Bildschirm-Rendering viel CPU oder GPU beansprucht, können Sie die Framerate reduzieren, um den Stromverbrauch zu senken.
Wenn Sie die Framerate reduzieren, kann das Bildschirm-Rendering weniger flüssig erscheinen, insbesondere wenn die Karte häufig aktualisiert wird. Das ist am deutlichsten zu sehen, wenn die Karte herangezoomt ist, um Details zu sehen, wenn der Nutzer mit hoher Geschwindigkeit unterwegs ist oder wenn er seine Geschwindigkeit oder Richtung stark ändert.
Weitere Informationen zum Ändern der Framerate findest du im Abschnitt Framerate der Entwicklerdokumentation im Android Media Dev Center.
Ohne Karte navigieren
Sie können zwar nicht festlegen, wie der Endnutzer die Helligkeit des Displays seines Geräts einstellt oder wie lange das Display eingeschaltet bleibt, aber Sie können eine Option für die Navigationsanleitung 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 Navigation. Die Navigation ohne Karte kann aktiviert werden, indem Sie im Navigation SDK ein Ziel festlegen und die Navigation starten, aber keine Karte anzeigen.
Wenn Sie die Navigations-UI ausblenden möchten, fügen Sie keine NavigationView oder SupportNavigationFragment hinzu. Falls Sie dies bereits getan haben, entfernen Sie den Code, der sie hinzufügt. Der folgende Code wurde aus der Android-Demo-App des Navigation SDKs übernommen. Er zeigt, wie mithilfe von Kommentaren der Code entfernt wird, mit dem die Navigations-UI hinzugefügt wird:
//Obtain a reference to the NavigationFragment
//setContentView(R.layout.activity_nav_fragment);
//mNavFragment = (SupportNavigationFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);
Das Navigations-SDK aktualisiert weiterhin die an Straßen gesnapten Standorte, die geschätzte Ankunftszeit und die verbleibende Fahrtstrecke. Außerdem kann Ihre App weiterhin alle vom SDK ausgelösten Ereignisse abonnieren, während der Fahrer unterwegs ist. Das ist nicht für jeden Anwendungsfall geeignet und natürlich auch nicht in Fällen, in denen der Fahrer die Karte sehen und visuellen Anweisungen folgen muss. Die folgenden Screenshots zeigen einen direkten Vergleich des Wechsels zwischen Kartenansichten während der aktiven Navigation.
Dunklen Kartenstil verwenden
Sie können für die Karte ein dunkles Design verwenden, um den Energieverbrauch für das Rendern der Karte auf dem Bildschirm zu reduzieren.
Das Navigation SDK rendert seine Karten mit dem Google Maps SDK for Android, das Optionen zum Stilisieren aller Kartenansichten in Ihrer App enthält, die nicht zur Navigation gehören. Die Navigationsansicht unterstützt auch den erzwungenen Dunkelmodus. Aufgrund von Unterschieden beim Bildschirmtyp wirkt sich dies möglicherweise nicht auf alle Geräte gleich aus. In einigen Fällen kann es jedoch zu Energieeinsparungen kommen. Eine neuere Studie hat gezeigt, dass die Energieeinsparung durch den dunklen Modus auf einigen Displays davon abhängt, wie hell das Display ursprünglich eingestellt ist. Beispielsweise spart der dunkle Modus auf Displays mit voller Helligkeit mehr Energie als auf Displays, deren Helligkeit bereits auf 30–50% des Maximums eingestellt ist. Das ist wichtig, wenn Sie den dunklen Modus für Ihre Apps verwenden, da die Energieeinsparung davon abhängt, 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-Stil-Editor unter https://mapstyle.withgoogle.com/ erstellt werden.
Aktualisierungshäufigkeit des GPS-Standorts ändern
Bei der Betrachtung des Stromverbrauchs durch Standortaktualisierungen, die vom Gerät gesendet werden, sollten Sie sich mehr auf die Häufigkeit der Standortaktualisierungen als auf die Menge der bei der Übertragung gesendeten Daten konzentrieren.
Sie können dies nicht direkt im Navigation SDK steuern. Wenn Ihre Android-App den Standort jedoch unabhängig anfordert, sollten Sie die Tipps im Artikel Standort für Akku optimieren in der Android-Entwicklerdokumentation beachten. Dasselbe gilt für die Verwendung von nicht GPS-basierten Standortquellen (Mobilfunk und WLAN).
Nutzer schulen
Die Nutzer Ihrer App möchten vielleicht wissen, wie sie den Energieverbrauch optimieren können. Um den Energieverbrauch ihrer Apps zu senken, empfehlen Sie Ihren Nutzern Folgendes:
- Smartphone sperren
- Navigations-App in den Hintergrund stellen
- Nach Möglichkeit Navigation ohne Karte verwenden
- Verringern Sie die Bildschirmhelligkeit, indem Sie entweder den dunklen Modus für OLED- und AMOLED-Displays verwenden oder die adaptive Helligkeit aktivieren.
- Gerät kühl halten
- Mit dem WLAN im Fahrzeug verbinden, falls verfügbar
Stromverbrauch messen
Sie können den Stromverbrauch mit professionellen Tools messen, die aber oft schwer oder teuer zu beschaffen sind. Mit Apps und IDE-Profilierungstools wie dem Power Profiler in Android Studio und dem Bereich Akkunutzung im XCode Organizer lässt sich der Energieverbrauch messen. Es kann jedoch schwierig sein, die Auswirkungen von Hintergrundprozessen zu entfernen oder einen Leistungsgrundwert festzulegen, an dem sich die Messungen orientieren können. In einigen Fällen können Geräteeinschränkungen den Zugriff auf die erforderlichen Daten verhindern.
Sie können spezielle Hardware zur Leistungsüberwachung verwenden und die Konfiguration der Akkuverbindung ändern. Es gibt kommerzielle Produkte und Dienstleistungen, die Ihnen dabei helfen. Beachten Sie, dass durch eine solche Modifizierung die beschränkte Garantie des Geräts erlischt.