Zamana genel bakış

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

Saate 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:

  • Mevcut Unix sıfır zamanı
  • 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.

Mevcut Unix epoch zamanı sabit bir değer değildir. Zaman ilerledikçe otomatik olarak güncellenir. Normal zaman geçişinin yanı sıra, bir cihazın mevcut Unix çağ zamanının yanlış olduğu tespit edilirse (ör. cihazın gücü kesildikten sonra) ayarlanır.

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

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ı bir saat dilimi kullanan yeni bir yere seyahat ettiğinde, mevcut Unix epoch saatinin ayarlanması gerekmez ancak kullanıcı genellikle önceki konumundaki saat yerine yerel saati görmek ister. Mevcut saat dilimini değiştirmek, yeni konumun yerel saatini doğru şekilde göstermek için mevcut Unix sıfır zamanına doğru farkın uygulanmasını sağlar.

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 doğru mevcut Unix başlangıç zamanını kullanmasını sağlar.
  • Otomatik saat dilimi algılama: Cihazın doğru saat dilimine sahip olmasını sağlar.

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

Android 10 veya sonraki sürümleri çalıştıran cihazlarda bulunan time_detector hizmeti, otomatik saat algılamayı yönetir. Otomatik saat algılama etkinleştirildiğinde cihazın mevcut Unix çağ zamanını gerektiği gibi ayarlar.

time_detector hizmeti her zaman iki durumdan birindedir: belirsiz veya kesin. 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 saat 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 mevcut 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. Bunlara bu dokümanda kaynaklar denir. İ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 bilgisine sahiptir. Yani her kaynağın yaptığı en son önerinin kaydını tutar. Ş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 zamanı uluslararası olarak kabul edilse de mevcut Unix çağ zamanını belirlemenin Android cihazlarda her zaman kolay olmamasının çeşitli nedenleri vardır:

  • Unix sıfır zamanı, UTC zamanından biraz farklı bir zaman tutma sistemidir. İkisi arasında dönüşüm yapmak için saniye eklemelerin ne zaman gerçekleştiğini ve kaynaklar tarafından nasıl ele alındığını bilmek gerekir.
  • 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ğ Saati Protokolü (NTP) saat sunucularını kullanır.
  • Telefon: Ağ Kimliği ve Saat Dilimi (NITZ) telefon sinyallerini kullanır.

Hem telefon hem de ağ kaynakları, her zaman kullanılamayan harici ağlara bağlantı gerektirir.

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

  • GNSS: GNSS kaynağından saat almak için GPS konum sağlayıcıyı kullanır.
  • Harici: Cihaz üreticilerinin kendi Unix epoch zaman kaynağını entegre etmesine olanak tanıyan genel kaynak.

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 Ayarlar uygulamasında zaman algılamayla ilgili kullanıcı kontrolleri açıklanmaktadır.

*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çık olduğunda cihaz, mevcut Unix başlangıç zamanını algılamaktan sorumludur. Kapalı olduğunda kullanıcılara cihazın saatini manuel olarak ayarlamaları için kontroller sunulur.

Kullanıcı saati manuel olarak girdiğinde Unix epoch saatini değil, yerel saatini girer. 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 saati önerilerinin üzerinde önceliklendirilir. 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ğerleri ş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 32 bit işlemleri destekliyorsa çerçeve, cihazın 2038 sorununu tetikleyebilecek bir zaman önerisi kullanmasını önlemek için üst bir zaman sınırı belirler.

Android 12'de kullanılan zaman sınırı time_detector hizmetinin aldığı zaman önerilerini doğrular. Otomatik öneriler için kullanılan alt zaman sınırı değeri, derleme zaman damgasından ayarlanır. Bu işlem, geçerli bir saatin cihazın sistem resmi oluşturulmadan önce olamayacağı ilkesine dayanır. 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 şunları kullanın:

adb shell cmd time_detector dump

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

adb shell cmd time_detector help

Yardım çıkışında, test için veya üretimde time_detector'ün davranışını etkilemek üzere kullanılabilecek device_config hizmet özellikleri de açıklanır. Ayrıntılar için device_config hizmetini kullanarak cihazı yapılandırma başlıklı makaleyi inceleyin.

