Zeitzone anhand des Standorts bestimmen

Zeitzonenerkennung für Standorte, verfügbar unter Android 12 oder höher ist eine optionale automatische Zeitzonenerkennung, Geräte verwenden, um anhand von Standort- und Zeitzonenkartendaten die Zeitzone zu bestimmen.

Die Zeitzonenerkennung durch den Standort ist eine alternative Methode zur Telefoniezeitzone -Erkennung. Da diese erfordert keine Telefonie und kann auf Geräten mit verschiedene Formfaktoren umfassen.

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

  • Logik zur Zeitzonenerkennung auf dem Systemserver.
  • Diese Option wurde in den Einstellungen eingeführt und Android 12, damit Nutzer zwischen den Mechanismen zur Erkennung von Telefonie- und Zeitzonenstandorten.

  • Ein Plug-in-System für Komponenten, die die Standorterkennung und Zeitzonenzuordnung. Ein Plug-in wird als Location Time Zone Provider bezeichnet. (LTZP) und bis zu zwei auf einem Gerät vorhanden. Die Plattform stellt System-APIs bereit, die zum Implementieren eines LTZP verwendet werden müssen.

  • Eine LTZP-Referenzimplementierung.

  • Host-Tools zum Generieren eines Referenz-Datasets aus OpenStreetMap-Daten die mit der Referenzimplementierung verwendet werden können.

Datenschutz

Die Zeitzonenerkennung umfasst die folgenden Datenschutzfunktionen für Nutzer:

  • Wenn es eine Ein/Aus-Schaltfläche gibt, über die der Standortalgorithmus ausgewählt werden kann, können Nutzer jederzeit an den Standortalgorithmus senden.

  • Vom Standort abgeleitete Zeitzonenvorschläge werden nicht unter Nutzern in einer .

  • Nutzer können die Standorterkennung für die Zeitzonenerkennung steuern Datum/Uhrzeit explizit aktiviert. Nutzer haben keine explizit über ein Berechtigungsdialogfeld zu erteilen.

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

    • Die Dienste zur Erkennung von Zeitzonen erhalten nur Zeitzonen-IDs und nicht vom Standort des Geräts. Dies ist die mindestens erforderliche API um die Zeitzonenerkennung des Standorts zu unterstützen.
    • Der Betrieb einzelner LTZPs bleibt den Systemintegratoren überlassen. zu entscheiden. Bei LTZP-Implementierungen können vollständig auf dem Android-Gerät erfolgen, Server nutzen oder ein hybrides Ansatz.

Verhalten der Funktion

Der Dienst time_zone_detector bestimmt, wann die aktuelle Zeitzone basierend auf Vorschlägen, die sie von Erkennungsalgorithmen erhält.

Der Dienst location_time_zone_manager generiert die Vorschläge für den Standortalgorithmus von time_zone_detector. Die Der Dienst location_time_zone_manager wird im Systemserverprozess ausgeführt.

Der Dienst location_time_zone_manager enthält keine Zeitzonenerkennung Logik. Es ist verantwortlich für die Verwaltung des Lebenszyklus von einem oder zwei Plug-ins, Location Time Zone Providers (LTZPs).

Wenn die Zeitzonenerkennung des Standorts nicht benötigt wird, werden die LTZPs nicht gestartet. Dieses bedeutet, dass das System zur Zeitzonenerkennung an den Standort keine LTZPs auffordert, Standort des Geräts, es sei denn, dies ist ausdrücklich erforderlich. Einige der Gründe für dieses Verhalten sind unter anderem:

  • Im Gegensatz zu Telefoniesignalen, die passiv im Rahmen des normalen Telefonbetriebs kann der Standort aktiv von Android-Standortanbieter und könnten zusätzliche Energie verbrauchen.
  • Die Standorteinstellungen sind auf Nutzerebene festgelegt und Android muss die aktuellen die Einstellungen des Nutzers ändern.
  • Die Ermittlung des Gerätestandorts ist datenschutzfreundlich.

Außerdem macht der location_time_zone_manager-Dienst einen unsicheren Vorschlag (wenn eine erforderlich), wenn der aktuelle Nutzer wechselt, um die Standortfreigabe zu verhindern zwischen den Nutzenden.

Aufgrund dieser Auswahl dauert es nach dem Wechsel der oder nach dem Umschalten des aktuellen Nutzers vor dem Zeitzone erkannt werden kann. Dies hängt auch von den Implementierungen der LTZPs ab. verwendet werden.

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

Primäres LTZP
Wird immer ausgeführt, wenn der Nutzer der Zeitzonenerkennung des Standorts zugestimmt hat ausgeführt werden soll.
Sekundär LTZP
Wird ausgeführt, wenn vom primären LTZP eine unsichere Zeitzone gemeldet wird, meldet ein dauerhaften Ausfall oder eine Zeitüberschreitung während der Initialisierung verursacht. Wird beendet, wenn die primäre LTZP sendet einen bestimmten Vorschlag.

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

Informationsfluss zur Zeitzonenerkennung des Standorts

Abbildung 1: Informationsfluss zur Zeitzonenerkennung des Standorts.

Anforderungen an die Gerätekonfiguration

Zur Unterstützung der Zeitzonenfunktion des Standorts müssen Geräte mit LTZPs konfiguriert sein die das Gerät nutzen kann. Auf Geräten muss mindestens ein LTZP aktiviert sein und konfiguriert, damit die Zeitzonenerkennung funktioniert und für Nutzer sichtbar ist Nutzer in den Einstellungen.

