Zeitübersicht

Auf dieser Seite wird beschrieben, wie die Zeit- und Zeitzonenerkennung auf Android funktioniert. Dazu gehören die automatische Erkennung von Uhrzeit und Zeitzonen durch Android, Konfigurationsoptionen für Gerätehersteller und Testinformationen.

Übersicht über Uhrzeit und Zeitzonen

Um die Ortszeit eines Benutzers für die Anzeige an Orten wie der Statusleiste zu bestimmen, verfolgt Android zwei verwandte, aber unabhängige Zustände:

  • Die aktuelle Zeit der Unix-Epoche
  • Die aktuelle Zeitzone

Die aktuelle Unix-Epochenzeit und die aktuelle Zeitzone sind geräteweite Zustände, das heißt, sie werden von allen Benutzern eines Geräts gemeinsam genutzt.

Die aktuelle Unix-Epochenzeit ist kein fester Wert. Es wird automatisch aktualisiert, um den Lauf der Zeit widerzuspiegeln. Neben dem normalen Zeitablauf wird die aktuelle Unix-Epochenzeit eines Geräts angepasst, wenn sich herausstellt, dass sie falsch ist, beispielsweise nachdem ein Gerät die Stromversorgung verloren hat.

Die aktuelle Zeitzone bestimmt die Anpassung, die vorgenommen werden muss, um die aktuelle Unix-Epochenzeit in eine lokale Zeit umzuwandeln. Beispielsweise subtrahiert das Gerät im Sommer in Los Angeles 7 Stunden von der aktuellen Unix-Epochenzeit und im Winter 8 Stunden.

Um diese lokalen Zeitberechnungen zu unterstützen, verfügen alle Android-Geräte über eine Datenbank aller globalen Zeitzonenregeln . Weitere Informationen zu Zeitzonenregeln finden Sie unter Zeitzonenregeln .

Wenn ein Benutzer an einen neuen Standort reist, der eine andere Zeitzone verwendet, muss die aktuelle Unix-Epochenzeit nicht angepasst werden, aber der Benutzer möchte normalerweise die Ortszeit und nicht die Zeit an seinem vorherigen Standort sehen. Durch das Ändern der aktuellen Zeitzone wird sichergestellt, dass der richtige Offset auf die aktuelle Unix-Epochenzeit angewendet wird, um die richtige Ortszeit für den neuen Standort anzuzeigen.

Mit AOSP können Benutzer mithilfe der folgenden Mechanismen unabhängig steuern, ob die Uhrzeit und die Zeitzone automatisch für sie eingestellt werden.

  • Automatische Zeiterkennung: Stellt sicher, dass das Gerät über die korrekte aktuelle Unix-Epochenzeit verfügt.
  • Automatische Zeitzonenerkennung: Stellt sicher, dass das Gerät über die richtige aktuelle Zeitzone verfügt.

Automatische Zeiterkennung

Dieser Abschnitt bietet einen Überblick über den time_detector Dienst, der die automatische Zeiterkennung, Benutzerkontrollen, Konfigurationsoptionen und Testdetails verwaltet.

Der time_detector-Dienst

Der Dienst time_detector , der auf Geräten mit Android 10 oder höher vorhanden ist, verwaltet die automatische Zeiterkennung. Es passt die aktuelle Unix-Epochenzeit des Geräts nach Bedarf an, wenn die automatische Zeiterkennung aktiviert ist.

Der Dienst time_detector befindet sich immer in einem von zwei Zuständen: „unsicher “ oder „sicher“ . Der sichere oder unsichere Zustand des Dienstes wird durch Zeitvorschläge bestimmt, die er aus verschiedenen Quellen erhält.

Wenn der time_detector Dienst sicher ist, also einen Vorschlag mit Unix-Epochenzeitinformationen erhalten hat, überschreibt er die aktuelle Unix-Epochenzeit, wenn der Zeitvorschlag von der aktuellen Unix-Epochenzeit abweicht.

Wenn time_detector unsicher ist, wird die aktuelle Zeit nicht überschrieben. Der unsichere Zustand bedeutet normalerweise, dass der Dienst time_detector keine Zeitvorschläge erhalten hat. Der time_detector Dienst wird auch unsicher, wenn die empfangenen Vorschläge als zu alt für die Verwendung angesehen werden. Das Alter der Vorschläge wird berücksichtigt, da Anpassungen mit alten Unix-Epochenzeitvorschlägen auf der abgelaufenen Echtzeituhr auf dem Gerät basieren, von der angenommen wird, dass sie über lange Zeiträume ungenau ist.

