Zamana genel bakış

Bu sayfada, Android'de saat ve saat dilimi algılamanın işleyiş şekli açıklanmaktadır. Buna Android'in saati ve saat dilimlerini otomatik olarak algılama şekli, cihaz üreticileri için yapılandırma seçenekleri ve test bilgileri dahildir.

Saate ve saat dilimlerine genel bakış

Android, durum çubuğu gibi konumlarda gösterilecek kullanıcının yerel saatini belirlemek için iki ilgili ancak bağımsız durumu izler:

  • Mevcut Unix sıfır zamanı
  • Geçerli saat dilimi

Geçerli Unix epoch zamanı ve geçerli saat dilimi, cihaz genelindeki durumlardır. Yani bir cihazın tüm kullanıcıları tarafından paylaşılırlar.

Mevcut Unix epoch zamanı sabit bir değer değildir. Zaman ilerledikçe otomatik olarak güncellenir. Normal zaman akışının 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.

Mevcut saat dilimi, mevcut Unix sıfır zamanını yerel saate dönüştürmek için yapılacak ayarı belirler. Ö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 dünya saat dilimi kurallarının bulunduğu bir veritabanı bulunur. Saat dilimi kuralları hakkında daha fazla bilgi için Saat Dilimi Kuralları başlıklı makaleyi inceleyin.

Bir kullanıcı farklı bir saat dilimi kullanan yeni bir yere seyahat ettiğinde, geçerli 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 saat farkının uygulanmasını sağlar.

AOSP, kullanıcıların saat ve saat diliminin kendileri için otomatik olarak ayarlanıp ayarlanmayacağını aşağıdaki mekanizmalar aracılığıyla bağımsız olarak kontrol etmelerine olanak tanır.

  • 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 zaman algılama

Bu bölümde, otomatik saat algılama, kullanıcı kontrolleri, yapılandırma seçenekleri ve test ayrıntılarını yöneten time_detector hizmetine genel bir bakış sunulmaktadır.

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 kesin veya belirsiz durumu, çeşitli kaynaklardan aldığı zaman önerilerine göre belirlenir.

time_detector hizmeti kesin olduğunda (yani Unix sıfır zamanı bilgilerini içeren bir öneri aldığında), saat önerisi mevcut Unix sıfır zamanından farklıysa mevcut Unix sıfır zamanını geçersiz kılar.

time_detector belirsiz olduğunda mevcut saati geçersiz kılmaz. Belirsiz durum genellikle time_detector hizmetinin zaman önerisi almadığı anlamına gelir. Aldığı önerilerin kullanılamayacak kadar eski olduğu kabul edilirse time_detector hizmeti de belirsiz hale gelir. Eski Unix zaman aralığı önerilerini kullanan ayarlamalar, cihazdaki geçen gerçek zamanlı saate dayanır. Bu saatin uzun süre boyunca yanlış olduğu varsayılır. Bu nedenle, önerilerin yaşı dikkate alınır.

Cihazlar, mevcut Unix zamanını otomatik olarak belirlemek için kullanabileceği çeşitli kaynaklara sahiptir. Bunlara bu dokümanda kaynaklar denir. time_detector hizmeti, öneri dizilerini kökenlerine göre farklı olarak değerlendirir.

time_detector hizmeti durum bilgisine sahiptir. Yani her kaynağın yaptığı en son önerinin kaydını tutar. Bir kaynakta daha güncel Unix epoch zamanı bilgileri varsa time_detector için yeni öneriler yapılır. time_detector hizmeti, yeni ve mevcut önerileri yeniden değerlendirir ve öneriler 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 koşullarda kullanılabilir. Örneğin, kaynak ağ bağlantısı gerektiriyorsa yalnızca cihaz internete bağlıyken kullanılabilir.
  • Kaynaklar yanlış veya tam olmayabilir ya da hata içerebilir. Örneğin, bir telefon baz istasyonu "evrensel saati" doğru şekilde takip etmiyorsa telefon kaynağı yanlış saat önerileri sağlayabilir.
  • Unix epoch zamanı alınırken hatalar oluşabilir. Örneğin, ağ gecikmesi, arabelleğe alma veya işlem planlaması, Unix başlangıç zamanının yanlış olmasına neden olabilir.
  • Bir önerinin, önerinin alındığı andan itibaren geçen süreye göre ayarlanması için kullanılan referans saat yanlış olabilir.

AOSP'de varsayılan olarak kullanılmak üzere yapılandırılmış iki ana zaman algılama kaynağı vardır:

  • : 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 12'den itibaren Android, varsayılan olarak kullanılmak üzere yapılandırılmamış aşağıdaki kaynaklarını da destekler:

  • 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, AOSP Ayarlar uygulamasında Sistem > Tarih ve Saat bölümünde otomatik saat algılamayı etkinleştirebilir.

