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