Auf dieser Seite wird beschrieben, wie die Zeit- und Zeitzonenerkennung auf Android funktioniert. Dazu gehört die automatische Erkennung von Uhrzeit und Zeitzonen in Android, Konfigurationsoptionen für Gerätehersteller und Testinformationen.
Übersicht über Uhrzeit und Zeitzonen
Um die Ortszeit eines Nutzers für die Anzeige an Orten wie der Statusleiste zu ermitteln, erfasst Android zwei zusammenhängende, aber unabhängige Zustände:
- Die aktuelle Unix-Epochenzeit
- Die aktuelle Zeitzone
Die aktuelle Unix-Epochen-Zeit und die aktuelle Zeitzone sind Statuswerte für das gesamte Gerät, d. h., sie werden von allen Nutzern eines Geräts gemeinsam verwendet.
Die aktuelle Unix-Epochenzeit ist kein fester Wert. Es wird automatisch aktualisiert, um den Zeitverlauf widerzuspiegeln. Neben dem normalen Zeitablauf wird die aktuelle Unix-Epochenzeit eines Geräts angepasst, wenn sie als falsch erkannt wird, z. B. nachdem der Strom für das Gerät abgeschaltet wurde.
Die aktuelle Zeitzone bestimmt die Anpassung, die vorgenommen wird, um die aktuelle Unix-Epochenzeit in eine Ortszeit umzuwandeln. Beispiel: Im Sommer in Los Angeles zieht das Gerät 7 Stunden von der aktuellen Unix-Epochenzeit ab, im Winter 8 Stunden.
Alle Android-Geräte haben eine Datenbank mit allen globalen Zeitzonenregeln, um diese Ortszeitberechnungen zu unterstützen. Weitere Informationen zu Zeitzonenregeln finden Sie unter Zeitzonenregeln.
Wenn ein Nutzer an einen neuen Ort reist, für den eine andere Zeitzone gilt, muss die aktuelle Unix-Epochenzeit nicht angepasst werden. Der Nutzer möchte jedoch in der Regel die Ortszeit sehen, nicht die Zeit an seinem vorherigen Standort. Durch das Ändern der aktuellen Zeitzone wird sichergestellt, dass der richtige Offset auf die aktuelle Unix-Epochenzeit angewendet wird, damit die korrekte Ortszeit für den neuen Ort angezeigt wird.
Mit AOSP können Nutzer unabhängig über die folgenden Mechanismen festlegen, ob die Uhrzeit und Zeitzone automatisch für sie festgelegt werden.
- Automatische Zeiterkennung: Damit wird sichergestellt, dass auf dem Gerät die aktuelle Unix-Epochenzeit eingestellt ist.
- Automatische Zeitzonenerkennung: Damit wird sichergestellt, dass auf dem Gerät die aktuelle Zeitzone eingestellt ist.
Automatische Zeiterkennung
Dieser Abschnitt bietet eine Übersicht über den time_detector
-Dienst, der die automatische Zeiterkennung, Nutzersteuerungen, Konfigurationsoptionen und Testdetails verwaltet.
Der Dienst „time_detector“
Der Dienst time_detector
ist auf Geräten mit Android 10 oder höher verfügbar und verwaltet die automatische Zeiterkennung. Wenn die automatische Zeiterkennung aktiviert ist, wird die aktuelle Unix-Epochenzeit des Geräts entsprechend angepasst.
Der time_detector
-Dienst befindet sich immer in einem von zwei Status: nicht sicher oder gewiss. Der bestimmte oder unsichere Status des Dienstes wird durch Zeitvorschläge bestimmt, die er von verschiedenen Quellen erhält.
Wenn der time_detector
-Dienst sicher ist, d. h., er hat einen Vorschlag mit Unix-Epochen-Zeitangaben erhalten, überschreibt er die aktuelle Unix-Epochen-Zeit, falls sich die vorgeschlagene Zeit von der aktuellen Unix-Epochenzeit unterscheidet.
Wenn time_detector
unsicher ist, wird die aktuelle Uhrzeit nicht überschrieben. Der unbestimmte Status bedeutet in der Regel, dass der time_detector
-Dienst keine Zeitvorschläge erhalten hat. Für den time_detector
-Dienst wird außerdem unsicher, ob Vorschläge, die er erhalten hat, als zu alt für die Verwendung angesehen werden. Das Alter der Vorschläge wird berücksichtigt, da Anpassungen, die alte Unix-Zeitvorschläge für die Unix-Epoche verwenden, auf der verstrichenen Echtzeituhr auf dem Gerät basieren, die über längere Zeiträume vermutlich ungenau ist.
Um die aktuelle Unix-Epochenzeit automatisch festzulegen, stehen einem Gerät verschiedene Quellen zur Verfügung. Diese werden in diesem Dokument als Ursprung bezeichnet. Der Dienst time_detector
behandelt Sequenzen von Vorschlägen basierend auf ihrem Ursprung als unterschiedlich.
Der Dienst time_detector
ist zustandsorientiert, d. h., er zeichnet die letzten Vorschläge jedes Ursprungs auf. Wenn für einen Ursprung neuere Informationen zur Unix-Epochen-Zeit verfügbar sind, werden neue Vorschläge an time_detector
gemacht. Der Dienst time_detector
bewertet neue und vorhandene Vorschläge neu und aktualisiert den Gerätestatus, wenn Vorschläge empfangen werden.
Obwohl die UTC-Zeit international vereinbart ist, gibt es verschiedene Gründe, warum die Ermittlung der aktuellen Unix-Epochenzeit auf einem Android-Gerät nicht immer einfach ist:
- Die Unix-Epochenzeit ist ein etwas anderes Zeitmesssystem als die UTC-Zeit. Für die Konvertierung zwischen beiden ist es erforderlich, dass Sie wissen, wann Schaltsekunden auftreten und wie sie von den Ursprüngen verarbeitet werden.
- Ursprünge sind möglicherweise nur zu bestimmten Zeiten oder unter bestimmten Umständen verfügbar. Wenn für den Ursprung beispielsweise eine Netzwerkverbindung erforderlich ist, ist sie möglicherweise nur verfügbar, wenn das Gerät mit dem Internet verbunden ist.
- Die Quellen können ungenau oder unpräzise sein oder Fehler enthalten. Wenn beispielsweise ein Mobilfunkmast die „Weltzeit“ nicht richtig verfolgt, liefert der Ursprung des Telefonieanbieters möglicherweise ungenaue Zeitvorschläge.
- Beim Abrufen der Unix-Epochen-Zeit kann es zu Ungenauigkeiten kommen. Beispielsweise kann eine Netzwerkverzögerung, Pufferung oder Prozessplanung dazu führen, dass die Unix-Epochenzeit ungenau ist.
- Die Referenzuhr, mit der ein Vorschlag für die seit dem Erhalt des Vorschlags verstrichene Zeit angepasst wird, ist möglicherweise ungenau.
Es gibt zwei Hauptquellen für die Zeiterkennung, die standardmäßig in AOSP verwendet werden:
- Netzwerk:Verwendet NTP-Zeitserver (Network Time Protocol).
- Telefonie: Verwendet NITZ-Telefoniesignale (Network Identity and Time Zone).
Sowohl Telefonie als auch Netzwerkursprünge erfordern Verbindungen 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 Uhrzeit von einer GNSS-Quelle abzurufen.
- Extern: Allgemeiner Ursprung, der es Geräteherstellern ermöglicht, eine eigene Quelle für die Unix-Epoche-Zeit zu integrieren.
Zeiteinstellungen
Nutzer können die automatische Zeiterkennung in der AOSP-Einstellungs-App unter System > Datum und Uhrzeit aktivieren.
Abbildung 1. Automatische Zeiterkennung in den Einstellungen
In der folgenden Tabelle werden die Nutzereinstellungen für die Zeiterkennung in der AOSP-Einstellungs-App beschrieben.
*Unter Android 11 und niedriger heißt diese Einstellung Vom Netzwerk bereitgestellte Zeit verwenden. |
|||
Speicherort der AOSP-Einstellungen | Name der AOSP-Einstellungen | Aufgabenstellung | Verhalten |
---|---|---|---|
System > Datum und Uhrzeit | Zeit automatisch einstellen* | Alle Nutzer | Ein Schalter. Wenn diese Option aktiviert ist, ist das Gerät für die Erkennung der aktuellen Unix-Epochen-Zeit verantwortlich. Wenn die Option deaktiviert ist, können Nutzer die Uhrzeit des Geräts manuell einstellen. |
Wenn der Nutzer die Zeit manuell eingibt, wird die Ortszeit und nicht die Unix-Epochen-Zeit eingegeben. Die aktuelle Unix-Epochenzeit wird berechnet, indem anhand der aktuellen Zeitzone eine Unix-Epochenzeit abgeleitet wird.
Konfiguration
Gerätehersteller können den time_detector
-Dienst auf verschiedene Arten konfigurieren, z. B. welche Ursprünge verwendet werden sollen und wie ihre Signale priorisiert werden sollen.
Ursprungspriorisierung
Ab Android 12 können Gerätehersteller die Konfigurationsdatei core/res/res/values/config.xml
ändern, um anzugeben, welche Zeitursprünge bei der automatischen Zeiterkennung berücksichtigt werden sollen und welche Priorität time_detector
diese Ursprünge berücksichtigt.
Bei Geräten mit Android 11 oder niedriger ist die Ursprungspriorität in ["telephony", "network"]
hartcodiert. Das bedeutet, dass Telefonievorschläge Vorrang vor Netzwerkvorschlägen haben.
Die Standard-AOSP-Konfiguration sieht so aus:
<!-- 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 Telefonvorschläge als Standardquellen konfiguriert. Vorschläge für Netzwerkzeit haben Vorrang vor Vorschlägen für die Telefoniezeit. Gerätehersteller können die Reihenfolge der Ursprünge ändern, um sie auf das Verhalten in Android 11 oder niedriger zurückzusetzen, bei dem die Telefonie eine höhere Priorität erhält.
Wenn der gültige Vorschlag mit der höchsten Priorität innerhalb weniger Sekunden mit der aktuellen Systemuhrzeit des Geräts übereinstimmt, wird die Gerätezeit nicht geändert. So wird verhindert, dass Arbeit für installierte Apps anfällt, die auf die ACTION_TIME_CHANGED
-Intention achten.
Die zulässigen Ursprungswerte sind:
Zulässige Zeiträume
Android 14 bringt eine Obergrenze für Zeitvorschläge ein, die vom time_detector
-Dienst eingehen. Wenn das Gerät 32-Bit-Prozesse unterstützt, legt das Framework eine Obergrenze fest, um zu verhindern, dass das Gerät einen Zeitvorschlag verwendet, der das Problem Y2038 auslösen könnte.
Mit Android 12 wurde eine niedrigere Zeitgrenze eingeführt, mit der Zeitvorschläge validiert werden, die vom Dienst time_detector
empfangen wurden. Der untere zeitgebundene Wert, der für automatische Vorschläge verwendet wird, wird anhand des Build-Zeitstempels festgelegt.
Dies beruht auf dem Grundsatz, dass keine gültige Zeit vor der Erstellung des System-Images des Geräts liegen kann. Wenn ein Zeitvorschlag vor der Unterzeitgrenze liegt, verwirft der time_detector
-Dienst den Vorschlag, da er nicht gültig sein kann, wenn der Build-Zeitstempel korrekt ist.
Auf Geräten mit Android 11 oder niedriger werden vom time_detector
-Dienst keine Vorschläge für die Unix-Epochenzeit validiert.
Zeit zum Debuggen und Testen
In diesem Abschnitt finden Sie Informationen zum Debuggen und Testen des Verhaltens des time_detector
-Dienstes und anderer Komponenten, die für alle Ursprünge freigegeben sind.
Mit dem Dienst „time_detector“ interagieren
So rufen Sie die Konfiguration und den Status des Dienstes time_detector
auf:time_detector
adb shell cmd time_detector dump
Weitere Befehle zur Fehlerbehebung und zum Testen der Zeitzonenerkennung:
adb shell cmd time_detector help
In der Hilfeausgabe werden auch die Diensteigenschaften „device_config“ beschrieben, mit denen sich das Verhalten von time_detector
für Tests oder in der Produktion beeinflussen lässt.
Weitere Informationen finden Sie unter Geräte mit dem Dienst „device_config“ konfigurieren.
Um die automatische Zeiterkennung zu validieren, müssen die Tester wissen, welche Ursprünge der time_detector
-Dienst verwendet. Das folgende Beispiel zeigt die Ausgabe des Befehls adb shell cmd time_detector dump
. Die Informationen zu dem aktuellen Ursprung und Dienststatus sind fett formatiert:
$ 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 folgendermaßen interpretiert werden:
Key | Wert |
---|---|
mEnvironment.isAutoTimeDetectionEnabled() |
Gibt an, ob die automatische Zeiterkennung aktiviert ist. |
mEnvironment.autoTimeLowerBound() |
Die aktuelle Untergrenze, die zum Validieren von Zeitvorschlägen verwendet wird. |
mEnvironment.autoOriginPriorities() |
Die verwendeten Ursprünge und die Prioritätsreihenfolge. |
Im Protokoll für Zeitänderungen sind die Zeiten aufgeführt, zu denen der time_detector
-Dienst die aktuelle Unix-Epochenzeit des Geräts geändert hat.
Im Vorschlagsverlauf sehen Sie, welche Vorschläge von welcher Quelle stammen.
Automatische Zeitzonenerkennung
In diesem Abschnitt finden Sie einen Überblick über den time_zone_detector
-Dienst, der die automatische Zeitzonenerkennung, die Nutzereinstellungen, die Zeitzonenerkennung für Telefonie und Standort sowie Testdetails verwaltet.
Der Dienst „time_zone_detector“
Der Dienst time_zone_detector
auf Geräten mit Android 11 oder höher verwaltet die automatische Zeitzonenerkennung. Wenn die automatische Zeitzonenerkennung aktiviert ist, wird die aktuelle Zeitzone des Geräts entsprechend angepasst.
Wenn die automatische Zeitzonenerkennung aktiviert ist, kann time_zone_detector
einen von zwei Status haben: unbestimmt oder bestimmt.
Wenn der time_zone_detector
-Dienst sich in einem bestimmten Status befindet, bedeutet das, dass der time_zone_detector
-Dienst eindeutige Zeitzoneninformationen erhalten hat, die dazu führen können, dass die aktuelle Zeitzone überschrieben wird. Wenn er unsicher ist, bedeutet dies, dass er keine oder nur wenig vertrauenswürdige Informationen erhalten hat, was bedeutet, dass die aktuelle Zeitzone nicht überschrieben wird.
Zu den bestimmten Status des time_zone_detector
-Dienstes können Zustände gehören, in denen time_zone_detector
keine Zeitzoneninformationen verwenden kann oder in denen mehrere Zeitzonen zur Auswahl stehen. Es gibt folgende Status:
- Ein bestimmter Bundesstaat ohne Zeitzonen wird eingegeben, wenn sich das Gerät an einem Ort ohne Zeitzone befindet, z. B. in internationalen Gewässern oder in einer umstrittenen Region. Dieser Status ähnelt einem unsicheren Zustand, weist jedoch darauf hin, dass
time_zone_detector
keine weiteren Maßnahmen zum Ermitteln der Zeitzone ergreifen muss. - Ein bestimmter Bundesstaat mit mehreren Zeitzonen wird dann eingegeben, wenn Unklarheiten oder Grenzbedingungen bestehen. Wenn die aktuelle Zeitzone in diesem Zustand zu den Zeitzonen gehört, bei denen
time_zone_detector
sicher ist, dass sie korrekt ist, bleibt sie unverändert. Andernfalls wird eine der verfügbaren Zeitzonen verwendet. Dadurch wirdtime_zone_detector
ein gewisser Grad an „Stickiness“ verliehen, wenn der Nutzer seine Zeitzone zuvor manuell ausgewählt hat oder sich das Gerät einer Grenze nähert.
Der bestimmte oder unsichere Status des time_zone_detector
-Dienstes wird durch Zeitzonenvorschläge bestimmt, die von einem Algorithmus gesendet werden.
Im Allgemeinen gibt es zwei Arten von Vorschlägen, die den möglichen Status von time_zone_detector
genau entsprechen: sicher und unsicher. Nachfolgend finden Sie Beispiele für Vorschlagstypen:
Typ =
uncertain
,zoneIds = []
- Der Algorithmus kennt die Zeitzone nicht.
Typ =
certain
,zoneIds = ["Europe/London"]
- Der Algorithmus ist sich sicher, dass die Zone „Europa/London“ ist.
Typ =
certain
,zoneIds = []
- Der Algorithmus ist sicher, aber dem aktuellen Standort ist keine Zonen-ID zugeordnet.
type =
certain
,zoneIds = ["America/Denver", "America/Phoenix"]
- Der Algorithmus ist sich sicher, dass die Antwort eine von zwei Zonen ist, kann aber nicht zwischen „America/Denver“ und „America/Phoenix“ wählen.
Der time_zone_detector
-Dienst behandelt Sequenzen von Vorschlägen basierend auf seinem Algorithmus als unterschiedlich. Je nach Algorithmus können Vorschläge auch Metadaten enthalten, die angeben, wie sicher der Algorithmus ist.
Der Dienst time_zone_detector
ist zustandsorientiert. Das bedeutet, dass er die letzten Vorschläge jedes Algorithmus speichert. Neue Vorschläge werden an den time_zone_detector
-Dienst gesendet, wenn ein vorheriger Vorschlag nicht mehr korrekt ist, d. h. wenn ein Algorithmus jetzt einen anderen Vorschlag hat oder die Zeitzone nicht mehr erkennen kann. Der Dienst time_zone_detector
wertet neue und vorhandene Vorschläge neu aus und aktualisiert den Gerätestatus, sobald Vorschläge eingehen.
Android unterstützt zwei Algorithmen für die Zeitzonenerkennung:
- Telefonie
- Standort
Der time_zone_detector
-Dienst verwendet in der Regel einen einzelnen Algorithmus, um die Zeitzone zu ermitteln. Wenn der Standortalgorithmus auf einem Gerät unterstützt wird, wird der vom Gerät verwendete Algorithmus anhand der vom Nutzer konfigurierten Zeitzoneneinstellungen bestimmt. Wenn der verwendete Algorithmus die Zeitzone unsicher wird, verwendet time_zone_detector
normalerweise keine Vorschläge aus einem anderen Algorithmus. Vorschläge, die mit Algorithmen verknüpft sind, die nicht verwendet werden, können von time_zone_detector
im Arbeitsspeicher gehalten werden. Sie werden jedoch nur verwendet, wenn sich der Algorithmus ändert. Wenn der Nutzer die Einstellungen für die automatische Zeitzonenerkennung ändert und sich der Algorithmus ändert, wird der letzte verfügbare Vorschlag für den neuen Algorithmus verwendet.
Weitere Informationen dazu, wie mehrere Algorithmen zur Bestimmung der Zeitzone verwendet werden, finden Sie unter Fallback-Modus für die Telefonie.
Telefonie-Fallback-Modus
Auf Geräten mit Android 13 und höher unterstützt der time_zone_detector
-Dienst den Fallback-Modus für die Telefonie. In diesem Modus kann Android vorübergehend Vorschläge zur Telefonieerkennung verwenden, wenn die Zeitzone nicht über die Standortermittlung ermittelt werden kann oder die Zeitzone über die Standortermittlung länger als über die Telefonieerkennung ermittelt werden kann.
Der Telefonie-Fallback-Modus gilt für Geräte, auf denen sowohl Telefonie als auch die Standorterkennung unterstützt werden und auf denen der Nutzer in den Zeitzoneneinstellungen die Option Zeitzone anhand des Standorts festlegen aktiviert hat. Der Modus wird automatisch aktiviert, wenn ein Gerät neu gestartet und der Flugmodus deaktiviert wird.
Unter Android 14 und höher kann der Telefonie-Fallback über die LTZP-Statusmelde-APIs ausgelöst werden. Das bedeutet, dass der Telefonie-Fallback-Modus ausgelöst wird, wenn ein LTZP meldet, dass es sich um eine unsichere und eingeschränkte Umgebung handelt, in der die Standort- oder Zeitzone nicht erkannt werden kann.
Im Telefonie-Fallback-Modus verwendet der time_zone_detector
-Dienst Telefonievorschläge, als wäre die Standorterkennung deaktiviert, bis der Standortalgorithmus einen bestimmten Vorschlag macht. Nachdem ein bestimmter Vorschlag eingegangen ist, 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
Nutzer können die Einstellungen für die automatische Zeitzonenerkennung in der App „AOSP Settings“ (AOSP-Einstellungen) aktivieren und konfigurieren.
Abbildung 2: Automatische Zeitzonenerkennung in den Einstellungen.
In der folgenden Tabelle werden die Einstellungen für die Zeitzonenerkennung in der AOSP-Einstellungs-App beschrieben.
*Unter Android 11 und niedriger heißt diese Einstellung Vom Netzwerk angegebene Zeitzone verwenden. |
|||
Speicherort der AOSP-Einstellungen | Name der AOSP-Einstellungen | Aufgabenstellung | Verhalten |
---|---|---|---|
System > Datum und Uhrzeit | Zeitzone automatisch einstellen* | Alle Nutzer | Ein/Aus-Schaltfläche Wenn diese Option aktiviert ist, ist das Gerät für die Erkennung der aktuellen Zeitzone verantwortlich. Wenn die Option deaktiviert ist, können Nutzer die Zeitzone des Geräts manuell festlegen. |
System > Datum und Uhrzeit | Standort verwenden, um die Zeitzone festzulegen | Aktueller Nutzer | Ein Schalter. Verfügbar ab Android 12. Diese Option wird nur angezeigt, wenn die Zeitzonenerkennung anhand des Standorts auf dem Gerät unterstützt wird. Informationen zu den Änderungen in Android 14 finden Sie unter Geräte, die nur die Standortzeitzonenerkennung unterstützen. |
deinen Standort zugegriffen haben | Standort verwenden | Aktueller Nutzer | Ein/Aus-Schaltfläche Ermöglicht oder verhindert die allgemeine Verwendung des Standorts des Geräts. Der Wert ist relevant, wenn auf dem Gerät die Zeitzonenerkennung unterstützt wird. |
Im Folgenden finden Sie einen Überblick über das Geräteverhalten bei der Zeitzonenerkennung unter Berücksichtigung der vom Nutzer ausgewählten Einstellungen:
[Datum und Uhrzeit] Zeitzone automatisch einstellen: AUS
- Der Nutzer muss die Zeitzone manuell auswählen.
[Datum und Uhrzeit] Zeitzone automatisch einstellen: AKTIVIERT
[Location] Standort verwenden:AUS
- Die Zeitzone wird anhand von Telefonsignalen ermittelt.
[Standort] Standort verwenden: AN
[Datum und Uhrzeit] Zeitzone anhand des Standorts festlegen: AKTIVIERT
- Anhand des Standorts wird die Zeitzone ermittelt.
[Date and Time] Zeitzone anhand des Standorts festlegen: AUS
- Die Zeitzone wird anhand von Telefonsignalen ermittelt.
Geräte mit mehreren Nutzern
Da einige der Einstellungen auf den aktuellen Nutzer beschränkt sind, kann sich das Verhalten der Zeitzonenerkennung eines Geräts ändern, wenn sich der aktuelle Nutzer auf einem Android-Gerät mit mehreren Nutzern ändert.
Die Ein/Aus-Schaltfläche Standort zum Festlegen der Zeitzone verwenden bezieht sich auf den aktuellen Nutzer und wird nicht durch eine Geräterichtlinie eingeschränkt. Das bedeutet, dass Nutzer den Wert immer ändern können, auch wenn die Ein/Aus-Schaltfläche Zeitzone automatisch festlegen deaktiviert ist oder wenn der Device Policy Controller andere Zeit- oder Zeitzonensteuerungen eingeschränkt hat.
Geräte, die nur den Algorithmus zur Zeitzonenerkennung des Standorts unterstützen
In diesem Abschnitt wird das Verhalten auf Geräten beschrieben, die nur den Standortalgorithmus unterstützen.
Android 14 und höher
- Die Option Standort verwenden wird Nutzern in der App „AOSP-Einstellungen“ nicht angezeigt und das Gerät verhält sich so, als wäre die Option Standort verwenden aktiviert.
- Der Wert der
SettingsProvider
-Einstellunglocation_time_zone_detection_enabled
auf Nutzerebene wird ignoriert. Dieser Wert gibt die Einstellung des Nutzers auf anderen Gerätetypen an.
Android 12 oder Android 13
- Die Option Standort verwenden ist für Nutzer in der AOSP-Einstellungs-App sichtbar und kann von ihnen deaktiviert werden. Wenn die Option deaktiviert ist, erkennt das Gerät die Zeitzone nicht automatisch.
Verhalten beim Wechsel zur und von der automatischen Erkennung
Wenn der Nutzer die Zeitzonenerkennung von manuell zu automatisch wechselt, weiß time_zone_detector
möglicherweise bereits, wie die aktuelle Zeitzone ist. Wenn ja, wird die Zeitzone des Geräts möglicherweise gleichzeitig geändert, wenn der Nutzer die automatische Erkennung aktiviert, damit sie mit der Meinung des time_zone_detector
-Dienstes übereinstimmt.
Wenn der Nutzer eine Änderung in den Einstellungen vornimmt, die zu einer Änderung am aktuellen Algorithmus des time_zone_detector
-Dienstes führt, hat time_zone_detector
möglicherweise bereits Vorschläge für den neuen Algorithmus erhalten. Daher wird die Zeit des Geräts möglicherweise sofort so geändert, dass sie der Meinung des time_zone_detector
-Dienstes entspricht.
Zeitzonenerkennung für Telefonie
Bei der Erkennung der Telefoniezeitzone werden Telefoniesignale verwendet, um die aktuelle Zeitzone zu ermitteln. Weitere Informationen finden Sie unter Erkennung von Telefoniezeitzonen.
Zeitzone anhand des Standorts bestimmen
Die Zeitzonenerkennung ist unter Android 12 oder höher verfügbar. Dies ist eine optionale Funktion zur automatischen Zeitzonenerkennung, mit der Geräte ihren Standort verwenden können, um die aktuelle Zeitzone zu ermitteln.
Der location_time_zone_manager
-Dienst, der in Android 12 eingeführt wurde, wird auf dem Systemserver ausgeführt und enthält den Code, der für das Einreichen von Vorschlägen für Standortalgorithmen an den time_zone_detector
-Dienst verantwortlich ist.
Weitere Informationen finden Sie unter Zeitzonenerkennung.
Hinweise zur Akzeptanz von Funktionen
In diesem Abschnitt werden Aspekte der Funktion zur Zeitzonenerkennung des Standorts beschrieben, damit Gerätehersteller feststellen können, ob sie die Funktion auf einem Gerät verwenden sollen.
Telefonie und Standorterkennung vergleichen
In der folgenden Tabelle werden die Vor- und Nachteile der Verwendung von Standortdaten anstelle von Telefoniesignalen zur Zeitzonenerkennung verglichen.
Telefonieerkennung | Standorterkennung | |
---|---|---|
Richtigkeit | Das variiert je nach Land. Abhängig von der MCC, der Richtigkeit und Verfügbarkeit der NITZ. |
Abhängig von der Funktionskonfiguration oder den Plug-in-Komponenten. Die Richtigkeit variiert in der Regel je nach:
|
Aktualisierbarkeit | Die Telefonieerkennung basiert auf Dateien, die im aktualisierbaren Zeitzonendatenmodul (com.android.tzdata APEX) enthalten sind. | Abhängig von der Funktionskonfiguration oder den Plug-in-Komponenten. Die Aktualisierungen hängen in der Regel davon ab, ob das Gerät Zeitzonenkartendaten vom Server oder Client verwendet. Hinweis: Zeitzonenkartendaten sind nicht im Zeitzonendatenmodul enthalten, das zum Aktualisieren der TZDB-Kopie und anderer Zeitzoneninformationen von Android verwendet wird. Außerdem müssen die Gerätehersteller die Versionskonsistenz zwischen den Zeitzonenregeln und den Zeitzonenzuordnungsdaten berücksichtigen. |
Stromverbrauch | Kein oder geringer Energieverbrauch | Das hängt von den Standorteinstellungen des Nutzers, den verwendeten Plug-ins und in der Regel davon ab, welche anderen Apps den Standort anfordern. |
Verfügbarkeit | Nur Telefoniegeräte. Erfordert normalerweise eine funktionierende SIM-Karte. | Die Standorterkennung hängt von den verfügbaren Standortanbietern ab. |
Datenschutz
Die bevorzugte Zeitzone eines Nutzers wird normalerweise durch seinen geografischen Standort bestimmt. Der Standort umfasst sensible Daten. Nutzer könnten Bedenken haben, 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. Apps können anhand dieser Informationen einen ungefähren Standort des Geräts ableiten.
Die Zeitzonenerkennung kann passiv oder aktiv erfolgen:
- Passiv: Etwas in der Umgebung des Geräts teilt dem Gerät die Zeitzone mit, die in dieser Umgebung verwendet werden soll.
- Aktiv: Das Gerät muss die Zeitzone selbst ermitteln und holt sich dazu je nach Datenschutzeinstellungen und Einwilligung des Nutzers den Standort des Geräts ab. Es kann seinen Standort dann für externe Dienste freigeben. Weitere Informationen zum Datenschutz und zur Einwilligung finden Sie in den nachfolgenden Erläuterungen.
Die passive Erkennung, z. B. mit dem Telefoniealgorithmus, hat keine zusätzlichen Auswirkungen auf die Datensicherheit für Nutzer.
Bei der aktiven Erkennung, z. B. mit dem Standortalgorithmus, wird der Standort des Geräts ermittelt, dem Nutzer möglicherweise nicht zustimmen möchten. Der Standort kann über ein Netzwerk gesendet werden, um die Zeitzonen-ID zu ermitteln.
Der Ansatz von Android für den Datenschutz für die Zeitzonenerkennung bietet dem Nutzer die Möglichkeit, Algorithmen, die wahrscheinlich aktiv sind, einzeln zu deaktivieren. Außerdem hat der Code der AOSP-Plattform keinen direkten Einfluss auf den Standort selbst: Die Standorterkennung und die Zuordnung des Standorts zu Zeitzonen-IDs bleiben den Plug-in-Komponenten überlassen, die von den Geräteherstellern konfiguriert wurden.
Weitere Informationen zu Funktionen zum Schutz der Nutzerdaten finden Sie unter Zeitzonenerkennung.
Konfiguration
Gerätehersteller können den time_zone_detector
-Dienst konfigurieren, um sein Verhalten zu ändern. In diesem Abschnitt werden die Konfigurationsoptionen für das allgemeine Verhalten des Dienstes time_zone_detector
beschrieben. Konfigurationsdetails zu den Algorithmen für die Telefonie- und Zeitzonenerkennung finden Sie unter Erkennung der Telefonie-Zeitzone und Erkennung der Zeitzone des Standorts.
Die AOSP-Basiskonfiguration befindet sich unter frameworks/base/core/res/res/values/config.xml
.
Konfigurationsschlüssel | AOSP-Wert | Beschreibung |
---|---|---|
config_supportTelephonyTimeZoneFallback |
true |
Wenn true , verwendet time_zone_detector den Telefonie-Fallback-Modus. Diese Funktion ist ab Android 13 verfügbar.
|
Standardverhalten des Geräts ändern
In AOSP ist die automatische Zeitzonenerkennung standardmäßig aktiviert und die Einstellung auto_time_zone
ist auf true
gesetzt. Wenn Sie die automatische Zeiterkennung standardmäßig deaktivieren möchten, setzen Sie den in frameworks/base/packages/SettingsProvider/res/values/defaults.xml
definierten Wert von def_auto_time_zone
auf false
.
Wenn Sie eine Sicherung von einem anderen Gerät wiederherstellen, aktualisiert das Framework standardmäßig den Wert der Einstellung auto_time_zone
. Wenn Sie dafür sorgen möchten, dass diese Einstellung nicht aus einer Sicherung wiederhergestellt wird, fügen Sie auto_time_zone
in das in frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml
definierte restore_blocked_global_settings
-Array ein.
Fehlerbehebung und Tests in Zeitzonen
Dieser Abschnitt enthält Informationen zum Debuggen und Testen des Verhaltens des Dienstes time_zone_detector
und anderer Komponenten, die von allen Algorithmen verwendet werden.
Gerät mit dem Dienst „device_config“ konfigurieren
Der device_config
-Dienst ist ein Mechanismus, der unter Android verwendet wird, um ein anpassbares Verhalten mithilfe von Werten zu konfigurieren, die in der Regel über proprietären Code (nicht AOSP) von einem Remote-Server abgerufen werden. Wenn Sie device_config
-Werte für Tests verwenden, insbesondere bei langwierigen manuellen Tests, synchronisiert das Gerät möglicherweise die Flags. Dadurch werden die Flags zurückgesetzt und die für den Test festgelegten Werte gelöscht.
Unter Android 12 oder höher können Sie die Flag-Synchronisierung vorübergehend verhindern:
adb shell cmd device_config set_sync_disabled_for_tests persistent
So stellen Sie die Flaggensynchronisierung nach Tests wieder her:
adb shell cmd device_config set_sync_disabled_for_tests none
Starten Sie das Gerät nach dem Wiederherstellen der Flag-Synchronisierung neu.
Verwenden Sie für weitere Informationen $ adb shell cmd device_config help
.
Mit dem Dienst „time_zone_detector“ interagieren
Um die time_zone_detector
-Konfiguration und den Status des time_zone_detector
-Dienstes anzuzeigen, verwenden Sie:
adb shell cmd time_zone_detector dump
Zusätzliche Befehle zum Debugging und Testen der Zeitzonenerkennung finden Sie hier:
adb shell cmd time_zone_detector help
In der Hilfe werden auch die device_config
-Diensteigenschaften beschrieben, mit denen sich das Verhalten des time_zone_detector
-Dienstes für Tests oder in der Produktion beeinflussen lässt. Weitere Informationen finden Sie unter Geräte mit dem Dienst „device_config“ konfigurieren.
Um die Zeitzonenerkennung prüfen zu können, müssen Tester wissen, welchen Algorithmus von time_zone_detector
verwendet wird. Verwenden Sie eine der folgenden Optionen, um den aktuellen Algorithmus von time_zone_detector
zu verstehen und zu beeinflussen:
- Überprüfen Sie die Einstellungen visuell. Weitere Informationen finden Sie unter Einstellungen für Zeitzonen.
Verwenden Sie die Befehlszeile über ADB:
- Verwenden Sie
adb shell cmd time_zone_detector dump
, um dentime_zone_detector
-Status zu dumpen. - Verwenden Sie andere
time_zone_detector
-Befehle, um die Geräteeinstellungen zu ändern. Weitere Informationen erhalten Sie mitadb shell cmd time_zone_detector help
.
- Verwenden Sie
Im folgenden Beispiel wird die Ausgabe des Befehls adb shell cmd
time_zone_detector dump
dargestellt. Die Informationen zum aktuellen Algorithmus und Dienststatus sind fett formatiert:
$ 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 so interpretiert werden:
Key | Wert |
---|---|
mUserConfigAllowed |
Gibt an, ob der Nutzer durch den Device Policy Controller daran gehindert wird, die Datums- und Uhrzeiteinstellungen zu verwalten. |
mTelephonyDetectionSupported |
Gibt an, ob das Gerät die Zeitzonenerkennung über Telefonie hat. |
mGeoDetectionSupported |
Gibt an, ob das Gerät die Zeitzonenerkennung anhand des Standorts unterstützt. Dies ist der effektive Status basierend auf der Konfiguration und der Anwesenheit von mindestens einem LTZP. |
mAutoDetectionEnabled |
Gibt an, ob die automatische Zeitzonenerkennung aktiviert ist. |
mLocationEnabled |
Ein/Aus-Schaltfläche für den Hauptstandort |
mGeoDetectionEnabled |
Der Algorithmuswechsel: false gibt den Telefoniealgorithmus und true den Standortalgorithmus an. |
Die Informationen zum Vorschlagsverlauf geben an, welche Vorschläge über die Einstellungen (manuell) und von den Telefonie- und Standortalgorithmen gemacht wurden.