Zeitzone anhand des Standorts bestimmen

Die Standorterkennung der Zeitzone, verfügbar unter Android 12 und höher, ist eine optionale Funktion zur automatischen Zeitzonenerkennung, mit der Geräte anhand ihrer Standort- und Zeitzonenkartendaten die Zeitzone ermitteln können.

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 Erkennung der Zeitzone 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 Nutzern die Auswahl zwischen den Mechanismen zur Zeitzonenerkennung über die Telefonie und den Standort zu ermöglichen

  • Ein Plug-in-System für Komponenten, die die Standorterkennung und 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.

  • Hosttools zum Generieren eines Referenz-Datasets aus OSM-Daten (Open Street Map), das 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 Einstellungsbildschirm Datum und Uhrzeit 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 Dienst time_zone_detector bestimmt anhand von Vorschlägen, die er von Erkennungsalgorithmen erhält, die aktuelle Zeitzone des Geräts zu ändern.

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 verwaltet den Lebenszyklus von einem oder zwei LTZP-Plug-ins.

Wenn die Zeitzonenerkennung des Standorts nicht benötigt wird, werden die LTZPs nicht gestartet. Das bedeutet, dass das System zur Zeitzonenerkennung anhand des Standorts LTZPs nur dann auffordert, den Standort des Geräts zu erfassen, wenn dies ausdrücklich erforderlich ist. Mögliche Gründe für dieses Verhalten:

  • Im Gegensatz zu Telefoniesignalen, die passiv im Rahmen normaler Telefonievorgänge empfangen werden, kann der Standort aktiv von Android-Standortanbietern 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 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 der Implementierung 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 ungewiss ist, einen dauerhaften Fehler meldet oder während der Initialisierung ein Zeitlimit überschritten wird. Stoppt, wenn der primäre LTZP-Vorschlag einen bestimmten Vorschlag sendet.

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.

Datenfluss für die Zeitzonenerkennung anhand des Standorts

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 werden, 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 das Hauptsteuerelement für die Zeitzonenerkennung 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, 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, der für die Standorterkennung benutzerdefinierte Einstellungen oder Berechtigungen benötigt, in einem 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 App „Einstellungen“ melden. 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

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.

Zum Konfigurieren eines LTZP müssen Gerätehersteller einen App-Prozess auswählen, um den Dienst des LTZP zu hosten. Ein dedizierter Prozess für ein LTZP ist mit einem hohen Aufwand verbunden. Im Idealfall ist der ausgewählte Anwendungsprozess ein Prozess, der jederzeit 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 Übernahme von Funktionen.

AOSP-Referenz LTZP

AOSP enthält eine LTZP-Referenzimplementierung 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.

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 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 instanziiert.

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

Die Hilfeausgabe beschreibt auch die device_config-Dienstattribute, mit denen das Verhalten von time_zone_detector beim Testen oder in der Produktion beeinflusst werden kann. 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