Um die aktuelle Unix-Epochenzeit automatisch zu ermitteln, verfügt ein Gerät über verschiedene Quellen, die es nutzen kann. Diese werden in diesem Dokument als Ursprünge bezeichnet. Der time_detector Dienst behandelt Sequenzen von Vorschlägen basierend auf ihrer Herkunft als unterschiedlich.

Der time_detector Dienst ist zustandsbehaftet, was bedeutet, dass er den neuesten Vorschlag jedes Ursprungs aufzeichnet. Neue Vorschläge werden an time_detector gemacht, wenn für einen Ursprung neuere Unix-Epochenzeitinformationen verfügbar sind. Der time_detector Dienst bewertet neue und vorhandene Vorschläge neu und aktualisiert den Gerätestatus, wenn Vorschläge eingehen.

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

  • Die Unix-Epochenzeit ist ein etwas anderes Zeitmesssystem als die UTC-Zeit. Die Konvertierung zwischen beiden erfordert Kenntnisse darüber, wann Schaltsekunden auftreten und wie sie von den Ursprüngen gehandhabt werden.
  • Origins ist möglicherweise nur zu bestimmten Zeiten oder unter bestimmten Umständen verfügbar. Wenn der Ursprung beispielsweise eine Netzwerkkonnektivität erfordert, ist diese möglicherweise nur verfügbar, während das Gerät mit dem Internet verbunden ist.
  • Die Ursprünge sind möglicherweise ungenau oder ungenau oder weisen Fehler auf. Wenn beispielsweise ein Mobilfunkmast die „Weltzeit“ nicht korrekt misst, liefert der Telefonursprung möglicherweise ungenaue Zeitvorschläge.
  • Beim Abrufen der Unix-Epochenzeit können Ungenauigkeiten auftreten. Beispielsweise kann eine Netzwerkverzögerung, Pufferung oder Prozessplanung dazu führen, dass die Unix-Epochenzeit ungenau ist.
  • Die Referenzuhr, die zum Anpassen eines Vorschlags an die seit dem Empfang des Vorschlags verstrichene Zeit verwendet wird, ist möglicherweise ungenau.

Es gibt zwei Hauptzeiterkennungsursprünge, die standardmäßig für die Verwendung in AOSP konfiguriert sind:

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

Ab Android 12 unterstützt Android auch die folgenden Ursprünge, die nicht standardmäßig für die Verwendung konfiguriert sind:

  • GNSS : Verwendet den GPS-Standortanbieter, um eine Zeit von einer GNSS-Quelle zu erhalten.
  • Extern : Allgemeiner Ursprung, der es Geräteherstellern ermöglicht, ihre eigene Unix-Epochenzeitquelle zu integrieren.

Zeit Einstellungen

Benutzer können die automatische Zeiterkennung unter System > Datum und Uhrzeit in der AOSP-Einstellungen-App aktivieren.

Automatische Zeiterkennung in den Einstellungen

Abbildung 1. Automatische Zeiterkennung in den Einstellungen.

In der folgenden Tabelle werden die Benutzersteuerelemente für die Zeiterkennung in der AOSP-Einstellungen-App beschrieben.

*Auf Android 11 und niedriger trägt diese Einstellung die Bezeichnung „ Vom Netzwerk bereitgestellte Zeit verwenden“.

Speicherort der AOSP-Einstellungen Name der AOSP-Einstellungen Umfang Verhalten
System > Datum und Uhrzeit Uhrzeit automatisch einstellen* Alle Nutzer

Ein Umschalter.

Wenn diese Option aktiviert ist , ist das Gerät für die Erkennung der aktuellen Unix-Epochenzeit verantwortlich. Wenn diese Option deaktiviert ist , stehen Benutzern Steuerelemente zur Verfügung, mit denen sie die Uhrzeit des Geräts manuell einstellen können.

Wenn der Benutzer die Zeit manuell eingibt, gibt er seine Ortszeit ein, nicht die Zeit der Unix-Epoche. Die aktuelle Unix-Epochenzeit wird berechnet, indem die aktuelle Zeitzone verwendet wird, um eine Unix-Epochenzeit abzuleiten.

Aufbau

Gerätehersteller können den time_detector Dienst auf verschiedene Weise konfigurieren, z. B. welche Ursprünge verwendet werden sollen und wie die Signale von ihnen priorisiert werden.

Priorisierung des Ursprungs

Ab Android 12 können Gerätehersteller die Konfigurationsdatei core/res/res/values/config.xml ändern, um anzugeben, welche Zeitursprünge in die automatische Zeiterkennung einbezogen werden sollen und mit welcher Priorität time_detector diese Ursprünge berücksichtigt.

Bei Geräten mit Android 11 oder niedriger ist die Ursprungspriorität fest auf ["telephony", "network"] codiert, was bedeutet, dass Telefonvorschläge Vorrang vor Netzwerkvorschlägen haben.

