Zeitübersicht

Auf dieser Seite wird beschrieben, wie die Zeitzonenerkennung unter 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-Epochen-Zeit
  • 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-Epochen-Zeit ist kein fester Wert. Sie wird automatisch aktualisiert, um den Verlauf der Zeit widerzuspiegeln. Abgesehen vom normalen Zeitaufwand wird die Zeit der UNIX-Epoche eines Geräts angepasst, wenn es falsch ist, z. B. wenn ein Gerät nicht mehr mit Strom versorgt wird.

Die aktuelle Zeitzone bestimmt die Anpassung, die vorgenommen wird, um die aktuelle Unix-Epochenzeit in eine Ortszeit umzuwandeln. Beispiel: In Los Angeles im Sommer zieht das Gerät 7 Stunden von der aktuellen Unix-Epochenzeit ab und 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 verreist, in dem eine andere Zeitzone verwendet wird, muss die aktuelle Unix-Epochenzeit nicht angepasst werden. Normalerweise möchte der Nutzer jedoch 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, damit die korrekte Ortszeit für den neuen Ort angezeigt wird.

Mit AOSP können Nutzer selbst steuern, ob Uhrzeit und Zeitzone über die folgenden Mechanismen automatisch für sie eingestellt werden.

  • Automatische Zeiterkennung: Sorgt dafür, dass auf dem Gerät die korrekte aktuelle Unix-Epochen-Zeit angezeigt wird.
  • Automatische Zeitzonenerkennung: sorgt dafür, dass auf dem Gerät die richtige Zeitzone festgelegt 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 auf Geräten mit Android 10 oder höher 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, wird die aktuelle Unix-Epochenzeit überschrieben, wenn sich der Vorschlag von der aktuellen Unix-Epochenzeit unterscheidet.

Wenn time_detector unsicher ist, wird die aktuelle Uhrzeit nicht überschrieben. Dieser 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.

Geräte können verschiedene Quellen verwenden, um die aktuelle Unix-Epochen-Zeit automatisch festzulegen. In diesem Dokument werden diese als Ursprünge bezeichnet. Der time_detector-Dienst behandelt Abfolgen von Vorschlägen je nach 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 wertet neue und vorhandene Vorschläge neu aus und aktualisiert den Gerätestatus, wenn Vorschläge empfangen werden.

Obwohl weltweit die UTC-Zeit vereinbart wird, gibt es verschiedene Gründe, warum die Festlegung der aktuellen Unix-Epochen-Zeit für ein Android-Gerät nicht immer einfach ist:

  • Die Unixzeit unterscheidet sich geringfügig von der 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 ungenau 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, Zwischenspeicherung 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.

Automatische Zeiterkennung in den Einstellungen

Abbildung 1: Automatische Zeiterkennung in den Einstellungen.

In der folgenden Tabelle werden die Nutzersteuerelemente zur Zeiterkennung in der AOSP Settings 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/Aus-Schaltfläche

Wenn diese Option aktiviert ist, ist das Gerät für die Erkennung der aktuellen Unix-Epochen-Zeit zuständig. Wenn sie 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 anhand der aktuellen Zeitzone berechnet, um eine Unix-Epochenzeit zu ermitteln.

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 Telefonievorschläge als Ursprünge konfiguriert, die standardmäßig verwendet werden sollen. 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 der aktuellen Systemzeit des Geräts auf wenige Sekunden entspricht, wird die Gerätezeit standardmäßig nicht geändert. Dadurch vermeiden Sie, dass Arbeit für installierte Anwendungen entsteht, die den Intent ACTION_TIME_CHANGED überwachen.

Die zulässigen Ursprungswerte sind:

Zulässige zeitliche Grenzen

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 für automatische Vorschläge verwendete untere Zeitgrenzwert wird vom Build-Zeitstempel ausgehend 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.

Bei Geräten mit Android 11 oder niedriger prüft der time_detector-Dienst eingehende Unix-Zeitvorschläge für die Unix-Epoche nicht.

Zeit zum Debuggen und Testen

Dieser Abschnitt enthält Informationen zum Debuggen und Testen des Verhaltens des Dienstes time_detector und anderer Komponenten, die von allen Ursprüngen gemeinsam genutzt werden.

Mit dem „time_Detector“-Dienst interagieren

So rufen Sie die Konfiguration und den Status des Dienstes time_detector auf:time_detector

adb shell cmd time_detector dump

Zusätzliche Befehle zum Debugging und Testen der Zeitzonenerkennung finden Sie hier:

adb shell cmd time_detector help

