Zeitzone anhand des Standorts bestimmen

Die Zeitzonenerkennung anhand des Standorts ist eine optionale Funktion zur automatischen Zeitzonenerkennung, die auf Android 12 und höher verfügbar ist. Mit dieser Funktion können Geräte anhand ihres Standorts und von Zeitzonenkartendaten die Zeitzone ermitteln.

Die Zeitzonenerkennung anhand des Standorts ist ein alternativer Mechanismus zur Zeitzonenerkennung über die Telefonie. Da für diese Funktion keine Telefonie erforderlich ist, kann sie auf Geräten mit verschiedenen Formfaktoren zusätzlich zu Mobiltelefoniegeräten unterstützt werden.

Die Funktion zur Erkennung der Zeitzone anhand des Standorts besteht aus den folgenden Komponenten in der AOSP-Plattform:

  • Logik zur Zeitzonenerkennung auf dem Systemserver
  • Eine in den Einstellungen zugängliche Option, die in Android 12 eingeführt wurde, damit Nutzer zwischen den Mechanismen zur Erkennung der Zeitzone über Telefonie und Standort wählen können.

  • Ein Plug-in-System für Komponenten, die die Standorterkennung und die Zeitzonenzuordnung ausführen. Das Plug‑in wird als 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 einer LTZP verwendet werden müssen.

  • Eine Referenzimplementierung von LTZP.

  • Hosting von Tools zum Generieren eines Referenzdatensatzes aus OpenStreetMap-Daten (OSM), der mit der Referenzimplementierung verwendet werden kann.

Datenschutz

Die Zeitzonenerkennung anhand des Standorts umfasst die folgenden Datenschutzfunktionen:

  • Wenn es einen Schalter 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 Standorterkennung für die Zeitzonenerkennung explizit über den Bildschirm 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 weitergegeben. Stattdessen geschieht Folgendes:

    • Die Zeitzonenerkennungsdienste erhalten Zeitzonen-IDs vom LTZP, nicht den Standort des Geräts. Dies ist die Mindest-API, die für die Unterstützung der Zeitzonenerkennung anhand des Standorts erforderlich ist.
    • Systemintegratoren steuern den Betrieb einzelner LTZPs. LTZP-Implementierungen können Zeitzonenkartendaten verwenden, die sich vollständig auf dem Android-Gerät befinden, Server verwenden oder einen hybriden Ansatz nutzen.

Verhalten der Funktion

Der time_zone_detector-Dienst bestimmt, wann die aktuelle Zeitzone des Geräts auf Grundlage von Vorschlägen geändert werden soll, die er von Erkennungsalgorithmen erhält.

Der location_time_zone_manager-Dienst 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 location_time_zone_manager-Dienst 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 Erkennung der Zeitzone 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:

  • Im Gegensatz zu Telefonsignalen, 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.
  • Das Abrufen des Gerätestandorts ist datenschutzrelevant.

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

Aus diesem Grund dauert es einige Sekunden, nachdem der aktuelle Algorithmus auf den Standort oder der aktuelle Nutzer umgestellt wurde, bis die Zeitzone erkannt werden kann. Das hängt auch von den Implementierungen der verwendeten LTZPs ab.

Die AOSP-Implementierung der Zeitzonenerkennung anhand des Standorts unterstützt bis zu zwei LTZPs, einen primären und einen sekundären LTZP, wie hier definiert:

primäre LTZP
Wird immer ausgeführt, wenn der Nutzer die Funktion zur Erkennung der Zeitzone anhand des Standorts aktiviert hat.
sekundäre LTZP
Wird ausgeführt, wenn die primäre LTZP meldet, dass die Zeitzone unsicher ist, einen dauerhaften Fehler meldet oder bei der Initialisierung ein Zeitlimit überschritten wird. Wird beendet, wenn der primäre LTZP einen bestimmten Vorschlag einreicht.