Die Standard-AOSP-Konfiguration lautet wie folgt:

<!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list
     take precedence over lower ones.
     See com.android.server.timedetector.TimeDetectorStrategy for available sources. -->
<string-array name="config_autoTimeSourcesPriority">
    <item>network</item>
    <item>telephony</item>
</string-array>

In Android 12 sind Netzwerk- und Telefonievorschläge standardmäßig als zu verwendende Ursprünge konfiguriert. Vorschläge zur Netzwerkzeit haben Vorrang vor Vorschlägen zur Telefoniezeit. Gerätehersteller können die Reihenfolge der Ursprünge ändern, um zum Verhalten in Android 11 oder niedriger zurückzukehren, wo der Telefonie eine höhere Priorität eingeräumt wird.

Wenn der gültige Vorschlag mit der höchsten Priorität auf wenige Sekunden genau mit der aktuellen Systemuhrzeit des Geräts übereinstimmt, wird die Gerätezeit standardmäßig nicht geändert. Dadurch soll vermieden werden, dass Arbeit für installierte Apps entsteht, die auf die Absicht ACTION_TIME_CHANGED hören.

Die zulässigen Ursprungswerte sind:

Zulässige Zeitgrenzen

Android 14 führt eine obere Zeitgrenze für Zeitvorschläge ein, 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 niedrigere Zeitgrenze eingeführt, die zur Validierung von Zeitvorschlägen verwendet wird, die vom time_detector -Dienst empfangen werden. Der untere Zeitgrenzwert für automatisierte Vorschläge wird anhand des Build-Zeitstempels festgelegt. Dies basiert auf dem Prinzip, dass kein gültiger Zeitpunkt vor der Erstellung des Systemabbilds des Geräts liegen kann. Wenn ein Zeitvorschlag vor der unteren Zeitgrenze liegt, verwirft der time_detector Dienst den Vorschlag, da er nicht gültig sein kann, wenn der Build-Zeitstempel korrekt ist.

Bei Geräten mit Android 11 oder niedriger validiert der time_detector Dienst eingehende Unix-Epochenzeitvorschläge nicht.

Zeit zum Debuggen und Testen

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

Interaktion mit dem time_detector-Dienst

Um die Konfiguration und den Status des time_detector time_detector anzuzeigen, verwenden Sie:

adb shell cmd time_detector dump

Um zusätzliche Befehle zum Debuggen und Testen der Zeitzonenerkennung anzuzeigen, verwenden Sie:

adb shell cmd time_detector help

Die Hilfeausgabe beschreibt auch die Eigenschaften des Diensts „device_config“, die verwendet werden können, um das Verhalten von time_detector zum Testen oder in der Produktion zu beeinflussen. Einzelheiten finden Sie unter Konfigurieren eines Geräts mit dem Dienst „device_config“ .

Um die automatische Zeiterkennung zu validieren, müssen Tester wissen, welche Ursprünge der time_detector Dienst verwendet. Das Folgende ist ein Beispiel für die Ausgabe des Befehls adb shell cmd time_detector dump , wobei die Informationen zum aktuellen Ursprung und Dienststatus fett gedruckt sind:

$ adb shell cmd time_detector dump

TimeDetectorStrategy:
  mLastAutoSystemClockTimeSet=null
  mEnvironment.isAutoTimeDetectionEnabled()=true
  mEnvironment.elapsedRealtimeMillis()=23717241
  mEnvironment.systemClockMillis()=1626707861336
  mEnvironment.systemClockUpdateThresholdMillis()=2000
  mEnvironment.autoTimeLowerBound()=2021-07-19T07:48:05Z(1626680885000)
  mEnvironment.autoOriginPriorities()=[network,telephony]
  Time change log:
    ...
  Telephony suggestion history:
    ...
  Network suggestion history:
    ...
  Gnss suggestion history:
    ...
  External suggestion history:
    ...

Die Informationen können wie folgt interpretiert werden:

Schlüssel Wert
mEnvironment.isAutoTimeDetectionEnabled() Ob die automatische Zeiterkennung aktiviert ist.
mEnvironment.autoTimeLowerBound() Die aktuelle Untergrenze, die zur Validierung von Zeitvorschlägen verwendet wird.
mEnvironment.autoOriginPriorities() Die Herkunft der Nutzung und die Prioritätsreihenfolge.

Das Zeitänderungsprotokoll zeigt Fälle an, in denen der time_detector Dienst die aktuelle Unix-Epochenzeit des Geräts geändert hat.

Die Informationen zum Vorschlagsverlauf geben an, welche Vorschläge von jedem Ursprung gemacht wurden.

Automatische Zeitzonenerkennung

