Standort-Zeitzonenerkennung

Die Standort-Zeitzonenerkennung, verfügbar auf Android 12 oder höher, ist eine optionale Funktion zur automatischen Zeitzonenerkennung, mit der Geräte ihre Standort- und Zeitzonenkartendaten verwenden können, um die Zeitzone zu bestimmen.

Die Standortzeitzonenerkennung ist ein alternativer Mechanismus zur Telefonzeitzonenerkennung . Da für diese Funktion keine Telefonie erforderlich ist, kann sie neben Mobiltelefongeräten auch auf Geräten unterschiedlicher Formfaktoren unterstützt werden.

Die Standortzeitzonenerkennungsfunktion besteht aus den folgenden Komponenten in der AOSP-Plattform:

  • Logik zur Zeitzonenerkennung im Systemserver.
  • Eine für den Benutzer zugängliche Option in den Einstellungen, die in Android 12 eingeführt wurde und es Benutzern ermöglicht, zwischen den Mechanismen zur Erkennung der Telefonie und der Standortzeitzone zu wählen.

  • Ein Plug-In-System für Komponenten, die die Standorterkennung und Zeitzonenzuordnung durchführen. Ein 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 stellt System-APIs bereit, die zur Implementierung eines LTZP verwendet werden müssen.

  • Eine Referenz-LTZP-Implementierung.

  • Host-Tool zum Generieren eines Referenzdatensatzes aus OpenStreetMap-Daten , der mit der Referenzimplementierung verwendet werden kann.

Privatsphäre der Benutzer

Die Erkennung der Zeitzone des Standorts umfasst die folgenden Funktionen zum Schutz der Privatsphäre des Benutzers:

  • Wenn es einen Schalter zum Auswählen des Standortalgorithmus gibt, können Benutzer den Standortalgorithmus jederzeit deaktivieren.

  • Vom Standort abgeleitete Zeitzonenvorschläge werden nicht zwischen Benutzern auf einem Gerät geteilt.

  • Benutzer können die Standorterkennung für die Zeitzonenerkennung explizit über den Bildschirm „Datums- und Uhrzeiteinstellungen “ steuern. Benutzer müssen die Berechtigung nicht explizit über einen Berechtigungsdialog erteilen.

  • Informationen zum Gerätestandort werden nicht an die Android-Plattformdienste weitergegeben. Stattdessen passiert Folgendes:

    • Den Zeitzonenerkennungsdiensten werden Zeitzonen-IDs nur vom LTZP gesendet, nicht vom Standort des Geräts. Dies ist die minimale API, die zur Unterstützung der Standortzeitzonenerkennung erforderlich ist.
    • Der Betrieb einzelner LTZPs bleibt den Systemintegratoren überlassen. LTZP-Implementierungen können Zeitzonenkartendaten nutzen, die vollständig auf dem Android-Gerät gespeichert sind, Server nutzen oder einen Hybridansatz verwenden.

Funktionsverhalten

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 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 Dienst location_time_zone_manager enthält keine Logik zur Zeitzonenerkennung. Es ist für die Verwaltung des Lebenszyklus von einem oder zwei Plug-Ins namens Location Time Zone Providers (LTZP) verantwortlich.

Wenn die Standortzeitzonenerkennung nicht erforderlich ist, werden die LTZPs nicht gestartet. Das bedeutet, dass das Standort-Zeitzonen-Erkennungssystem LTZPs nicht auffordert, den Standort des Geräts zu verfolgen, es sei denn, sie werden ausdrücklich dazu aufgefordert. Zu den Gründen für dieses Verhalten gehören unter anderem die folgenden:

  • Im Gegensatz zu Telefonsignalen, die im Rahmen des normalen Telefonbetriebs passiv empfangen werden, kann der Standort aktiv von Android-Standortanbietern abgefragt werden und könnte zusätzlichen Strom verbrauchen.
  • Standorteinstellungen sind benutzerbezogen und Android muss die Einstellungen des aktuellen Benutzers berücksichtigen.
  • Das Ermitteln des Standorts des Geräts ist datenschutzrelevant.