Wie in Abbildung 1 dargestellt, empfängt der Dienst time_zone_detector Zeitzonenvorschläge vom Telefonie- oder Standortalgorithmus. Der Standortalgorithmus erhält Vorschläge vom primären oder sekundären LTZP.

Informationsfluss bei der Zeitzonenerkennung anhand des Standorts

Abbildung 1: Informationsfluss bei der Zeitzonenerkennung anhand des Standorts.

Anforderungen an die Gerätekonfiguration

Damit die Funktion „Zeitzone basierend auf dem Standort“ unterstützt wird, müssen Geräte mit LTZPs konfiguriert werden, die das Gerät verwenden kann. Auf Geräten muss mindestens eine LTZP aktiviert und konfiguriert sein, damit die Zeitzonenerkennung des Standorts 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 Zeitzone anhand des Standorts erkannt 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 zur Erkennung der Zeitzone anhand des Standorts.

Die Funktion wird standardmäßig in AOSP unterstützt. Damit die Funktion für Nutzer verfügbar ist, muss mindestens eine LTZP aktiviert oder konfiguriert sein.

Wenn Sie den Wert auf false setzen, wird das Feature vollständig deaktiviert, was zu einer geringen Arbeitsspeicherersparnis führt.
config_enablePrimaryLocationTimeZoneProvider false Dadurch wird die 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 die 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 gesetzt, wodurch die 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 über die Befehlszeile aktivieren und simulieren, um sie zu testen. Weitere Informationen finden Sie unter Debuggen und testen.

APIs für den Status von LTZP

In Android 14 unterstützen die LTZP-APIs die Statusinformationen für LTZP-Berichte. So kann das 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 das Verhalten des LTZP durch die Umgebung des Geräts beeinträchtigt wurde, ist nützlich, wenn der Telefonie-Fallbackmodus unterstützt wird. Wenn beispielsweise ein Drittanbieter-LTZP, das für die Standortbestimmung auf benutzerdefinierte Einstellungen oder Berechtigungen angewiesen ist, in einem eingeschränkten Modus ausgeführt oder durch die aktuellen Geräteeinstellungen deaktiviert wird, kann das LTZP diese Statusinformationen über die Methode reportSuggestion an interne Plattformkomponenten wie die Einstellungen-App 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 das LTZP melden kann, finden Sie unter TimeZoneProviderStatus.

Konfiguration und Bereitstellung von LTZP

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

Um ein LTZP zu konfigurieren, müssen Gerätehersteller einen App-Prozess auswählen, in dem der Dienst des LTZP gehostet werden soll. Ein dedizierter Prozess für eine LTZP ist mit hohem 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 geografischen Daten und den in Time Zone Data module (com.android.tzdata) enthaltenen Zeitzonenregeln (tzdb) berücksichtigen. Aktualisierungen der einen Komponente ohne Aktualisierungen der anderen führen wahrscheinlich zu Problemen mit der Versionsabweichung. Weitere Informationen finden Sie unter Überlegungen zur Einführung von Funktionen.

AOSP-Referenz-LTZP

AOSP enthält eine LTZP-Referenzimplementierung unter packages/modules/GeoTZ. In dieser Referenzimplementierung werden AOSP-APIs verwendet, um den Standort des Geräts zu ermitteln. Außerdem wird eine lokale Datendatei verwendet, 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 LICENSE-Dateien.

Fehler beheben und testen

Im folgenden Abschnitt werden Shell-Befehle zum Debuggen und Testen der Funktion zur Erkennung der Zeitzone des Standorts 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, instanziiert Android den location_time_zone_manager-Dienst beim Booten.

So geben Sie den aktuellen Status von location_time_zone_manager aus:

adb shell cmd location_time_zone_manager dump

Wenn Sie eine umfangreiche Reihe von Befehlszeilenoptionen für Tests aufrufen möchten, verwenden Sie:

adb shell cmd location_time_zone_manager help

In der Hilfeausgabe werden auch die device_config-Diensteigenschaften beschrieben, 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 device_config-Dienst 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