Dieser Abschnitt bietet einen Überblick über den Dienst time_zone_detector , der die automatische Zeitzonenerkennung, Benutzerkontrollen in Einstellungen, Telefonie- und Standortzeitzonenerkennung sowie Testdetails verwaltet.

Der time_zone_detector-Dienst

Der Dienst time_zone_detector , der auf Geräten mit Android 11 oder höher vorhanden ist, verwaltet die automatische Zeitzonenerkennung. Es passt die aktuelle Zeitzone des Geräts nach Bedarf an, wenn die automatische Zeitzonenerkennung aktiviert ist.

Wenn die automatische Zeitzonenerkennung aktiviert ist, kann time_zone_detector einen von zwei Zuständen haben: ungewiss und sicher .

Wenn sich der Dienst time_zone_detector in einem bestimmten Zustand befindet, bedeutet dies, dass der Dienst time_zone_detector starke Zeitzoneninformationen erhalten hat, was dazu führen kann, dass er die aktuelle Zeitzone überschreibt. Wenn es unsicher ist, bedeutet dies, dass es keine Informationen oder nur Informationen mit geringer Zuverlässigkeit erhalten hat, was bedeutet, dass die aktuelle Zeitzone nicht überschrieben wird.

Zu den bestimmten Zuständen des time_zone_detector Dienstes können Zustände gehören, in denen time_zone_detector keine zu verwendenden Zeitzoneninformationen hat oder in denen mehrere Zeitzonen zur Auswahl stehen. Diese Zustände sind wie folgt:

  • Ein bestimmter Staat ohne Zeitzonen liegt vor, wenn sich das Gerät an einem Ort ohne Zeitzone befindet, beispielsweise in internationalen Gewässern oder in einem umstrittenen Gebiet. Dieser Zustand ähnelt einem unsicheren Zustand, zeigt jedoch an, dass time_zone_detector keine weiteren Maßnahmen ergreifen muss, um zu versuchen, die Zeitzone zu bestimmen.
  • Bei Unklarheiten oder Grenzbedingungen wird ein bestimmter Staat mit mehreren Zeitzonen eingegeben. Wenn in diesem Zustand die aktuelle Zeitzone eine der Zeitzonen ist, über time_zone_detector sicher ist, wird die aktuelle Zeitzone unverändert belassen. Andernfalls wird eine der verfügbaren Zeitzonen verwendet. Dies verleiht time_zone_detector ein Element der Klebrigkeit, wenn der Benutzer seine Zeitzone zuvor manuell ausgewählt hat oder wenn sich das Gerät einer Grenze nähert.

Der sichere oder unsichere Zustand des time_zone_detector Dienstes wird durch Zeitzonenvorschläge bestimmt, die von einem Algorithmus gesendet werden.

