Die Zeitzonenerkennung anhand des Standorts ist eine optionale Funktion zur automatischen Zeitzonenerkennung, die unter Android 12 und höher verfügbar ist. Dabei können Geräte ihren Standort und ihre Kartendaten zur Zeitzone verwenden, um die Zeitzone zu ermitteln.
Die Zeitzonenerkennung anhand des Standorts ist ein alternativer Mechanismus zur Zeitzonenerkennung für die Telefonie. Da für diese Funktion keine Telefonie erforderlich ist, kann sie neben Mobiltelefonen auch auf Geräten mit verschiedenen Formfaktoren unterstützt werden.
Die Funktion zur Zeitzonenerkennung anhand des Standorts besteht aus den folgenden Komponenten in der AOSP-Plattform:
- Zeitzonenerkennungslogik auf dem Systemserver
Eine nutzerzugängliche Option in den Einstellungen, die in Android 12 eingeführt wurde, um zwischen den Mechanismen zur Zeitzonenerkennung über die Telefonie und den Standort auszuwählen
Ein Plug-in-System für Komponenten, die die Standorterkennung und die Zeitzonenzuordnung ausführen. Das Plug-in wird als Standortzeitzonenanbieter (Location Time Zone Provider, LTZP) bezeichnet und es können bis zu zwei davon auf einem Gerät vorhanden sein. Die Plattform bietet System-APIs, die zum Implementieren eines LTZP verwendet werden müssen.
Eine Referenzimplementierung von LTZP.
Host-Tools zum Generieren eines Referenzdatensatzes aus Open Street Map (OSM)-Daten, der mit der Referenzimplementierung verwendet werden kann.
Datenschutz
Die Zeitzonenerkennung anhand des Standorts umfasst die folgenden Funktionen zum Schutz der Nutzerdaten:
Wenn es eine Ein/Aus-Schaltfläche zum Auswählen des Standortalgorithmus gibt, können Nutzer den Standortalgorithmus jederzeit deaktivieren.
Standortbasierte Zeitzonenvorschläge werden nicht zwischen Nutzern auf einem Gerät geteilt.
Nutzer können die Standortermittlung für die Zeitzonenerkennung über den Bildschirm Datum und Uhrzeit explizit steuern. Nutzer müssen die Berechtigung nicht explizit über ein Berechtigungsdialogfeld erteilen.
Informationen zum Gerätestandort werden nicht an die Android-Plattformdienste übergeben. Stattdessen geschieht Folgendes:
- Den Diensten zur Zeitzonenerkennung werden Zeitzonen-IDs vom LTZP gesendet, nicht vom Standort des Geräts. Das ist die Mindest-API, die für die Zeitzonenerkennung anhand des Standorts erforderlich ist.
- Systemintegratoren steuern den Betrieb einzelner LTZPs. LTZP-Implementierungen können Zeitzonenkartendaten verwenden, die vollständig auf dem Android-Gerät gespeichert sind, Server verwenden oder einen Hybridansatz nutzen.
Verhalten der Funktion
Der time_zone_detector
-Dienst bestimmt anhand von Vorschlägen, die er von Erkennungsalgorithmen erhält, wann die aktuelle Zeitzone des Geräts geändert werden soll.
Der location_time_zone_manager
-Dienst ist für die Generierung von Vorschlägen für den Standortalgorithmus von time_zone_detector
verantwortlich. Der Dienst location_time_zone_manager
wird im Systemserverprozess ausgeführt.
Der location_time_zone_manager
-Dienst enthält keine Logik zur Zeitzonenerkennung. Dieser Dienst ist für die Verwaltung des Lebenszyklus eines oder zweier LTZP-Plug-ins verantwortlich.
Wenn die Zeitzonenerkennung anhand des Standorts nicht erforderlich ist, werden die LTZPs nicht gestartet. Das bedeutet, dass das System zur Zeitzonenerkennung anhand des Standorts LTZPs nicht auffordert, den Standort des Geräts zu erfassen, es sei denn, dies ist ausdrücklich erforderlich. Mögliche Gründe für dieses Verhalten:
- Im Gegensatz zu Telefoniesignalen, die im Rahmen normaler Telefonievorgänge passiv empfangen werden, kann der Standort bei Android-Standortanbietern aktiv angefordert werden und zusätzlichen Strom verbrauchen.
- Die Standorteinstellungen gelten für den Nutzer und Android muss die Einstellungen des aktuellen Nutzers berücksichtigen.
- Der Zugriff auf den Standort des Geräts ist ein heikles Datenschutzthema.
Außerdem gibt der location_time_zone_manager
-Dienst bei Bedarf einen unverbindlichen Vorschlag, wenn der aktuelle Nutzer die Einstellungen ändert, um die Freigabe von Standortinformationen zwischen Nutzern zu vermeiden.
Aufgrund dieser Auswahl dauert es nach dem Wechsel des aktuellen Algorithmus zu „Standort“ oder nach dem Wechsel des aktuellen Nutzers einige Sekunden, bis die Zeitzone erkannt werden kann. Das hängt auch von den Implementierungen der verwendeten LTZPs ab.
Die Implementierung der Zeitzonenerkennung anhand des Standorts von AOSP erlaubt bis zu zwei LTZPs, eine primäre und eine sekundäre LTZP, wie hier definiert:
- Primäre LTZP
- Wird immer ausgeführt, wenn der Nutzer die Funktion zur Standortzeitzonenerkennung aktiviert hat.
- Sekundäre LTZP
- Wird ausgeführt, wenn der primäre LTZP meldet, dass die Zeitzone unbestimmt ist, einen dauerhaften Fehler meldet oder während der Initialisierung ein Zeitlimit überschritten wird. Wird beendet, wenn der primäre LTZ einen bestimmten Vorschlag einreicht.
Wie in Abbildung 1 dargestellt, erhält der time_zone_detector
-Dienst Zeitzonenvorschläge vom Telefonie- oder Standortalgorithmus. Der Standortalgorithmus erhält Vorschläge vom primären oder sekundären LTZP.
Abbildung 1: Informationsfluss für die Zeitzonenerkennung anhand des Standorts
Anforderungen an die Gerätekonfiguration
Damit die Funktion „Standortzeitzone“ unterstützt wird, müssen Geräte mit LTZPs konfiguriert sein, die das Gerät verwenden kann. Auf Geräten muss mindestens ein LTZP aktiviert und konfiguriert sein, damit die Zeitzonenerkennung funktioniert und für Nutzer in den Einstellungen sichtbar ist.
Gerätekonfiguration
In diesem Abschnitt wird beschrieben, wie Gerätehersteller Geräte so konfigurieren können, dass die Zeitzonenerkennung unterstützt wird.
Die Basis-AOSP-Konfiguration befindet sich unter frameworks/base/core/res/res/values/config.xml
:
Konfigurationsschlüssel | AOSP-Wert | Beschreibung |
---|---|---|
config_enableGeolocationTimeZoneDetection |
true |
Dies ist die Haupteinstellung für die Funktion „Zeitzone anhand des Standorts bestimmen“.
Die Funktion wird standardmäßig in AOSP unterstützt. Mindestens ein LTZP muss aktiviert oder konfiguriert sein, damit die Funktion für Nutzer verfügbar ist. Wenn Sie den Wert auf false setzen, wird die Funktion vollständig deaktiviert, was zu einer kleinen Arbeitsspeichereinsparung führt. |
config_enablePrimaryLocationTimeZoneProvider |
false |
Dadurch wird der primäre LTZP aktiviert. |
config_primaryLocationTimeZoneProviderPackageName |
Legen Sie hier den Paketnamen der App fest, in der sich der primäre Anbieterdienst befindet. | |
config_enableSecondaryLocationTimeZoneProvider |
false |
Dadurch wird der sekundäre LTZP aktiviert. |
config_secondaryLocationTimeZoneProviderPackageName |
Legen Sie hier den Paketnamen der App fest, in der sich der Dienst des sekundären Anbieters befindet. |
In der AOSP-Konfiguration ist der Schlüssel config_enableGeolocationTimeZoneDetection
standardmäßig auf true
festgelegt, sodass die Funktion zur Zeitzonenerkennung anhand des Standorts unterstützt wird. Die Funktion ist für Nutzer anfangs nicht sichtbar, da AOSP standardmäßig keine LTZP-Konfiguration enthält.
Mit dieser Standardkonfiguration können Gerätehersteller jedoch LTZPs zur Prüfung über die Befehlszeile aktivieren und simulieren. Weitere Informationen finden Sie unter Fehler beheben und testen.
APIs für den LTZP-Status
Unter Android 14 unterstützen die LTZP APIs die LTZP-Statusinformationen. So kann der LTZP Probleme melden, die die Plattform möglicherweise nicht selbst erkennen kann, da die Komponenten zur Zeitzonenerkennung der Plattform nicht direkt an der Standort- oder Zeitzonenerkennung im Standortalgorithmus beteiligt sind.
Die Möglichkeit, zu melden, dass sich das Verhalten des LTZP durch die Umgebung des Geräts verschlechtert hat, ist nützlich, wenn der Fallback-Modus für die Telefonie unterstützt wird. Wenn beispielsweise ein Drittanbieter-LTZP, das auf benutzerdefinierten Einstellungen oder Berechtigungen für die Standorterkennung angewiesen ist, im eingeschränkten Modus ausgeführt wird oder durch die aktuellen Geräteeinstellungen deaktiviert ist, kann das LTZP diese Statusinformationen über die Methode reportSuggestion
an interne Plattformkomponenten wie die Einstellungen-App senden. Die Einstellungen-App kann Nutzer dann über anpassbare Strings oder Anpassungen darüber informieren, dass Einstellungen geändert werden müssen, damit der Standortalgorithmus gut oder überhaupt funktioniert.
Weitere Informationen zu den Status, die der LTZP melden kann, finden Sie unter TimeZoneProviderStatus
.
LTZP-Konfiguration und -Bereitstellung
Lies bei der Konfiguration eines LTZP die Anleitung im Quellcode für frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java
.
Die Javadoc-Kommentare enthalten Details zum Dienst, zu den erforderlichen Berechtigungen und zur sonstigen Konfiguration.
Zum Konfigurieren eines LTZP müssen Gerätehersteller einen App-Prozess auswählen, um den Dienst des LTZP zu hosten. Ein spezieller Prozess für ein LTZP ist mit einem hohen Overhead verbunden. Idealerweise wird ein App-Prozess ausgewählt, der immer ausgeführt wird, z. B. der Systemserver.
Bei Geräten mit modularen Systemkomponenten (Modulen) sollten Sie die Interaktion zwischen den vom LTZP verwendeten Geodaten und den Zeitzonenregeln (tzdb) im Modul „Zeitzonendaten“ (com.android.tzdata
) berücksichtigen. Updates für eines ohne Updates für das andere führen wahrscheinlich zu Versionsabweichungen. Weitere Informationen finden Sie unter Überlegungen zur Einführung von Funktionen.
AOSP-Referenz LTZP
AOSP enthält eine Referenzimplementierung von LTZP unter packages/modules/GeoTZ
.
Bei dieser Referenzimplementierung wird der Standort des Geräts anhand von AOSP APIs ermittelt und mithilfe einer Datendatei auf dem Gerät einer Reihe von Zeitzonen-IDs zugeordnet.
Der Quellcode enthält einen Referenzdatensatz, der aus anderen Open-Source-Projekten abgeleitet wurde. Weitere Informationen finden Sie in der Datei README.md und in den verschiedenen LICENSE-Dateien.
Fehler beheben und testen
Im folgenden Abschnitt werden Shell-Befehle zum Debuggen und Testen der Funktion zur Zeitzonenerkennung beschrieben.
Mit dem Dienst „location_time_zone_manager“ interagieren
Wenn der Standortalgorithmus auf einem Gerät mit Android 12 oder höher unterstützt wird, wird der location_time_zone_manager
-Dienst beim Starten von Android erstellt.
So rufen Sie den aktuellen Status des location_time_zone_manager
ab:
adb shell cmd location_time_zone_manager dump
Wenn Sie eine umfangreiche Liste der Befehlszeilenoptionen für die Tests aufrufen möchten, verwenden Sie Folgendes:
adb shell cmd location_time_zone_manager help
In der Hilfe werden auch die device_config
-Diensteigenschaften beschrieben, mit denen sich das Verhalten des time_zone_detector
für Tests oder in der Produktion beeinflussen lässt. Weitere Informationen finden Sie unter Gerät mit dem device_config-Dienst konfigurieren.
LTZP-Implementierungen können eigenen Support für Debugging oder Tests bieten. Mit dem folgenden Befehl können Sie beispielsweise die AOSP-Referenz-LTZP-Datei debuggen, wenn sie im Systemserverprozess registriert ist:
adb shell dumpsys activity service android/com.android.timezone.location.provider.OfflineLocationTimeZoneProviderService