Zamana genel bakış

Bu sayfada, Android'de saat ve saat dilimi algılama özelliğinin işleyiş şekli açıklanmaktadır. Bu Android'in saat ve saat dilimlerini otomatik olarak algılama şeklini, seçenekleri ve test bilgileri.

Saat ve saat dilimlerine genel bakış

Bir kullanıcının durum gibi konumlarda görüntülemek üzere yerel saatini belirlemek için altında, Android birbiriyle alakalı ancak bağımsız iki durumu izler:

  • Geçerli Unix dönem saati
  • Geçerli saat dilimi

Geçerli Unix dönem saati ve geçerli saat dilimi, cihaz genelinde durumlardır. Diğer bir deyişle, bir cihazın tüm kullanıcıları tarafından paylaşılır.

Geçerli Unix sıfır zamanı sabit bir değer değil. Otomatik olarak şu şekilde güncellenir: zamanın akışının bir parçasını yansıtmalıdır. Normal zaman akışının yanı sıra Bir cihazın Unix epoch saati, yanlış olduğu belirlenirse ayarlanır. Örneğin, cihazın elektriği kesildiğinde.

Geçerli saat dilimi, geçerli Unix dönem saatini yerel saate dönüştürür. Örneğin, Los Angeles'ta yaz mevsiminde cihaz geçerli Unix epoch zamanından 7 saat çıkarır ve kışın 8 saat çıkar.

Bu yerel saat hesaplamalarını desteklemek için tüm Android cihazlarda tüm genel saat dilimi kurallarının veritabanını ziyaret edin. Saat dilimi kuralları hakkında daha fazla bilgi için bkz. Saat Dilimi Kuralları.

Bir kullanıcı farklı saat dilimi kullanan yeni bir konuma seyahat ettiğinde geçerli Unix sıfır zamanının ayarlanmasına gerek yoktur ancak kullanıcı genellikle yerel saati görmelerini sağlar. Değiştiriliyor geçerli saat dilimi, geçerli konuma doğru ofsetin uygulanmasını sağlar. Yeni konum için doğru yerel saati görüntülemek üzere Unix sıfır zamanı.

AOSP, kullanıcıların saat ve saat diliminin uygun olup olmadığını bağımsız olarak otomatik olarak ayarlanmasını sağlar.

  • Otomatik saat algılama: Cihazın zaman ayarının doğru olmasını sağlar geçerli Unix dönem saati.
  • Otomatik saat dilimi algılama: Cihazın saat diliminin doğru olmasını sağlar saat dilimi.

Otomatik saat algılama

Bu bölümde, yönetim sistemini yöneten time_detector hizmetine genel bir bakış sunulmaktadır. otomatik zaman algılama, kullanıcı denetimleri, yapılandırma seçenekleri ve test bolca fırsat sunuyor.

time_detector hizmeti

İlgili içeriği oluşturmak için kullanılan time_detector hizmeti, Android 10 veya sonraki sürümleri çalıştıran cihazlarda bulunan otomatik zamanı yönetir tespit edebilir. Cihazın geçerli Unix dönem zamanını gerektiği şekilde ayarlar otomatik saat algılama etkinleştirilir.

time_detector hizmeti her zaman şu iki durumdan birindedir: belirsiz veya belirli. Hizmetin belirli veya belirsiz durumu belirlendiğinde çeşitli kaynaklardan aldığı zaman önerilerine göre.