Außerdem macht der Dienst location_time_zone_manager einen unsicheren Vorschlag (sofern erforderlich), wenn sich der aktuelle Benutzer ändert, um zu vermeiden, dass Standortinformationen zwischen Benutzern ausgetauscht werden.

Aufgrund dieser Auswahl dauert es in der Regel einige Sekunden nach der Umstellung des aktuellen Algorithmus auf den Standort oder nach der Umstellung des aktuellen Benutzers, bis die Zeitzone erkannt werden kann. Dies hängt auch von den Implementierungen der verwendeten LTZPs ab.

Die Implementierung der AOSP-Standortzeitzonenerkennung ermöglicht bis zu zwei LTZPs, einen primären und einen sekundären LTZP, wie hier definiert:

Primäres LTZP
Wird immer dann ausgeführt, wenn der Benutzer die Ausführung der Standort-Zeitzonenerkennungsfunktion zugelassen hat.
Sekundäres LTZP
Wird ausgeführt, wenn der primäre LTZP meldet, dass die Zeitzone unsicher ist, einen dauerhaften Fehler meldet oder während der Initialisierung eine Zeitüberschreitung auftritt. Stoppt, wenn der primäre LTZP einen bestimmten Vorschlag übermittelt.

Wie in Abbildung 1 dargestellt, erhalten die time_zone_detector Dienste Zeitzonenvorschläge vom Telefonie- oder Standortalgorithmus. Der Standortalgorithmus erhält Vorschläge vom primären oder sekundären LTZP.

Informationsfluss zur Standortzeitzonenerkennung

Abbildung 1. Informationsfluss zur Standortzeitzonenerkennung.

Anforderungen an die Gerätekonfiguration

Um die Standortzeitzonenfunktion zu unterstützen, müssen Geräte mit LTZPs konfiguriert sein, die das Gerät verwenden kann. Für Geräte muss mindestens ein LTZP aktiviert und konfiguriert sein, damit die Standortzeitzonenerkennung funktioniert und für Benutzer in den Einstellungen sichtbar ist.

Gerätekonfiguration

In diesem Abschnitt wird beschrieben, wie Gerätehersteller Geräte so konfigurieren können, dass sie die Standort-Zeitzonenerkennung unterstützen.

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 die Hauptsteuerung für die Standort-Zeitzonenerkennungsfunktion.

Die Funktion wird standardmäßig in AOSP unterstützt. Damit die Funktion den Benutzern zur Verfügung steht, muss mindestens ein LTZP aktiviert oder konfiguriert sein.

Wenn Sie den Wert auf „false“ setzen, wird die Funktion vollständig deaktiviert, um wenig Speicherplatz zu sparen.
config_enablePrimaryLocationTimeZoneProvider false Dadurch wird das 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 das 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 in der AOSP-Konfiguration der Schlüssel config_enableGeolocationTimeZoneDetection auf true gesetzt, wodurch die Unterstützung für die Standortzeitzonenerkennungsfunktion aktiviert wird. Die Funktion ist für Benutzer zunächst nicht sichtbar, da AOSP standardmäßig keine LTZP-Konfiguration enthält. Mithilfe dieser Standardkonfiguration können Gerätehersteller jedoch LTZPs zu Testzwecken über die Befehlszeile aktivieren und simulieren. (Weitere Informationen finden Sie unter Debuggen und Testen .)

LTZP-Status-APIs

