Otomatik zaman algılama, çeşitli kaynaklardan zaman önerileri alır ve en iyi seçeneğe gidip Android'de sistem saatini buna göre ayarlar. Önceki Android sürümleri sağlandı iki farklı tarih ve saat ayarlama yöntemi vardır: kullanıcı başına manuel olarak veya otomatik saat algılama aşağıdakilerden birini yapabilirsiniz:
telephony
, ağ kimliği ve saat dilimi (NITZ) telefon sinyallerini kullanır.network
, Ağ Saat Protokolü (NTP) zaman sunucularını kullanır.
Her seçenek için Android'de her zaman bulunmayan harici ağ bağlantıları gerekir Otomotiv. Örneğin, bazı ülkelerdeki bazı arabalarda yerleşik telefon özelliği olmayabilir. Dolayısıyla, Küresel Uydu Navigasyon Sistemleri (GNSS) saati, sistem kaynağı olarak sağlanır. ağ bağlantısı olmadığında kullanabilirsiniz.
Yakında kullanıma sunulacak bu Android sürümünde saati otomatik olarak algılamak ve ayarlamak için iki seçenek daha sunulur:
gnss
, Küresel Uydu'yu kullanır Navigasyon Sistemleri (GNSS).external
kullanımları VHAL mülkü veya System API.
Otomatik zaman algılamayı etkinleştir
Otomatik zaman algılama özelliğini etkinleştirmek için Ayarlar > Tarih ve Zaman > Otomatik Tarih ve Saat:
Şekil 1. Otomatik Tarih ve Saat
Zaman kaynaklarını yapılandırma
Otomatik zaman algılamaya dahil edilecek zaman kaynaklarını ve önceliği belirtmek için
bu zaman kaynaklarının dikkate alınması gerektiğinde cihazın kaynak ayarlarında değişiklik yapmanız gerekir.
yapılandırma dosyası, 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>
Bu örnekte telephony
ve network
,
otomatik saat algılama ve telephony
zaman önerisine öncelik verilir
network
zaman önerisinden önce.
Genel anlamda, daha yüksek öncelikli kaynaktan gelen öneriler veya öneri çok eski olabilir. Ayrıca, en yüksek önceliğe sahip geçerli öneri cihazın geçerli sistem saatini birkaç saniyeyle eşleştirir (varsayılan değer) iki (2) saniye olursa süre değişmez.
Daha düşük zaman sınırı
Android 12, aşağıdaki durumlarda kullanılacak yeni bir daha düşük zaman sınırı sunar: zaman önerilerini doğrulayabilirsiniz. Bu özellikten önce otomatik saat algılama, önerilen gelen UTC saati. Bu özellikte, alt sınırdan önce geçen süreler silindi.
Alt sınır değeri, derleme zaman damgasından türetilen bir tarihten belirlenir. Şunlarda çalışır: ilkesini uygulayın: geçerli bir zaman, sistem görüntüsü oluşturulmadan önce gerçekleşemez. Android şunu yapmaz: üst sınırı zorunlu kılıyor.
GNSS zaman önerileri
gnss
zaman kaynağı, Android 12'de yenidir ve GPS sinyalleri tarafından sağlanır. Bu
telephony
ve network
kullanılamadığında zaman için güvenilir bir kaynaktır.
Bu seçenek, yeni GnssTimeUpdateService
özelliğine eklenmiştir.
Konum güncellemelerini pasif olarak dinleyen SystemServer. Geçerli bir konum alındığında
GnssTimeUpdateService
, TimeDetectorService
için bir öneride bulunuyor. Bu öneri:
ardından sistem saatinin güncellenip güncellenmeyeceğini belirler.
Varsayılan olarak gnss
zaman kaynağı AOSP'de etkin değildir ve bu nedenle
iş ortakları tarafından etkinleştirilmelidir:
<!-- 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>
Bu özelliği etkinleştirmek için:
config_enableGnssTimeUpdateService
adlı cihazı güncelleyin. Değericonfig_enableGnssTimeUpdateService
,true
olarak ayarlanmalıdır.config_autoTimeSourcesPriority
adlı cihazı güncelleyin.gnss
,config_autoTimeSourcesPriority
için öğe listesi.gnss
cihazının konumu listesi, değerlere göre GNSS önerilerine verilen önceliği belirler diğer kaynaklardan alınmış.
Güç üzerindeki etkisi
GnssTimeUpdateService
, konum güncellemelerini pasif olarak dinler. Bu da,
GPS'i hiçbir zaman aktif olarak açmaz. Sonuç olarak,
Etkinleştirilmiş GNSS kaynağı göz ardı edilebilir düzeyde. Bu, sözleşmedeki başka bir uygulama veya hizmet
sistem etkin olarak konum güncellemeleri isteğinde bulunur, GnssTimeUpdateService
konum bilgisi almaz
güncelleme ve GNSS zamanı önerme.
Test
Uyumluluk test paketi (CTS)
GNSS tarafından sağlanan bir zamanın mevcut olduğunu doğrulamak için bir CTS testi yapılır. Ayrıntılar için bkz.
LocationShellCommand.java
Birim testleri
Aşağıdaki dosyada temel birim testlerine bakın:
atest frameworks/base/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java
Manuel testler
Bu özelliği test etmek için
LocationShellCommand.java
Test eklemek için bu komutları kullanın:
konum ve ilişkili GNSS süresini belirtebileceğiniz sağlayıcılardır.
GnssTimeUpdateService
, bu konum güncellemelerini dinler ve düzenli aralıklarla
önerilerde bulunur.
Not: Bu komutların arayüzü, sürümler arasında farklılık gösterebilir.
# 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>
Harici saat önerileri
Harici zaman önerileri, kullanıcılara otomatik zaman önerileri sağlamanın bir başka yoludur. Android Bu yeni seçenekler, Android, kullanıcı arayüzü ve uygulama gibi Bu kaynak, gerçek zamanlı saat, çeşitli ECU'lar ve ECU'lar gibi farklı kaynakların GNSS, NITZ veya başka bir zaman kaynağı.
Aşağıdaki öneriler Android 12'de external
olarak değerlendirilebilir
zaman önerileri:
- VHAL özellikleri. Yeni bir
VHAL özelliği
EPOCH_TIME
sağlanmış. Bu özellik, öğenin 1/1/1970 UTC itibarıyla geçen milisaniye sayısı. Bu değer, Yeni bir sistem saati önermek için AndroidTimeManager
. VHAL örneği Google Analytics 360'ta sağlanan, referans uygulama bölümüne göz atın. - Sistem API'leri.
suggestExternalTime()
adlı yeni bir yöntem Zaman Yöneticisi'nde, sisteme harici bir zaman önerisi sağlamak için kullanılabilir. Sistem, harici zaman önerilerini dikkate alacak şekilde yapılandırıldıysa (config_autoTimeSourcesPriority
), zaman damgası bu yönteme aktarılan değer sistem saatini ayarlamak için kullanılır; eğer daha yüksek değer yoksa öncelikli zaman önerileri mevcut.
Aşağıda açıklandığı şekilde, harici bir zaman çözümü uygulayabilirsiniz:
- Kaynak yapılandırma dosyasını (
core/res/res/values/config.xml
) güncelleyin ve ardındanexternal
değeriniconfig_autoTimeSourcesPriority
değerine ekleyin:<string-array name="config_autoTimeSourcesPriority> <item>external</item> <item>gnss</item> </string-array>
Bu şekilde, Android'e bu ayarları ayarlarken harici zaman önerilerine en yüksek önceliği vermesi talimatını verin. sistem saatinizi düzenler. Aracın donanımı, yeni cihaza bir zaman damgası önerisi
EPOCH_TIME
. VHAL özelliği. - Tedarikçi firma tarafından sağlanan bir uygulama bu mülkü okur ve çağrıyı
TimeManager.suggestExternal()
Android, sağlanan zaman damgasını kullanabilir. yeni sistem saat değeri olarak ayarlayacağım.