Auf dieser Seite wird beschrieben, wie die Zeit- und Zeitzonenerkennung auf Android funktioniert. Dazu gehören die automatische Erkennung von Uhrzeit und Zeitzonen durch Android, Konfigurationsoptionen für Gerätehersteller und Testinformationen.
Übersicht über Uhrzeit und Zeitzonen
Um die Ortszeit eines Benutzers für die Anzeige an Orten wie der Statusleiste zu bestimmen, verfolgt Android zwei verwandte, aber unabhängige Zustände:
- Die aktuelle Zeit der Unix-Epoche
- Die aktuelle Zeitzone
Die aktuelle Unix-Epochenzeit und die aktuelle Zeitzone sind geräteweite Zustände, das heißt, sie werden von allen Benutzern eines Geräts gemeinsam genutzt.
Die aktuelle Unix-Epochenzeit ist kein fester Wert. Es wird automatisch aktualisiert, um den Lauf der Zeit widerzuspiegeln. Neben dem normalen Zeitablauf wird die aktuelle Unix-Epochenzeit eines Geräts angepasst, wenn sich herausstellt, dass sie falsch ist, beispielsweise nachdem ein Gerät die Stromversorgung verloren hat.
Die aktuelle Zeitzone bestimmt die Anpassung, die vorgenommen werden muss, um die aktuelle Unix-Epochenzeit in eine lokale Zeit umzuwandeln. Beispielsweise subtrahiert das Gerät im Sommer in Los Angeles 7 Stunden von der aktuellen Unix-Epochenzeit und im Winter 8 Stunden.
Um diese lokalen Zeitberechnungen zu unterstützen, verfügen alle Android-Geräte über eine Datenbank aller globalen Zeitzonenregeln . Weitere Informationen zu Zeitzonenregeln finden Sie unter Zeitzonenregeln .
Wenn ein Benutzer an einen neuen Standort reist, der eine andere Zeitzone verwendet, muss die aktuelle Unix-Epochenzeit nicht angepasst werden, aber der Benutzer möchte normalerweise die Ortszeit und nicht die Zeit an seinem vorherigen Standort sehen. Durch das Ändern der aktuellen Zeitzone wird sichergestellt, dass der richtige Offset auf die aktuelle Unix-Epochenzeit angewendet wird, um die richtige Ortszeit für den neuen Standort anzuzeigen.
Mit AOSP können Benutzer mithilfe der folgenden Mechanismen unabhängig steuern, ob die Uhrzeit und die Zeitzone automatisch für sie eingestellt werden.
- Automatische Zeiterkennung: Stellt sicher, dass das Gerät über die korrekte aktuelle Unix-Epochenzeit verfügt.
- Automatische Zeitzonenerkennung: Stellt sicher, dass das Gerät über die richtige aktuelle Zeitzone verfügt.
Automatische Zeiterkennung
Dieser Abschnitt bietet einen Überblick über den time_detector
Dienst, der die automatische Zeiterkennung, Benutzerkontrollen, Konfigurationsoptionen und Testdetails verwaltet.
Der time_detector-Dienst
Der Dienst time_detector
, der auf Geräten mit Android 10 oder höher vorhanden ist, verwaltet die automatische Zeiterkennung. Es passt die aktuelle Unix-Epochenzeit des Geräts nach Bedarf an, wenn die automatische Zeiterkennung aktiviert ist.
Der Dienst time_detector
befindet sich immer in einem von zwei Zuständen: „unsicher “ oder „sicher“ . Der sichere oder unsichere Zustand des Dienstes wird durch Zeitvorschläge bestimmt, die er aus verschiedenen Quellen erhält.
Wenn der time_detector
Dienst sicher ist, also einen Vorschlag mit Unix-Epochenzeitinformationen erhalten hat, überschreibt er die aktuelle Unix-Epochenzeit, wenn der Zeitvorschlag von der aktuellen Unix-Epochenzeit abweicht.
Wenn time_detector
unsicher ist, wird die aktuelle Zeit nicht überschrieben. Der unsichere Zustand bedeutet normalerweise, dass der Dienst time_detector
keine Zeitvorschläge erhalten hat. Der time_detector
Dienst wird auch unsicher, wenn die empfangenen Vorschläge als zu alt für die Verwendung angesehen werden. Das Alter der Vorschläge wird berücksichtigt, da Anpassungen mit alten Unix-Epochenzeitvorschlägen auf der abgelaufenen Echtzeituhr auf dem Gerät basieren, von der angenommen wird, dass sie über lange Zeiträume ungenau ist.
Um die aktuelle Unix-Epochenzeit automatisch zu ermitteln, verfügt ein Gerät über verschiedene Quellen, die es nutzen kann. Diese werden in diesem Dokument als Ursprünge bezeichnet. Der time_detector
Dienst behandelt Sequenzen von Vorschlägen basierend auf ihrer Herkunft als unterschiedlich.
Der time_detector
Dienst ist zustandsbehaftet, was bedeutet, dass er den neuesten Vorschlag jedes Ursprungs aufzeichnet. Neue Vorschläge werden an time_detector
gemacht, wenn für einen Ursprung neuere Unix-Epochenzeitinformationen verfügbar sind. Der Dienst time_detector
wertet neue und vorhandene Vorschläge neu aus und aktualisiert den Gerätestatus, wenn Vorschläge eingehen.
Obwohl die UTC-Zeit international vereinbart ist, gibt es verschiedene Gründe, warum die Ermittlung der aktuellen Unix-Epochenzeit für ein Android-Gerät nicht immer einfach ist:
- Die Unix-Epochenzeit ist ein etwas anderes Zeitmesssystem als die UTC-Zeit. Die Konvertierung zwischen beiden erfordert Kenntnisse darüber, wann Schaltsekunden auftreten und wie sie von den Ursprüngen gehandhabt werden.
- Origins ist möglicherweise nur zu bestimmten Zeiten oder unter bestimmten Umständen verfügbar. Wenn der Ursprung beispielsweise eine Netzwerkkonnektivität erfordert, ist diese möglicherweise nur verfügbar, während das Gerät mit dem Internet verbunden ist.
- Die Ursprünge sind möglicherweise ungenau oder ungenau oder weisen Fehler auf. Wenn beispielsweise ein Mobilfunkmast die „Weltzeit“ nicht korrekt misst, liefert der Telefonursprung möglicherweise ungenaue Zeitvorschläge.
- Beim Abrufen der Unix-Epochenzeit können Ungenauigkeiten auftreten. Beispielsweise kann eine Netzwerkverzögerung, Pufferung oder Prozessplanung dazu führen, dass die Unix-Epochenzeit ungenau ist.
- Die Referenzuhr, die zum Anpassen eines Vorschlags an die seit dem Empfang des Vorschlags verstrichene Zeit verwendet wird, ist möglicherweise ungenau.
Es gibt zwei Hauptzeiterkennungsursprünge, die standardmäßig für die Verwendung in AOSP konfiguriert sind:
- Telefonie: Verwendet NITZ-Telefonsignale (Network Identity and Time Zone).
- Netzwerk: Verwendet NTP-Zeitserver (Network Time Protocol).
Sowohl Telefonie als auch Netzwerkursprünge erfordern eine Verbindung zu externen Netzwerken, die nicht immer verfügbar sind.
Ab Android 12 unterstützt Android auch die folgenden Ursprünge, die nicht standardmäßig für die Verwendung konfiguriert sind:
- GNSS : Verwendet den GPS-Standortanbieter, um eine Zeit von einer GNSS-Quelle zu erhalten.
- Extern : Allgemeiner Ursprung, der es Geräteherstellern ermöglicht, ihre eigene Unix-Epochenzeitquelle zu integrieren.
Zeit Einstellungen
Benutzer können die automatische Zeiterkennung unter System > Datum und Uhrzeit in der AOSP-Einstellungen-App aktivieren.
Abbildung 1. Automatische Zeiterkennung in den Einstellungen.
In der folgenden Tabelle werden die Benutzersteuerelemente für die Zeiterkennung in der AOSP-Einstellungen-App beschrieben.
*Auf Android 11 und niedriger trägt diese Einstellung die Bezeichnung „ Vom Netzwerk bereitgestellte Zeit verwenden“. | |||
Speicherort der AOSP-Einstellungen | Name der AOSP-Einstellungen | Umfang | Verhalten |
---|---|---|---|
System > Datum und Uhrzeit | Uhrzeit automatisch einstellen* | Alle Nutzer | Ein Umschalter. Wenn diese Option aktiviert ist , ist das Gerät für die Erkennung der aktuellen Unix-Epochenzeit verantwortlich. Wenn diese Option deaktiviert ist , stehen Benutzern Steuerelemente zur Verfügung, mit denen sie die Uhrzeit des Geräts manuell einstellen können. |
Wenn der Benutzer die Zeit manuell eingibt, gibt er seine Ortszeit ein, nicht die Zeit der Unix-Epoche. Die aktuelle Unix-Epochenzeit wird berechnet, indem die aktuelle Zeitzone verwendet wird, um eine Unix-Epochenzeit abzuleiten.
Aufbau
Gerätehersteller können den time_detector
Dienst auf verschiedene Weise konfigurieren, z. B. welche Ursprünge verwendet werden sollen und wie die Signale von ihnen priorisiert werden.
Priorisierung des Ursprungs
Ab Android 12 können Gerätehersteller die Konfigurationsdatei core/res/res/values/config.xml
ändern, um anzugeben, welche Zeitursprünge in die automatische Zeiterkennung einbezogen werden sollen und mit welcher Priorität time_detector
diese Ursprünge berücksichtigt.
Bei Geräten mit Android 11 oder niedriger ist die Ursprungspriorität fest auf ["telephony", "network"]
codiert, was bedeutet, dass Telefonvorschläge Vorrang vor Netzwerkvorschlägen haben.
Die Standard-AOSP-Konfiguration lautet wie folgt:
<!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list
take precedence over lower ones.
See com.android.server.timedetector.TimeDetectorStrategy for available sources. -->
<string-array name="config_autoTimeSourcesPriority">
<item>network</item>
<item>telephony</item>
</string-array>
In Android 12 sind Netzwerk- und Telefonievorschläge standardmäßig als zu verwendende Ursprünge konfiguriert. Vorschläge zur Netzwerkzeit haben Vorrang vor Vorschlägen zur Telefoniezeit. Gerätehersteller können die Reihenfolge der Ursprünge ändern, um zum Verhalten in Android 11 oder niedriger zurückzukehren, wo der Telefonie eine höhere Priorität eingeräumt wird.
Wenn der gültige Vorschlag mit der höchsten Priorität auf wenige Sekunden genau mit der aktuellen Systemuhrzeit des Geräts übereinstimmt, wird die Gerätezeit standardmäßig nicht geändert. Dadurch soll vermieden werden, dass Arbeit für installierte Apps entsteht, die auf die Absicht ACTION_TIME_CHANGED
hören.
Die zulässigen Ursprungswerte sind:
Niedrigere Zeitgrenze
Android 12 führt eine niedrigere Zeitgrenze ein, die zur Validierung von Zeitvorschlägen verwendet wird, die vom time_detector
-Dienst empfangen werden. Der untere Zeitgrenzwert wird anhand des Build-Zeitstempels festgelegt. Dies basiert auf dem Prinzip, dass kein gültiger Zeitpunkt vor der Erstellung des Systemabbilds des Geräts liegen kann. Wenn ein Zeitvorschlag vor der unteren Zeitgrenze liegt, verwirft der time_detector
Dienst den Vorschlag, da er nicht gültig sein kann, wenn der Build-Zeitstempel korrekt ist.
Bei Geräten mit Android 11 oder niedriger validiert der time_detector
Dienst eingehende Unix-Epochenzeitvorschläge nicht.
Android erzwingt keine obere Zeitgrenze.
Zeit zum Debuggen und Testen
Dieser Abschnitt enthält Informationen zum Debuggen und Testen des Verhaltens des time_detector
Dienstes und anderer Komponenten, die von allen Ursprüngen gemeinsam genutzt werden.
Interaktion mit dem time_detector-Dienst
Um die Konfiguration und den Status des time_detector
time_detector
anzuzeigen, verwenden Sie:
adb shell cmd time_detector dump
Um zusätzliche Befehle zum Debuggen und Testen der Zeitzonenerkennung anzuzeigen, verwenden Sie:
adb shell cmd time_detector help
Die Hilfeausgabe beschreibt auch die Eigenschaften des Diensts „device_config“, die verwendet werden können, um das Verhalten von time_detector
zum Testen oder in der Produktion zu beeinflussen. Einzelheiten finden Sie unter Konfigurieren eines Geräts mit dem Dienst „device_config“ .
Um die automatische Zeiterkennung zu validieren, müssen Tester wissen, welche Ursprünge der time_detector
Dienst verwendet. Das Folgende ist ein Beispiel für die Ausgabe des Befehls adb shell cmd time_zone_detector dump
, wobei die Informationen zum aktuellen Ursprung und Dienststatus fett gedruckt sind:
$ adb shell cmd time_detector dump
TimeDetectorStrategy:
mLastAutoSystemClockTimeSet=null
mEnvironment.isAutoTimeDetectionEnabled()=true
mEnvironment.elapsedRealtimeMillis()=23717241
mEnvironment.systemClockMillis()=1626707861336
mEnvironment.systemClockUpdateThresholdMillis()=2000
mEnvironment.autoTimeLowerBound()=2021-07-19T07:48:05Z(1626680885000)
mEnvironment.autoOriginPriorities()=[network,telephony]
Time change log:
...
Telephony suggestion history:
...
Network suggestion history:
...
Gnss suggestion history:
...
External suggestion history:
...
Die Informationen können wie folgt interpretiert werden:
Taste | Wert |
---|---|
mEnvironment.isAutoTimeDetectionEnabled() | Ob die automatische Zeiterkennung aktiviert ist. |
mEnvironment.autoTimeLowerBound() | Die aktuelle Untergrenze, die zur Validierung von Zeitvorschlägen verwendet wird. |
mEnvironment.autoOriginPriorities() | Die Herkunft der Nutzung und die Prioritätsreihenfolge. |
Das Zeitänderungsprotokoll zeigt Fälle an, in denen der time_detector
Dienst die aktuelle Unix-Epochenzeit des Geräts geändert hat.
Die Informationen zum Vorschlagsverlauf geben an, welche Vorschläge von jedem Ursprung gemacht wurden.
Automatische Zeitzonenerkennung
Dieser Abschnitt bietet einen Überblick über den Dienst time_zone_detector
, der die automatische Zeitzonenerkennung, Benutzerkontrollen in Einstellungen, Telefonie- und Standortzeitzonenerkennung sowie Testdetails verwaltet.
Der time_zone_detector-Dienst
Der Dienst time_zone_detector
, der auf Geräten mit Android 11 oder höher vorhanden ist, verwaltet die automatische Zeitzonenerkennung. Es passt die aktuelle Zeitzone des Geräts nach Bedarf an, wenn die automatische Zeitzonenerkennung aktiviert ist.
Wenn die automatische Zeitzonenerkennung aktiviert ist, kann time_zone_detector
einen von zwei Zuständen haben: ungewiss und sicher .
Wenn sich der Dienst time_zone_detector
in einem bestimmten Zustand befindet, bedeutet dies, dass der Dienst time_zone_detector
starke Zeitzoneninformationen erhalten hat, was dazu führen kann, dass er die aktuelle Zeitzone überschreibt. Wenn es unsicher ist, bedeutet dies, dass es keine Informationen oder nur Informationen mit geringer Zuverlässigkeit erhalten hat, was bedeutet, dass die aktuelle Zeitzone nicht überschrieben wird.
Zu den bestimmten Zuständen des time_zone_detector
Dienstes können Zustände gehören, in denen time_zone_detector
keine zu verwendenden Zeitzoneninformationen hat oder in denen mehrere Zeitzonen zur Auswahl stehen. Diese Zustände sind wie folgt:
- Ein bestimmter Staat ohne Zeitzonen liegt vor, wenn sich das Gerät an einem Ort ohne Zeitzone befindet, beispielsweise in internationalen Gewässern oder in einem umstrittenen Gebiet. Dieser Zustand ähnelt einem unsicheren Zustand, zeigt jedoch an, dass
time_zone_detector
keine weiteren Maßnahmen ergreifen muss, um zu versuchen, die Zeitzone zu bestimmen. - Bei Unklarheiten oder Grenzbedingungen wird ein bestimmter Staat mit mehreren Zeitzonen eingegeben. Wenn in diesem Zustand die aktuelle Zeitzone eine der Zeitzonen ist, über
time_zone_detector
sicher ist, wird die aktuelle Zeitzone unverändert belassen. Andernfalls wird eine der verfügbaren Zeitzonen verwendet. Dies verleihttime_zone_detector
ein Element der Klebrigkeit, wenn der Benutzer seine Zeitzone zuvor manuell ausgewählt hat oder wenn sich das Gerät einer Grenze nähert.
Der sichere oder unsichere Zustand des time_zone_detector
Dienstes wird durch Zeitzonenvorschläge bestimmt, die von einem origin gesendet werden.
Im Allgemeinen gibt es zwei Arten von Vorschlägen, die den möglichen Zuständen von time_zone_detector
am nächsten kommen: „sicher “ und „unsicher“ . Im Folgenden finden Sie Beispiele für Vorschlagstypen:
type = "unsicher", zoneIds = []
- Der Ursprung kennt die Zeitzone nicht.
type = "certain", zoneIds = ["Europe/London"]
- Der Ursprung ist sicher, die Zone ist „Europa/London“.
Typ = „sicher“, ZoneIds = []
- Der Ursprung ist sicher, dem aktuellen Standort ist jedoch keine Zonen-ID zugeordnet.
type = "certain", zoneIds = ["America/Denver", "America/Phoenix"]
- Der Ursprung ist sicher, dass die Antwort eine von zwei Zonen ist, kann aber nicht zwischen „Amerika/Denver“ und „Amerika/Phoenix“ wählen.
Der time_zone_detector
Dienst behandelt Sequenzen von Vorschlägen basierend auf ihrer Herkunft als unterschiedlich. Abhängig von der Herkunft können Vorschläge auch Metadaten enthalten, die angeben, wie sicher die Herkunft ist.
Der time_zone_detector
Dienst ist zustandsbehaftet, was bedeutet, dass er den neuesten Vorschlag jedes Ursprungs aufzeichnet. Neue Vorschläge werden an den Dienst time_zone_detector
gesendet, wenn ein vorheriger Vorschlag nicht mehr korrekt ist; Das heißt, wenn ein Ursprung jetzt einen anderen Vorschlag hat oder wenn er nicht mehr in der Lage ist, die Zeitzone zu erkennen. Der Dienst time_zone_detector
wertet neue und vorhandene Vorschläge neu aus und aktualisiert den Gerätestatus, wenn Vorschläge eingehen.
Android unterstützt zwei Ursprünge für die Zeitzonenerkennung:
- Telefonie
- Standort
Der Dienst time_zone_detector
verwendet nur einen einzigen Ursprung, um die Zeitzone zu bestimmen. Wenn der Standortursprung auf einem Gerät unterstützt wird, wird der aktuell zu verwendende Ursprung anhand der vom Benutzer konfigurierten Zeitzoneneinstellungen bestimmt. Wenn der aktuelle Ursprung die Zeitzone nicht mehr kennt, verwendet time_zone_detector
keine Vorschläge von einem anderen Ursprung. Vorschläge, die mit Ursprüngen außerhalb des aktuellen Ursprungs verknüpft sind, können von time_zone_detector
im Speicher gehalten werden, werden jedoch nicht verwendet, es sei denn, der aktuelle Ursprung ändert sich. Wenn der Benutzer die Einstellungen für die automatische Zeitzonenerkennung ändert und sich der aktuelle Ursprung ändert, wird der aktuellste verfügbare Vorschlag für den neuen Ursprung verwendet.
Auf Geräten mit Android 13 und höher unterstützt der Dienst time_zone_detector
den Telefonie-Fallback-Modus . In diesem Modus kann Android vorübergehend Vorschläge zur Telefonerkennung verwenden, wenn die Standorterkennung die Zeitzone nicht erkennen kann oder die Standorterkennung länger dauert als die Telefonerkennung.
Der Telefonie-Fallback-Modus gilt für Geräte, bei denen sowohl Telefonie als auch Standorterkennung unterstützt werden und bei denen der Benutzer Standort zum Festlegen der Zeitzone verwenden in den Zeitzoneneinstellungen aktiviert hat. Der Modus wird automatisch aktiviert, wenn ein Gerät neu gestartet wird und wenn der Flugmodus deaktiviert ist. Im Telefonie-Fallback-Modus verwendet der time_zone_detector
Dienst Telefonievorschläge, als ob die Standorterkennung deaktiviert wäre, bis der Standortursprung einen bestimmten Vorschlag macht. Nach Erhalt eines bestimmten Vorschlags wird der Telefonie-Fallback-Modus deaktiviert und es werden ausschließlich Standortvorschläge verwendet.
Konfigurationsdetails für den Telefonie-Fallback-Modus finden Sie unter Konfiguration der Zeitzonenerkennung .
Zeitzoneneinstellungen
Benutzer können die Einstellungen für die automatische Zeitzonenerkennung in der AOSP-Einstellungen-App aktivieren und konfigurieren.
Abbildung 2. Automatische Zeitzonenerkennung in den Einstellungen.
In der folgenden Tabelle werden die Benutzersteuerelemente für die Zeitzonenerkennung in der AOSP-Einstellungen-App beschrieben.
*Auf Android 11 und niedriger trägt diese Einstellung die Bezeichnung „ Vom Netzwerk bereitgestellte Zeitzone verwenden“. | |||
Speicherort der AOSP-Einstellungen | Name der AOSP-Einstellungen | Umfang | Verhalten |
---|---|---|---|
System > Datum und Uhrzeit | Zeitzone automatisch einstellen* | Alle Nutzer | Ein Umschalter. Wenn eingeschaltet , ist das Gerät für die Erkennung der aktuellen Zeitzone verantwortlich. Wenn diese Option deaktiviert ist , stehen Benutzern Steuerelemente zum manuellen Einstellen der Zeitzone des Geräts zur Verfügung. |
System > Datum und Uhrzeit | Verwenden Sie den Standort, um die Zeitzone festzulegen | Aktueller Benutzer | Ein Umschalter. Verfügbar ab Android 12. Dieser Schalter wird nur angezeigt, wenn die Standort-Zeitzonenerkennung auf dem Gerät unterstützt wird. |
Standort | Standort verwenden | Aktueller Benutzer | Ein Umschalter. Erlaubt oder verhindert generell die Verwendung des Gerätestandorts. Der Wert ist relevant, wenn die Standort-Zeitzonenerkennung auf dem Gerät unterstützt wird. |
Im Folgenden finden Sie einen Überblick über das Geräteverhalten bei der Zeitzonenerkennung unter Berücksichtigung der vom Benutzer gewählten Einstellungen:
[Datum und Uhrzeit] Zeitzone automatisch einstellen: AUS
- Der Benutzer muss die Zeitzone manuell auswählen.
[Datum und Uhrzeit] Zeitzone automatisch einstellen: EIN
[Standort] Standort verwenden: AUS
- Zur Erkennung der Zeitzone werden Telefonsignale verwendet. (Siehe Anmerkung unten.)
[Standort] Standort verwenden: EIN
[Datum und Uhrzeit] Verwenden Sie den Standort, um die Zeitzone einzustellen: EIN
- Der Standort wird zur Ermittlung der Zeitzone verwendet.
[Datum und Uhrzeit] Standort zum Einstellen der Zeitzone verwenden: AUS
- Zur Erkennung der Zeitzone werden Telefonsignale verwendet. (Siehe Anmerkung unten.)
Mehrere Benutzergeräte
Da mehrere der beteiligten Einstellungen auf den aktuellen Benutzer beschränkt sind, kann sich das Zeitzonenerkennungsverhalten eines Geräts ändern, wenn der aktuelle Benutzer auf einem Mehrbenutzer-Android-Gerät wechselt.
Der Schalter „Standort zum Festlegen der Zeitzone verwenden“ ist auf den aktuellen Benutzer beschränkt und wird nicht durch die Geräterichtlinie eingeschränkt. Das bedeutet, dass Benutzer seinen Wert immer ändern können, auch wenn der Schalter „Zeitzone automatisch festlegen“ deaktiviert ist oder andere Zeit- oder Zeitzonensteuerungen vorliegen werden durch den Device Policy Controller eingeschränkt.
Verhalten beim Wechsel zur und von der automatischen Erkennung
Wenn der Benutzer die Zeitzonenerkennung von manuell auf automatisch umstellt, ist time_zone_detector
möglicherweise bereits sicher, dass die aktuelle Zeitzone vorliegt. Wenn dies der Fall ist, wird möglicherweise gleichzeitig die Zeitzone des Geräts geändert, um der Meinung des time_zone_detector
-Dienstes zu entsprechen, wenn der Benutzer die automatische Erkennung aktiviert.
Wenn der Benutzer eine Änderung in den Einstellungen vornimmt, die zu einer Änderung des aktuellen Ursprungs des time_zone_detector
Dienstes führt, hat time_zone_detector
möglicherweise bereits Vorschläge für den neuen Ursprung erhalten und daher wird die Zeit des Geräts möglicherweise sofort geändert, um der Meinung des time_zone_detector
Dienstes zu entsprechen.
Erkennung der Telefon-Zeitzone
Bei der Telefon-Zeitzonenerkennung werden Telefonsignale verwendet, um die aktuelle Zeitzone zu ermitteln. Weitere Informationen finden Sie unter Zeitzonenerkennung für Telefonie .
Erkennung der Zeitzone des Standorts
Die Standort-Zeitzonenerkennung ist auf Android 12 oder höher verfügbar. Dabei handelt es sich um eine optionale Funktion zur automatischen Zeitzonenerkennung, die es Geräten ermöglicht, anhand ihres Standorts die aktuelle Zeitzone zu ermitteln.
Der in Android 12 eingeführte Dienst location_time_zone_manager
wird auf dem Systemserver ausgeführt und enthält den Code, der für die Übermittlung von Standortursprungsvorschlägen an den Dienst time_zone_detector
verantwortlich ist. Weitere Informationen finden Sie unter Standort-Zeitzonenerkennung .
Überlegungen zur Funktionseinführung
In diesem Abschnitt werden Aspekte der Standortzeitzonenerkennungsfunktion beschrieben, um einem Gerätehersteller bei der Entscheidung zu helfen, ob die Funktion auf einem Gerät übernommen werden soll.
Vergleich von Telefonie und Standorterkennung
Die folgende Tabelle bietet einen Vergleich der Vor- und Nachteile der Verwendung von Standortsignalen anstelle von Telefonsignalen zur Zeitzonenerkennung.
Telefonerkennung | Standorterkennung | |
---|---|---|
Richtigkeit | Variiert je nach Land. Hängt von MCC, NITZ-Korrektheit und Verfügbarkeit ab. | Hängt von der Funktionskonfiguration oder den Plug-in-Komponenten ab. Die Richtigkeit variiert typischerweise durch:
|
Aktualisierbarkeit | Die Telefonerkennung basiert auf Dateien, die im aktualisierbaren Zeitzonendatenmodul (com.android.tzdata APEX) enthalten sind. | Hängt von der Funktionskonfiguration oder den Plug-in-Komponenten ab. Die Aktualisierbarkeit hängt in der Regel davon ab, ob das Gerät Server- oder Client-Zeitzonenkartendaten verwendet. Hinweis: Zeitzonenkartendaten sind nicht im Zeitzonendatenmodul enthalten, das zum Aktualisieren der Android-Kopie von TZDB und anderen Zeitzoneninformationen verwendet wird. Die Gerätehersteller müssen außerdem die Versionskonsistenz zwischen den Zeitzonenregeln und den Zeitzonenkartendaten berücksichtigen. |
Stromverbrauch | Kein oder geringer Stromverbrauch | Hängt von den Standorteinstellungen des Benutzers, den verwendeten Plug-Ins und normalerweise den Standortanforderungen anderer Apps ab. |
Verfügbarkeit | Nur Telefongeräte. Normalerweise ist eine funktionierende SIM-Karte erforderlich. | Die Standorterkennung hängt von den verfügbaren Standortanbietern ab. |
Privatsphäre der Benutzer
Die bevorzugte Zeitzone eines Benutzers wird normalerweise durch seinen geografischen Standort bestimmt. Beim Standort handelt es sich um sensible Daten. Benutzer haben möglicherweise Bedenken, dass ihr Standort im Rahmen der Zeitzonenerkennung weitergegeben wird. Unabhängig von der Zeitzonenerkennung können alle auf einem Gerät ausgeführten Apps die aktuelle Zeitzone des Geräts lesen, ohne dass eine Android-Berechtigung erforderlich ist, und Apps können aus diesen Informationen eine ungenaue Vorstellung vom Standort des Geräts ableiten.
Genauer gesagt kann die Zeitzonenerkennung auf passive oder aktive Weise erfolgen:
- Passiv: Etwas in der Umgebung des Geräts teilt dem Gerät mit, welche Zeitzone es in dieser Umgebung verwenden soll.
- Aktiv: Das Gerät muss die Zeitzone selbst ermitteln und holt sich dazu abhängig von den Privatsphäre-Einstellungen des Nutzers und dessen Einwilligung den Standort des Geräts. Anschließend kann es seinen Standort mit externen Diensten teilen. Weitere Informationen zum Datenschutz und zur Einwilligung des Benutzers finden Sie in der Diskussion unten.
Die passive Erkennung, beispielsweise beim Telefonie-Ursprung, hat keine zusätzlichen Auswirkungen auf die Privatsphäre der Benutzer.
Bei der aktiven Erkennung, beispielsweise mit der Standortherkunft, wird der Standort des Geräts ermittelt, dem Benutzer möglicherweise nicht zustimmen möchten. Der Standort kann über ein Netzwerk gesendet werden, um die Zeitzonen-ID zu ermitteln.
Der Android-Ansatz zum Datenschutz der Benutzer bei der Zeitzonenerkennung gibt dem Benutzer die Möglichkeit, Ursprünge, die voraussichtlich aktiv sind, individuell zu deaktivieren. Darüber hinaus befasst sich der AOSP-Plattformcode nicht direkt mit dem Standort selbst: Die Standorterkennung und die Zuordnung des Standorts zu Zeitzonen-IDs werden Plug-in-Komponenten überlassen, die von Geräteherstellern konfiguriert werden.
Weitere Einzelheiten zu den Datenschutzfunktionen der Benutzer finden Sie unter Standort-Zeitzonenerkennung .
Aufbau
Gerätehersteller können den Dienst time_zone_detector
konfigurieren, um sein Verhalten zu ändern. In diesem Abschnitt werden Konfigurationsoptionen für das allgemeine Verhalten des time_zone_detector
-Dienstes beschrieben. Konfigurationsdetails für die Telefonie- und Zeitzonenerkennungsursprünge finden Sie unter Telefonie-Zeitzonenerkennung und Standort-Zeitzonenerkennung .
Die Basis-AOSP-Konfiguration befindet sich unter frameworks/base/core/res/res/values/config.xml
.
Konfigurationsschlüssel | AOSP-Wert | Beschreibung |
---|---|---|
config_supportTelephonyTimeZoneFallback | true | Bei true verwendet der „time_zone_detector“ den Telefonie-Fallback-Modus. Dies ist ab Android 13 vorhanden. |
Ändern des Standardverhaltens des Geräts
In AOSP ist die automatische Zeitzonenerkennung standardmäßig aktiviert, wobei die Einstellung auto_time_zone
auf true
gesetzt ist. Um die automatische Zeiterkennung standardmäßig zu deaktivieren, setzen Sie den Wert von def_auto_time_zone
, der in frameworks/base/packages/SettingsProvider/res/values/defaults.xml
definiert ist, auf false
.
Beim Wiederherstellen einer Sicherung von einem anderen Gerät aktualisiert das Framework standardmäßig den Wert der Einstellung auto_time_zone
. Wenn Sie sicherstellen möchten, dass diese Einstellung nicht aus einer Sicherung wiederhergestellt wird, schließen Sie auto_time_zone
in das Array restore_blocked_global_settings
“ ein, das in frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml
definiert ist.
Debuggen und Testen der Zeitzone
Dieser Abschnitt enthält Informationen zum Debuggen und Testen des Verhaltens des time_zone_detector
Dienstes und anderer Komponenten, die von allen Ursprüngen gemeinsam genutzt werden.
Konfigurieren eines Geräts mit dem Dienst „device_config“.
Der Dienst device_config
ist ein Mechanismus, der unter Android verwendet wird, um veränderbares Verhalten mithilfe von Werten zu konfigurieren, die normalerweise durch proprietären Code (nicht AOSP) von einem Remote-Server abgerufen werden. Wenn Sie device_config
Werte zum Testen verwenden, insbesondere bei manuellen Tests mit langer Laufzeit, synchronisiert das Gerät möglicherweise die Flags, wodurch die Flags zurückgesetzt und die zum Testen festgelegten Werte gelöscht werden.
Um in Android 12 oder höher die Flag-Synchronisierung vorübergehend zu verhindern, verwenden Sie Folgendes:
adb shell cmd device_config set_sync_disabled_for_tests persistent
Um die Flag-Synchronisierung nach Tests wiederherzustellen, verwenden Sie:
adb shell cmd device_config set_sync_disabled_for_tests none
Starten Sie das Gerät nach dem Wiederherstellen der Flag-Synchronisierung neu.
Für weitere Informationen verwenden Sie $ adb shell cmd device_config help
.
Interaktion mit dem time_zone_detector-Dienst
Um die time_zone_detector
Konfiguration und den Status des time_zone_detector
-Dienstes anzuzeigen, verwenden Sie:
adb shell cmd time_zone_detector dump
Um zusätzliche Befehle zum Debuggen und Testen der Zeitzonenerkennung anzuzeigen, verwenden Sie:
adb shell cmd time_zone_detector help
Die Hilfeausgabe beschreibt auch die Eigenschaften des Diensts device_config
, die verwendet werden können, um das Verhalten des Diensts time_zone_detector
für Tests oder in der Produktion zu beeinflussen. Einzelheiten finden Sie unter Konfigurieren eines Geräts mit dem Dienst „device_config“ .
Um die Zeitzonenerkennung zu validieren, müssen Tester wissen, welchen Ursprung der time_zone_detector
verwendet. Um den aktuellen Ursprung des time_zone_detector
zu verstehen und zu beeinflussen, verwenden Sie eine der folgenden Optionen:
- Überprüfen Sie dies visuell über die Benutzeroberfläche „Einstellungen“. Weitere Informationen finden Sie unter Zeitzoneneinstellungen .
Verwenden Sie die Befehlszeile über adb:
- Um den
time_zone_detector
Status auszugeben, verwenden Sieadb shell cmd time_zone_detector dump
- Um die Geräteeinstellung zu ändern, verwenden Sie andere
time_zone_detector
Befehle. Weitere Informationen finden Sie inadb shell cmd time_zone_detector help
.
- Um den
Das Folgende ist ein Beispiel für die Ausgabe des Befehls adb shell cmd time_zone_detector dump
, wobei die Informationen zum aktuellen Ursprung und Dienststatus fett gedruckt sind:
$ adb shell cmd time_zone_detector dump
TimeZoneDetectorStrategy:
mEnvironment.getCurrentUserId()=0
mEnvironment.getConfiguration(currentUserId)=ConfigurationInternal{mUserId=0, mUserConfigAllowed=true, mTelephonyDetectionSupported=true, mGeoDetectionSupported=true, mAutoDetectionEnabled=true, mLocationEnabled=true, mGeoDetectionEnabled=true}
[Capabilities=TimeZoneCapabilitiesAndConfig{mCapabilities=TimeZoneDetectorCapabilities{mUserHandle=UserHandle{0}, mConfigureAutoDetectionEnabledCapability=40, mConfigureGeoDetectionEnabledCapability=40, mSuggestManualTimeZoneCapability=30}, mConfiguration=TimeZoneConfiguration{mBundle=Bundle[{geoDetectionEnabled=true, autoDetectionEnabled=true}]}}]
mEnvironment.isDeviceTimeZoneInitialized()=true
mEnvironment.getDeviceTimeZone()=Europe/London
Time zone change log:
Manual suggestion history:
...
Geolocation suggestion history:
...
Telephony suggestion history:
...
Die Informationen können wie folgt interpretiert werden:
Taste | Wert |
---|---|
mUserConfigAllowed | Ob der Benutzer durch den Device Policy Controller daran gehindert wird, Datums- und Uhrzeiteinstellungen zu steuern. |
mTelephonyDetectionSupported | Ob das Gerät über eine Telefon-Zeitzonenerkennung verfügt. |
mGeoDetectionSupported | Ob das Gerät über eine Standortzeitzonenerkennung verfügt. Dies ist der effektive Zustand basierend auf der Konfiguration und dem Vorhandensein mindestens eines LTZP. |
mAutoDetectionEnabled | Ob die automatische Zeitzonenerkennung aktiviert ist. |
mLocationEnabled | Der Master-Standort-Schalter. |
mGeoDetectionEnabled | Der Ursprungsschalter: „false“ gibt den Telefonursprung an und „true“ gibt den Standortursprung an. |
Die Informationen zum Vorschlagsverlauf geben an, welche Vorschläge über die Einstellungen (manuell) sowie über die Telefonie und den Standort gemacht wurden.