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

Informationsfluss bei der Zeitzonenerkennung anhand des Standorts

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 dump

Verwenden Sie Folgendes, um eine umfangreiche Liste von Befehlszeilenoptionen für Tests aufzurufen:

adb shell cmd location_time_zone_manager help

Die 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