Die Hilfeausgabe beschreibt auch die Attribute des Dienstes „device_config“, mit denen das Verhalten von time_detector zu Test- oder Produktionszwecken 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 Dienst time_detector verwendet. Das folgende Beispiel zeigt die Ausgabe des Befehls adb shell cmd time_detector dump. Die Informationen zu dem aktuellen Ursprungs- 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 mit tollem Preis-Leistungs-Verhältnis
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-Epochen-Zeit des Geräts geändert hat.

Die Informationen zum Vorschlagsverlauf geben an, welche Vorschläge von den einzelnen Quellen gemacht wurden.

Automatische Zeitzonenerkennung

Dieser Abschnitt bietet eine Übersicht über den time_zone_detector-Dienst, der die automatische Zeitzonenerkennung, Nutzersteuerung in den Einstellungen, die Telefonie- und Standorterkennung der Zeitzone 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 den Status unsicher und gewiss haben.

Wenn sich der time_zone_detector-Dienst in einem bestimmten Status befindet, bedeutet dies, dass der time_zone_detector-Dienst aussagekräftige Zeitzoneninformationen erhalten hat. Dies kann dazu führen, 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.

Die bestimmten Status des time_zone_detector-Dienstes können solche umfassen, in denen time_zone_detector keine Zeitzoneninformationen zur Auswahl hat oder zwischen 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. In diesem Status wird die aktuelle Zeitzone beibehalten, wenn die aktuelle Zeitzone eine der Zeitzonen ist, die time_zone_detector bekannt ist. Andernfalls wird eine der verfügbaren Zeitzonen verwendet. Dadurch erhält time_zone_detector ein Element der Fixierung, wenn der Nutzer zuvor manuell seine Zeitzone ausgewählt hat oder wenn sich das Gerät einem Rahmen 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 sehr ähnlich sind: bestimmt und unbestimmt. Im Folgenden finden Sie Beispiele für Vorschlagstypen:

  • Typ = uncertain, zoneIds = []

    • Der Algorithmus kennt die Zeitzone nicht.
  • Typ = certain, zoneIds = ["Europe/London"]

    • Dem Algorithmus zufolge liegt die Zone mit Sicherheit in Europa/London.
  • Typ = certain, zoneIds = []

    • Der Algorithmus ist sicher, aber dem aktuellen Standort ist keine Zonen-ID zugeordnet.
  • Typ = certain, zoneIds = ["America/Denver", "America/Phoenix"]

    • Der Algorithmus ist sicher, dass die Antwort eine von zwei Zonen ist, kann jedoch nicht zwischen „America/Denver“ und „America/Phoenix“ wählen.

Der time_zone_detector-Dienst behandelt Abfolgen von Vorschlägen basierend auf ihrem 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 Dienst time_zone_detector gesendet, wenn ein vorheriger Vorschlag nicht mehr korrekt ist, d. h. wenn ein Algorithmus jetzt einen anderen Vorschlag hat oder die Zeitzone nicht mehr erkannt werden 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 zur Zeitzonenerkennung:

  • Telefonie
  • Standort

Der time_zone_detector-Dienst verwendet normalerweise einen einzelnen Algorithmus zur Bestimmung der Zeitzone. 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.

Einzelheiten zur Situation, in der mehrere Algorithmen zur Bestimmung der Zeitzone verwendet werden, finden Sie unter Telefonie-Fallback-Modus.

Telefonie-Fallback-Modus

Auf Geräten mit Android 13 und höher unterstützt der time_zone_detector-Dienst den Telefonie-Fallback-Modus. In diesem Modus kann Android vorübergehend Vorschläge zur Telefonieerkennung verwenden, wenn die Zeitzone nicht von der Standorterkennung erkannt werden kann oder wenn die Erkennung der Zeitzone bei der Standorterkennung länger dauert als bei der Telefonieerkennung.

Der Telefonie-Fallback-Modus gilt für Geräte, auf denen sowohl Telefonie als auch die Standorterkennung unterstützt werden und 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 das Telefonie-Fallback über die LTZP-Statusberichts-APIs ausgelöst werden. Wenn ein LTZP also eine unsichere Situation meldet und seine Fähigkeit zur Erkennung des Standorts oder der Zeitzone durch seine Umgebung eingeschränkt ist, wird der Telefonie-Fallback-Modus ausgelöst.

Im Telefonie-Fallback-Modus verwendet der time_zone_detector-Dienst Telefonievorschläge so, als wäre die Standorterkennung deaktiviert, bis der Standortalgorithmus einen bestimmten Vorschlag macht. Nach Erhalt eines bestimmten Vorschlags wird der Telefonie-Fallback-Modus deaktiviert und es werden ausschließlich Standortvorschläge verwendet.

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

