Auf dieser Seite wird beschrieben, wie die Erkennung von Zeit und Zeitzone auf Android funktioniert. Dazu gehört, wie Android automatisch Zeit und Zeitzonen erkennt, 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, verfolgt Android zwei zusammenhängende, aber unabhängige Status:
- Die aktuelle Unix-Epochenzeit
- Die aktuelle Zeitzone
Die aktuelle Unix-Epochenzeit und die aktuelle Zeitzone sind geräteübergreifende Status. Das bedeutet, dass sie von allen Nutzern eines Geräts gemeinsam verwendet werden.
Die aktuelle Unix-Epochenzeit ist kein fester Wert. Es wird automatisch aktualisiert, um den Zeitablauf widerzuspiegeln. Neben dem normalen Zeitablauf wird die aktuelle Unix-Epochenzeit eines Geräts angepasst, wenn sie als falsch erkannt wird, z. B. 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 Ortszeit umzuwandeln. Im Sommer in Los Angeles zieht das Gerät beispielsweise 7 Stunden von der aktuellen Unix-Epochenzeit ab, im Winter 8 Stunden.
Zur Unterstützung dieser Berechnungen der Ortszeit enthalten alle Android-Geräte eine Datenbank mit allen globalen Zeitzonenregeln. Weitere Informationen zu Zeitzonenregeln finden Sie unter Zeitzonenregeln.
Wenn ein Nutzer an einen neuen Ort reist, an dem eine andere Zeitzone gilt, muss die aktuelle Unix-Epochenzeit nicht angepasst werden. Der Nutzer möchte jedoch in der Regel die Ortszeit und nicht die Zeit an seinem vorherigen Standort sehen. Wenn Sie die aktuelle Zeitzone ändern, wird der richtige Offset auf die aktuelle Unix-Epochenzeit angewendet, um die richtige Ortszeit für den neuen Standort anzuzeigen.
AOSP ermöglicht es Nutzern, unabhängig zu steuern, ob die Uhrzeit und Zeitzone automatisch für sie festgelegt werden. Dazu werden die folgenden Mechanismen verwendet.
- Automatische Zeiterkennung: Sorgt dafür, dass auf dem Gerät die aktuelle Unix-Epochenzeit eingestellt ist.
- Automatische Zeitzonenerkennung: Sorgt dafür, dass auf dem Gerät die richtige aktuelle Zeitzone eingestellt ist.
Automatische Erkennung der Uhrzeit
In diesem Abschnitt finden Sie eine Übersicht über den time_detector
-Dienst, der die automatische Zeiterkennung, Nutzersteuerung, Konfigurationsoptionen und Testdetails verwaltet.
Der Dienst „time_detector“
Der Dienst time_detector
, der auf Geräten mit Android 10 oder höher verfügbar ist, verwaltet die automatische Zeiterkennung. Sie passt die aktuelle Unix-Epochenzeit des Geräts bei Bedarf an, wenn die automatische Zeiterkennung aktiviert ist.
Der Dienst time_detector
befindet sich immer in einem von zwei Status: certain
oder uncertain
. Der sichere oder unsichere Status des Dienstes wird durch Zeitvorschläge bestimmt, die er aus verschiedenen Quellen erhält.
Wenn der time_detector
-Dienst sicher ist, d. h., wenn er einen Vorschlag mit Informationen zur Unix-Epochenzeit erhalten hat, wird die aktuelle Unix-Epochenzeit überschrieben, wenn sich der Zeitvorschlag von der aktuellen Unix-Epochenzeit unterscheidet.
Wenn time_detector
unsicher ist, wird die aktuelle Zeit nicht überschrieben. Der Status „Ungewiss“ bedeutet in der Regel, dass der time_detector
-Dienst keine Zeitvorschläge erhalten hat. Der Dienst time_detector
wird auch unsicher, wenn Vorschläge, die er erhalten hat, als zu alt für die Verwendung gelten. Das Alter von Vorschlägen wird berücksichtigt, da Anpassungen mit alten Vorschlägen für die Unix-Epochenzeit auf der verstrichenen Echtzeituhr auf dem Gerät beruhen, die über lange Zeiträume hinweg als ungenau gilt.
Um die aktuelle Unix-Epochenzeit automatisch zu ermitteln, kann ein Gerät verschiedene Quellen verwenden. In diesem Dokument werden sie als Ursprünge bezeichnet. Der Dienst time_detector
behandelt Vorschlagsfolgen je nach Herkunft als unterschiedlich.
Der time_detector
-Dienst ist zustandsbehaftet. Das bedeutet, dass er den letzten Vorschlag jedes Ursprungs beibehält. Für time_detector
werden neue Vorschläge gemacht, wenn für einen Ursprung aktuellere Informationen zur Unix-Epochenzeit verfügbar sind. Der Dienst time_detector
bewertet neue und vorhandene Vorschläge neu und aktualisiert den Gerätestatus, wenn Vorschläge empfangen werden.
Obwohl die UTC international vereinbart ist, gibt es verschiedene Gründe, warum die aktuelle Unix-Epochenzeit für ein Android-Gerät nicht immer einfach zu ermitteln ist:
- Die Unix-Epochenzeit ist ein leicht abweichendes Zeitmesssystem als die UTC-Zeit. Für die Umrechnung zwischen den beiden ist es erforderlich, zu wissen, wann Schaltsekunden auftreten und wie sie von Ursprüngen behandelt werden.
- Die Herkunft ist möglicherweise nur zu bestimmten Zeiten oder unter bestimmten Umständen verfügbar. Wenn für den Ursprung beispielsweise eine Netzwerkverbindung erforderlich ist, ist er möglicherweise nur verfügbar, wenn das Gerät mit dem Internet verbunden ist.
- Die Quellenangaben können ungenau oder unpräzise sein oder Fehler enthalten. Wenn beispielsweise ein Mobilfunkmast die UTC-Zeit nicht richtig erfasst, können die Zeitvorschläge des Telefonie-Ursprungs ungenau sein.
- Beim Abrufen der Unixzeit können Ungenauigkeiten auftreten. Beispielsweise können eine Netzwerkverzögerung, das Puffern oder die 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.
In AOSP sind standardmäßig zwei Hauptquellen für die Zeiterkennung konfiguriert:
- Netzwerk:Verwendet NTP-Zeitserver (Network Time Protocol).
- Telefonie:Verwendet NITZ-Telefonsignale (Network Identity and Time Zone).
Sowohl Telefonie- als auch Netzwerkursprünge erfordern eine Verbindung zu externen Netzwerken, die nicht immer verfügbar ist.
Ab Android 12 werden auch die folgenden Ursprünge unterstützt, die nicht standardmäßig für die Verwendung konfiguriert sind:
- GNSS:Verwendet den GPS-Standortanbieter, um eine Zeit von einer GNSS-Quelle abzurufen.
- Extern:Generischer Ursprung, der es Geräteherstellern ermöglicht, ihre eigene Quelle für die Unixzeit zu integrieren.
Zeiteinstellungen
Nutzer können die automatische Zeiterkennung in den AOSP-Einstellungen 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-Einstellungen-App beschrieben.
*Unter Android 11 und niedriger wird diese Einstellung als Vom Netzwerk bereitgestellte Zeit verwenden bezeichnet. |
|||
Speicherort der AOSP-Einstellungen | Name der AOSP-Einstellungen | Umfang | 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-Epochenzeit verantwortlich. Wenn die Option Aus ausgewählt ist, können Nutzer die Uhrzeit des Geräts manuell einstellen. |
Wenn der Nutzer die Zeit manuell eingibt, gibt er seine Ortszeit und nicht die Unix-Epochenzeit ein. Die aktuelle Unix-Epochenzeit wird berechnet, indem aus der aktuellen Zeitzone eine Unix-Epochenzeit abgeleitet wird.
Konfiguration
Gerätehersteller können den time_detector
-Dienst auf verschiedene Arten konfigurieren, z. B. welche Quellen verwendet werden sollen und wie die Signale aus diesen Quellen priorisiert werden sollen.
Priorisierung von Ursprüngen
Ab Android 12 können Gerätehersteller die Konfigurationsdatei core/res/res/values/config.xml
ändern, um festzulegen, welche Zeitquellen in die automatische Zeiterkennung einbezogen werden sollen und mit welcher Priorität time_detector
diese Quellen berücksichtigt.
Bei Geräten mit Android 11 oder niedriger ist die Priorität des Ursprungs fest auf ["telephony", "network"]
festgelegt. Das bedeutet, dass Telefonievorschläge gegenüber Netzwerkvorschlägen priorisiert werden.
Die AOSP-Standardkonfiguration 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 Telefonievorschläge als Standardursprünge konfiguriert. Vorschläge für die Netzwerkzeit haben Vorrang vor Vorschlägen für die 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 Vorschlag mit der höchsten Priorität innerhalb weniger Sekunden mit der aktuellen Systemuhrzeit des Geräts übereinstimmt, wird die Gerätezeit standardmäßig nicht geändert. So wird verhindert, dass für installierte Apps, die auf den Intent ACTION_TIME_CHANGED
reagieren, unnötige Arbeit anfällt.
Zulässige Ursprungswerte:
Zulässige Zeitgrenzen
In Android 14 wird eine obere Zeitgrenze für Zeitvorschläge eingeführt, die vom time_detector
-Dienst empfangen werden. Wenn das Gerät 32-Bit-Prozesse unterstützt, legt das Framework eine obere Zeitgrenze fest, um zu verhindern, dass das Gerät einen Zeitvorschlag verwendet, der das Y2038-Problem auslösen könnte.
Mit Android 12 wurde eine untere Zeitgrenze eingeführt, die zum Validieren von Zeitvorschlägen verwendet wird, die vom time_detector
-Dienst empfangen werden. Der untere Zeitgrenzwert, der für automatische Vorschläge verwendet wird, wird anhand des Build-Zeitstempels festgelegt. Das funktioniert, weil eine gültige Zeit nicht vor dem Erstellen des System-Image des Geräts liegen kann. Wenn ein Zeitvorschlag vor dem unteren Zeitlimit liegt, wird er vom time_detector
-Dienst verworfen, da er bei korrektem Build-Zeitstempel nicht gültig sein kann.
Bei Geräten mit Android 11 oder niedriger werden eingehende Vorschläge für die Unix-Epochenzeit vom time_detector
-Dienst nicht validiert.
Zeit für Debugging und Tests
In diesem Abschnitt finden Sie Informationen zum Debuggen und Testen des Verhaltens des time_detector
-Dienstes und anderer Komponenten, die von allen Ursprüngen gemeinsam genutzt werden.
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
Verwenden Sie den folgenden Befehl, um zusätzliche Befehle für die Fehlerbehebung und das Testen der Zeitzonenerkennung aufzurufen:
adb shell cmd time_detector help
In der Hilfeausgabe werden auch die device_config
-Diensteigenschaften beschrieben, mit denen das Verhalten von time_detector
für Tests oder in der Produktion beeinflusst werden kann.
Weitere Informationen finden Sie unter Gerät mit dem Dienst „device_config“ konfigurieren.
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_detector dump
, wobei die Informationen zum aktuellen Ursprungs- und Dienststatus fett formatiert 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 so 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. |
Das Zeitänderungsprotokoll gibt an, wann der time_detector
-Dienst die aktuelle Unix-Epochenzeit des Geräts geändert hat.
Die Informationen zum Vorschlagverlauf geben an, welche Vorschläge von den einzelnen Quellen gemacht wurden.
Automatische Zeitzonenerkennung
In diesem Abschnitt finden Sie einen Überblick über den time_zone_detector
-Dienst, der die automatische Zeitzonenerkennung, die Nutzersteuerung in den Einstellungen, die Zeitzonenerkennung für Telefonie und Standort sowie Testdetails verwaltet.
Der Dienst „time_zone_detector“
Der Dienst time_zone_detector
, der auf Geräten mit Android 11 oder höher vorhanden ist, verwaltet die automatische Zeitzonenerkennung. Sie passt die aktuelle Zeitzone des Geräts bei Bedarf an, wenn die automatische Zeitzonenerkennung aktiviert ist.
Wenn die automatische Zeitzonenerkennung aktiviert ist, kann time_zone_detector
einen von zwei Status haben: certain
und uncertain
.
Wenn sich der Dienst time_zone_detector
in einem bestimmten Zustand befindet, bedeutet das, dass der Dienst time_zone_detector
genaue Zeitzoneninformationen erhalten hat, die dazu führen können, dass die aktuelle Zeitzone überschrieben wird. Wenn der Wert „Uncertain“ lautet, bedeutet das, dass keine oder nur Informationen mit geringer Konfidenz empfangen wurden. In diesem Fall wird die aktuelle Zeitzone nicht überschrieben.
Die bestimmten Status des time_zone_detector
-Dienstes können auch solche umfassen, in denen time_zone_detector
keine Zeitzoneninformationen zur Verfügung hat oder in denen mehrere Zeitzonen zur Auswahl stehen. Die Statuswerte sind:
- Ein bestimmter Status mit null Zeitzonen wird eingegeben, wenn sich das Gerät an einem Ort ohne Zeitzone befindet, z. B. in internationalen Gewässern oder in einem umstrittenen Gebiet.
Dieser Status ähnelt dem Status „Uncertain“, gibt aber an, dass
time_zone_detector
keine weiteren Maßnahmen ergreifen muss, um die Zeitzone zu ermitteln. - Ein bestimmter Status mit mehreren Zeitzonen wird erreicht, in dem es Unklarheiten oder Grenzbedingungen gibt. Wenn die aktuelle Zeitzone in diesem Zustand eine der Zeitzonen ist, die
time_zone_detector
kennt, bleibt sie unverändert. Andernfalls wird eine der verfügbaren Zeitzonen verwendet. Dadurch wirdtime_zone_detector
ein gewisser Grad an Beständigkeit verliehen, wenn der Nutzer seine Zeitzone zuvor manuell ausgewählt hat oder wenn sich das Gerät einer Grenze nähert.
Der bestimmte oder ungewisse Status des Dienstes time_zone_detector
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
entsprechen: certain
und uncertain
. Hier einige Beispiele für Vorschlagstypen:
type =
uncertain
,zoneIds = []
- Der Algorithmus weiß nicht, welche Zeitzone verwendet wird.
type =
certain
,zoneIds = ["Europe/London"]
- Der Algorithmus ist sich sicher, dass die Zeitzone Europe/London ist.
type =
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 sich aber nicht zwischen America/Denver und America/Phoenix entscheiden.
Im Dienst time_zone_detector
werden Vorschlagssequenzen basierend auf dem Algorithmus als unterschiedlich behandelt. Je nach Algorithmus können Vorschläge auch Metadaten enthalten, die angeben, wie sicher der Algorithmus ist.
Der time_zone_detector
-Dienst ist zustandsbehaftet. Das bedeutet, dass er die letzte Empfehlung 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
bewertet neue und vorhandene Vorschläge neu und aktualisiert den Gerätestatus, wenn Vorschläge eingehen.
Android unterstützt zwei Algorithmen zur Zeitzonenerkennung:
- Telefonie
- Standort
Der time_zone_detector
-Dienst verwendet in der Regel einen einzelnen Algorithmus, um die Zeitzone zu bestimmen. Wenn der Standortalgorithmus auf einem Gerät unterstützt wird, hängt der vom Gerät verwendete Algorithmus von den vom Nutzer konfigurierten Zeitzoneneinstellungen ab. Wenn der verwendete Algorithmus sich nicht sicher ist, welche Zeitzone verwendet werden soll, werden in time_zone_detector
in der Regel keine Vorschläge von einem anderen Algorithmus verwendet. 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 erst 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 Vorschlag verwendet, der für den neuen Algorithmus verfügbar ist.
Weitere Informationen dazu, wann mehrere Algorithmen verwendet werden, um die Zeitzone zu bestimmen, finden Sie unter Telefonie-Fallbackmodus.
Telefonie-Fallbackmodus
Auf Geräten mit Android 13 und höher unterstützt der time_zone_detector
-Dienst den Telefonie-Fallbackmodus. In diesem Modus kann Android vorübergehend Vorschläge zur Telefonieerkennung verwenden, wenn die Zeitzone nicht über die Standorterkennung ermittelt werden kann oder die Standorterkennung länger dauert als die Telefonieerkennung.
Der Telefonie-Fallback-Modus gilt für Geräte, die sowohl Telefonie als auch Standortermittlung unterstützen und auf denen der Nutzer in den Zeitzoneneinstellungen die Option Standort zum Festlegen der Zeitzone verwenden aktiviert hat. Der Modus wird automatisch aktiviert, wenn ein Gerät neu gestartet wird und der Flugmodus deaktiviert ist.
In Android 14 und höher kann der Telefonie-Fallback über die LTZP-Status-APIs ausgelöst werden. Das heißt, wenn ein LTZP meldet, dass es unsicher ist und seine Fähigkeit, den Standort oder die Zeitzone zu erkennen, durch seine Umgebung beeinträchtigt wird, wird der Telefonie-Fallback-Modus ausgelöst.
Im Telefonie-Fallbackmodus verwendet der time_zone_detector
-Dienst Telefonievorschläge, als ob die Standorterkennung deaktiviert ist, bis der Standortalgorithmus einen bestimmten Vorschlag macht. Nachdem Sie einen bestimmten Vorschlag erhalten haben, wird der Telefonie-Fallbackmodus 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 AOSP-Einstellungs-App aktivieren und konfigurieren.
Abbildung 2: Automatische Zeitzonenerkennung in den Einstellungen
In der folgenden Tabelle werden die Nutzereinstellungen für die Zeitzonenerkennung in der AOSP-Einstellungen App beschrieben.
*Unter Android 11 und niedriger heißt diese Einstellung Vom Netzwerk angegebene Zeitzone verwenden. |
|||
Speicherort der AOSP-Einstellungen | Name der AOSP-Einstellungen | Umfang | Verhalten |
---|---|---|---|
System > Datum und Uhrzeit | Zeitzone automatisch einstellen* | Alle Nutzer | Ein Schalter. Wenn die 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 Ein/Aus-Schaltfläche wird nur angezeigt, wenn die Zeitzonenerkennung anhand des Standorts auf dem Gerät unterstützt wird. Informationen zu Änderungen in Android 14 finden Sie unter Geräte, die nur die Zeitzonenerkennung anhand des Standorts unterstützen. |
deinen Standort zugegriffen haben | Standort verwenden | Aktueller Nutzer | Ein Schalter. Ermöglicht oder verhindert die allgemeine Verwendung des Gerätestandorts. Der Wert ist relevant, wenn die Zeitzonenerkennung anhand des Standorts auf dem Gerät unterstützt wird. |
Im Folgenden finden Sie einen Überblick über das Geräteverhalten bei der Zeitzonenerkennung in Abhängigkeit von den vom Nutzer gewählten Einstellungen:
[Datum und Uhrzeit] Zeitzone automatisch einstellen:AUS
- Der Nutzer muss die Zeitzone manuell auswählen.
[Datum und Uhrzeit] Zeitzone automatisch einstellen:AN
[Standort] Standort verwenden:AUS
- Telefonsignale werden zur Erkennung der Zeitzone verwendet.
[Standort] Standort verwenden:AN
[Datum und Uhrzeit] Zeitzone anhand des Standorts festlegen:AN
- Der Standort wird verwendet, um die Zeitzone zu erkennen.
[Datum und Uhrzeit] Zeitzone anhand des Standorts festlegen:AUS
- Telefonsignale werden zur Erkennung der Zeitzone verwendet.
Geräte mit mehreren Nutzern
Da sich mehrere der beteiligten Einstellungen auf den aktuellen Nutzer beziehen, kann sich das Verhalten der Zeitzonenerkennung eines Geräts ändern, wenn der aktuelle Nutzer auf einem Android-Gerät mit mehreren Nutzern gewechselt wird.
Die Ein/Aus-Schaltfläche Standort zum Festlegen der Zeitzone verwenden gilt für den aktuellen Nutzer und wird nicht durch die Geräterichtlinie eingeschränkt. Nutzer können ihren Wert also jederzeit ändern, auch wenn die Ein/Aus-Schaltfläche Zeitzone automatisch festlegen deaktiviert ist oder andere Zeit- oder Zeitzoneneinstellungen durch den Device Policy Controller eingeschränkt werden.
Geräte, die nur den Algorithmus zur Zeitzonenerkennung anhand des Standorts unterstützen
In diesem Abschnitt wird das Verhalten für Geräte beschrieben, die nur den Standortalgorithmus unterstützen.
Android 14 und höher
- Die Option Standort verwenden wird Nutzern in der AOSP-Einstellungs-App nicht angezeigt und das Gerät verhält sich so, als wäre die Option Standort verwenden aktiviert.
- Der Wert der einheitlichen Einstellung
SettingsProvider
location_time_zone_detection_enabled
wird ignoriert. Mit diesem Wert wird die Einstellung des Nutzers auf anderen Gerätetypen erfasst.
Android 12 oder Android 13
- Die Option Standort verwenden ist für Nutzer in der AOSP-Einstellungs-App sichtbar und sie können sie deaktivieren. 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 auf automatisch umstellt, ist sich time_zone_detector
möglicherweise bereits der aktuellen Zeitzone sicher. Wenn ja, kann sich die Zeitzone des Geräts ändern, wenn der Nutzer die automatische Erkennung aktiviert, um der Meinung des time_zone_detector
-Dienstes zu entsprechen.
Wenn der Nutzer in den Einstellungen eine Änderung vornimmt, die zu einer Änderung des aktuellen Algorithmus des time_zone_detector
-Dienstes führt, hat time_zone_detector
möglicherweise bereits Vorschläge für den neuen Algorithmus erhalten. Die Zeit des Geräts wird dann möglicherweise sofort an die Meinung des time_zone_detector
-Dienstes angepasst.
Erkennung der Zeitzone für Telefonie
Bei der Zeitzonenerkennung für die Telefonie wird anhand von Telefonsignalen die aktuelle Zeitzone ermittelt. Weitere Informationen finden Sie unter Zeitzonenerkennung für Telefonie.
Zeitzone anhand des Standorts bestimmen
Die Zeitzonenerkennung anhand des Standorts ist auf Geräten mit Android 12 oder höher verfügbar. Diese optionale Funktion zur automatischen Zeitzonenerkennung ermöglicht es Geräten, 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 das Senden von Vorschlägen für Standortalgorithmen an den Dienst time_zone_detector
verantwortlich ist. Weitere Informationen finden Sie unter Erkennung der Zeitzone des Standorts.
Hinweise zur Akzeptanz von Funktionen
In diesem Abschnitt werden Aspekte der Funktion zur Erkennung der Zeitzone anhand des Standorts beschrieben, damit Gerätehersteller entscheiden können, ob sie die Funktion auf einem Gerät einführen möchten.
Telefonie und Standorterkennung vergleichen
In der folgenden Tabelle werden die Vor- und Nachteile der Verwendung von Standort- statt Telefoniesignalen für die Zeitzonenerkennung verglichen.
Kategorie | Erkennung von Telefonie | Standorterkennung |
---|---|---|
Richtigkeit | Das variiert je nach Land. Hängt vom MCC, der NITZ-Richtigkeit und der Verfügbarkeit ab. |
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 Aktualisierbarkeit hängt in der Regel davon ab, ob auf dem Gerät Server- oder Client-Zeitzonenkartendaten verwendet werden. Die Kartendaten für Zeitzonen sind nicht im Modul für Zeitzonendaten enthalten, das zum Aktualisieren der Android-Kopie der TZDB und anderer Zeitzoneninformationen verwendet wird. Die Gerätehersteller müssen auch die Versionskonsistenz zwischen den Zeitzonenregeln und den Zeitzonenkartendaten 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. Dazu ist in der Regel eine funktionierende SIM-Karte erforderlich. | Die Standorterkennung hängt von den verfügbaren Standortanbietern ab. |
Datenschutz
Die bevorzugte Zeitzone eines Nutzers wird in der Regel durch seinen geografischen Standort bestimmt. Standort ist eine sensible Information. Nutzer könnten Bedenken haben, dass ihr Standort im Rahmen der Zeitzonenerkennung weitergegeben wird. Unabhängig von der Zeitzonenerkennung können alle Apps, die auf einem Gerät ausgeführt werden, die aktuelle Zeitzone des Geräts ohne Android-Berechtigung lesen. Aus diesen Informationen können Apps einen ungenauen Standort des Geräts ableiten.
Die Zeitzonenerkennung kann auf passive oder aktive Weise 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 ruft dazu je nach den Datenschutzeinstellungen und der Einwilligung der Nutzer den Standort des Geräts ab. Anschließend kann es seinen Standort an externe Dienste weitergeben. Weitere Informationen zum Datenschutz und zur Einwilligung von Nutzern finden Sie unten.
Die passive Erkennung, z. B. mit dem Telefoniealgorithmus, hat keine zusätzlichen Auswirkungen auf den Datenschutz der Nutzer.
Bei der aktiven Erkennung, z. B. mit dem Standortalgorithmus, wird der Standort des Geräts ermittelt. Nutzer stimmen dem möglicherweise nicht zu. Der Standort kann über ein Netzwerk gesendet werden, um die Zeitzonen-ID zu ermitteln.
Der Ansatz von Android in Bezug auf den Datenschutz bei der Zeitzonenerkennung gibt dem Nutzer die Möglichkeit, einzelne Algorithmen zu deaktivieren, die voraussichtlich aktiv sind. Außerdem befasst sich der AOSP-Plattformcode nicht direkt mit dem Standort selbst: Die Standorterkennung und die Zuordnung des Standorts zu Zeitzonen-IDs werden von Plug-in-Komponenten übernommen, die von Geräteherstellern konfiguriert werden.
Weitere Informationen zu den Datenschutzfunktionen für Nutzer finden Sie unter Zeitzonenerkennung für Standorte.
Konfiguration
Gerätehersteller können den time_zone_detector
-Dienst 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 Zeitzonenerkennungsalgorithmen finden Sie unter Zeitzonenerkennung für Telefonie und Zeitzonenerkennung für Standort.
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-Fallbackmodus. 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
festgelegt. Wenn Sie die automatische Zeiterkennung standardmäßig deaktivieren möchten, setzen Sie den Wert von def_auto_time_zone
, der in frameworks/base/packages/SettingsProvider/res/values/defaults.xml
definiert ist, auf false
.
Wenn Sie eine Sicherung von einem anderen Gerät wiederherstellen, wird der Wert der Einstellung auto_time_zone
standardmäßig vom Framework aktualisiert. Wenn Sie verhindern möchten, dass diese Einstellung aus einer Sicherung wiederhergestellt wird, fügen 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.
Zeitzone debuggen und testen
In diesem Abschnitt finden Sie Informationen zum Debuggen und Testen des Verhaltens des time_zone_detector
-Dienstes und anderer Komponenten, die von allen Algorithmen gemeinsam genutzt werden.
Gerät mit dem Dienst „device_config“ konfigurieren
Der device_config
-Dienst ist ein Mechanismus, der auf Android verwendet wird, um modifizierbares Verhalten mithilfe von Werten zu konfigurieren, die in der Regel von proprietärem (nicht AOSP-)Code von einem Remote-Server abgerufen werden. Wenn Sie device_config
-Werte für Tests verwenden, insbesondere bei manuellen Tests, die lange dauern, kann es sein, dass das Gerät die Flags synchronisiert. Dadurch werden die Flags zurückgesetzt und die für Tests festgelegten Werte gelöscht.
In Android 12 oder höher können Sie die Synchronisierung von Flags vorübergehend verhindern:
adb shell cmd device_config set_sync_disabled_for_tests persistent
So stellen Sie die Synchronisierung von Flags nach Tests wieder her:
adb shell cmd device_config set_sync_disabled_for_tests none
Starte das Gerät neu, nachdem du die Synchronisierung von Flags wiederhergestellt hast.
Weitere Informationen finden Sie unter $ adb shell cmd device_config help
.
Mit dem Dienst „time_zone_detector“ interagieren
So rufen Sie die Konfiguration und den Status des time_zone_detector
-Dienstes auf:time_zone_detector
adb shell cmd time_zone_detector dump
Verwenden Sie den folgenden Befehl, um zusätzliche Befehle für die Fehlerbehebung und das Testen der Zeitzonenerkennung aufzurufen:
adb shell cmd time_zone_detector help
In der Hilfeausgabe werden auch die device_config
-Diensteigenschaften beschrieben, mit denen das Verhalten des time_zone_detector
-Dienstes für Tests oder in der Produktion beeinflusst werden kann. Weitere Informationen finden Sie unter Gerät mit dem Dienst „device_config“ konfigurieren.
Um die Zeitzonenerkennung zu validieren, müssen Tester wissen, welchen Algorithmus die time_zone_detector
verwendet. Wenn Sie den aktuellen Algorithmus der time_zone_detector
nachvollziehen und beeinflussen möchten, haben Sie folgende Möglichkeiten:
- Überprüfen Sie die Einstellungen visuell über die Benutzeroberfläche. Weitere Informationen finden Sie unter Zeitzoneneinstellungen.
Befehlszeile über adb verwenden:
- Verwenden Sie
adb shell cmd time_zone_detector dump
, um den Status vontime_zone_detector
zu sichern. - Verwenden Sie andere
time_zone_detector
-Befehle, um die Geräteeinstellung zu ändern. Weitere Informationen finden Sie unteradb shell cmd time_zone_detector help
.
- Verwenden Sie
Das Folgende ist ein Beispiel für die Ausgabe des Befehls adb shell cmd
time_zone_detector dump
. Die Informationen zum aktuellen Algorithmus und Dienststatus sind fett dargestellt:
$ 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 Einstellungen für Datum und Uhrzeit zu ändern. |
mTelephonyDetectionSupported |
Gibt an, ob das Gerät die Zeitzone anhand der Telefonie erkennen kann. |
mGeoDetectionSupported |
Gibt an, ob das Gerät die Zeitzonenerkennung anhand des Standorts unterstützt. Dies ist der effektive Status basierend auf der Konfiguration und dem Vorhandensein mindestens einer LTZP. |
mAutoDetectionEnabled |
Gibt an, ob die automatische Zeitzonenerkennung aktiviert ist. |
mLocationEnabled |
Der Hauptschalter für den Standort. |
mGeoDetectionEnabled |
Der Algorithmuswechsel: false steht für den Telefoniealgorithmus und true für den Standortalgorithmus. |
Die Informationen im Vorschlagverlauf geben an, welche Vorschläge über die Einstellungen (manuell) sowie durch die Telefonie- und Standortalgorithmen gemacht wurden.