Im Allgemeinen gibt es zwei Arten von Vorschlägen, die den möglichen Zuständen von time_zone_detector am nächsten kommen: „sicher “ und „unsicher“ . Im Folgenden finden Sie Beispiele für Vorschlagstypen:

  • Typ = uncertain , zoneIds = []

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

    • Der Algorithmus ist sicher, dass es sich bei der Zone um Europa/London handelt.
  • type = certain , zoneIds = [] `

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

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

Der time_zone_detector Dienst behandelt Sequenzen von Vorschlägen basierend auf ihrem Algorithmus als unterschiedlich. Abhängig vom Algorithmus können Vorschläge auch Metadaten enthalten, die angeben, wie sicher der Algorithmus ist.

Der time_zone_detector Dienst ist zustandsbehaftet, was bedeutet, dass er den neuesten Vorschlag jedes Algorithmus aufzeichnet. Neue Vorschläge werden an den Dienst time_zone_detector gesendet, wenn ein vorheriger Vorschlag nicht mehr korrekt ist; Das heißt, wenn ein Algorithmus nun einen anderen Vorschlag hat oder wenn er die Fähigkeit verloren hat, die Zeitzone zu erkennen. Der time_zone_detector Dienst 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 Dienst time_zone_detector verwendet normalerweise einen einzigen Algorithmus, um die Zeitzone zu bestimmen. Wenn der Standortalgorithmus auf einem Gerät unterstützt wird, wird der vom Gerät verwendete Algorithmus basierend auf den vom Benutzer konfigurierten Zeitzoneneinstellungen bestimmt. Wenn der verwendete Algorithmus unsicher wird, welche Zeitzone vorliegt, verwendet time_zone_detector normalerweise keine Vorschläge eines anderen Algorithmus. Vorschläge im Zusammenhang mit Algorithmen, die nicht verwendet werden, können von time_zone_detector im Speicher gehalten werden, werden jedoch nicht verwendet, es sei denn, der Algorithmus ändert sich. Wenn der Benutzer die Einstellungen für die automatische Zeitzonenerkennung ändert und sich der Algorithmus ändert, wird der aktuellste 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 Dienst time_zone_detector den Telefonie-Fallback-Modus . In diesem Modus kann Android vorübergehend Telefonerkennungsvorschläge verwenden, wenn die Standorterkennung die Zeitzone nicht erkennen kann oder wenn die Standorterkennung länger dauert, um die Zeitzone zu erkennen als die Telefonerkennung.

Der Telefonie-Fallback-Modus gilt für Geräte, auf denen sowohl Telefonie als auch Standorterkennung unterstützt werden und bei denen der Benutzer „Standort zum Festlegen der Zeitzone verwenden“ in den Zeitzoneneinstellungen aktiviert hat. Der Modus wird automatisch aktiviert, wenn ein Gerät neu gestartet wird und wenn der Flugmodus deaktiviert ist.

In Android 14 und höher kann ein Telefonie-Fallback über die LTZP-Statusberichts-APIs ausgelöst werden. Das heißt, wenn ein LTZP meldet, dass er unsicher ist und seine Fähigkeit, Standort oder Zeitzone zu erkennen, durch seine Umgebung beeinträchtigt ist, wird der Telefonie-Fallback-Modus ausgelöst.

Im Telefonie-Fallback-Modus verwendet der time_zone_detector Dienst Telefonievorschläge, als ob die Standorterkennung deaktiviert wäre, 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 für den Telefonie-Fallback-Modus finden Sie unter Konfiguration der Zeitzonenerkennung .

Zeitzoneneinstellungen

Benutzer können die Einstellungen für die automatische Zeitzonenerkennung in der AOSP-Einstellungen-App aktivieren und konfigurieren.

Automatische Zeitzonenerkennung in den Einstellungen

Abbildung 2. Automatische Zeitzonenerkennung in den Einstellungen.

In der folgenden Tabelle werden die Benutzersteuerelemente für die Zeitzonenerkennung in der AOSP-Einstellungen-App beschrieben.

*Auf Android 11 und niedriger trägt diese Einstellung die Bezeichnung „ Vom Netzwerk bereitgestellte Zeitzone verwenden“.

Speicherort der AOSP-Einstellungen Name der AOSP-Einstellungen Umfang Verhalten
System > Datum und Uhrzeit Zeitzone automatisch einstellen* Alle Nutzer

Ein Umschalter.

Wenn eingeschaltet , ist das Gerät für die Erkennung der aktuellen Zeitzone verantwortlich. Wenn diese Option deaktiviert ist , stehen Benutzern Steuerelemente zum manuellen Einstellen der Zeitzone des Geräts zur Verfügung.

System > Datum und Uhrzeit Verwenden Sie den Standort , um die Zeitzone festzulegen Aktueller Benutzer

Ein Umschalter.

Verfügbar ab Android 12. Dieser Schalter wird nur angezeigt, wenn die Standort-Zeitzonenerkennung auf dem Gerät unterstützt wird.

Informationen zu den in 14 eingeführten Änderungen finden Sie unter Geräte, die nur die Standort-Zeitzonenerkennung unterstützen .

Standort Standort verwenden Aktueller Benutzer

Ein Umschalter.

Erlaubt oder verhindert generell die Verwendung des Gerätestandorts. Der Wert ist relevant, wenn die Standort-Zeitzonenerkennung auf dem Gerät unterstützt wird.

Im Folgenden finden Sie einen Überblick über das Geräteverhalten bei der Zeitzonenerkennung unter Berücksichtigung der vom Benutzer gewählten Einstellungen:

  • [Datum und Uhrzeit] Zeitzone automatisch einstellen: AUS

    • Der Benutzer muss die Zeitzone manuell auswählen.
  • [Datum und Uhrzeit] Zeitzone automatisch einstellen: EIN

    • [Standort] Standort verwenden: AUS

      • Zur Erkennung der Zeitzone werden Telefonsignale verwendet.
    • [Standort] Standort verwenden: EIN

      • [Datum und Uhrzeit] Verwenden Sie den Standort, um die Zeitzone einzustellen: EIN

        • Der Standort wird zur Ermittlung der Zeitzone verwendet.
      • [Datum und Uhrzeit] Standort zum Einstellen der Zeitzone verwenden: AUS

        • Zur Erkennung der Zeitzone werden Telefonsignale verwendet.

Mehrere Benutzergeräte

Da mehrere der beteiligten Einstellungen auf den aktuellen Benutzer beschränkt sind, kann sich das Zeitzonenerkennungsverhalten eines Geräts ändern, wenn der aktuelle Benutzer auf einem Mehrbenutzer-Android-Gerät wechselt.

Der Schalter „Standort zum Festlegen der Zeitzone verwenden“ ist auf den aktuellen Benutzer beschränkt und wird nicht durch die Geräterichtlinie eingeschränkt. Das bedeutet, dass Benutzer seinen Wert immer ändern können, auch wenn der Schalter „Zeitzone automatisch festlegen“ deaktiviert ist oder andere Zeit- oder Zeitzonensteuerungen vorliegen werden durch den Device Policy Controller eingeschränkt.

Geräte, die nur den Standort-Zeitzonen-Erkennungsalgorithmus 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 Benutzern in der App „AOSP-Einstellungen“ nicht angezeigt und das Gerät verhält sich so, als ob die Option „ Standort verwenden“ aktiviert wäre.
    • Der Wert der benutzerbezogenen SettingsProvider Einstellung location_time_zone_detection_enabled wird ignoriert. Dieser Wert erfasst die Präferenz des Benutzers für andere Gerätetypen.
  • Android 12 oder Android 13

    • Die Option „Standort verwenden“ ist für Benutzer in der AOSP-Einstellungen-App sichtbar und Benutzer können die Option 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 Benutzer die Zeitzonenerkennung von manuell auf automatisch umstellt, ist time_zone_detector möglicherweise bereits sicher, dass die aktuelle Zeitzone vorliegt. Wenn dies der Fall ist, wird möglicherweise gleichzeitig die Zeitzone des Geräts geändert, um der Meinung des time_zone_detector -Dienstes zu entsprechen, wenn der Benutzer die automatische Erkennung aktiviert.

Wenn der Benutzer eine Änderung in den Einstellungen vornimmt, die zu einer Änderung des aktuellen Algorithmus des time_zone_detector Dienstes führt, hat time_zone_detector möglicherweise bereits Vorschläge für den neuen Algorithmus erhalten und daher wird die Zeit des Geräts möglicherweise sofort geändert, um der Meinung des time_zone_detector Dienstes zu entsprechen.

Erkennung der Telefon-Zeitzone

Bei der Telefon-Zeitzonenerkennung werden Telefonsignale verwendet, um die aktuelle Zeitzone zu ermitteln. Weitere Informationen finden Sie unter Zeitzonenerkennung für Telefonie .

Erkennung der Zeitzone des Standorts

Die Standort-Zeitzonenerkennung ist auf Android 12 oder höher verfügbar. Dabei handelt es sich um eine optionale Funktion zur automatischen Zeitzonenerkennung, die es Geräten ermöglicht, anhand ihres Standorts die aktuelle Zeitzone zu ermitteln.

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

Überlegungen zur Funktionseinführung

In diesem Abschnitt werden Aspekte der Standortzeitzonenerkennungsfunktion beschrieben, um einem Gerätehersteller bei der Entscheidung zu helfen, ob die Funktion auf einem Gerät übernommen werden soll.

Vergleich von Telefonie und Standorterkennung

Die folgende Tabelle bietet einen Vergleich der Vor- und Nachteile der Verwendung von Standortsignalen anstelle von Telefonsignalen zur Zeitzonenerkennung.

Telefonerkennung Standorterkennung
Richtigkeit Variiert je nach Land.

Hängt von MCC, NITZ-Korrektheit und Verfügbarkeit ab.
Hängt von der Funktionskonfiguration oder den Plug-in-Komponenten ab.

Die Richtigkeit variiert typischerweise durch:
  • Genauigkeit und Regelmäßigkeit des Standortanbieters.
  • Die Qualität der Zeitzonenkartendaten.
Aktualisierbarkeit Die Telefonerkennung basiert auf Dateien, die im aktualisierbaren Zeitzonendatenmodul (com.android.tzdata APEX) enthalten sind. Hängt von der Funktionskonfiguration oder den Plug-in-Komponenten ab.

Die Aktualisierbarkeit hängt in der Regel davon ab, ob das Gerät Server- oder Client-Zeitzonenkartendaten verwendet.

Hinweis: Zeitzonenkartendaten sind nicht im Zeitzonendatenmodul enthalten, das zum Aktualisieren der Android-Kopie von TZDB und anderen Zeitzoneninformationen verwendet wird.

Die Gerätehersteller müssen außerdem die Versionskonsistenz zwischen den Zeitzonenregeln und den Zeitzonenkartendaten berücksichtigen.
Stromverbrauch Kein oder geringer Stromverbrauch Hängt von den Standorteinstellungen des Benutzers, den verwendeten Plug-Ins und normalerweise den Standortanforderungen anderer Apps ab.
Verfügbarkeit Nur Telefongeräte. Normalerweise ist eine funktionierende SIM-Karte erforderlich. Die Standorterkennung hängt von den verfügbaren Standortanbietern ab.
Privatsphäre der Benutzer

Die bevorzugte Zeitzone eines Benutzers wird normalerweise durch seinen geografischen Standort bestimmt. Beim Standort handelt es sich um sensible Daten. Benutzer haben möglicherweise Bedenken, dass ihr Standort im Rahmen der Zeitzonenerkennung weitergegeben wird. Unabhängig von der Zeitzonenerkennung können alle auf einem Gerät ausgeführten Apps die aktuelle Zeitzone des Geräts lesen, ohne dass eine Android-Berechtigung erforderlich ist, und Apps können aus diesen Informationen eine ungenaue Vorstellung vom Standort des Geräts ableiten.

Genauer gesagt kann die Zeitzonenerkennung auf passive oder aktive Weise erfolgen:

  • Passiv: Etwas in der Umgebung des Geräts teilt dem Gerät mit, welche Zeitzone es in dieser Umgebung verwenden soll.
  • Aktiv: Das Gerät muss die Zeitzone selbst ermitteln und holt sich dazu abhängig von den Privatsphäre-Einstellungen des Nutzers und dessen Einwilligung den Standort des Geräts. Anschließend kann es seinen Standort mit externen Diensten teilen. Weitere Informationen zum Datenschutz und zur Einwilligung des Benutzers finden Sie in der Diskussion unten.

Die passive Erkennung, beispielsweise mit dem Telefonalgorithmus, hat keine zusätzlichen Auswirkungen auf die Privatsphäre der Benutzer.

Bei der aktiven Erkennung, beispielsweise mit dem Standortalgorithmus, wird der Standort des Geräts ermittelt, dem Benutzer möglicherweise nicht zustimmen möchten. Der Standort kann über ein Netzwerk gesendet werden, um die Zeitzonen-ID zu ermitteln.

Der Android-Ansatz zum Datenschutz der Benutzer bei der Zeitzonenerkennung gibt dem Benutzer die Möglichkeit, Algorithmen, die voraussichtlich aktiv sind, individuell zu deaktivieren. Darüber hinaus befasst sich der AOSP-Plattformcode nicht direkt mit dem Standort selbst: Die Standorterkennung und die Zuordnung des Standorts zu Zeitzonen-IDs werden Plug-in-Komponenten überlassen, die von Geräteherstellern konfiguriert werden.

Weitere Einzelheiten zu den Datenschutzfunktionen der Benutzer finden Sie unter Standort-Zeitzonenerkennung .

Aufbau

Gerätehersteller können den Dienst time_zone_detector konfigurieren, um sein Verhalten zu ändern. In diesem Abschnitt werden Konfigurationsoptionen für das allgemeine Verhalten des time_zone_detector -Dienstes beschrieben. Konfigurationsdetails für die Telefonie- und Zeitzonenerkennungsalgorithmen finden Sie unter Telefonie-Zeitzonenerkennung und Standort-Zeitzonenerkennung .

Die Basis-AOSP-Konfiguration befindet sich unter frameworks/base/core/res/res/values/config.xml .

Konfigurationsschlüssel AOSP-Wert Beschreibung
config_supportTelephonyTimeZoneFallback true Bei true verwendet time_zone_detector den Telefonie-Fallback-Modus. Dies ist für Android 13 und höher verfügbar.

Ändern des Standardverhaltens des Geräts

In AOSP ist die automatische Zeitzonenerkennung standardmäßig aktiviert, wobei die Einstellung auto_time_zone auf true gesetzt ist. Um die automatische Zeiterkennung standardmäßig zu deaktivieren, setzen Sie den Wert von def_auto_time_zone , der in frameworks/base/packages/SettingsProvider/res/values/defaults.xml definiert ist, auf false .

Beim Wiederherstellen einer Sicherung von einem anderen Gerät aktualisiert das Framework standardmäßig den Wert der Einstellung auto_time_zone . Wenn Sie sicherstellen möchten, dass diese Einstellung nicht aus einer Sicherung wiederhergestellt wird, schließen Sie auto_time_zone in das Array restore_blocked_global_settings “ ein, das in frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml definiert ist.

Debuggen und Testen der Zeitzone

Dieser Abschnitt enthält Informationen zum Debuggen und Testen des Verhaltens des time_zone_detector Dienstes und anderer Komponenten, die von allen Algorithmen gemeinsam genutzt werden.

Konfigurieren eines Geräts mit dem Dienst „device_config“.

Der Dienst device_config ist ein Mechanismus, der unter Android verwendet wird, um veränderbares Verhalten mithilfe von Werten zu konfigurieren, die normalerweise durch proprietären Code (nicht AOSP) von einem Remote-Server abgerufen werden. Wenn Sie device_config Werte zum Testen verwenden, insbesondere bei manuellen Tests mit langer Laufzeit, synchronisiert das Gerät möglicherweise die Flags, wodurch die Flags zurückgesetzt und die zum Testen festgelegten Werte gelöscht werden.

Um in Android 12 oder höher die Flag-Synchronisierung vorübergehend zu verhindern, verwenden Sie Folgendes:

adb shell cmd device_config set_sync_disabled_for_tests persistent

Um die Flag-Synchronisierung nach Tests wiederherzustellen, verwenden Sie:

adb shell cmd device_config set_sync_disabled_for_tests none

Starten Sie das Gerät nach dem Wiederherstellen der Flag-Synchronisierung neu.

Für weitere Informationen verwenden Sie $ adb shell cmd device_config help .

Interaktion mit dem time_zone_detector-Dienst

Um die time_zone_detector Konfiguration und den Status des time_zone_detector -Dienstes anzuzeigen, verwenden Sie:

adb shell cmd time_zone_detector dump

Um zusätzliche Befehle zum Debuggen und Testen der Zeitzonenerkennung anzuzeigen, verwenden Sie:

adb shell cmd time_zone_detector help

Die Hilfeausgabe beschreibt auch die Eigenschaften des Diensts device_config , die verwendet werden können, um das Verhalten des Diensts time_zone_detector für Tests oder in der Produktion zu beeinflussen. Einzelheiten finden Sie unter Konfigurieren eines Geräts mit dem Dienst „device_config“ .

Um die Zeitzonenerkennung zu validieren, müssen Tester wissen, welchen Algorithmus der time_zone_detector verwendet. Um den aktuellen Algorithmus des time_zone_detector zu verstehen und zu beeinflussen, verwenden Sie eine der folgenden Optionen:

  • Überprüfen Sie dies visuell über die Benutzeroberfläche „Einstellungen“. Weitere Informationen finden Sie unter Zeitzoneneinstellungen .
  • Verwenden Sie die Befehlszeile über adb:

    • Um den time_zone_detector Status auszugeben, verwenden Sie adb shell cmd time_zone_detector dump
    • Um die Geräteeinstellung zu ändern, verwenden Sie andere time_zone_detector Befehle. Weitere Informationen finden Sie in adb shell cmd time_zone_detector help .

Das Folgende ist ein Beispiel für die Ausgabe des Befehls adb shell cmd time_zone_detector dump , wobei die Informationen zum aktuellen Algorithmus und Dienststatus fett gedruckt sind:

$ adb shell cmd time_zone_detector dump
TimeZoneDetectorStrategy:
  mEnvironment.getCurrentUserId()=0
  mEnvironment.getConfiguration(currentUserId)=ConfigurationInternal{mUserId=0, mUserConfigAllowed=true, mTelephonyDetectionSupported=true, mGeoDetectionSupported=true, mAutoDetectionEnabled=true, mLocationEnabled=true, mGeoDetectionEnabled=true}
  [Capabilities=TimeZoneCapabilitiesAndConfig{mCapabilities=TimeZoneDetectorCapabilities{mUserHandle=UserHandle{0}, mConfigureAutoDetectionEnabledCapability=40, mConfigureGeoDetectionEnabledCapability=40, mSuggestManualTimeZoneCapability=30}, mConfiguration=TimeZoneConfiguration{mBundle=Bundle[{geoDetectionEnabled=true, autoDetectionEnabled=true}]}}]
  mEnvironment.isDeviceTimeZoneInitialized()=true
  mEnvironment.getDeviceTimeZone()=Europe/London
  Time zone change log:
  Manual suggestion history:
...
  Geolocation suggestion history:
...
  Telephony suggestion history:
...

Die Informationen können wie folgt interpretiert werden:

Schlüssel Wert
mUserConfigAllowed Ob der Benutzer durch den Device Policy Controller daran gehindert wird, Datums- und Uhrzeiteinstellungen zu steuern.
mTelephonyDetectionSupported Ob das Gerät über eine Telefon-Zeitzonenerkennung verfügt.
mGeoDetectionSupported Ob das Gerät die Standortzeitzonenerkennung unterstützt. Dies ist der effektive Zustand basierend auf der Konfiguration und dem Vorhandensein mindestens eines LTZP.
mAutoDetectionEnabled Ob die automatische Zeitzonenerkennung aktiviert ist.
mLocationEnabled Der Hauptstandort wird umgeschaltet.
mGeoDetectionEnabled Der Algorithmusschalter: false gibt den Telefonalgorithmus an und true gibt den Standortalgorithmus an.

Die Informationen zum Vorschlagsverlauf geben an, welche Vorschläge über die Einstellungen (manuell) sowie über die Telefonie- und Standortalgorithmen gemacht wurden.