Automatische Zeitzonenerkennung in den Einstellungen

Abbildung 2: Automatische Zeitzonenerkennung in den Einstellungen.

In der folgenden Tabelle werden die Nutzersteuerelemente zur 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 sie 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/Aus-Schaltfläche

Verfügbar ab Android 12. Diese Ein/Aus-Schaltfläche wird nur angezeigt, wenn die Zeitzonenerkennung des Standorts auf dem Gerät unterstützt wird.

Die in Version 14 eingeführten Änderungen finden Sie unter Geräte, die nur die Zeitzonenerkennung unterstützen.

Standort Standort verwenden Aktueller Nutzer

Ein/Aus-Schaltfläche

Ermöglicht oder verhindert allgemein die Nutzung des Gerätestandorts. Der Wert ist relevant, wenn auf dem Gerät die Zeitzonenerkennung unterstützt wird.

Im Folgenden finden Sie einen Überblick über das Geräteverhalten für die Zeitzonenerkennung anhand der vom Nutzer ausgewählten Einstellungen:

  • [Date and Time] Zeitzone automatisch einstellen: AUS

    • Der Nutzer muss die Zeitzone manuell auswählen.
  • [Date and Time] Zeitzone automatisch einstellen: AN

    • [Location] Standort verwenden:AUS

      • Telefoniesignale werden verwendet, um die Zeitzone zu erkennen.
    • [Standort] Standort verwenden:AN

      • [Datum und Uhrzeit] Zeitzone anhand des Standorts festlegen:AN

        • Anhand des Standorts wird die Zeitzone ermittelt.
      • [Datum und Uhrzeit] Zeitzone anhand des Standorts festlegen:AUS

        • Telefoniesignale werden verwendet, um die Zeitzone zu erkennen.

Mehrere Nutzergeräte

Da einige der beteiligten Einstellungen auf den aktuellen Nutzer beschränkt sind, kann sich das Verhalten zur Zeitzonenerkennung eines Geräts ändern, wenn der aktuelle Nutzer die Einstellungen 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 von 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-Einstellung location_time_zone_detection_enabled auf Nutzerebene wird ignoriert. Dieser Wert erfasst die Präferenz des Nutzers auf anderen Gerätetypen.
  • Android 12 oder Android 13

    • Die Option Standort verwenden ist für Nutzer in der App „AOSP Settings“ (AOSP-Einstellungen) sichtbar und kann deaktiviert werden. Wenn die Option deaktiviert ist, erkennt das Gerät die Zeitzone nicht automatisch.

Verhalten beim Wechsel zur automatischen Erkennung

Wenn der Nutzer die Zeitzonenerkennung von manuell zu automatisch wechselt, weiß time_zone_detector möglicherweise bereits, wie die aktuelle Zeitzone ist. In diesem Fall kann die Zeitzone des Geräts, wenn der Nutzer die automatische Erkennung aktiviert, gleichzeitig geändert werden, um der Meinung des time_zone_detector-Dienstes zu entsprechen.

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 Telefonie-Zeitzone wird die aktuelle Zeitzone anhand von Telefoniesignalen ermittelt. Weitere Informationen finden Sie unter Erkennung der Telefoniezeitzone.

Zeitzone anhand des Standorts bestimmen

Die Zeitzonenerkennung ist unter Android 12 oder höher verfügbar. Es ist eine optionale Funktion zur automatischen Zeitzonenerkennung, mit der Geräte anhand ihres Standorts die aktuelle Zeitzone ermitteln können.

Der in Android 12 eingeführte location_time_zone_manager-Dienst wird auf dem Systemserver ausgeführt und enthält den Code, der für das Senden von Standortalgorithmusvorschlägen an den time_zone_detector-Dienst verantwortlich ist. Weitere Informationen finden Sie unter Zeitzonenerkennung für Standorte.

Überlegungen zur Übernahme von Funktionen

In diesem Abschnitt werden Aspekte der Funktion zur Zeitzonenerkennung für Standorte 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.

Je nach Verwaltungskonto sowie NITZ-Richtigkeit und -Verfügbarkeit.
Hängt von der Funktionskonfiguration oder den Plug-in-Komponenten ab.

Die Richtigkeit variiert in der Regel nach folgenden Kriterien:
  • Genauigkeit und Regelmäßigkeit des Standortanbieters
  • Die Qualität der Daten der Zeitzonenkarte.
