Android cihazlar otomatik olarak bir ağ kaynağıdır. Android, UDP protokolünü kullanan SNTP protokolünü kullanır, zaman bilgisi almaktır.
Bu sayfada açıklanan bileşenler, otomatik zaman algılamanın bir parçasıdır.
ağ zaman kaynağı olarak adlandırılır. Şuradan bir zaman sinyali:
bir ağ saat sunucusu, aşağıdaki durumlarda Android cihazın sistem saatini ayarlamak için
otomatik saat algılama özelliği cihazda ve time_detector
hizmeti kullanacak şekilde yapılandırıldığından emin olun.
Varsayılan olarak, Android birincil veri kaynağı olarak ağ zaman kaynağını kullanır. otomatik saat algılama kaynağı.
Ağ saati algılama sistemi
Android sistem sunucusunda çalışan network_time_update_service
hizmeti
ağ zaman algılama sistemini uygular. Hizmet, belirli aralıklarla
SNTP, sunucudan zaman sinyali almak için kullanılır. Hizmet ayrıca ağı da izler.
bağlantı kurulur ve son saat sinyali bulunmadığında zaman yenilemesi tetiklenir
uzun süren zayıf bağlantı durumlarından sonra.
network_time_update_service
hizmeti, zaman sinyali almaya çalışır
ağ bağlantısı ilk kez kurulduğunda görebilirsiniz. İlgili içeriği oluşturmak için kullanılan
elindeki en son sinyali güncel tutmaya çalışır. Organizasyondaki
fazla yüke sahip olan bağımsız Android cihazların
çeşitli Android cihazlarda zaman geçiriyor.
network_time_update_service
, dahili API'leri kullanarak ağ saatini gönderir
time_detector
hizmetine öneriler. Diğer Android platformu
bu ağ süresi önerilerini kullanır.
Ağ zaman kaynağından öneriler aldıktan sonra time_detector
hizmet, sistem saatinin
yapılandırdığınız önceliklendirme kuralları oluşturun.
Otomatik zaman algılama sistemini, ağ kaynağını kullanacak şekilde yapılandırmak için
saatin otomatik olarak ayarlanmasını istiyorsanız
core/res/res/values/config.xml
sistem sunucusu yapılandırma dosyası. Lütfen
network
değeri, istenenconfig_autoTimeSourcesPriority
dokunun. Ayrıntılar için bkz.
Zaman Kaynağı Önceliği.
Cihaz yapılandırması
Bu bölümde, cihaz üreticilerinin ağı nasıl yapılandırabileceği açıklanmaktadır. zaman algılama sisteminden yararlanabilirsiniz.
Temel AOSP yapılandırması şurada:
frameworks/base/core/res/res/values/config.xml
:
Yapılandırma anahtarı | AOSP değeri | Açıklama |
---|---|---|
config_ntpRetry |
3 |
Bu sayı, yenileme işlemi başarısız olduktan sonra sistemin kaç defa yeniden denediğini gösterir.
daha kısa NTP yoklama aralığıyla ağ zaman yoklaması
(config_ntpPollingIntervalShorter ), yedekleyip kullanmadan önce
normal yoklama aralığı (config_ntpPollingInterval ). Değer
0 değerinden düşük ise sistemin yoklamayı daha kısa NTP'de yeniden denediği anlamına gelir.
başarılı bir şekilde yenilenene dek yoklama aralığını belirleyin. |
config_ntpPollingInterval |
64800000 (18 saat) |
Milisaniye cinsinden normal ağ süresi yoklama aralığı. |
config_ntpPollingIntervalShorter |
60000 (1 dakika) |
Milisaniye cinsinden yeniden deneme ağ zamanı yoklama aralığı. Kullanıldığı durum zaman yenilemesi başarısız olur. |
config_ntpServers |
Tek bir giriş: ntp://time.android.com |
Doğru zamanı almak için kullanılacak NTP sunucuları. Öğeler şu biçimde olmalıdır:
ntp://<host>[:port]
Bu, kayıtlı bir IANA URI şeması değildir. |
config_ntpTimeout |
5.000 | Zaman aşımından önce NTP sunucusu yanıtının milisaniye cinsinden bekleme süresi. |
Sunucular
AOSP, varsayılan olarak time.android.com
konumundaki saat sunucularını kullanır. Bu saat
Google Açık NTP. Bu hizmette
HDS yok. Ayrıntılar için
Google Public NTP SSS.
Birden çok sunucu desteği
Çerçeve, Android 14 ve sonraki sürümlerde
birden fazla NTP sunucusu Bu, cihazların
tek bir yapılandırma ile küresel olarak dağıtılmış ancak
sunuculara erişim imkanı sunan
time.android.com
gibi bazı yerlerde kısıtlanmıştır.
Algoritma, config_ntpServers
içinde belirtilen her sunucuyu dener
yapılandırma anahtarı. Yanıt veren bir yanıt bulduğunda sistem
bu sunucu yenilenmeyene veya cihaz yeniden başlatılana kadar devre dışı kalır.
Doğruluk
Android'in varsayılan ağ saati senkronizasyonu, tek bir zaman sorgusuyla SNTP kullanır saat sinyalinin her zaman güncel olduğundan emin olmak için günde yaklaşık bir kez.
Ağdaki gecikme etkileri, tek bir veri tabanında zamanın doğru olmamasına Android'in SNTP uygulaması. SNTP, simetrik ağ gecikmelerini varsayar. isteğin ağ gecikmesi, isteğin ağ gecikmesi ile aynıdır; ve doğru zaman tam olarak bu itirazın ağ gidiş dönüşü var. Ağ gidiş dönüş süresi genellikle birkaç yüzlerce milisaniye ve kablolu bir ağda gecikmenin simetrik, bu da neredeyse fark edilemeyecek kadar yüksek yardımcı olur. Ancak, mobil veya telsiz telefonların iletişimde bir dizi aşama vardır. nispeten uzun olan asimetrik gecikmeler bir ağ işlemine eklenebilir daha fazla tutarsızlığa yol açabilir.
config_ntpTimeout
için varsayılan AOSP ayarı 5000
milisaniye olarak belirlendiğinde,
ve tüm ağ gecikmesi yalnızca gelen veya giden
maksimum teorik hata yaklaşık 2, 5 saniyedir.
Genel sistem saat doğruluğu, Android cihazın yeteneğinden de etkilenir.
bir zaman sinyali elde edildikten sonra geçen süreyi doğru bir şekilde izlemek Bu,
ağdaki zamanı algılamayla değil, Android'deki tüm zaman tutmayla ilgili
time_detector
hizmetinin eski zaman önerilerini neden dikkate almadığı. İlgili içeriği oluşturmak için kullanılan
network_time_update_service
hizmeti, şunu kullanarak düzenli olarak yenilenir:
time_detector
hizmetini sürdürmek için config_ntpPollingInterval
zaman aralığı
güncel zaman önerileriyle birlikte sunulduğundan ve time_detector
doğruluk düzeyi genellikle daha düşük ve doğruluğu daha düşük
zaman zaman hatalı zaman kaynakları (ör. telephony
).
Otomatik saat algılama özelliği kullanıldığında, cihaz sistem saat doğruluğu
time_detector
hizmetinin diğer yapılandırmalarından; örneğin
bir zaman önerisinin ne kadar farklı olması gerektiğini etkileyen sabit değerler ve işaretler
saat ayarlanmadan önce geçerli sistem saati
(ServiceConfigAccessorImpl.java
).
Cihaz üreticileri, önceki yapılandırmayı kullanarak doğruluğu değiştirebilir seçenekleri ve sabit değerleri gösterir. Ancak ekip üyelerinizle birlikte konuşurken platformun SNTP uygulaması ve güç tüketimi üzerindeki potansiyel etkisi veya cihaz üzerinde çalışan uygulamalara etkisi saat ayarlamaları yapılmasını ve sunucu yükü üzerindeki etkisini görebilirsiniz.
Ağ süresinin diğer kullanımları
network
kaynağını kullanarak otomatik zaman algılama yapılandırılmazsa veya
Kullanıcı, otomatik saat algılamayı devre dışı bıraktı. Bu, kullanıcının
network_time_update_service
hizmeti hâlâ aşağıdaki bileşenler tarafından kullanılıyor:
- İlgili içeriği oluşturmak için kullanılan
SystemClock.currentNetworkTimeClock()
yöntemidir. - Dahili platform işlevleri. Örneğin, A-GPS bir GNSS'nin (konum) yerini belirleyebilir. ilk olarak ağ saati bilgisi varsa daha hızlı düzeltebilirsiniz.
Hata ayıklama ve test etme
Aşağıdaki bölümde, hata ayıklama ve test amaçlı kabuk komutları açıklanmaktadır. ağ saatini algılama özelliğine erişebilirsiniz.
network_time_update_service ile etkileşim kurun
network_time_update_service
öğesinin mevcut durumunu döküm almak için şunu kullanın:
adb shell cmd network_time_update_service dump
Test konusunda yardımcı olabilecek bir dizi komut satırı seçeneğini görmek için şunu kullanın:
adb shell cmd network_time_update_service help