Die automatische Zeiterkennung erhält Zeitvorschläge aus verschiedenen Quellen und wählt die und stellt dann die Systemuhr in Android entsprechend ein. Frühere Android-Releases bereitgestellt Es gibt zwei Möglichkeiten, Datum und Uhrzeit einzustellen, entweder manuell pro Nutzer oder durch die automatische Zeiterkennung. mit einer der folgenden Optionen:
telephony
verwendet NITZ-Telefoniesignale (Network Identity and Time Zone).network
verwendet NTP-Zeitserver (Network Time Protocol).
Für jede Option sind Verbindungen zu externen Netzwerken erforderlich, die unter Android nicht immer verfügbar sind. Autos So sind zum Beispiel in einigen Ländern manche Autos keine integrierte Telefoniefunktion. Dementsprechend wird Die Zeit des Global Satellite Navigation Systems (GNSS) wird als Systemquelle zur Verfügung gestellt. die Sie verwenden können, wenn keine Netzwerkverbindung verfügbar ist.
Diese neue Android-Version bietet zwei weitere Optionen zum automatischen Erkennen und Einstellen der Uhrzeit:
gnss
verwendet Global Satellite Navigationssysteme (GNSS):external
verwendet eine VHAL-Eigenschaft oder die System API.
Automatische Zeiterkennung aktivieren
Um die automatische Zeiterkennung zu aktivieren, wählen Sie Einstellungen > Datum und Zeit > Automatisches Datum & Zeit:
Abbildung 1. Wählen Sie „Automatisches Datum“ und Uhrzeit
Zeitquellen konfigurieren
Um festzulegen, welche Zeitquellen in die automatische Zeiterkennung einbezogen werden sollen, sowie die Priorität
in denen diese Zeitquellen berücksichtigt werden sollen, müssen Sie die Geräteressource
Konfigurationsdatei core/res/res/values/config.xml
:
<!-- 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>telephony</item> <item>network</item> </string-array>
In diesem Beispiel werden telephony
und network
in folgenden Fällen betrachtet:
automatische Zeiterkennung und telephony
Zeitvorschläge werden priorisiert
network
Terminvorschlägen voraus.
Im Allgemeinen werden Vorschläge aus einer Quelle mit höherer Priorität ignoriert, wenn der Vorschlag ist entweder ungültig oder der Vorschlag ist zu alt. Wenn der gültige Vorschlag mit der höchsten Priorität entspricht der aktuellen Systemuhrzeit des Geräts auf wenige Sekunden (Standardwert zwei (2) Sekunden beträgt, bleibt die Zeit unverändert.
Untere Zeitgrenze
Android 12 bietet eine neue niedrigere Zeitgrenze für den Fall, dass der Validierung von Zeitvorschlägen. Vor dieser Funktion konnte die automatische Zeiterkennung den vorgeschlagene eingehende UTC-Zeit. Mit dieser Funktion werden Zeiten, die vor der Untergrenze liegen, verworfen.
Der untere Grenzwert wird anhand eines Datums bestimmt, das aus dem Build-Zeitstempel abgeleitet wird. Das funktioniert auf Das Prinzip, dass vor dem Erstellen des System-Images keine gültige Zeit auftreten kann. Android tut Folgendes nicht: eine Obergrenze durchsetzen.
GNSS-Zeitvorschläge
Die Zeitquelle „gnss
“ ist in Android 12 neu und wird von GPS-Signalen bereitgestellt. Dies ist
eine zuverlässige Quelle für Zeiten, in denen telephony
und network
nicht verfügbar sind.
Diese Option wird der neuen GnssTimeUpdateService
in
SystemServer, der passiv auf Standortaktualisierungen wartet. Wenn ein gültiger Standort empfangen wird,
GnssTimeUpdateService
macht TimeDetectorService
einen Vorschlag,
bestimmt dann, ob die Systemuhr aktualisiert werden soll.
Standardmäßig ist die Zeitquelle gnss
in AOSP nicht aktiviert und daher
muss von Partnern aktiviert werden:
<!-- 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>telephony</item> <item>network</item> <item>gnss</item> </string-array> <!-- Enables the GnssTimeUpdate service. This is the global switch for enabling Gnss time based suggestions to TimeDetector service. See also config_autoTimeSourcesPriority. --> <bool name="config_enableGnssTimeUpdateService">true</bool>
So aktivieren Sie diese Funktion:
config_enableGnssTimeUpdateService
aktualisieren. Der Wert fürconfig_enableGnssTimeUpdateService
muss auftrue
festgelegt sein.config_autoTimeSourcesPriority
aktualisieren.gnss
muss hinzugefügt werden zu: Artikelliste fürconfig_autoTimeSourcesPriority
. Die Position vongnss
in der Prioritätsliste bestimmt die Priorität, die GNSS-Vorschlägen in Bezug auf Werte eingeräumt wird aus anderen Quellen stammen.
Auswirkungen auf die Stromversorgung
GnssTimeUpdateService
hört passiv auf Standortaktualisierungen, was bedeutet, dass es
Das GPS wird nie aktiv eingeschaltet, um zusätzlichen Strom zu verbrauchen. Daraus folgt, dass der Energieverbrauch
die aktivierte GNSS-Quelle vernachlässigbar ist. Sofern keine andere App oder ein anderer Dienst im
System fordert aktiv Standortaktualisierungen an, GnssTimeUpdateService
erhält keinen Standort
aktualisieren und eine GNSS-Zeit vorschlagen.
Testen
Kompatibilitätstest-Suite (Kompatibilitätstest-Suite, CTS)
Es wird ein CTS-Test durchgeführt, um zu prüfen, ob eine von GNSS angegebene Zeit verfügbar ist. Weitere Informationen finden Sie unter
LocationShellCommand.java
Einheitentests
Die grundlegenden Einheitentests finden Sie in der folgenden Datei:
atest frameworks/base/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java
Manuelle Tests
Zum Testen dieser Funktion wurden neue Befehle
LocationShellCommand.java
Verwenden Sie diese Befehle, um test
Anbieter, mit denen Sie einen Standort und die zugehörige GNSS-Zeit angeben können.
GnssTimeUpdateService
hört diese Standortaktualisierungen regelmäßig
macht Vorschläge.
Hinweis:Die Benutzeroberfläche für diese Befehle kann sich von Version zu Releases ändern.
# Enable Master Location Switch in the foreground user (usually user 10 on automotive). # If you just flashed, this can be done through Setup Wizard. adb shell cmd location set-location-enabled true --user 10 # Add GPS test provider (this usually fails the first time and will throw a SecurityException # with "android from <some-uid> not allowed to perform MOCK_LOCATION".) adb shell cmd location providers add-test-provider gps # Enable mock location permissions for previous UID adb shell appops set <uid printed in previous error> android:mock_location allow # Add GPS test provider (Should work with no errors.) adb shell cmd location providers add-test-provider gps # Enable GPS test provider adb shell cmd location providers set-test-provider-enabled gps true # Set location with time (time can't be earlier than the limit set by the lower bound.) adb shell cmd location providers set-test-provider-location gps --location <LATITUDE>,<LONGITUDE> --time <TIME>
Externe Zeitvorschläge
Externe Zeitvorschläge sind eine weitere Möglichkeit, Ihren Nutzern automatische Zeitvorschläge zur Verfügung zu stellen. Android Mit dieser neuen Option kannst du Android ganz individuell angepasste Zeitvorschläge machen, die von verschiedenen ECUs stammen können, die wiederum eine Kombination aus Echtzeituhr, GNSS, NITZ oder einer anderen Zeitquelle.
Die folgenden Vorschläge sind in Android 12 verfügbar und können als external
betrachtet werden
Terminvorschläge:
- VHAL-Eigenschaften. Eine neue
VHAL-Property
mit dem Namen
EPOCH_TIME
ist angegeben. Diese Eigenschaft gibt die Anzahl der Millisekunden, die seit dem 01.01.1970 UTC vergangen sind Sein Wert kann an den AndroidTimeManager
, um eine neue Systemzeit vorzuschlagen. Beispiel-VHAL Implementierung, mit der diese Property aktualisiert wird, wird in der Referenzimplementierung unten. - System-APIs: Eine neue Methode namens
suggestExternalTime()
ist in TimeManager verfügbar, um dem System einen externen Zeitvorschlag bereitzustellen. Wenn das System so konfiguriert ist, dass externe Zeitvorschläge berücksichtigt werden (mithilfe vonconfig_autoTimeSourcesPriority
in der Konfigurationsdatei), der Zeitstempel die an diese Methode übergeben wird, zur Festlegung der Systemzeit verwendet wird, wenn es keine höheren Vorschläge für priorisierte Zeit verfügbar.
Sie können eine externe Zeitlösung wie unten beschrieben implementieren:
- Ressourcenkonfigurationsdatei (
core/res/res/values/config.xml
) aktualisieren und fügen Sie dann den Wertexternal
zuconfig_autoTimeSourcesPriority
hinzu:<string-array name="config_autoTimeSourcesPriority> <item>external</item> <item>gnss</item> </string-array>
Dadurch wird Android angewiesen, externen Zeitvorschlägen beim Festlegen der Einstellung die höchste Priorität zu geben. die Systemuhr. Die Hardware am Fahrzeug schreibt einen Zeitstempelvorschlag in das neue
EPOCH_TIME
VHAL-Attribut. - Eine vom Anbieter bereitgestellte App liest diese Property und ruft sie auf
TimeManager.suggestExternal()
Android kann dann den angegebenen Zeitstempel als neuen Wert für die Systemuhr ein.