Die Zeitzonenerkennung anhand des Standorts ist eine optionale Funktion zur automatischen Zeitzonenerkennung, die auf Android 12 und höher verfügbar ist. Geräte können damit anhand ihres Standorts und der Daten der Zeitzonenkarte die Zeitzone bestimmen.
Die Zeitzonenerkennung anhand des Standorts ist eine Alternative zur Zeitzonenerkennung über das Telefonnetz erkennung. Da diese Funktion kein Telefonnetz erfordert, kann sie zusätzlich zu Mobiltelefonen auch auf Geräten mit anderen Formfaktoren unterstützt werden.
Die Funktion zur Zeitzonenerkennung anhand des Standorts besteht in der AOSP-Plattform aus den folgenden Komponenten:
- Logik zur Zeitzonenerkennung auf dem Systemserver
Eine für Nutzer zugängliche Option in den Einstellungen, die in Android 12 eingeführt wurde, damit Nutzer zwischen der Zeitzonenerkennung über das Telefonnetz und der Zeitzonenerkennung anhand des Standorts wählen können
Ein Plug-in-System für Komponenten, die die Standortermittlung und die Zuordnung zur Zeitzone ausführen. Das Plug-in wird als Standort-Zeitzonenanbieter (Location Time Zone Provider, LTZP) bezeichnet. Auf einem Gerät können bis zu zwei davon vorhanden sein. Die Plattform bietet System-APIs, die zur Implementierung eines LTZP verwendet werden müssen.
Eine Referenzimplementierung für LTZP.
Host-Tools zum Generieren eines Referenz-Datasets aus OpenStreetMap-Daten (OSM) Daten, das mit der Referenzimplementierung verwendet werden kann.
Datenschutz (für Nutzer)
Die Zeitzonenerkennung anhand des Standorts umfasst die folgenden Funktionen zum Schutz der Nutzerdaten:
Wenn es eine Option zum Auswählen des Standortalgorithmus gibt, können Nutzer den Standortalgorithmus jederzeit deaktivieren.
Vorschläge für Zeitzonen, die anhand des Standorts ermittelt wurden, werden nicht zwischen Nutzern auf einem Gerät geteilt.
Nutzer können die Standortermittlung für die Zeitzonenerkennung explizit über den Bildschirm Datum und Uhrzeit in den Einstellungen steuern. Nutzer müssen die Berechtigung nicht explizit über ein Berechtigungsdialogfeld erteilen.
Informationen zum Gerätestandort werden nicht an die Android-Plattformdienste weitergegeben. Stattdessen passiert Folgendes:
- Die Dienste zur Zeitzonenerkennung erhalten vom LTZP Zeitzonen-IDs, nicht den Standort des Geräts. Dies ist die Mindest-API, die zur Unterstützung der Zeitzonenerkennung anhand des Standorts erforderlich ist.
- Systemintegratoren steuern den Betrieb einzelner LTZPs. Bei LTZP-Implementierungen können Zeitzonenkartendaten verwendet werden, die vollständig auf dem Android-Gerät gespeichert sind, oder es können Server oder ein Hybridansatz verwendet werden.
Funktionsweise
Der Dienst time_zone_detector bestimmt anhand von Vorschlägen, die er von Erkennungsalgorithmen erhält, wann die aktuelle Zeitzone des Geräts geändert werden soll.
Der Dienst location_time_zone_manager ist für das Generieren von Vorschlägen für den Standortalgorithmus von time_zone_detector verantwortlich. Der Dienst location_time_zone_manager wird im Systemserverprozess ausgeführt.
Der Dienst location_time_zone_manager enthält keine Logik zur Zeitzonenerkennung. Dieser Dienst ist für die Verwaltung des Lebenszyklus von ein oder zwei 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 verfolgen, es sei denn, dies ist ausdrücklich erforderlich. Einige Gründe für dieses Verhalten sind:
- Im Gegensatz zu Telefonnetzsignalen, die passiv im Rahmen normaler Telefonvorgänge empfangen werden, kann der Standort aktiv von Android-Standortanbietern angefordert werden und zusätzlichen Strom verbrauchen.
- Standorteinstellungen sind nutzerbezogen und Android muss die Einstellungen des aktuellen Nutzers berücksichtigen.
- Die Ermittlung des Gerätestandorts ist datenschutzrechtlich bedenklich.
Außerdem gibt der Dienst location_time_zone_manager bei Bedarf einen unsicheren Vorschlag ab, wenn der aktuelle Nutzer Einstellungen ändert, um zu verhindern, dass Standortinformationen zwischen Nutzern geteilt werden.
Aufgrund dieser Entscheidungen dauert es einige Sekunden, nachdem der aktuelle Algorithmus auf „Standort“ umgestellt oder der aktuelle Nutzer gewechselt wurde, bis die Zeitzone erkannt werden kann. Das hängt auch von den Implementierungen der verwendeten LTZPs ab.
Die AOSP-Implementierung zur Zeitzonenerkennung anhand des Standorts ermöglicht bis zu zwei LTZPs, einen primären und einen sekundären LTZP, wie hier definiert:
- Primärer LTZP
- Wird immer ausgeführt, wenn der Nutzer die Ausführung der Funktion zur Zeitzonenerkennung anhand des Standorts zugelassen hat.
- Sekundärer LTZP
- Wird ausgeführt, wenn der primäre LTZP meldet, dass die Zeitzone unsicher ist, einen dauerhaften Fehler meldet oder bei der Initialisierung eine Zeitüberschreitung auftritt. Wird beendet, wenn der primäre LTZP einen sicheren Vorschlag einreicht.
Wie in Abbildung 1 dargestellt, erhält der Dienst time_zone_detector Zeitzonenvorschläge vom Algorithmus für das Telefonnetz oder vom Standortalgorithmus. Der Standortalgorithmus erhält Vorschläge vom primären oder sekundären LTZP.
Abbildung 1 : Informationsfluss bei der Zeitzonenerkennung anhand des Standorts.
Anforderungen an die Gerätekonfiguration
Damit die Funktion zur Zeitzonenerkennung anhand des Standorts unterstützt wird, müssen Geräte mit LTZPs konfiguriert werden, die das Gerät verwenden kann. Auf Geräten muss mindestens ein LTZP aktiviert und für die Zeitzonenerkennung anhand des Standorts konfiguriert sein, damit die Funktion verfügbar ist und Nutzern in den Einstellungen angezeigt wird.
Gerätekonfiguration
In diesem Abschnitt wird beschrieben, wie Gerätehersteller Geräte so konfigurieren können, dass sie die Zeitzonenerkennung anhand des Standorts unterstützen.
Die AOSP-Basiskonfiguration befindet sich unter
frameworks/base/core/res/res/values/config.xml:
| Konfigurationsschlüssel | AOSP-Wert | Beschreibung |
|---|---|---|
config_enableGeolocationTimeZoneDetection |
true |
Dies ist die Hauptsteuerung für die Funktion zur Zeitzonenerkennung anhand des Standorts.
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, wodurch etwas Speicherplatz gespart wird. |
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äranbieterdienst 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 sekundäre Anbieterdienst befindet. |
Standardmäßig ist der Schlüssel config_enableGeolocationTimeZoneDetection in der AOSP-Konfiguration auf true gesetzt, wodurch die Unterstützung für die Funktion zur Zeitzonenerkennung anhand des Standorts aktiviert wird. Die Funktion ist für Nutzer zunächst nicht sichtbar, da AOSP standardmäßig keine LTZP-Konfiguration enthält.
Mit dieser Standardkonfiguration können Gerätehersteller jedoch LTZPs über die Befehlszeile aktivieren und simulieren, um sie zu testen. Weitere Informationen finden Sie unter
Debugging und Tests.
LTZP-Status-APIs
In Android 14 unterstützen die LTZP-APIs die Meldung von Statusinformationen durch den LTZP. Dadurch 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 Standortermittlung oder Zeitzonenerkennung im Standortalgorithmus beteiligt sind.
Die Möglichkeit, zu melden, dass das Verhalten des LTZP durch die Umgebung des Geräts
beeinträchtigt wurde, ist nützlich, wenn der Fallback-Modus für das Telefonnetz unterstützt wird. Wenn
beispielsweise ein LTZP eines Drittanbieters, der für die Standortermittlung benutzerdefinierte Einstellungen oder Berechtigungen benötigt, in einem eingeschränkten Modus ausgeführt oder durch die
aktuellen Geräteeinstellungen deaktiviert wird, kann der LTZP diese Statusinformationen an interne
Plattformkomponenten wie die Einstellungen-App über die
reportSuggestion
Methode melden. Die Einstellungen-App kann Nutzer dann über anpassbare Strings oder Anpassungen benachrichtigen, 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
Lesen Sie beim Konfigurieren 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 weiteren Konfiguration.
Um einen LTZP zu konfigurieren, müssen Gerätehersteller einen App-Prozess auswählen, in dem der Dienst des LTZP gehostet werden soll. Ein eigener Prozess für einen LTZP ist mit hohem Aufwand verbunden. Im Idealfall wird ein App-Prozess ausgewählt, der immer ausgeführt wird, z. B. der Systemserver.
Auf Geräten mit modularen Systemkomponenten (Modulen) sollten Sie die
Interaktion zwischen den vom LTZP verwendeten geografischen Daten und den Zeitzonenregeln (tzdb)
berücksichtigen, die im Modul „Zeitzonendaten“ (com.android.tzdata) enthalten sind. Wenn eines der beiden
nicht aktualisiert wird, kann es zu Problemen mit der Versionsabweichung kommen. Weitere
Informationen finden Sie unter Überlegungen zur Einführung von Funktionen.
AOSP-Referenz-LTZP
AOSP enthält eine Referenzimplementierung für LTZP unter
packages/modules/GeoTZ. Diese Referenzimplementierung verwendet AOSP-APIs, um den Standort des Geräts zu bestimmen, und eine lokale Datendatei, um den Standort einer Reihe von Zeitzonen-IDs zuzuordnen.
Ein Referenz-Dataset, das aus anderen Open-Source-Projekten abgeleitet wurde, ist im Quellcode enthalten. Weitere Informationen finden Sie in der Datei README.md und in den verschiedenen LIZENZ Dateien.
Debugging und Tests
In diesem Abschnitt werden Shell-Befehle zum Debuggen und Testen der Funktion zur Zeitzonenerkennung anhand des Standorts beschrieben.
Mit dem Dienst „location_time_zone_manager“ interagieren
Wenn der Standortalgorithmus auf einem Gerät mit Android 12 und höher unterstützt wird, instanziiert Android den Dienst location_time_zone_manager beim Start.
Verwenden Sie Folgendes, um den aktuellen Status von location_time_zone_manager auszugeben:
adb shell cmd location_time_zone_manager dumpVerwenden Sie Folgendes, um eine umfangreiche Liste von Befehlszeilenoptionen für Tests aufzurufen:
adb shell cmd location_time_zone_manager helpDie Hilfeausgabe beschreibt auch die Eigenschaften des Dienstes device_config, mit denen das Verhalten von time_zone_detector für Tests oder in der Produktion beeinflusst werden kann. Weitere Informationen finden Sie unter Gerät mit dem
Dienst „device_config“ konfigurieren.
LTZP-Implementierungen können eigene Debugging- oder Testunterstützung bieten. Mit dem folgenden Befehl können Sie beispielsweise den AOSP-Referenz-LTZP debuggen, wenn er im Systemserverprozess registriert ist:
adb shell dumpsys activity service android/com.android.timezone.location.provider.OfflineLocationTimeZoneProviderService