Telefon saat dilimi algılama

Android 11 veya önceki sürümleri çalıştıran cihazlar için AOSP, telefon alt sisteminden gelen sinyalleri kullanır. Bağımlılık nedeniyle telefon alt sisteminde, Android 11 veya önceki sürümlerde otomatik saat dilimi algılama telefon cihazlarıyla sınırlıdır.

Telefon saat dilimi algılama özelliği kullanılabildiğinde Mobil Ülke Kodu (MCC) ve Ağ Kimliği ve Saat Dilimi (NITZ) sinyallerine geçiş yapacaktır.

Örneğin, Fransa'daki bir cihaz, saat dilimini yalnızca şuraya dayalı olarak tanımlayabilir: MM yakındaki baz istasyonları tarafından bildirildi. Bu, Fransa'nın çok iyi bilinen bir ülkede tek bir saat dilimi kullanın.

Bir ülkede birden çok saat dilimi kullanıldığında, MM'nin tanımlama için tek başına yeterli olmadığını unutmayın. seçin. Bu ülkelerde cihaz ayrıca şunları yapmak için NITZ sinyallerini kullanır: doğru saat dilimini tanımlamalıdır. Bu, dünyanın birçok yerinde işe yarar Ancak NITZ sinyallerinin hem kullanılabilir hem de doğru olması gerekir ve Bu nedenle operatörlere bağlı.

Telefon saat dilimi algılama özelliği, pasif bir algılayıcıdır. Her zaman çalışır ve olduğundan telefon önerileri genellikle etkin time_zone_detector algoritması şu anda telefon değil.

Telefon saat dilimi algılamayla ilgili sınırlama

Doğru NITZ sinyalleri mevcut olsa bile telefon saat dilimi algılama özelliği her ülkede iyi çalışıyor. Bunun nedeni, NITZ'nin yalnızca ofset ve olup olmadığını benzersiz şekilde saptamak için, gün ışığından yararlanma ile ilgili saat dilimi.

Dünyada bu saat dilimi sorununun ortaya çıkabileceği birçok yer vardır. Örneğin, ABD'deki Denver Colorado ve Phoenix Arizona, kış mevsiminde NITZ sinyalleri kullanılarak ayırt edilir, ancak diğer mevsimlerde yapabilir. Benzer şekilde çakışan saat dilimlerine sahip her yerde bu tür durumlar yaşanabilir .

Aşağıdaki tabloda sezona bağlı olarak cihaz davranışı açıklanmaktadır örneğin, Denver ve Phoenix

Konum ve sezon MM veya NITZ'den alınan bilgiler Algılanan saat dilimi ve davranış
Denver, Kolorado
kış mevsimi
Saat: 1 Ocak 2021 12:00:00
Ülke: ABD
Zaman farkı: UTC-7, yaz saati uygulaması yok
İki alt bölge kimliği eşleşiyor:
  • Amerika/Denver
  • Amerika/Phoenix
ziyaret edin.
Cihaz doğru şekilde America/Denver olarak ayarlanmış.
Anka kuşu, Arizona
kış mevsimi
Saat: 1 Ocak 2021 12:00:00
Ülke: ABD
Zaman farkı: UTC-7, yaz saati uygulaması yok
İki alt bölge kimliği eşleşiyor:
  • Amerika/Denver
  • Amerika/Phoenix
ziyaret edin.
Cihaz yanlışlıkla America/Denver olarak ayarlanmış.
Denver, Kolorado
yaz mevsimi
Saat: 1 Temmuz 2021 12:00:00
Ülke: ABD
Zaman farkı: UTC-6, yaz saati uygulaması
Bir alt bölge kimliği eşleşiyor:
  • Amerika/Denver
ziyaret edin.
Cihaz doğru şekilde America/Denver olarak ayarlanmış.
Anka kuşu, Arizona
yaz mevsimi
Saat: 1 Temmuz 2021 12:00:00
Ülke: ABD
Zaman farkı: UTC-7, yaz saati uygulaması yok
Bir alt bölge kimliği eşleşiyor:
  • Amerika/Phoenix
ziyaret edin.
Cihaz doğru şekilde America/Phoenix olarak ayarlanmış.

Yukarıdaki örnekler kış mevsiminde Android cihazların Denver veya Arizona'nın eşleşen iki saat dilimi kimliğinden birini seçmesi gerekir. Bu kimlik yanlış olabilir yerel saati göstermeye devam ediyor. Cihaz saat, takvim ve diğer uygulamalar, Her iki saat dilimi kimliği de aynı yerel değeri hesapladığı için saat dilimi kimliği yanlış zamanları olur.

