Standort-Zeitzonenerkennung

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Location Time Zone Detection, verfügbar auf Android 12 oder höher, ist eine optionale automatische Zeitzonenerkennungsfunktion, die es Geräten ermöglicht, ihre Standort- und Zeitzonenkartendaten zu verwenden, um die Zeitzone zu bestimmen.

Die Standort-Zeitzonenerkennung ist ein alternativer Mechanismus zur Zeitzonenerkennung der Telefonie . Da für diese Funktion keine Telefonie erforderlich ist, kann diese Funktion zusätzlich zu Mobiltelefoniegeräten auf Geräten mit verschiedenen Formfaktoren unterstützt werden.

Die Standort-Zeitzonen-Erkennungsfunktion besteht aus den folgenden Komponenten in der AOSP-Plattform:

  • Zeitzonenerkennungslogik im Systemserver.
  • Eine für Benutzer zugängliche Option in den Einstellungen, die in Android 12 eingeführt wurde, um es Benutzern zu ermöglichen, zwischen den Erkennungsmechanismen für Telefonie und 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.
  • Eine LTZP-Referenzimplementierung.
  • Host-Tools zum Generieren eines Referenzdatensatzes aus OpenStreetMap-Daten , der mit der Referenzimplementierung verwendet werden kann.

Privatsphäre der Benutzer

Die Standort-Zeitzonenerkennung umfasst die folgenden Datenschutzfunktionen für Benutzer:

  • Benutzer können die Standort-Zeitzonenerkennung jederzeit deaktivieren.
  • Vom Standort abgeleitete Zeitzonenvorschläge werden nicht zwischen Benutzern auf einem Gerät geteilt.
  • Benutzer können die Erkennung des Standorts 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 Dienste der Android-Plattform weitergegeben. Stattdessen passiert Folgendes:

    • Die Zeitzonen-Detektordienste erhalten vom LTZP nur Zeitzonen-IDs, nicht den Standort des Geräts. Dies ist die minimale API, die zur Unterstützung der Standort-Zeitzonenerkennung benötigt wird.
    • Der Betrieb einzelner LTZPs bleibt den Systemintegratoren überlassen. LTZP-Implementierungen können Zeitzonenkartendaten verwenden, die vollständig auf dem Android-Gerät gespeichert sind, Server nutzen oder einen hybriden Ansatz verwenden.

Feature-Verhalten

Der Dienst time_zone_detector bestimmt anhand von Vorschlägen, die er von Erkennungsursprüngen erhält, wann die aktuelle Zeitzone des Geräts geändert werden soll.

Der Dienst location_time_zone_manager ist dafür verantwortlich, Vorschläge für den Standortursprung von time_zone_detector zu generieren. Der Dienst location_time_zone_manager wird im Systemserverprozess ausgeführt.

Der location_time_zone_manager -Dienst enthält keine Zeitzonenerkennungslogik. Es ist für die Verwaltung des Lebenszyklus von einem oder zwei Plug-Ins namens Location Time Zone Providers (LTZP) verantwortlich.

Wenn die Ortszeitzonenerkennung nicht benötigt wird, werden die LTZPs nicht gestartet. Dies 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. Einige der Gründe für dieses Verhalten sind die folgenden:

  • Im Gegensatz zu Telefonsignalen, die im Rahmen des normalen Telefonbetriebs passiv empfangen werden, kann der Standort aktiv von Android-Standortanbietern angefordert werden und kann zusätzlichen Strom verbrauchen.
  • Standorteinstellungen sind benutzerbezogen und Android muss die Einstellungen des aktuellen Benutzers respektieren.
  • Das Abrufen des Standorts des Geräts ist datenschutzrelevant.

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

Aufgrund dieser Auswahl dauert es normalerweise einige Sekunden, nachdem der aktuelle Ursprung auf den Standort umgeschaltet wurde, oder nachdem der aktuelle Benutzer umgeschaltet wurde, bevor die Zeitzone erkannt werden kann. Dies hängt auch von den Implementierungen der verwendeten LTZPs ab.

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

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

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

Informationsfluss zur Standort-Zeitzonenerkennung

Abbildung 1. Informationsfluss zur Standort-Zeitzonenerkennung.

