Zeitzone anhand des Standorts bestimmen

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:

  • Logik zur Zeitzonenerkennung 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 zur Implementierung 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 umfasst die folgenden Datenschutzfunktionen für Nutzer:

  • 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 ist für die Verwaltung des Lebenszyklus eines oder zweier LTZP-Plug-ins verantwortlich.

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.
  • Standorteinstellungen sind auf Nutzerebene festgelegt und Android muss die Einstellungen des aktuellen Nutzers berücksichtigen.
  • Der Zugriff auf den Standort des Geräts ist ein heikles Datenschutzthema.

Außerdem macht der Dienst location_time_zone_manager bei Bedarf einen unsicheren Vorschlag, wenn der aktuelle Nutzer die Einstellungen ändert, um zu verhindern, dass Standortdaten zwischen Nutzern geteilt werden.

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 AOSP-Standortzeitzonenerkennung ermöglicht 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 das primäre LTZP-System meldet, dass die Zeitzone unsicher ist, einen dauerhaften Fehler meldet oder während der Initialisierung eine Zeitüberschreitung auftritt. 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.

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 am Standort 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 AOSP-Basiskonfiguration 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 festlegen, wird die Funktion für eine kleine Ersparnis beim Arbeitsspeicher vollständig deaktiviert.
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.

Standardmäßig ist in der AOSP-Konfiguration der Schlüssel config_enableGeolocationTimeZoneDetection auf true festgelegt, wodurch die Funktion zur Zeitzonenerkennung 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

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

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

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