Ungefährer Standort unter Android Automotive OS

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 den Fused Location Provider (FLP), da er schnell ist und weniger Strom verbraucht. Im Vergleich zu Android-basierten Mobilgeräten kann die Netzwerkpositionierung in Automotive-Apps schwieriger sein. Sie können zwei Android-APIs verwenden:

  • Für die LocationManager API müssen Sie requestLocationUpdates verwenden, um den bevorzugten Standortanbieter explizit anzugeben.

  • Die Google Play Services API bietet eine einfachere Möglichkeit, mit Standorten in FusedLocationProviderClient zu arbeiten.

Viele Auto-Apps verwenden die 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 das 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 eines erhöhten Strom- und Akkuverbrauchs an. Dadurch wird die IVI-Betriebszeit nicht beeinträchtigt. Wir sind bestrebt, den Datenaustausch mit unseren Servern zu minimieren.

Viele Apps verwenden daher FLP aus der Play API anstelle von LocationManager, da FLP automatisch die richtige Entscheidung trifft und den Standortanbieter verwendet, der die Kriterien/Richtlinien für Standortanfragen (nämlich Stromverbrauch und Genauigkeit) am besten erfüllt.

Im Gegensatz zu Mobilgeräten springen Fahrzeuge selten von einem Ort zum anderen. Die Fahrzeugposition ist in den meisten Fällen bekannt.

Anbieter von Netzwerkstandorten (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

Das mobile FLP nutzt nicht nur Netzwerk- und GPS-Anbieter, sondern kombiniert auch Informationen von anderen Sensoren, um die Qualität der Standorte weiter zu verbessern. Die aktuelle Implementierung von FLP für Automotive nutzt die oben genannten Annahmen und verwendet GPS_PROVIDER als zugrunde liegende Quelle. Die Positionen werden aus GNSS abgeleitet und bei Bedarf werden einige Fehler hinzugefügt, um die Genauigkeit zu verringern. Zum Beispiel, wenn einem Client ungefähre Standorte zur Verfügung gestellt werden.

In sehr wenigen Fällen kann es daher länger als gewöhnlich dauern, bis die erste Position verfügbar ist. Zum Beispiel, wenn ein Fahrzeug oder genauer gesagt sein Ortungssystem zum ersten Mal verwendet wird oder nachdem es abgeschleppt wurde.

Apps für die Nutzung auf Mobilgeräten und im Auto entwickeln

Für Apps, die auf Mobilgeräte und Kraftfahrzeuge ausgerichtet sind und keine höhere Genauigkeit erfordern, fordern Sie android.permission.ACCESS_COARSE_LOCATION nur an und greifen Sie auf FLP zurück, wenn es verfügbar ist. 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 Funktion android.hardware.location.network 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, wenn Positionen benötigt werden.