Android yapısı, zaman senkronizasyonu için çeşitli zaman kaynakları kullanır. Bu sayfa, Ağ Saati Protokolü'ne (NTP) ve Ağ kimliği ve saat dilimi (NITZ) otomatik saat kaynakları Android 12 veya sonraki sürümlerde varsayılan olarak bu çerçeve zaman kaynağı olarak NTP'ye öncelik verir, çünkü NITZ'den daha doğru ve güvenilir. NTP'nin kullanılamadığı durumlarda, çerçeve NITZ'ye geri döner. Bu, önceki sürümlerden birine göre platformu. Çerçeve, Android 11 ve önceki sürümlerde varsayılan olarak NITZ'ye öncelik verir. NTP üzerinden
Bu değişiklikle ilgili daha fazla bilgi için aşağıdaki AOSP yamalarını inceleyin: 1563678, 1513323.
Zaman kaynağı önceliğini yapılandırın
Belirli bir Android için varsayılan olarak hangi zaman kaynağının öncelikli olacağını yapılandırmak üzere
sürümünü kullanıyorsanız
config_autoTimeSourcesPriority
anahtarına frameworks/base/core/res/res/values/config.xml
kodunu ekleyin. Saat
listede daha yukarıda olan zaman kaynağından gelen öneriler önceliklidir
listede daha alt kaynaklardaki
kaynaklara göre filtrelenir.
Yapılandırılabilen Android zaman kaynaklarını şurada bulabilirsiniz:
TimeDetectorStrategy.java
.
Aşağıdaki kaynaklar varsayılan olarak kullanılacak şekilde yapılandırılmıştır:
- Telefon (NITZ)
- Ağ (NTP)
Test
NTP kullanılamadığında cihazın NITZ kullandığını doğrulamak için (mobil veri ve kablosuz ağ devre dışı bırakıldığında) aşağıdakileri yapın:
- DUT içinde çalışan bir SIM olduğundan emin olun
- Mobil veri ve kablosuz bağlantıyı kapat
- Hücresel radyonun kapalı olduğundan emin olmak için cihazı uçak moduna alın
- Otomatik zaman algılamayı kapatma
- Saati manuel olarak gelecekte yanlış bir zaman değerine ayarlayın
- Cihazı yeniden başlatma
- Otomatik zaman algılamayı açın
- Cihazı uçak modundan çıkarın
Bu adımlar, sistem saatinin NITZ tarafından hemen değiştirilmesini tetikler sinyal alındığında. Cihaz saatinin nasıl ayarlandığını kontrol etmek için aşağıdaki komutu çalıştırın komut:
adb shell dumpsys time_detector
Sistem saatinin NITZ kullandığını doğrulamak için komutta aşağıdakileri onaylayın çıkış:
mEnvironment.isAutoTimeDetectionEnabled()
true
.mEnvironment.autoOriginPriorities()
, zaman kaynaklarının listesini içerir listenin daha üst sıralarında yer alan kaynaklar listenin liste'ye dokunun.Time change log
bölümünde sistem saatinin telefon önerisi.Telephony suggestion history
bölümünde zaman önerileri yer alır.Network suggestion history
bölümü boş.
Telephony suggestion history
ve zaman önerilerinde
Network suggestion history
bölümler şunun için bilgi kaynağı olarak kabul edilir:
gerekir. Cihaz internete bağlıysa ve SIM kartı varsa,
hem NTP (ağ) hem de NITZ (telefon) kullanılarak oluşturulur. Bu test örneğinde
yalnızca Telephony suggestion history
bölümü öneriler içerir çünkü
NTP devre dışı.
Time change log
bölümü, cihazın
saat dilimini ve kullanılan öneriyi görürsünüz. Sistem saati
zaman kaynaklarının sırası
config_autoTimeSourcesPriority
tuşuna basın. Ancak,
Öneri çok eski veya geçersizse yüksek öncelikli kaynak yoksayılabilir.
Ayrıca, en yüksek önceliğe sahip geçerli öneri, cihazın mevcut öneriyle eşleşirse
sistem saati birkaç saniye içinde değişmez.
Bu test durumunda, öneriler güncel olmadığı sürece sistem saati
Telephony suggestion history
önerilerinden biri kullanılarak ayarlanır.
Aşağıda, cihazın otomatik olarak NTP kullanılamadığında NITZ.
TimeDetectorStrategy:
mLastAutoSystemClockTimeSet=TimestampedValue{mReferenceTimeMillis=66240, mValue=1614186761000}
mEnvironment.isAutoTimeDetectionEnabled()=true
mEnvironment.elapsedRealtimeMillis()=73059
mEnvironment.systemClockMillis()=1614186767818
mEnvironment.systemClockUpdateThresholdMillis()=2000
mEnvironment.autoTimeLowerBound()=2021-02-24T15:44:15Z(1614181455000)
mEnvironment.autoOriginPriorities()=[network,telephony]
Time change log:
66261 / 2021-02-24T17:12:41.020Z - Set system clock using time=TimestampedValue{mReferenceTimeMillis=66240, mValue=1614186761000} cause=Found good telephony suggestion., bestTelephonySuggestion=TelephonyTimeSuggestion{mSlotIndex='0', mUtcTime=TimestampedValue{mReferenceTimeMillis=66240, mValue=1614186761000}, mDebugInfo=[Sending new time suggestion nitzSignal=TimestampedValue{mReferenceTimeMillis=66240, mValue=NitzData{mOriginalString=21/02/24,17:12:41+00,00, mZoneOffset=0, mDstOffset=0, mCurrentTimeMillis=1614186761000, mEmulatorHostTimeZone=null}}, reason=handleNitzReceived(TimestampedValue{mReferenceTimeMillis=66240, mValue=NitzData{mOriginalString=21/02/24,17:12:41+00,00, mZoneOffset=0, mDstOffset=0, mCurrentTimeMillis=1614186761000, mEmulatorHostTimeZone=null}})]}, detectionReason=New telephony time suggested. timeSuggestion=TelephonyTimeSuggestion{mSlotIndex='0', mUtcTime=TimestampedValue{mReferenceTimeMillis=66240, mValue=1614186761000}, mDebugInfo=[Sending new time suggestion nitzSignal=TimestampedValue{mReferenceTimeMillis=66240, mValue=NitzData{mOriginalString=21/02/24,17:12:41+00,00, mZoneOffset=0, mDstOffset=0, mCurrentTimeMillis=1614186761000, mEmulatorHostTimeZone=null}}, reason=handleNitzReceived(TimestampedValue{mReferenceTimeMillis=66240, mValue=NitzData{mOriginalString=21/02/24,17:12:41+00,00, mZoneOffset=0, mDstOffset=0, mCurrentTimeMillis=1614186761000, mEmulatorHostTimeZone=null}})]} elapsedRealtimeMillis=66259 newSystemClockMillis=1614186761019
Telephony suggestion history:
key idx: 0=0
val idx: 0=TelephonyTimeSuggestion{mSlotIndex='0', mUtcTime=TimestampedValue{mReferenceTimeMillis=66240, mValue=1614186761000}, mDebugInfo=[Sending new time suggestion nitzSignal=TimestampedValue{mReferenceTimeMillis=66240, mValue=NitzData{mOriginalString=21/02/24,17:12:41+00,00, mZoneOffset=0, mDstOffset=0, mCurrentTimeMillis=1614186761000, mEmulatorHostTimeZone=null}}, reason=handleNitzReceived(TimestampedValue{mReferenceTimeMillis=66240, mValue=NitzData{mOriginalString=21/02/24,17:12:41+00,00, mZoneOffset=0, mDstOffset=0, mCurrentTimeMillis=1614186761000, mEmulatorHostTimeZone=null}})]}
Historic values=[
0@PT1M6.258S: TelephonyTimeSuggestion{mSlotIndex='0', mUtcTime=TimestampedValue{mReferenceTimeMillis=66240, mValue=1614186761000}, mDebugInfo=[Sending new time suggestion nitzSignal=TimestampedValue{mReferenceTimeMillis=66240, mValue=NitzData{mOriginalString=21/02/24,17:12:41+00,00, mZoneOffset=0, mDstOffset=0, mCurrentTimeMillis=1614186761000, mEmulatorHostTimeZone=null}}, reason=handleNitzReceived(TimestampedValue{mReferenceTimeMillis=66240, mValue=NitzData{mOriginalString=21/02/24,17:12:41+00,00, mZoneOffset=0, mDstOffset=0, mCurrentTimeMillis=1614186761000, mEmulatorHostTimeZone=null}})]}
]
Network suggestion history:
{Empty}
Gnss suggestion history:
{Empty}
External suggestion history:
{Empty}
Test senaryosundaki çıktıyla karşılaştırma olarak referans olması için aşağıda, cihazın ekran görüntüsünde olduğu hem NTP hem de NITZ zaman kaynaklarından zaman önerileri alır.
TimeDetectorStrategy:
mLastAutoSystemClockTimeSet=TimestampedValue{mReferenceTimeMillis=66240, mValue=1614186761000}
mEnvironment.isAutoTimeDetectionEnabled()=true
mEnvironment.elapsedRealtimeMillis()=302926
mEnvironment.systemClockMillis()=1614186997685
mEnvironment.systemClockUpdateThresholdMillis()=2000
mEnvironment.autoTimeLowerBound()=2021-02-24T15:44:15Z(1614181455000)
mEnvironment.autoOriginPriorities()=[network,telephony]
Time change log:
66261 / 2021-02-24T17:12:41.020Z - Set system clock using time=TimestampedValue{mReferenceTimeMillis=66240, mValue=1614186761000} cause=Found good telephony suggestion., bestTelephonySuggestion=TelephonyTimeSuggestion{mSlotIndex='0', mUtcTime=TimestampedValue{mReferenceTimeMillis=66240, mValue=1614186761000}, mDebugInfo=[Sending new time suggestion nitzSignal=TimestampedValue{mReferenceTimeMillis=66240, mValue=NitzData{mOriginalString=21/02/24,17:12:41+00,00, mZoneOffset=0, mDstOffset=0, mCurrentTimeMillis=1614186761000, mEmulatorHostTimeZone=null}}, reason=handleNitzReceived(TimestampedValue{mReferenceTimeMillis=66240, mValue=NitzData{mOriginalString=21/02/24,17:12:41+00,00, mZoneOffset=0, mDstOffset=0, mCurrentTimeMillis=1614186761000, mEmulatorHostTimeZone=null}})]}, detectionReason=New telephony time suggested. timeSuggestion=TelephonyTimeSuggestion{mSlotIndex='0', mUtcTime=TimestampedValue{mReferenceTimeMillis=66240, mValue=1614186761000}, mDebugInfo=[Sending new time suggestion nitzSignal=TimestampedValue{mReferenceTimeMillis=66240, mValue=NitzData{mOriginalString=21/02/24,17:12:41+00,00, mZoneOffset=0, mDstOffset=0, mCurrentTimeMillis=1614186761000, mEmulatorHostTimeZone=null}}, reason=handleNitzReceived(TimestampedValue{mReferenceTimeMillis=66240, mValue=NitzData{mOriginalString=21/02/24,17:12:41+00,00, mZoneOffset=0, mDstOffset=0, mCurrentTimeMillis=1614186761000, mEmulatorHostTimeZone=null}})]} elapsedRealtimeMillis=66259 newSystemClockMillis=1614186761019
Telephony suggestion history:
key idx: 0=0
val idx: 0=TelephonyTimeSuggestion{mSlotIndex='0', mUtcTime=TimestampedValue{mReferenceTimeMillis=66240, mValue=1614186761000}, mDebugInfo=[Sending new time suggestion nitzSignal=TimestampedValue{mReferenceTimeMillis=66240, mValue=NitzData{mOriginalString=21/02/24,17:12:41+00,00, mZoneOffset=0, mDstOffset=0, mCurrentTimeMillis=1614186761000, mEmulatorHostTimeZone=null}}, reason=handleNitzReceived(TimestampedValue{mReferenceTimeMillis=66240, mValue=NitzData{mOriginalString=21/02/24,17:12:41+00,00, mZoneOffset=0, mDstOffset=0, mCurrentTimeMillis=1614186761000, mEmulatorHostTimeZone=null}})]}
Historic values=[
0@PT1M6.258S: TelephonyTimeSuggestion{mSlotIndex='0', mUtcTime=TimestampedValue{mReferenceTimeMillis=66240, mValue=1614186761000}, mDebugInfo=[Sending new time suggestion nitzSignal=TimestampedValue{mReferenceTimeMillis=66240, mValue=NitzData{mOriginalString=21/02/24,17:12:41+00,00, mZoneOffset=0, mDstOffset=0, mCurrentTimeMillis=1614186761000, mEmulatorHostTimeZone=null}}, reason=handleNitzReceived(TimestampedValue{mReferenceTimeMillis=66240, mValue=NitzData{mOriginalString=21/02/24,17:12:41+00,00, mZoneOffset=0, mDstOffset=0, mCurrentTimeMillis=1614186761000, mEmulatorHostTimeZone=null}})]}
]
Network suggestion history:
0@PT4M4.04S: NetworkTimeSuggestion{mUtcTime=TimestampedValue{mReferenceTimeMillis=244038, mValue=1614186939242}, mDebugInfo=[Origin: NetworkTimeUpdateService. event=3]}
Gnss suggestion history:
{Empty}
External suggestion history:
{Empty}