Otomatik saat algılamayı doğrulamak için test kullanıcılarının, time_detector hizmetinin hangi kaynaklarını kullandığını bilmesi gerekir. 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 aşağıdaki ş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ı.

Saat değişikliği günlüğü, time_detector hizmetinin cihazın mevcut Unix sıfır zamanını değiştirdiği durumları gösterir.

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

Otomatik saat dilimi algılama

Bu bölümde, otomatik saat dilimi algılamayı, ayarlardaki kullanıcı denetimlerini, telefon ve konum saat dilimi algılamayı ve test ayrıntılarını yöneten time_zone_detector hizmetine genel bir bakış sunulmaktadır.

time_zone_detector hizmeti

Android 11 veya sonraki sürümleri çalıştıran cihazlarda bulunan time_zone_detector hizmeti, otomatik saat dilimi algılamayı yönetir. Otomatik saat dilimi algılama etkinleştirildiğinde cihazın mevcut saat dilimini gerektiği gibi ayarlar.

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. Belirsizlik olduğunda, cihaz hiçbir bilgi almamış veya yalnızca güvenilirliği düşük bilgiler almış demektir. Bu durumda, mevcut saat dilimi geçersiz kılınmaz.

time_zone_detector hizmetinin belirli durumları, time_zone_detector'ün kullanabileceği saat dilimi bilgisinin olmadığı veya aralarından seçim yapabileceği birden fazla saat dilimi bulunduğu durumları içerebilir. Bu eyaletler aşağıdaki gibidir:

  • Cihaz, uluslararası sular veya anlaşmazlık bölgesi gibi saat dilimi olmayan bir yerdeyken sıfır saat dilimi olan belirli bir durum girilir. Bu durum, belirsiz duruma benzer ancak time_zone_detector'ün saat dilimini belirlemek için başka işlem yapması gerekmediğini gösterir.
  • Belirsizlik veya sınır koşulları olduğunda birden fazla saat dilimi olan belirli bir eyalet girilir. Bu durumda, mevcut saat dilimi time_zone_detector'nin emin olduğu saat dilimlerinden biriyse mevcut saat dilimi olduğu gibi bırakılır. Aksi takdirde, mevcut saat dilimlerinden biri kullanılır. 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. Aşağıda, öneri türlerine dair örnekler verilmiştir:

  • type = uncertain, zoneIds = []

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

    • Algoritma, bölgenin Avrupa/Londra olduğundan emindir.
  • type = 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 "America/Phoenix" yer alır.

time_zone_detector hizmeti, algoritmasına göre öneri dizilerini farklı olarak değerlendirir. Algoritmaya bağlı olarak, öneriler algoritmanın ne kadar emin olduğunu belirten meta veriler içerir.

time_zone_detector hizmeti durum bilgili olduğundan kayıt tutar en son önerinin bir listesini görürsünüz. Önceki bir öneri artık doğru değilse (yani algoritma artık farklı bir öneri sunuyorsa veya saat dilimini algılama özelliğini kaybetmişse) time_zone_detector hizmetine yeni öneriler gönderilir. time_zone_detector hizmeti yeni ve mevcut önerileri yeniden değerlendirir ve önerilerin alındığını kontrol edin.

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

  • Telefon Hizmeti
  • Konum

time_zone_detector hizmeti, saat dilimini belirlemek için genellikle tek bir algoritma kullanır. 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 dilimini belirlediğinden emin olamadığı durumlarda time_zone_detector genellikle farklı bir algoritmanın önerilerini kullanmaz. Kullanılmayan algoritmalarla ilişkili öneriler time_zone_detector tarafından bellekte tutulabilir ancak algoritma değişmedikçe kullanılmaz. Kullanıcı, otomatik saat dilimi algılama ayarlarını değiştirdiğinde ve algoritma değiştiğinde, Google Etiket Yöneticisi için mevcut 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, konum algılamanın saat dilimini algılayamadığı veya saat dilimini algılamanın konum algılamadan daha uzun sürdüğü durumlarda Android'in telefon algılama önerilerini geçici olarak kullanmasına olanak tanır.