Ayarlar'da otomatik saat algılama

Şekil 1. Ayarlar'da 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ı kullan olarak etiketlenir.

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

Bir 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. Mevcut Unix başlangıç zamanı, Unix başlangıç zamanı elde etmek için mevcut saat dilimi kullanılarak hesaplanır.

Yapılandırma

Cihaz üreticileri, time_detector hizmetini çeşitli şekillerde yapılandırabilir (ör. hangi kaynakların kullanılacağı ve bu kaynaklardan gelen sinyallere nasıl öncelik verileceği).

Kaynak önceliklendirme

Android 12'den itibaren cihaz üreticileri, otomatik saat algılamaya hangi saat kaynaklarının dahil edileceğini ve bu kaynakların core/res/res/values/config.xmlhangi önceliğe sahip olacağını belirtmek için yapılandırma dosyasını değiştirebilir.time_detector

Android 11 veya önceki sürümleri çalıştıran cihazlarda kaynak önceliği ["telephony", "network"] olarak sabitlenmiştir. Bu, telefon önerilerinin ağ önerilerinin üzerinde önceliklendirildiği anlamına gelir.

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, varsayılan olarak kullanılacak kaynaklar olarak yapılandırılır. Ağ saati önerileri, telefon saati önerilerinin üzerinde önceliklendirilir. Cihaz üreticileri, köklerin sırasını değiştirerek Android 11 veya önceki sürümlerdeki davranışa geri dönebilir. Bu sürümlerde telefon görüşmelerine daha yüksek öncelik verilir.

Varsayılan olarak, en yüksek öncelikli geçerli öneri cihazın mevcut sistem saatiyle birkaç saniye içinde eşleşirse cihaz saati değiştirilmez. Bunun nedeni, ACTION_TIME_CHANGED intent'ini dinleyen yüklü uygulamalar için çalışma oluşturmayı önlemektir.

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

İzin verilen zaman aralıkları

Android 14, time_detector hizmeti tarafından alınan zaman önerileri için üst bir zaman sınırı sunar. Cihaz 32 bit işlemleri destekliyorsa çerçeve, cihazın 2038 sorununu tetikleyebilecek bir saat önerisi kullanmasını önlemek için üst bir zaman sınırı belirler.

Android 12, time_detector hizmeti tarafından alınan zaman önerilerini doğrulamak için kullanılan daha düşük bir zaman sınırı getirdi. 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. Bir zaman önerisi alt zaman sınırından önceyse time_detector hizmeti, derleme zaman damgası doğruysa geçerli olamayacağı için öneriyi reddeder.

Android 11 veya daha eski sürümleri çalıştıran cihazlarda time_detector hizmeti, gelen Unix epoch zaman önerilerini doğrulamaz.

Zamanla ilgili hata ayıklama ve test

Bu bölümde, time_detector hizmetinin ve tüm kaynaklar tarafından paylaşılan diğer bileşenlerin davranışının nasıl hata ayıklanıp test edileceği hakkında bilgi verilmektedir.

time_detector hizmetiyle etkileşimde bulunma

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

adb shell cmd time_detector dump

Saat dilimi algılamasında hata ayıklama ve test için ek komutları görmek üzere:

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ğıda, mevcut kaynak ve hizmet durumuyla ilgili bilgilerin kalın olarak gösterildiği adb shell cmd time_detector dump komutunun çıktısı örneği verilmiş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, her kaynak tarafından hangi önerilerin yapıldığını gösterir.

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ümlerin yüklü olduğu 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 etkinleştirildiğinde time_zone_detector iki durumdan birinde olabilir: belirsiz ve kesin.

time_zone_detector hizmeti belirli bir durumda olduğunda, time_zone_detector hizmetinin güçlü saat dilimi bilgileri aldığı anlamına gelir. Bu da mevcut saat diliminin geçersiz kılınmasına neden olabilir. 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 şunlardır:

  • 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'ün 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, kullanıcı daha önce saat dilimini manuel olarak seçtiyse veya cihaz bir sınıra yaklaştığında time_zone_detector'e bir yapışkan öğe ekler.

time_zone_detector hizmetinin kesin veya belirsiz durumu, bir algoritma tarafından gönderilen saat dilimi önerilerine göre belirlenir.