Ancak ilkbaharda Denver, yaz saati uygulaması sağlarken Phoenix değil, ayarlanmışsa bazı cihazlar geçici olarak yanlış yerel saati gösterebilir saat dilimi kimliğine ayarladığından emin olun. Bu sorun, kısa süre içinde düzeltilir yeni bir NITZ sinyali (özellikle "UTC-7, yaz saati uygulaması yok" ofset bilgileri), Ancak bu işlem biraz zaman alabilir ve operatörlere göre değişir.

Bunun sonucunda, saat dilimi kimliğini depolayan veya aktaran takvimler ya da diğer uygulamalar ilkbahara kadar geçen süre için yanlış yerel saat görüntülenerek ilgili uygulamalar saat dilimi kimliğini güncelleyebilir.

Hata ayıklama ve test etme

Aşağıdaki bölümde, hata ayıklama ve test amaçlı kabuk komutları açıklanmaktadır. saat dilimi algılama özelliğini kullanabilirsiniz.

Test ortamı kurulumu

Test kullanıcıları genellikle bir test veya simüle edilmiş telefon hücresi içeren bir test ortamı kullanırlar telefon saat dilimi algılama davranışını kontrol edin. Test hücresi, Farklı MM'lere sahip ağları simüle edebilir, cihazlara NITZ sinyalleri gönderebilir ve etkilerini izleyin.

Cihazın saat dilimini algılayabilmesi için NITZ sinyal bilgileri doğru, MM ile tutarlı olmalı ve cihazın IANA TZDB kopyasıyla eşleşmelidir (saat dilimi kuralları). MM ile tutarsız olan NITZ sinyalleri, belirsiz hale gelecektir.

Örneğin, test hücresi tarafından kullanılan MM hesabı ABD içinse NITZ sinyali "evrensel saat", zaman farkı ve ABD'de bir yer için geçerli.

com.android.phone hizmetiyle etkileşim kurma

Cihazın telefon için doğru saat dilimi önerilerini aldığını doğrulamak üzere kullanın:

adb shell dumpsys activity service \
    com.android.phone/com.android.phone.TelephonyDebugService

Bu işlem, Android hatasında da bulunabilen telefon bilgilerinin dökümünü verir. raporlar. Birden fazla SIM kullanılan cihazlarda her SIM radyo için bilgi vardır.

Saat dilimi Günlükleri, telefon işleminin gönderdiği önerileri gösterir. time_zone_detector ve önerilerin gönderilme nedenleri.

TimeServiceHelperImpl:
          SystemClock.elapsedRealtime()=11864061
          System.currentTimeMillis()=1620652067178
          Time Logs:
...

Time zone Logs:
    18602 / 2021-05-10T09:50:21.718Z - Suggesting time zone update:
    TelephonyTimeZoneSuggestion{mSlotIndex=0, mZoneId='null', mMatchType=0, mQuality=0,
    mDebugInfo=[getTimeZoneSuggestion: nitzSignal=TimestampedValue{mReferenceTimeMillis=14098,
    mValue=NitzData{mOriginalString=21/05/10,09:50:18+04,01, mZoneOffset=3600000,
    mDstOffset=3600000, mCurrentTimeMillis=1620640218000, mEmulatorHostTimeZone=null}},
    countryIsoCode=null, Detection
    reason=handleNitzReceived(TimestampedValue{mReferenceTimeMillis=14098,
    mValue=NitzData{mOriginalString=21/05/10,09:50:18+04,01, mZoneOffset=3600000,
    mDstOffset=3600000, mCurrentTimeMillis=1620640218000, mEmulatorHostTimeZone=null}})]}
    18831 / 2021-05-10T09:50:21.948Z - Suggesting time zone update:
    TelephonyTimeZoneSuggestion{mSlotIndex=0, mZoneId='Europe/London', mMatchType=3, mQuality=1,
    mDebugInfo=[findTimeZoneFromCountryAndNitz: countryIsoCode=gb,
    nitzSignal=TimestampedValue{mReferenceTimeMillis=14098,
    mValue=NitzData{mOriginalString=21/05/10,09:50:18+04,01, mZoneOffset=3600000,
    mDstOffset=3600000, mCurrentTimeMillis=1620640218000, mEmulatorHostTimeZone=null}},
    findTimeZoneFromCountryAndNitz: lookupResult=OffsetResult{mTimeZone(ID)=Europe/London,
    mIsOnlyMatch=true}, Detection reason=handleCountryDetected("gb")]}