Aus Datenschutzgründen sollten App-Entwickler nur Berechtigungen für den ungefähren Standort anfordern. Apps, die eine ungefähre grobe Position benötigen, verwenden in der Regel die kombinierte Netzwerkposition (Fused Location Provider, FLP), da sie schnell ist und weniger Strom verbraucht. Im Vergleich zu Android-basierten Mobilgeräten kann die Netzwerkposition in Automotive-Apps schwieriger zu ermitteln sein. Sie können zwei Android-APIs verwenden:
Für die LocationManager API müssen Sie
requestLocationUpdatesverwenden, um den bevorzugten Standortanbieter explizit anzugeben.Die Google Play-Dienste-API bietet eine einfachere Möglichkeit, mit dem Standort in
FusedLocationProviderClientzu arbeiten.
Viele Auto-Apps verwenden den FLP aus der Google Play-Dienste-API anstelle von LocationManager. FLP wählt den optimalen Standortanbieter basierend auf den Kriterien und Richtlinien für Standortanfragen (Stromverbrauch und Genauigkeit) aus, die vom Fahrzeug benötigt werden.
Stattdessen können Sie NETWORK_PROVIDER und GPS_PROVIDER für genaue Positionen explizit anfordern und verwenden. Dazu sind die Berechtigungen android.permission.ACCESS_FINE_LOCATION erforderlich. Unter Android 12 (API-Level 31) und höher ist FUSED_PROVIDER, auf die zuvor nur über die Google Play-Dienste-API zugegriffen werden konnte, als Standortanbieter für LocationManager verfügbar. Eine Implementierung von FLP finden Sie in FusedLocationProvider.java.
Es ist zwar möglich, GPS_PROVIDER nur mit groben Berechtigungen zu verwenden – das Framework verschlechtert die Genauigkeit künstlich, um den Erwartungen zu entsprechen –, aber für Entwickler, die Android-Smartphones im Blick haben, ist das wenig sinnvoll, da die allgemeine Verfügbarkeit schlecht ist und es oft länger dauert, eine grobe Position zu erhalten.
Netzwerkstandort im Automobilbereich
Die NETWORK_PROVIDER auf Android-Smartphones (mit Google Mobile Services) ermittelt den Standort anhand von Mobilfunkmasten, WLAN-Zugangspunkten und Bluetooth-Beacons in der Nähe. Daher ist für NETWORK_PROVIDER möglicherweise eine Datenverbindung erforderlich.
Bei Automotive-Apps gelten andere Geräteeinschränkungen. Da das globale Navigationssatellitensystem (GNSS) in der Regel aktiviert ist, fallen keine Strafen aufgrund von erhöhtem Strom- und Akkuverbrauch an. Dadurch wird die IVI-Betriebszeit nicht beeinträchtigt. Wir sind bestrebt, den Datenaustausch mit unseren Servern zu minimieren.
Viele Apps verwenden FLP aus der Play API anstelle von LocationManager, da FLP automatisch den besten Standortanbieter auswählt, um die Kriterien oder Richtlinien Ihrer Anfrage zu erfüllen, z. B. in Bezug auf Stromverbrauch und Genauigkeit.
Im Gegensatz zu Mobilgeräten springen Fahrzeuge selten von einem Ort zum anderen. Die Fahrzeugposition ist in den meisten Fällen bekannt.
Network Location Provider (NLP)
In den meisten Fahrzeugen sind die erforderlichen Telefonie-APIs nicht implementiert, um die erforderlichen Informationen zu einer Cell-ID (und Signalstärke) abzurufen. Da wir die Datennutzung minimieren, ist keine zusätzliche funktionale Implementierung von NLP vorgesehen.
Anbieter für kombinierte Standortbestimmung
Der mobile FLP kombiniert Informationen von anderen Sensoren, um die Standortqualität zu verbessern. Außerdem werden Netzwerk- und GPS-Anbieter verwendet. Umgekehrt verwendet die Automotive FLP GPS_PROVIDER als zugrunde liegende Quelle. Es passt die GNSS-Positionen an und fügt absichtlich Fehler hinzu, um die Genauigkeit zu verringern, wenn ein Client grobe Standorte anfordert.
In sehr wenigen Fällen kann es daher länger als gewöhnlich dauern, bis die erste Position verfügbar ist. Das kann zum Beispiel beim ersten Mal der Fall sein, wenn ein Fahrzeug oder genauer gesagt sein Standortsubsystem verwendet wird, oder nachdem das Fahrzeug abgeschleppt wurde.
Apps für die Nutzung auf Mobilgeräten und im Auto entwickeln
Für Apps, die auf Mobilgeräte und Kraftfahrzeuggeräte ausgerichtet sind, für die keine höhere Genauigkeit erforderlich ist, fordern Sie android.permission.ACCESS_COARSE_LOCATION nur an und greifen Sie bei Bedarf auf FLP zurück. Alternativ können Sie GPS_PROVIDER direkt mit denselben Berechtigungen verwenden. Das Framework verringert die Genauigkeit der zugrunde liegenden GNSS-Position, um den API-Erwartungen zu entsprechen. Weitere Informationen finden Sie unter Genauigkeit im Abschnitt Standortberechtigungen anfordern.
Außerdem muss in diesen Apps die android.hardware.location.network-Funktion im Manifest explizit als optional deklariert werden. Beispiel:
<uses-feature android:name="android.hardware.location.network" android:required="false" />
Dieser Ansatz sorgt für eine bessere Kompatibilität mit Geräten unterschiedlicher Formfaktoren und damit für eine maximale App-Verfügbarkeit ohne Codeunterschiede beim Abrufen von Positionen bei Bedarf.