Anforderungen an die Gerätekonfiguration

Um die Standort-Zeitzonenfunktion zu unterstützen, müssen Geräte mit LTZPs konfiguriert werden, die das Gerät verwenden kann. Geräte erfordern, dass mindestens ein LTZP aktiviert und konfiguriert ist, damit die Standort-Zeitzonenerkennung funktionsfähig und für Benutzer in den Einstellungen sichtbar ist.

Gerätekonfiguration

In diesem Abschnitt wird beschrieben, wie Gerätehersteller Geräte konfigurieren können, um die Standort-Zeitzonenerkennung zu 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-Zeitzonen-Erkennungsfunktion.

Die Funktion wird standardmäßig in AOSP unterstützt. Mindestens ein LTZP muss aktiviert oder konfiguriert sein, damit die Funktion für Benutzer verfügbar ist.

Wenn Sie den Wert auf false setzen, wird die Funktion vollständig deaktiviert, um etwas Speicherplatz zu sparen.
config_enablePrimaryLocationTimeZoneProvider false Dadurch wird das primäre LTZP aktiviert.
config_primaryLocationTimeZoneProviderPackageName Setzen Sie dies auf den Paketnamen der App, in der der primäre Anbieterdienst zu finden ist.
config_enableSecondaryLocationTimeZoneProvider false Dadurch wird das sekundäre LTZP aktiviert.
config_secondaryLocationTimeZoneProviderPackageName Setzen Sie dies auf den Paketnamen der App, in der der sekundäre Anbieterdienst zu finden ist.

Standardmäßig ist in der AOSP-Konfiguration der Schlüssel config_enableGeolocationTimeZoneDetection auf true gesetzt, wodurch die Unterstützung für die Standort-Zeitzonen-Erkennungsfunktion aktiviert wird. Die Funktion ist anfänglich für Benutzer nicht sichtbar, da AOSP standardmäßig keine LTZP-Konfiguration enthält. Mit dieser Standardkonfiguration können Gerätehersteller jedoch LTZPs zu Testzwecken über die Befehlszeile aktivieren und simulieren. (Weitere Informationen finden Sie unter Debuggen und Testen .)

Konfiguration und Bereitstellung des Standort-Zeitzonenanbieters

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 Location Time Zone Provider zu konfigurieren, müssen Gerätehersteller einen App-Prozess auswählen, um den LTZP-Dienst zu hosten. Einen dedizierten Prozess für ein LTZP zu haben, ist ein hoher Overhead; Idealerweise ist der gewählte App-Prozess einer, der ständig ausgeführt wird, wie z. B. der Systemserver.

Berücksichtigen Sie bei Geräten mit modularen Systemkomponenten (Modulen) die Wechselwirkung zwischen den vom LTZP verwendeten Geodaten und den im Zeitzonendatenmodul ( com.android.tzdata ) enthaltenen Zeitzonenregeln ( com.android.tzdata ). Updates für das eine ohne Updates für das andere verursachen wahrscheinlich Probleme mit der Versionsverzerrung. Weitere Informationen finden Sie unter Überlegungen zur Featureeinführung .

AOSP-Referenz Standort Zeitzonenanbieter

AOSP enthält eine Referenz-Location-Time-Zone-Provider-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 einem Satz 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 LICENSE-Dateien.

Debuggen und Testen

Der folgende Abschnitt beschreibt Shell-Befehle zum Debuggen und Testen der Standort-Zeitzonen-Erkennungsfunktion.

Interaktion mit dem location_time_zone_manager-Dienst

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

Verwenden Sie Folgendes, um den aktuellen Status des location_time_zone_manager auszugeben:

adb shell cmd location_time_zone_manager dump

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

adb shell cmd location_time_zone_manager help

Die Hilfeausgabe beschreibt auch die Eigenschaften des device_config , die verwendet werden können, um das Verhalten des time_zone_detector zum Testen 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 ihre eigene Debugging- oder Testunterstützung bereitstellen. Beispielsweise können Sie den folgenden Befehl verwenden, um die AOSP-Referenz LTZP zu debuggen, wenn sie im Systemserverprozess registriert ist.

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