time_detector hizmeti kesin olduğunda (yani Unix dönem zaman bilgisi içeren öneri, geçerli Unix dönemini geçersiz kılar zaman önerisi geçerli Unix dönem zamanından farklıysa

time_detector belirsiz olduğunda geçerli saati geçersiz kılmaz. İlgili içeriği oluşturmak için kullanılan belirsiz durum genellikle time_detector hizmetinin zaman almadığı anlamına gelir öneriler. time_detector hizmeti, önerilerin doğru olup olmadığından da emin olmaz kullanılamayacak kadar eski kabul edilir. Önerilerin kullanıma sunulma tarihi: eski Unix dönem zaman önerileri kullanan ayarlamalar cihazda geçen gerçek zamanlı saat (zamana göre yanlış olduğu varsayılır) uzun süreler.

Geçerli Unix dönem saatini otomatik olarak ayarlamak için cihazın çeşitli kaynaklar. Bu dokümanda, bunlara kaynaklar adı verilir. İlgili içeriği oluşturmak için kullanılan time_detector hizmeti, öneri dizilerini şuna göre farklı olarak değerlendirir: kaynağı.

time_detector hizmeti durum bilgili olduğundan, her kaynak tarafından yapılan en son öneri. Şunlar için yeni öneriler yapılır: Bir kaynak daha yeni Unix dönem saati bilgisi içeriyorsa time_detector kullanılabilir. time_detector hizmeti yeni ve mevcut önerileri yeniden değerlendirir ve öneri alındığında cihaz durumunu günceller.

UTC saati uluslararası olarak kabul edilse de bunun çeşitli nedenleri vardır geçerli Unix dönemini belirlemek, Android cihaz:

  • Unix dönem saati, UTC saatinden oldukça farklı bir zaman tutma sistemidir. Bu ikisi arasında dönüşüm yapmak için artık saniyelerin ne zaman gerçekleştiğini ve nasıl ele alındıklarını açıklar.
  • Kaynaklar yalnızca belirli zamanlarda veya belirli sürelerin altında kullanılabilir koşullar. Örneğin, kaynak için ağ bağlantısı gerekiyorsa yalnızca cihaz internete bağlıyken kullanılabilir.
  • Kaynaklar yanlış veya tam olmayan ya da hatalı olabilir. Örneğin, Örneğin, bir telefon baz istasyonu "evrensel zaman"ı izlemiyorsa doğru değilse telefon kaynağı yanlış zaman önerileri sağlayabilir.
  • Unix dönem saati alınırken yanlışlıklar olabilir. Örneğin ağ gecikmesi, arabelleğe alma veya işlem planlaması Unix dönem saatinin yanlış olması gerekir.
  • Bir öneriyi yayın tarihinden itibaren geçen süreye göre düzenlemek için kullanılan referans saat alınan öneri doğru olmayabilir.

Şurada varsayılan olarak kullanılacak şekilde yapılandırılmış iki ana zaman algılama kaynağı vardır: AOSP:

  • : Ağ kullanır Zaman Protokolü (NTP) zaman sunucuları.
  • Telefon: Ağ Kimliği ve Saat Dilimi (NITZ) telefon özelliğini kullanır. sinyallerine geçiş yapacaktır.

Hem telefon hem de ağ kaynakları harici ağlara bağlanmayı gerektirir. ve her zaman kullanılamayabilir.

Android, Android 12'den itibaren şu sürümleri de destekler: varsayılan olarak kullanılacak şekilde yapılandırılmayan aşağıdaki kaynaklar:

  • GNSS: GPS'yi kullanır GNSS kaynağından saat almak için konum sağlayıcı
  • Harici: Genel cihaz üreticilerinin kendi içeriklerini entegre bir şekilde ya da Unix dönem saati.

Zaman ayarları

Kullanıcılar, Sistem > Tarih ve Saat AOSP Ayarları uygulaması.

Ayarlar'da otomatik saat algılama

Şekil 1. Ayarlar'dan otomatik saat algılama.

Aşağıdaki tabloda, AOSP'de zaman algılama için kullanıcı denetimleri açıklanmaktadır. Ayarlar uygulaması.

*Android 11 ve önceki sürümlerde bu ayar ağ tarafından sağlanan zaman

AOSP Ayarları konumu AOSP Ayarları adı Kapsam Davranış
Sistem > Tarih ve Saat Saati otomatik olarak ayarlama* Tüm kullanıcılar

Açma/kapatma düğmesi.

Açıldığında cihaz geçerli Unix'i algılamaktan sorumludur epoch zamanı. Kapalı olduğunda, kullanıcılara zamanı manuel olarak ayarlayın.

Kullanıcı, zamanı manuel olarak girdiğinde Unix epoch değerini değil, yerel saatini girer gerekir. Geçerli Unix dönem saati, geçerli saat dilimi kullanılarak hesaplanır için farklı bir zaman aralığına sahiptir.

Yapılandırma

Cihaz üreticileri, time_detector hizmetini çeşitli şekillerde yapılandırabilir. Örneğin, hangi kaynakların kullanılacağı ve bunlardan gelen sinyallerin nasıl önceliklendirileceği gibi.

Kaynak önceliklendirme

Android 12'den itibaren cihaz üreticileri core/res/res/values/config.xmlyapılandırma dosyasını kullanarak otomatik zaman algılamaya dahil edilecek kaynaklar ve time_detector bu kaynakları dikkate alıyor.

Android 11 veya önceki sürümleri çalıştıran cihazlarda kaynak önceliği, ["telephony", "network"] olarak kodlanır. Bu da telefon önerilerine öncelik verildiği anlamına gelir. ağ önerilerinin üst kısmında yer almalıdır.

Varsayılan AOSP yapılandırması aşağıdaki gibidir:

<!-- 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>network</item>
    <item>telephony</item>
</string-array>

Android 12'de ağ ve telefon önerileri, kaynak olarak yapılandırıldı. Ağ saati önerileri: telefon süresi önerilerinden daha önceliklidir. Cihaz üreticileri değiştirebilir Android 11 veya önceki sürümlerde davranışa geri dönülecek kaynakların sırası öncelikli olarak sunuyoruz.

Varsayılan olarak, en yüksek önceliğe sahip geçerli öneri cihazın birkaç saniye içinde çalışırsa cihaz saati çalışmaz değiştirebilirsiniz. Bunun nedeni, ACTION_TIME_CHANGED intent.

İzin verilen kaynak değerler şunlardır:

İzin verilen zaman sınırları

Android 14'te zaman sınırı özelliği kullanıma sunuluyor time_detector hizmeti tarafından alınan öneriler. Cihaz şunları destekliyorsa: 32 bit işlemler, çerçeve cihazın çalışmasını önlemek için bir üst süre sınırı belirler kullanarak Y2038 sorununu tetikleyebilecek bir zaman önerisi kullanmayı engelliyor.

Android 12'de kullanılan zaman sınırı time_detector hizmetinin aldığı zaman önerilerini doğrular. Alt Otomatik öneriler için kullanılan zaman sınırlama değeri, derleme zaman damgasından ayarlanır. Bu, geçerli bir zamanın cihazın ve sistem görüntüsü geliştirilmiştir. Zaman önerisi alt zaman sınırından önceyse time_detector hizmeti, aşağıdaki durumlarda geçerli olamayacağı için öneriyi siler derleme zaman damgasının doğru olduğundan emin olun.

time_detector hizmeti, Android 11 veya önceki sürümleri çalıştıran cihazlarda gelen Unix dönem zaman önerilerini doğrular.

Zaman hata ayıklaması ve testi

Bu bölümde, time_detector hizmeti ve tüm kaynaklar tarafından paylaşılan diğer bileşenler.

time_detector hizmetiyle etkileşim kurun

time_detector hizmetinin yapılandırmasını ve durumunu görüntülemek için time_detector hizmet, kullanım:

adb shell cmd time_detector dump

Hata ayıklama ve saat dilimi algılamayı test etmeyle ilgili ek komutları görmek için şunları kullanın:

adb shell cmd time_detector help

Yardım çıkışı, aşağıda açıklandığı gibi, device_config hizmet özellikleri test veya üretimde time_detector davranışını etkilemek için kullanılır. Ayrıntılar için bkz. device_config hizmetini kullanarak bir cihazı yapılandırma.

Otomatik zaman algılamayı doğrulamak için, test kullanıcıları time_detector hizmeti kullanıyor. Aşağıdaki örnekte adb shell cmd time_detector dump komutunun bir parçası ve mevcut kaynak ve hizmet durumu kalın harflerle gösterilmiştir:

$ adb shell cmd time_detector dump

TimeDetectorStrategy:
  mLastAutoSystemClockTimeSet=null
  mEnvironment.isAutoTimeDetectionEnabled()=true
  mEnvironment.elapsedRealtimeMillis()=23717241
  mEnvironment.systemClockMillis()=1626707861336
  mEnvironment.systemClockUpdateThresholdMillis()=2000
  mEnvironment.autoTimeLowerBound()=2021-07-19T07:48:05Z(1626680885000)
  mEnvironment.autoOriginPriorities()=[network,telephony]
  Time change log:
    ...
  Telephony suggestion history:
    ...
  Network suggestion history:
    ...
  Gnss suggestion history:
    ...
  External suggestion history:
    ...

Bilgiler şu şekilde yorumlanabilir:

Anahtar Değer
mEnvironment.isAutoTimeDetectionEnabled() Otomatik saat algılamanın etkin olup olmadığı.
mEnvironment.autoTimeLowerBound() Zaman önerilerini doğrulamak için kullanılan mevcut alt sınır.
mEnvironment.autoOriginPriorities() Kullanılan kaynaklar ve öncelik sırası.

Zaman değişikliği günlüğü, time_detector hizmetinin cihazın geçerli Unix dönem saatini değiştirdi.

Öneri geçmişi bilgileri, tarafından yapılan önerileri gösterir. her kaynak.

Otomatik saat dilimi algılama

Bu bölümde, aşağıdaki işlemleri yapmanızı sağlayan time_zone_detector hizmetine genel bakış sunulmaktadır: saat dilimi algılamasını, ayarlardaki kullanıcı denetimlerini, telefonu ve konum saat dilimini algılama ve test etme ayrıntıları.

time_zone_detector hizmeti

İlgili içeriği oluşturmak için kullanılan time_zone_detector hizmeti, Android 11 veya sonraki sürümleri çalıştıran cihazlarda bulunan otomatik zamanı yönetir alt bölge algılama. Cihazın şu andaki saat dilimini gerektiği şekilde ayarlar otomatik saat dilimi algılama özelliği etkin.

Otomatik saat dilimi algılama özelliği etkinleştirildiğinde time_zone_detector, belirsiz ve belirsiz olmak üzere iki durumdan biri.

time_zone_detector hizmeti belirli bir durumda olduğunda bu, time_zone_detector hizmeti, güçlü saat dilimi bilgileri aldı. saat dilimini geçersiz kılabilir. Belirsizken bu hiç bilgi aldığı ya da yalnızca güvenilirliği düşük bilgiler aldığı anlamına gelir. geçerli saat diliminin geçersiz kılınmayacağı anlamına gelir.

time_zone_detector hizmetinin belirli durumları, şunları içerebilir: time_zone_detector konumunda kullanılacak saat dilimi bilgisi veya saat dilimi bilgisi yok birden fazla saat dilimi belirleyebilirsiniz. Bu eyaletler aşağıdaki gibidir:

  • Cihaz şu durumda olduğunda saat dilimi sıfır olan belirli bir eyalet girildi: saat dilimi olmayan bir yerde, örneğin uluslararası sularda sorun teşkil edebilir. Bu durum belirsiz bir duruma benzer ancak time_zone_detector uygulamasının, aşağıdaki işlemleri yapmayı denemek için başka bir işlem zaman dilimini belirleyebilir.
  • Birden çok saat dilimi olan belirli bir eyalet girildiğinde veya sınır koşullarıyla ilgilidir. Bu durumda, geçerli saat dilimi time_zone_detector adlı kullanıcının belirli saat dilimlerinden biri, saat dilimi olduğu gibi kalır. Aksi takdirde, uygun olan zamanlardan biri emin olmanız gerekir. Bu, time_zone_detector için bir yapışkanlık unsuru sağlar kullanıcı saat dilimini daha önce veya cihaz sınıra yaklaşıyor.

time_zone_detector hizmetinin belirli veya belirsiz durumu Bir algoritma tarafından gönderilen saat dilimi önerileri.

Genel olarak, öneriler olası durumlarla yakından eşleşen iki türe sahiptir time_zone_detector: belirli ve belirsiz. Bu alanlar: öneri türü örnekleri:

  • tür = uncertain, zoneIds = []

    • Algoritma, saat diliminin ne olduğunu bilmez.
  • tür = certain, zoneIds = ["Europe/London"]

    • Algoritma, bölgenin Avrupa/Londra olduğundan emindir.
  • tür = certain, zoneIds = []`

    • Algoritma kesin ama ilişkilendirilmiş alt bölge kimliği yok geçerli konumla ilişkilendirin.
  • tür = certain, zoneIds = ["America/Denver", "America/Phoenix"]

    • Algoritma, yanıtın iki alt bölgeden biri olduğundan emindir. ancak "Amerika/Denver" arasında seçim yapılamaz. ve "Amerika/Phoenix" yer alır.

time_zone_detector hizmeti, öneri dizilerini ayrı olarak ele alır algoritmalarını temel alır. Algoritmaya bağlı olarak, öneriler algoritmanın ne kadar emin olduğunu belirten meta veriler içerir.

time_zone_detector hizmeti durum bilgili olduğu için kayıt tutar en son öneriden oluşan bir liste görürsünüz. Yeni öneriler gönderilir Önceki bir öneri artık mevcut değilse time_zone_detector hizmetine doğru; diğer bir deyişle, algoritma artık farklı bir öneride saat dilimini algılama özelliğini kaybetti. time_zone_detector hizmeti yeni ve mevcut önerileri yeniden değerlendirir ve önerilerin alındığını kontrol edin.

Android, saat dilimini algılama için iki algoritmayı destekler:

  • Telefon Hizmeti
  • Konum

time_zone_detector hizmeti genellikle şu işlemleri gerçekleştirmek için tek bir algoritma kullanır: zaman dilimini belirleyebilir. Konum algoritması bir cihazda desteklendiğinde kullanıcının kullandığı algoritma, Kullanıcı tarafından yapılandırılan saat dilimi ayarları. kullanılan algoritma saat diliminden (time_zone_detector) belirsiz hale gelir genellikle farklı bir algoritmadan alınan önerileri kullanmaz. Öneriler kullanılmayan algoritmalarla ilişkili dosyalar bellekte tutulabilir. time_zone_detector ancak algoritma olmadığı sürece kullanılmazlar. anlamına gelir. Kullanıcı, otomatik saat dilimi algılama ayarlarını değiştirdiğinde algoritma değiştiğinde, yeni algoritma kullanılır.

Birden fazla algoritmanın kullanıldığı durumlarda, saat dilimini öğrenmek, Telefon yedek modu.

Yedek telefon modu

Android 13 ve sonraki sürümleri çalıştıran cihazlarda time_zone_detector hizmeti, telefon yedek modunu destekler. Bu mod Android'in telefon algılama önerilerini geçici olarak kullanmasına izin verir. konum algılama özelliği, saat dilimini veya konum algılamanın yerini algılayamıyor saat dilimini algılaması, telefon algılamasına göre daha uzun sürer.

Yedek telefon modu, hem telefon hem de konum verilerinin etkinleştirildiği cihazlar için geçerlidir. ve kullanıcının Şu ayarı yapmak için konumu kullan: Saat dilimi ayarları'ndaki saat dilimi'ni seçin. Mod etkinleştirildi cihaz yeniden başlatıldığında ve uçak modu devre dışı bırakıldığında otomatik olarak.

Android 14 ve sonraki sürümlerde telefon yedeği üzerinden tetiklenerek LTZP durum raporlama API'leri Yani bir LTZP, konumu tespit edebilmenin belirsiz olduğunu bildiriyorsa veya saat dilimi ortamı nedeniyle bozulursa yedek telefon modu tetiklendi.

time_zone_detector hizmeti telefon yedek modundayken telefon kullanır. konum algılama, konum algoritmasının devre dışı bırakılması tarihine kadar devre dışı bırakılmış gibi görünür. size öneride bulunur. Belirli bir öneriyi aldıktan sonra telefon yedek mod devre dışıdır ve yalnızca konum önerileri kullanılır.

Yedek telefon moduna ilişkin yapılandırma ayrıntıları için bkz. Saat dilimi algılama yapılandırması.

Saat dilimi ayarları

Kullanıcılar otomatik saat dilimi algılama ayarlarını şurada etkinleştirebilir ve yapılandırabilir: AOSP Ayarları uygulamasında.

Ayarlar&#39;da otomatik saat dilimi algılama

Şekil 2. Ayarlar'dan otomatik saat dilimi algılama.

Aşağıdaki tabloda, AOSP Ayarları uygulaması.

*Android 11 ve önceki sürümlerde bu ayar etiketlidir Ağ tarafından sağlanan saat dilimini kullan

AOSP Ayarları konumu AOSP Ayarları adı Kapsam Davranış
Sistem > Tarih ve Saat Saat dilimini otomatik olarak ayarlama* Tüm kullanıcılar

Açma/kapatma düğmesi.

Açıldığında geçerli saati algılamaktan cihaz sorumlu olur bölge. Kapalı olduğunda, kullanıcılara cihazın ayarlarını yapma saat dilimini manuel olarak değiştirebilirsiniz.

Sistem > Tarih ve Saat Saat dilimini ayarlamak için konumu kullan Geçerli kullanıcı

Açma/kapatma düğmesi.

Android 12'de kullanılabilir. Bu açma/kapatma düğmesi Yalnızca cihazda konum saat dilimi algılama özelliği desteklendiğinde görüntülenir.

Android 14'te kullanıma sunulan değişiklikler için bkz. Yalnızca konum saat dilimi algılamayı destekleyen cihazlar.

Konum Konumu kullan Geçerli kullanıcı

Açma/kapatma düğmesi.

Cihazın konumunun genel olarak kullanılmasına izin verir veya bunu önler. Değer Cihazda konum saat dilimi algılama özelliğinin desteklenmesi gerekir.

Aşağıda, saat dilimi için cihaz davranışına genel bir bakış sunulmaktadır kullanıcı tarafından seçilen ayarlara göre algılama:

  • [Tarih ve Saat] Saat dilimini otomatik olarak ayarla: KAPALI

    • Kullanıcı, saat dilimini manuel olarak seçmelidir.
  • [Tarih ve Saat] Saat dilimini otomatik olarak ayarla: AÇIK

    • [Konum] Konumu kullan: KAPALI

      • Telefon sinyalleri, saat dilimini algılamak için kullanılır.
    • [Konum] Konumu kullan: AÇIK

      • [Tarih ve Saat] Saat dilimini ayarlamak için konumu kullan: AÇIK

        • Konum, saat dilimini algılamak için kullanılır.
      • [Tarih ve Saat] Saat dilimini ayarlamak için konumu kullan: KAPALI

        • Telefon sinyalleri, zamanı algılamak için kullanılır bölge.
ziyaret edin.

Birden fazla kullanıcı cihazı

Ayarlardan bazıları geçerli kullanıcı kapsamında olduğundan cihazın saat dilimi algılama davranışı, geçerli kullanıcı çok kullanıcılı bir Android cihazda gerçekleşen değişiklikleri gösterebilir.

Saat dilimini ayarlamak için konumu kullan açma/kapatma düğmesi, geçerli kullanıcı ayarını gösterir ve cihaz politikası tarafından kısıtlanmadığından kullanıcılar istedikleri zaman değerine ayarlandığında, Saat dilimini otomatik olarak ayarla düğmesi kapalı olsa bile ya da başka saat veya saat dilimi denetimleri Device Policy Denetleyicisi tarafından kısıtlandı.

Yalnızca konumun saat dilimini algılama algoritmasını destekleyen cihazlar

Bu bölümde yalnızca konumu destekleyen cihazların davranışı açıklanmaktadır algoritmasından faydalanırsınız.

  • Android 14 ve sonraki sürümler

    • AOSP Ayarları'nda kullanıcılara Konumu kullan seçeneği gösterilmez ve cihaz, Konumu kullan seçeneği etkinleştirilmiş gibi davranır.
    • Kullanıcı kapsamlı SettingsProvider ayarının değeri location_time_zone_detection_enabled yoksayıldı. Bu değer, kullanıcının diğer cihaz türlerindeki tercihidir.
  • Android 12 veya Android 13

    • Konumu kullan seçeneği, AOSP Ayarları uygulamasında ve kullanıcılar bu seçeneği devre dışı bırakabilir. Bu seçenek devre dışı bırakılırsa cihaz saat dilimini otomatik olarak algılamaz.

Otomatik algılamaya geçiş ve otomatik algılamadan geçişte görülen davranış

Kullanıcı, saat dilimi algılama seçeneğini manuel yerine otomatik olarak değiştirdiğinde, time_zone_detector geçerli saat diliminden zaten emin olabilir. Öyleyse, Kullanıcı otomatik algılamayı etkinleştirdikçe cihazın saat dilimi değiştirilebilir time_zone_detector hizmetinin fikrini eşleştirmek için aynı anda.

Benzer bir şekilde, kullanıcı Ayarlar'da time_zone_detector hizmetinin mevcut algoritması nedeniyle time_zone_detector, yeni algoritma için zaten öneri almıştı. Bu nedenle, time_zone_detector hizmetinin fikrine uyacak şekilde değiştirilebilir hemen teslim edebilirsiniz.

Telefon saat dilimi algılama

Telefon saat dilimi algılama özelliği, geçerli saat dilimini belirlemek için telefon sinyallerini kullanır. saat dilimi. Daha fazla bilgi için Telefon Saat Dilimi'ne bakın Algılama.

Konum saat dilimini algılama

Konum saat dilimini algılama özelliği Android 12'de kullanılabilir veya daha yüksek olabilir. Bu saat dilimi algılama, isteğe bağlı olarak kullanılan bir otomatik saat dilimi cihazlarınızın geçerli saat dilimini belirlemelerine olanak tanır.

Şurada kullanıma sunulan location_time_zone_manager hizmeti: Android 12, sistem sunucusuna bağlıdır ve konum göndermekten sorumlu kodu içerir time_zone_detector hizmetine algoritma önerilerinde bulunmak için kullanılır. Daha fazla bilgi için bkz. Konum Saat Dilimi Algılama.

Özellik benimsemeyle ilgili dikkat edilmesi gereken noktalar

Bu bölümde, konum saat dilimi algılama özelliğinin farklı özellikleri cihaz üreticisinin bu özelliği bir cihazda kullanıp kullanmayacağını belirlemesine yardımcı olabilir.

Telefon ve konum algılamayı karşılaştırma

Aşağıdaki tabloda, denemelerin artı ve eksilerinin karşılaştırmasını bulabilirsiniz. konum algılaması için telefon sinyalleri yerine konum kullanılır.

Telefon algılama Konum algılama
Doğruluk Ülkeye göre değişir.
.
. MM'ye, NITZ'nin doğruluğuna ve kullanılabilirliğine bağlıdır.
Özellik yapılandırmasına veya eklenti bileşenlerine bağlıdır.
.
. Doğruluk genellikle şunlara göre değişir:
  • Konum sağlayıcı doğruluğu ve düzenliliği.
  • Saat dilimi harita verilerinin kalitesi.
Güncellenebilirlik Telefon algılama, güncellenebilir Saat Bölge Verileri modülü (com.android.tzdata APEX). Özellik yapılandırmasına veya eklenti bileşenlerine bağlıdır.
.
. Güncellenebilirlik genellikle cihazın sunucu mu yoksa istemciyi mi kullandığına bağlıdır saat dilimi haritası verileri.
.
. Not: Saat dilimi haritası verileri Saat Android'in TZDB kopyasını ve diğer saatleri güncellemek için kullanılan Bölge Verileri modülü bölge bilgisi.
.
. Cihaz üreticileri, saat dilimi kuralları ve saat dilimi harita verileri.
Güç kullanımı Hiç güç kullanımı yok veya düşük güç kullanımı Kullanıcının konum ayarlarına, kullanılan eklentilere ve genellikle hangi uygulamaların konum isteğinde bulunduğunu gösterir.
Kullanılabilirlik Yalnızca telefon cihazları. Genellikle çalışan bir SIM gerektirir. Konum algılama, mevcut konum sağlayıcılara bağlıdır.
Kullanıcı gizliliği

Kullanıcıların tercih ettiği saat dilimi, genellikle kullanıcının coğrafi konumuna göre konum. Konum hassas veridir. Kullanıcıların, saat dilimi algılama özelliğinin bir parçası olarak konum verilerinin paylaşımıyla ilgili bilgileri içerir. Saat dilimi algılama özelliğinden bağımsız olarak, bir cihazda çalışan tüm uygulamalar Android izni gerekmeden cihazınızın geçerli saat dilimi ve uygulamalar, bu bilgilerden cihazın konumuyla ilgili tam bir fikir edinmeyebilir.

Daha açık belirtmek gerekirse, saat dilimi algılama özelliği pasif veya etkin olabilir. şu anlama gelir:

  • Pasif: Cihazın ortamındaki bir şey cihaza şu komutu verir: saat dilimini kullanır.
  • Etkin: Cihazın saat dilimini kendisine göre belirlemesi ve kullanıcının iletişim şekline ve onların iznini aldıktan sonra, konum bilgisini alır. Daha sonra konumunu harici müşterilerle paylaşabilir kullanıma sunuyoruz. Kullanıcı gizliliği ve kullanıcı rızasıyla ilgili ayrıntılar için aşağıdaki açıklamayı inceleyin.

Telefon algoritmasında olduğu gibi pasif algılama için ek bir bundan bahsetmek istiyoruz.

Konum algoritmasında olduğu gibi, aktif algılama, kullanıcının konumu, hangi kullanıcıların kabul etmek istemeyebileceği için bir ağ üzerinden gönderilebilir.

Android'in saat dilimini algılamaya yönelik kullanıcı gizliliğine yaklaşımı, kullanıcıya etkin olması beklenen algoritmaları tek tek devre dışı bırakma olanağı sağlar. Ayrıca, AOSP platform kodu doğrudan konumla ilgili değildir: Konum algılama ve konumu saat dilimi kimliklerine eşlemek için eklentiye bırakılır. cihaz üreticileri tarafından yapılandırılan bileşenler.

Kullanıcı gizliliği özellikleri hakkında daha fazla bilgi için Konum Saat Dilimi'ne bakın Algılama.

Yapılandırma

Cihaz üreticileri, time_zone_detector hizmetini yapılandırabilir anlamaya başlamışsınızdır. Bu bölümde, genel amaçlı time_zone_detector hizmetinin davranışı. Şu yapılandırma ayrıntıları için: telefon ve saat dilimi algılama algoritmaları için Telefon Saat Dilimi algılama ve Konum Saat Dilimi Algılama.

Temel AOSP yapılandırması şurada: frameworks/base/core/res/res/values/config.xml.

Yapılandırma anahtarı AOSP değeri Açıklama
config_supportTelephonyTimeZoneFallback true time_zone_detector, true olduğunda telefon özelliğini kullanır yedek mod. Bu özellik, Android 13'te kullanılabilir. ve daha yüksek olabilir.

Cihazın varsayılan davranışını değiştirme

AOSP'de otomatik saat dilimi algılama özelliği, auto_time_zone ayarı true olarak ayarlandı. Otomatik zaman algılamayı devre dışı bırakmak için varsayılan olarak, def_auto_time_zone frameworks/base/packages/SettingsProvider/res/values/defaults.xml alıcı: false.

Çerçeve, başka bir cihazdaki yedeği geri yüklerken değeri günceller varsayılan olarak auto_time_zone ayarına bağlıdır. Bu mümkün olduğunca ayarı yedekten geri yüklenmezse auto_time_zone öğesini restore_blocked_global_settings dizisi şurada tanımlanıyor: frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml.

Saat dilimi hata ayıklama ve testi

Bu bölümde, time_zone_detector hizmeti ve herkes tarafından paylaşılan diğer bileşenler kullanır.

device_config hizmetini kullanarak bir cihazı yapılandırma

device_config hizmeti, Android'de aşağıdaki yapılandırma işlemlerini gerçekleştirmek için kullanılan bir mekanizmadır: genellikle uzaktaki bir sunucudan alınan değerler kullanılarak değiştirilebilir özel (AOSP olmayan) koda göre. Test için device_config değerlerini kullanırken, özellikle uzun süreli manuel testler sırasında cihaz, flag'leri sıfırlar ve test için ayarlanan değerleri temizler.

Android 12 veya sonraki sürümlerde, işaretlemeyi geçici olarak önlemek için senkronizasyon için şunu kullanın:

adb shell cmd device_config set_sync_disabled_for_tests persistent

Testlerden sonra işaret senkronizasyonunu geri yüklemek için şunları kullanın:

adb shell cmd device_config set_sync_disabled_for_tests none

İşaret senkronizasyonunu geri yükledikten sonra cihazı yeniden başlatın.

Daha fazla bilgi için $ adb shell cmd device_config help kullanın.

time_zone_detector hizmetiyle etkileşim kurun

time_zone_detector yapılandırmasını ve durumunu görüntülemek için time_zone_detector hizmet, kullanım:

adb shell cmd time_zone_detector dump

Hata ayıklama ve saat dilimi algılamayı test etmeyle ilgili ek komutları görmek için şunları kullanın:

adb shell cmd time_zone_detector help

Yardım çıkışında, aşağıdakileri yapabilecek device_config hizmet özellikleri de açıklanır: test amaçlı time_zone_detector hizmetinin davranışını etkilemek için kullanılır emin olmanız gerekir. Ayrıntılar için bkz. device_config hizmetini kullanarak bir cihazı yapılandırma.

Test kullanıcıları, saat dilimi algılanmasını doğrulamak için hangi algoritmanın time_zone_detector kullanıyor. Mevcut algoritmayı anlamak ve etkilemek için time_zone_detector öğesinin için aşağıdaki seçeneklerden birini kullanın:

  • Ayarlar kullanıcı arayüzünü kullanarak görsel olarak kontrol edin. Daha fazla bilgi için bkz. Saat dilimi ayarları.
  • Adb üzerinden komut satırını kullanın:

    • time_zone_detector durumunun dökümünü almak için adb shell cmd time_zone_detector dump işlevini kullanın
    • Cihaz ayarını değiştirmek için diğer time_zone_detector komutlarını kullanın. Daha fazla bilgi için adb shell cmd time_zone_detector help kullanın.

Aşağıda adb shell cmd time_zone_detector dump komutu çıkışının bir örneği verilmiştir. Aşağıdaki örnekteki mevcut algoritma ve hizmet durumu kalın harflerle gösterilmiştir:

$ adb shell cmd time_zone_detector dump
TimeZoneDetectorStrategy:
  mEnvironment.getCurrentUserId()=0
  mEnvironment.getConfiguration(currentUserId)=ConfigurationInternal{mUserId=0, mUserConfigAllowed=true, mTelephonyDetectionSupported=true, mGeoDetectionSupported=true, mAutoDetectionEnabled=true, mLocationEnabled=true, mGeoDetectionEnabled=true}
  [Capabilities=TimeZoneCapabilitiesAndConfig{mCapabilities=TimeZoneDetectorCapabilities{mUserHandle=UserHandle{0}, mConfigureAutoDetectionEnabledCapability=40, mConfigureGeoDetectionEnabledCapability=40, mSuggestManualTimeZoneCapability=30}, mConfiguration=TimeZoneConfiguration{mBundle=Bundle[{geoDetectionEnabled=true, autoDetectionEnabled=true}]}}]
  mEnvironment.isDeviceTimeZoneInitialized()=true
  mEnvironment.getDeviceTimeZone()=Europe/London
  Time zone change log:
  Manual suggestion history:
...
  Geolocation suggestion history:
...
  Telephony suggestion history:
...

Bilgiler şu şekilde yorumlanabilir:

Anahtar Değer
mUserConfigAllowed Kullanıcının tarih ve saat ayarlarını kontrol etmesinin engellenip engellenmediğini Cihaz Politikası Denetleyicisi.
mTelephonyDetectionSupported Cihazın telefon saat dilimi algılama özelliğine sahip olup olmadığı.
mGeoDetectionSupported Cihazın konum saat dilimi algılama özelliğini destekleyip desteklemediği. Bu, yapılandırmaya ve mevcudiyete göre geçerli durum en az bir LTZP olmalıdır.
mAutoDetectionEnabled Otomatik saat dilimi algılama özelliğinin etkin olup olmadığı.
mLocationEnabled Ana konum açma/kapatma düğmesi.
mGeoDetectionEnabled Algoritma anahtarı: false telefon algoritmasını gösterir. ve true konum algoritmasını gösterir.

Öneri geçmişi bilgisi, hangi önerilerin yapıldığını gösterir telefon ve konum algoritmaları aracılığıyla da bilinir.