Gerätekonfiguration

In diesem Abschnitt wird beschrieben, wie Gerätehersteller Geräte für die Unterstützung Standort-Zeitzonenerkennung.

Die AOSP-Basiskonfiguration befindet sich frameworks/base/core/res/res/values/config.xml:

Konfigurationsschlüssel AOSP-Wert Beschreibung
config_enableGeolocationTimeZoneDetection true Dies ist das Hauptsteuerelement für die Zeitzonenerkennung des Standorts.

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

Wenn Sie den Wert auf „false“ setzen, wird die Funktion für kleine Speicher vollständig deaktiviert. wird gespeichert.
config_enablePrimaryLocationTimeZoneProvider false Dadurch wird der primäre LTZP aktiviert.
config_primaryLocationTimeZoneProviderPackageName Geben Sie hier den Paketnamen der App an, in der der Dienst des Primäranbieters verwendet wird. gefunden werden können.
config_enableSecondaryLocationTimeZoneProvider false Dadurch wird der sekundäre LTZP aktiviert.
config_secondaryLocationTimeZoneProviderPackageName Geben Sie hier den Paketnamen der App an, von der der sekundäre Anbieter stammt. Dienst gefunden werden kann.

Standardmäßig enthält die AOSP-Konfiguration die Der Schlüssel „config_enableGeolocationTimeZoneDetection“ wurde auf true festgelegt, wodurch die Unterstützung aktiviert wird für die Zeitzonenerkennung des Standorts. Das Element ist nicht sichtbar für da AOSP standardmäßig keine LTZP-Konfiguration umfasst. Mit dieser Standardkonfiguration können Gerätehersteller jedoch LTZPs zu Testzwecken über die Befehlszeile simulieren. (Weitere Informationen finden Sie unter Fehlerbehebung und Tests.

LTZP-Status-APIs

In Android 14 unterstützen die LTZP APIs das LTZP-Protokoll Statusinformationen zur Berichterstellung. Dadurch kann das LTZP Probleme auftreten, die die Plattform selbst möglicherweise nicht erkennen kann, da die Plattform Komponenten zur Zeitzonenerkennung sind nicht direkt an Ort oder Zeit beteiligt Zonenerkennung im Standortalgorithmus.

Die Möglichkeit, zu melden, dass das LTZP-Verhalten durch das ist nützlich, wenn Telefonie-Fallback-Modus wird unterstützt. Wenn z. B. ein Drittanbieter-LTZP-Link benutzerdefinierte Einstellungen verwendet, oor Berechtigungen für die Standorterkennung in einem eingeschränkten Modus ausgeführt wird oder aufgrund der aktuellen Geräteeinstellungen deaktiviert ist, kann dieser Status Informationen an interne Plattformkomponenten wie die App „Einstellungen“ über das reportSuggestion . Die Einstellungen-App kann Nutzer dann über anpassbare Zeichenfolgen oder Personalisierungen, die Einstellungen für den Standort ändern müssen damit der Algorithmus gut oder überhaupt funktioniert.

Weitere Informationen zu den Statusangaben, die vom LTZP gemeldet werden können, finden Sie unter TimeZoneProviderStatus

LTZP-Konfiguration und -Bereitstellung

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, zu den erforderlichen Berechtigungen und andere Konfiguration.

Zum Konfigurieren eines LTZP müssen Gerätehersteller ein App-Prozess zum Hosten des LTZP-Dienstes. Einen speziellen Prozess für ein LTZP-Projekt haben ist ein hoher Mehraufwand. Idealerweise wird der ausgewählte App-Prozess z. B. vom Systemserver.

Auf Geräten mit modularen Systemkomponenten (Module), betrachten Sie die Interaktion zwischen den vom LTZP verwendeten geografischen Daten und die Zeitzonenregeln (tzdb), die im Modul „Zeitzonendaten“ (com.android.tzdata). Es ist wahrscheinlich, dass Updates für die eine ohne Updates für die andere durchgeführt werden. zu Versionsabweichungen führen. Weitere Informationen finden Sie unter Überlegungen zur Übernahme von Funktionen

AOSP-Referenz LTZP

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

Ein Referenz-Dataset, das aus anderen Open-Source-Projekten abgeleitet wurde, ist enthalten in aus dem Quellcode. Weitere Informationen finden Sie unter README.md und die verschiedenen LIZENZ-Dateien.

Fehler beheben und testen

Im folgenden Abschnitt werden Shell-Befehle zum Debugging und Testen der Funktion zur Erkennung der Zeitzone des Standorts.

Mit dem Dienst „location_time_zone_manager“ interagieren

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

Verwenden Sie folgenden Befehl, um den aktuellen Status von location_time_zone_manager auszugeben:

adb shell cmd location_time_zone_manager dump

Wenn Sie eine umfassende Auswahl an Befehlszeilenoptionen zur Unterstützung beim Testen sehen möchten, verwenden Sie:

adb shell cmd location_time_zone_manager help

In der Hilfeausgabe werden auch die Attribute des device_config-Dienstes beschrieben, die Wird verwendet, um das Verhalten von time_zone_detector für Tests oder in für die Produktion. Weitere Informationen finden Sie unter Gerät mit dem Dienst „device_config“ konfigurieren

LTZP-Implementierungen können auch eigene Fehlerbehebungs- oder Testunterstützung bieten. Sie können beispielsweise den folgenden Befehl verwenden, um Fehler in der AOSP-Referenz LTZP zu beheben wenn er im Systemserverprozess registriert wird.

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