Aktualisierbarkeit Die Telefonieerkennung 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 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.

Die Gerätehersteller müssen außerdem die Versionskonsistenz zwischen den Zeitzonenregeln und den Zeitzonenkartendaten berücksichtigen.
Stromverbrauch Kein Energieverbrauch oder geringerer Energieverbrauch Das hängt von den Standorteinstellungen des Nutzers, den verwendeten Plug-ins und von den Anforderungen anderer Apps ab.
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 sind möglicherweise besorgt, dass im Rahmen der Zeitzonenerkennung ihr Standort geteilt wird. Unabhängig von der Zeitzonenerkennung können alle Apps, die auf einem Gerät ausgeführt werden, die aktuelle Zeitzone des Geräts lesen, ohne dass eine Android-Berechtigung erforderlich ist. Außerdem können Apps aus diesen Informationen eine ungenaue Vorstellung vom Gerätestandort ableiten.

Genauer gesagt, kann die Zeitzonenerkennung passive oder aktive Methoden haben:

  • Passiv: Ein Element in der Geräteumgebung teilt dem Gerät die Zeitzone mit, die in dieser Umgebung verwendet werden soll.
  • Aktiv: Das Gerät muss die Zeitzone für sich selbst bestimmen und je nach Datenschutzeinstellungen des Nutzers und dessen Einwilligung erhält er dafür den Standort des Geräts. Der Standort kann dann an externe Dienste weitergegeben werden. Weitere Informationen zum Datenschutz und zur Einwilligung finden Sie in den nachfolgenden Erläuterungen.

Die passive Erkennung, z. B. beim Telefoniealgorithmus, hat keine zusätzlichen Auswirkungen auf den Datenschutz 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 für den Datenschutz für Nutzer finden Sie unter Zeitzonenerkennung für Standorte.

Konfiguration

Gerätehersteller können den time_zone_detector-Dienst so konfigurieren, dass sein Verhalten geändert wird. 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 für Android 13 und höher verfügbar.

Standardverhalten des Geräts ändern

In AOSP ist die automatische Zeitzonenerkennung standardmäßig aktiviert, wobei die Einstellung auto_time_zone auf true gesetzt ist. 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 eine Sicherung von einem anderen Gerät wiederhergestellt wird, aktualisiert das Framework standardmäßig den Wert der Einstellung auto_time_zone. Damit 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 Array restore_blocked_global_settings 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 Dienst device_config ist ein Mechanismus, der unter Android verwendet wird, um änderbares Verhalten mit Werten zu konfigurieren, die normalerweise mit proprietärem Code (kein AOSP-Code) von einem Remoteserver abgerufen werden. Wenn device_config-Werte zu Testzwecken verwendet werden, insbesondere bei lang andauernden manuellen Tests, synchronisiert das Gerät die Flags möglicherweise. In diesem Fall werden die Flags zurückgesetzt und die für den Test festgelegten Werte gelöscht.

Verwenden Sie ab Android 12 Folgendes, um die Flag-Synchronisierung vorübergehend zu verhindern:

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.

Weitere Informationen erhalten Sie mit $ 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

Die Hilfeausgabe beschreibt auch die device_config-Dienstattribute, mit denen das Verhalten des time_zone_detector-Dienstes zu Testzwecken oder in der Produktion beeinflusst werden kann. Weitere Informationen finden Sie unter Gerät 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:

  • Sehen Sie sich die Einstellungen in den Einstellungen an. Weitere Informationen finden Sie unter Zeitzoneneinstellungen.
  • Verwenden Sie die Befehlszeile über ADB:

    • Zum Dump des Status time_zone_detector verwenden Sie adb shell cmd time_zone_detector dump
    • Verwenden Sie andere time_zone_detector-Befehle, um die Geräteeinstellungen zu ändern. Weitere Informationen erhalten Sie mit adb shell cmd time_zone_detector help.

Das folgende Beispiel zeigt die Ausgabe des Befehls adb shell cmd time_zone_detector dump. 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 folgendermaßen interpretiert werden:

Key mit tollem Preis-Leistungs-Verhältnis
mUserConfigAllowed Gibt an, ob der Nutzer die Datums- und Uhrzeiteinstellungen durch den Device Policy Controller nicht steuern darf.
mTelephonyDetectionSupported Gibt an, ob das Gerät die Zeitzonenerkennung über Telefonie hat.
mGeoDetectionSupported Gibt an, ob das Gerät die Zeitzonenerkennung unterstützt Dies ist der effektive Status basierend auf der Konfiguration und dem Vorhandensein 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.