Telefon desteği yedek modu, hem telefon desteğinin hem de konum algılamanın desteklendiği ve kullanıcının Saat dilimi ayarları'nda Saat dilimini ayarlamak için konumu kullan'ı etkinleştirdiği cihazlar için geçerlidir. Bu mod, cihaz yeniden başlatıldığında ve uçak modu devre dışı bırakıldığında otomatik olarak etkinleştirilir.

Android 14 ve sonraki sürümlerde telefon yedeği ve her üç aylık dönem için 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. bir öneride bulunur. Belirli bir öneri alındıktan sonra telefon yedek mod devre dışıdır ve yalnızca konum önerileri kullanılır.

Telefon yedek modu ile ilgili yapılandırma ayrıntıları için Saat dilimi algılama yapılandırması başlıklı makaleyi inceleyin.

Saat dilimi ayarları

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

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 ayarla* Tüm kullanıcılar

Açma/kapatma düğmesi.

Açıldığında saatin algılanmasından cihaz sorumludur bölge. Kapalı olduğunda, kullanıcılara cihazın ayarlarını yapma manuel olarak değiştirebilirsiniz.

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

Bir açma/kapatma düğmesi.

Android 12'den itibaren 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 yapılan değişiklikler için Yalnızca konum saat dilimi algılamayı destekleyen cihazlar başlıklı makaleyi inceleyin.

Konum Konumu kullan Geçerli kullanıcı

Açma/kapatma düğmesi.

Cihazın konumunun genel olarak kullanılmasına izin verir veya bunu engeller. 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.

Birden fazla kullanıcı cihazı

İlgili ayarların birçoğu geçerli kullanıcıya göre kapsamlandırıldığı için çok kullanıcılı bir Android cihazda geçerli kullanıcı değiştiğinde cihazın saat dilimi algılama davranışı değişebilir.

Saat dilimini ayarlamak için konumu kullan açma/kapatma düğmesi, geçerli kullanıcıya göre kapsamlandırılır ve cihaz politikası tarafından kısıtlanmaz. Bu nedenle, kullanıcılar Saat dilimini otomatik olarak ayarla açma/kapatma düğmesi kapalıyken veya diğer saat ya da saat dilimi kontrolleri Cihaz Politikası Denetleyicisi tarafından kısıtlandığında bile değerini her zaman değiştirebilir.

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

Bu bölümde, yalnızca konum algoritmasını destekleyen cihazların davranışı açıklanmaktadır.

  • 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 tercihini kaydeder.
  • Android 12 veya Android 13

    • Konum bilgisi kullan seçeneği, AOSP Ayarlar uygulamasında kullanıcılara gösterilir ve kullanıcılar bu seçeneği devre dışı bırakabilir. Bu seçenek devre dışıysa cihaz saat dilimini otomatik olarak algılamaz.

Otomatik algılamaya geçiş ve otomatik algılamadan geçiş sırasındaki davranış

Kullanıcı, saat dilimi algılamayı manuel yerine otomatik olarak değiştirdiğinde time_zone_detector mevcut saat dilimini zaten biliyor olabilir. Bu durumda, kullanıcı otomatik algılamayı etkinleştirirken cihazın saat dilimi de time_zone_detector hizmetinin görüşüne uyacak şekilde aynı anda değiştirilebilir.

Benzer şekilde, kullanıcı Ayarlar'da time_zone_detector hizmetinin mevcut algoritmasında değişiklik yapan bir ayar yaptığında time_zone_detector hizmeti yeni algoritma için öneriler almış olabilir. Bu nedenle, cihazın saati time_zone_detector hizmetinin görüşüne göre hemen değiştirilebilir.

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 veya sonraki sürümlerde kullanılabilir. Cihazların mevcut saat dilimini belirlemek için konumlarını kullanmasına olanak tanıyan isteğe bağlı bir otomatik saat dilimi algılama özelliğidir.

Ş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 Konum Saat Dilimi Algılama başlıklı makaleyi inceleyin.

Özellik benimsemeyle ilgili dikkat edilmesi gereken noktalar