Genellikle öneriler, time_zone_detector olası durumlarıyla yakından eşleşen iki türde gelir: kesin ve belirsiz. Aşağıda, öneri türlerine dair örnekler verilmiştir:

  • type = uncertain, zoneIds = []

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

    • Algoritma, bölgenin Avrupa/Londra olduğunu belirler.
  • type = certain, zoneIds = []`

    • Algoritma kesindir ancak mevcut konumla ilişkili bir bölge kimliği yoktur.
  • type = certain, zoneIds = ["America/Denver", "America/Phoenix"]

    • Algoritma, yanıtın iki bölgeden biri olduğundan emin ancak "America/Denver" ile "America/Phoenix" arasında seçim yapamıyor.

time_zone_detector hizmeti, öneri dizilerini algoritmalarına göre farklı olarak değerlendirir. Öneriler, algoritmaya bağlı olarak algoritmanın ne kadar kesin olduğunu belirten meta veriler de içerebilir.

time_zone_detector hizmeti durum bilgisine sahiptir. Yani her algoritma tarafından yapılan en son önerinin kaydını tutar. Ö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 öneriler alındığında cihaz durumunu günceller.

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. Bir cihazda konum algoritması desteklendiğinde, cihazın kullandığı algoritma kullanıcı tarafından yapılandırılan saat dilimi ayarlarına göre belirlenir. 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 yeni algoritma için kullanılabilecek en son öneri kullanılır.

Saat dilimini belirlemek için birden fazla algoritmanın kullanıldığı durumlar hakkında ayrıntılı bilgi için Telefon yedek modu başlıklı makaleyi inceleyin.

Telefon yedek 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 yedekleme, LTZP durum raporlama API'leri aracılığıyla tetiklenebilir. Yani bir LTZP belirsiz olduğunu bildirirse ve konumu veya saat dilimini algılama özelliği çevresi tarafından düşürülürse telefon yedekleme modu tetiklenir.

Telefon yedek modundayken time_zone_detector hizmeti, konum algoritması belirli bir öneride bulunana kadar konum algılama devre dışıymış gibi telefon önerilerini kullanır. Belirli bir öneri alındıktan sonra telefon desteği yedek modu devre dışı bırakılı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'da otomatik saat dilimi algılama.

Aşağıdaki tabloda, AOSP Ayarlar uygulamasındaki saat dilimi algılamayla ilgili kullanıcı kontrolleri açıklanmaktadır.

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

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

Bir açma/kapatma düğmesi.

Açık olduğunda cihaz, mevcut saat dilimini algılamaktan sorumludur. Kapalı olduğunda kullanıcılara cihazın saat dilimini manuel olarak ayarlamaları için kontroller sunulur.

Sistem > Tarih ve Saat Saat dilimini ayarlamak için konum bilgisini kullanma 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 desteklendiğinde gösterilir.

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ı

Bir açma/kapatma düğmesi.

Cihazın konumunun genel olarak kullanılmasına izin verir veya bunu engeller. Cihazda konum saat dilimini algılama özelliği destekleniyorsa değer geçerlidir.

Aşağıda, kullanıcı tarafından seçilen ayarlar göz önüne alındığında saat dilimi algılamayla ilgili cihaz davranışına genel bir bakış sunulmaktadır:

  • [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

      • Saat dilimini algılamak için telefon sinyalleri 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

        • Saat dilimini algılamak için telefon sinyalleri kullanılır.

Birden fazla kullanıcının kullandığı cihazlar

İ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ının kapsamına sahiptir 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 veya saat dilimi kontrolleri Cihaz Politikası Denetleyicisi tarafından kısıtlandığında bile bu düğmenin değerini her zaman değiştirebilir.

 Yalnızca konum 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

    • Konum bilgisi kullan seçeneği, AOSP Ayarlar uygulamasında kullanıcılara gösterilmez ve cihaz, Konum bilgisi kullan seçeneği etkinmiş gibi davranır.
    • Kullanıcı kapsamlı SettingsProvider ayarının location_time_zone_detection_enabled değeri yok sayılır. 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 bir değişikliğe neden olan bir değişiklik yaptığında time_zone_detector, 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, mevcut saat dilimini belirlemek için telefon sinyallerini kullanır. Daha fazla bilgi için Telefon Saat Dilimi Algılama başlıklı makaleyi inceleyin.

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.

Android 12'de kullanıma sunulan location_time_zone_manager hizmeti, sistem sunucusunda çalışır ve time_zone_detector hizmetine konum algoritması önerileri göndermekten sorumlu kodu içerir. Daha fazla bilgi için Konum Saat Dilimi Algılama başlıklı makaleyi inceleyin.

Özellik kullanımıyla 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ı özellikleri açıklanmaktadır.

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

Aşağıdaki tabloda, saat dilimi algılama için telefon sinyalleri yerine konum kullanmanın avantajları ve dezavantajları karşılaştırılmıştı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 şu faktörlere göre değişiklik gösterir:
  • Konum sağlayıcının doğruluğu ve düzenliliği.
  • Saat dilimi haritası 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üncellenebilirlik 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ının konum ayarlarına, kullanılan eklentilere ve genellikle diğer uygulamaların konum isteğine bağlıdır.
Kullanılabilirlik Yalnızca telefon cihazları. Genellikle çalışan bir SIM kartı gerekir. Konum algılama, mevcut konum sağlayıcılara bağlıdır.
Kullanıcı gizliliği

Kullanıcının tercih ettiği saat dilimi genellikle coğrafi konumuna göre belirlenir. Konum, hassas veridir. Kullanıcılar, saat dilimi algılama kapsamında konum bilgilerinin paylaşılmasından endişe duyabilir. Saat dilimi algılamayla ilgili olmayan bir durumdur. Bir cihazda çalışan tüm uygulamalar, Android izni gerektirmeden cihazın mevcut saat dilimini okuyabilir ve bu bilgilerden cihazın konumu hakkında yaklaşık bir fikir edinebilir.

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 öğe, cihaza o ortamda kullanılacak saat dilimini söyler.
  • Etkin: Cihazın saat dilimini kendisi belirlemesi gerekir. Bunun için kullanıcıların gizlilik ayarlarına ve izinlerine bağlı olarak cihazın konumunu alır. Ardından konumunu harici hizmetlerle paylaşabilir. Kullanıcı gizliliği ve izniyle ilgili ayrıntılar için aşağıdaki tartışmaya bakın.

Telefon algoritması gibi pasif algılama, kullanıcılar için ek gizlilik sorunları oluşturmaz.

Konum algoritması gibi etkin algılama, cihazın konumunu belirlemeyi içerir. Kullanıcılar bu durumu kabul etmek istemeyebilir. Ayrıca, saat dilimi kimliğini belirlemek için konum 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 Algılama başlıklı makaleyi inceleyin.

Yapılandırma

Cihaz üreticileri, time_zone_detector hizmetini yapılandırarak davranışını değiştirebilir. 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ı frameworks/base/core/res/res/values/config.xml adresindedir.

Yapılandırma anahtarı AOSP değeri Açıklama
config_supportTelephonyTimeZoneFallback true true olduğunda time_zone_detector, telefon desteği yedek modunu kullanır. Bu özellik Android 13 ve sonraki sürümlerde kullanılabilir.

 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 cihazdan yedek geri yüklerken varsayılan olarak auto_time_zone ayarının değerini günceller. Bu ayarın 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 test

Bu bölümde, time_zone_detector hizmetinin ve tüm algoritmalar tarafından paylaşılan diğer bileşenlerin davranışının nasıl hata ayıklanıp test edileceği hakkında bilgi verilmektedir.

device_config hizmetini kullanarak cihaz yapılandırması

device_config hizmeti, genellikle özel (AOSP dışı) kod tarafından uzak bir sunucudan alınan değerleri kullanarak değiştirilebilir davranışı yapılandırmak için Android'de kullanılan bir mekanizmadır. Test için device_config değerleri kullanılırken, özellikle uzun süren manuel testler sırasında cihaz işaretleri senkronize edebilir. Bu durumda işaretler sıfırlanır ve test için ayarlanan değerler silinir.

Android 12 veya sonraki sürümlerde işaret senkronizasyonunu geçici olarak önlemek için şunları 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 sayfasını ziyaret edin.

time_zone_detector hizmetiyle etkileşim kurma

time_zone_detector hizmetinin time_zone_detector yapılandırmasını ve durumunu görüntülemek için şunları kullanın:

adb shell cmd time_zone_detector dump

Saat dilimi algılamasında hata ayıklama ve test için ek komutları görmek üzere:

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 device_config hizmetini kullanarak cihazı yapılandırma başlıklı makaleyi inceleyin.

Saat dilimi algılamayı doğrulamak için test kullanıcılarının time_zone_detector'ın hangi algoritmayı kullandığından haberdar olması gerekir. 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ünden 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 durumunu dökmek için adb shell cmd time_zone_detector dump 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, Cihaz Politikası Denetleyicisi tarafından tarih ve saat ayarlarını kontrol etmesinin engellenip engellenmediğini belirtir.
mTelephonyDetectionSupported Cihazda telefon saat dilimi algılama özelliğinin olup olmadığı.
mGeoDetectionSupported Cihazın konum saat dilimini algılama özelliğini destekleyip desteklemediğini belirtir. Bu, yapılandırmaya ve en az bir LTZP'nin varlığına göre etkili durumdur.
mAutoDetectionEnabled Otomatik saat dilimi algılamanın etkin olup olmadığı.
mLocationEnabled Ana konum açma/kapatma düğmesi.
mGeoDetectionEnabled Algoritma anahtarı: false, telefon algoritmasını, true ise konum algoritmasını gösterir.

Öneri geçmişi bilgileri, Ayarlar (manuel) ve telefon ve konum algoritmaları tarafından hangi önerilerin yapıldığını gösterir.