In Android 14 unterstützen die LTZP-APIs die LTZP-Berichtsstatusinformationen. Dies ermöglicht es dem LTZP, Probleme zu melden, die die Plattform möglicherweise nicht selbst erkennen kann, da die Zeitzonenerkennungskomponenten 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 Geräteumgebung beeinträchtigt wurde, ist nützlich, wenn der Telefonie-Fallback-Modus unterstützt wird. Wenn beispielsweise ein LTZP eines Drittanbieters, das für die Funktion seiner Standorterkennung auf benutzerdefinierte Einstellungen oder Berechtigungen angewiesen ist, in einem herabgesetzten Modus ausgeführt wird oder durch die aktuellen Geräteeinstellungen deaktiviert ist, kann es diese Statusinformationen an interne Plattformkomponenten wie die Einstellungen-App melden über die reportSuggestion -Methode. Die Einstellungen-App kann Benutzer dann über anpassbare Zeichenfolgen 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 .

Konfiguration und Bereitstellung des Standort-Zeitzonen-Anbieters

Lesen Sie beim Konfigurieren eines LTZP die Anweisungen im Quellcode für frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java . Die Javadoc-Kommentare enthalten Details zum Dienst, den erforderlichen Berechtigungen und anderen Konfigurationen.

Um einen Standort-Zeitzonen-Anbieter zu konfigurieren, müssen Gerätehersteller einen App-Prozess zum Hosten des LTZP-Dienstes auswählen. Ein dedizierter Prozess für ein LTZP ist mit einem hohen Aufwand verbunden. Im Idealfall ist der gewählte App-Prozess ein Prozess, der jederzeit ausgeführt wird, z. B. der Systemserver.

Berücksichtigen Sie bei Geräten mit modularen Systemkomponenten (Modulen) die Interaktion zwischen den vom LTZP verwendeten Geodaten und den im Zeitzonendatenmodul ( com.android.tzdata ) enthaltenen Zeitzonenregeln (tzdb). Aktualisierungen auf einer Seite ohne Aktualisierungen auf der anderen Seite verursachen wahrscheinlich Probleme mit der Versionsabweichung. Weitere Informationen finden Sie unter Überlegungen zur Funktionseinführung .

AOSP-Referenz LTZP

AOSP enthält eine Referenz-LTZP-Implementierung unter packages/modules/GeoTZ . Diese Referenzimplementierung verwendet AOSP-APIs, um den Standort des Geräts zu bestimmen, und verwendet eine Datendatei auf dem Gerät, um den Standort einer Reihe von Zeitzonen-IDs zuzuordnen.

Ein aus anderen Open-Source-Projekten abgeleiteter Referenzdatensatz ist im Quellcode enthalten. Weitere Einzelheiten finden Sie in README.md und den verschiedenen LIZENZdateien.

Debuggen und testen

Im folgenden Abschnitt werden Shell-Befehle zum Debuggen und Testen der Standortzeitzonenerkennungsfunktion beschrieben.

Interagieren Sie mit dem Dienst „location_time_zone_manager“.

Wenn der Standortalgorithmus auf einem Gerät mit Android 12 oder höher unterstützt wird, instanziiert Android den Dienst location_time_zone_manager beim Booten.

Um den aktuellen Status des location_time_zone_manager auszugeben, verwenden Sie:

adb shell cmd location_time_zone_manager dump

Um einen umfangreichen Satz an Befehlszeilenoptionen zur Unterstützung beim Testen anzuzeigen, verwenden Sie:

adb shell cmd location_time_zone_manager help

Die Hilfeausgabe beschreibt auch die Eigenschaften des Diensts device_config , die verwendet werden können, um das Verhalten des time_zone_detector für Tests oder in der Produktion zu beeinflussen. Weitere Informationen finden Sie unter Konfigurieren eines Geräts mit dem Dienst „device_config“ .

LTZP-Implementierungen können auch eigene Debugging- oder Testunterstützung bereitstellen. Sie können beispielsweise den folgenden Befehl verwenden, um den AOSP-Referenz-LTZP zu debuggen, wenn er im Systemserverprozess registriert ist.

adb shell dumpsys activity service android/com.android.timezone.location.provider.OfflineLocationTimeZoneProviderService