Bu bölümde, cihaz üreticilerinin cihazlarında bu özelliği kullanıp kullanmayacaklarını belirlemelerine yardımcı olmak için konum saat dilimini algılama özelliğinin bazı yönleri açıklanmaktadır.

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.

MCC, NITZ 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ının doğruluğu ve düzenliliği.
  • Saat dilimi harita verilerinin kalitesi.
Güncellenebilinme durumu Telefon tespiti, güncellenebilir Saat Dilimi Verileri modülünde (com.android.tzdata APEX) bulunan dosyaları kullanır. Özellik yapılandırmasına veya eklenti bileşenlerine bağlıdır.

Güncelleme yapılabilirlik, genellikle cihazın sunucu veya istemci saat dilimi haritası verilerini kullanıp kullanmadığına bağlıdır.

Not: Saat dilimi haritası verileri, Android'in TZDB kopyasını ve diğer saat dilimi bilgilerini güncellemek için kullanılan Saat Dilimi Verileri modülüne dahil değildir.

Cihaz üreticileri, saat dilimi kuralları ile saat dilimi haritası verileri arasındaki sürüm tutarlılığını da dikkate almalıdır.
Güç kullanımı Güç kullanımı yok veya düşük Kullanıcı konum ayarlarına, kullanılan eklentilere ve genellikle diğer uygulamaların konum isteği gönderip göndermediğine bağlıdır.
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 ayrıntılı olarak belirtmek gerekirse, saat dilimi algılama özelliği pasif veya etkin yöntemlerle çalışabilir:

  • Pasif: Cihazın ortamındaki bir şey, cihaza o ortamda kullanılacak saat dilimini söyler.
  • 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 izni hakkında ayrıntılı bilgi için aşağıdaki tartışmaya bakın.

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 dilimi algılama için kullanıcı gizliliğine yaklaşımı, kullanıcıya etkin olması beklenen algoritmaları tek tek devre dışı bırakma olanağı sunar. Ayrıca, AOSP platform kodu doğrudan konumla ilgilenmez: Konum algılama ve konumu saat dilimi kimlikleriyle eşleme, cihaz üreticileri tarafından yapılandırılan eklenti bileşenlerine bırakılır.

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, time_zone_detector hizmetinin genel davranışı için yapılandırma seçenekleri açıklanmaktadır. Telefon ve saat dilimi algılama algoritmalarının yapılandırma ayrıntıları için Telefon Saat Dilimi Algılama ve Konum Saat Dilimi Algılama başlıklı makaleleri inceleyin.

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 true, time_zone_detector telefon kullanımını 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 varsayılan olarak etkindir ve auto_time_zone ayarı true olarak ayarlanmıştır. Otomatik saat algılamayı varsayılan olarak devre dışı bırakmak için frameworks/base/packages/SettingsProvider/res/values/defaults.xml içinde tanımlanan def_auto_time_zone değerini false olarak ayarlayın.

Ç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 ayarın bir yedekten geri yüklenmediğinden emin olmak istiyorsanız frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml içinde tanımlanan restore_blocked_global_settings dizisine auto_time_zone ekleyin.

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 kurma

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, test veya üretim için time_zone_detector hizmetinin davranışını etkilemek üzere kullanılabilecek device_config hizmet özellikleri de açıklanır. 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. time_zone_detector özelliğinin mevcut algoritmasını anlamak ve etkilemek 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 Saat dilimi ayarları başlıklı makaleyi inceleyin.
  • 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 sayfasını ziyaret edin.

Aşağıda, mevcut algoritma ve hizmet durumuyla ilgili bilgilerin kalın olarak gösterildiği adb shell cmd time_zone_detector dump komutunun çıktısı örneği verilmiş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 aşağıdaki şekilde yorumlanabilir:

Anahtar Değer
mUserConfigAllowed Kullanıcının tarih ve saat ayarlarını kontrol etmesinin engellenip engellenmediğini Cihaz Politikası Denetleyicisi.
mTelephonyDetectionSupported Cihazda telefon saat dilimi algılama özelliğinin olup olmadığı.
mGeoDetectionSupported Cihazın konum saat dilimi algılama özelliğini destekleyip desteklemediği. Bu, yapılandırmaya ve mevcudiyete göre etkili 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.