Zamana genel bakış

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

Saat ve saat dilimlerine genel bakış

Android, durum çubuğu gibi yerlerde gösterilecek kullanıcının yerel saatini belirlemek için birbiriyle ilişkili ancak birbirinden bağımsız iki durumu takip eder:

  • Mevcut Unix epoch zamanı
  • Geçerli saat dilimi

Mevcut Unix dönemi zamanı ve mevcut saat dilimi, cihaz genelinde durumlar olduğundan bir cihazın tüm kullanıcıları tarafından paylaşılır.

Mevcut Unix dönemi zamanı sabit bir değer değildir. Zaman geçtikçe otomatik olarak güncellenir. Normal zaman geçişinin yanı sıra, bir cihazın mevcut Unix dönemi zamanı 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 ayarlamayı belirler. Örneğin, Los Angeles'ta yaz aylarında cihaz, mevcut Unix döneminden 7 saat çıkarır. Kış aylarında ise 8 saat çıkarır.

Bu yerel saat hesaplamalarını desteklemek için tüm Android cihazlarda tüm küresel 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.

Farklı bir saat diliminin kullanıldığı yeni bir yere seyahat eden kullanıcının mevcut Unix dönemi zamanının ayarlanması gerekmez ancak kullanıcı genellikle önceki konumundaki saat yerine yerel saati görmek ister. Mevcut saat diliminin değiştirilmesi, yeni konumun doğru yerel saatini göstermek için mevcut Unix sıfır zamanına doğru farkın uygulanmasını sağlar.

AOSP, aşağıdaki mekanizmalar aracılığıyla kullanıcıların saat ve saat diliminin otomatik olarak ayarlanıp ayarlanmayacağını bağımsız bir şekilde kontrol etmesine olanak tanır.

  • Otomatik zaman algılama: Cihazın doğru Unix dönemi zamanına sahip olması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.

The time_detector service

Android 10 veya daha yeni sürümlerin yüklü olduğu cihazlarda bulunan time_detector hizmeti, otomatik saat algılamayı yönetir. Otomatik zaman algılama etkinleştirildiğinde cihazın mevcut Unix epoch zamanını gerektiği şekilde ayarlar.

time_detector hizmeti her zaman iki durumdan birinde olur: certain veya uncertain. Hizmetin kesin veya belirsiz durumu, çeşitli kaynaklardan aldığı zaman önerileri ile belirlenir.

time_detector hizmeti kesin olduğunda (yani Unix sıfır zamanı bilgisi içeren bir öneri aldığında) zaman ö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 geçerli saati geçersiz kılmaz. Belirsiz durum genellikle time_detector hizmetinin zaman önerileri almadığı anlamına gelir. time_detector hizmeti, aldığı öneriler kullanılmak için çok eski kabul edilirse de belirsizleşir. Eski Unix zaman saati önerilerini kullanan ayarlamalar, cihazdaki geçen gerçek zamanlı saatten yararlandığı için önerilerin yaşı dikkate alınır. Bu saatin uzun süreler boyunca yanlış olduğu varsayılır.

Bir cihaz, mevcut Unix epoch zamanını otomatik olarak belirlemek için çeşitli kaynaklardan yararlanabilir. Bu dokümanda bunlar kaynaklar olarak adlandırılır. time_detector hizmeti, öneri dizilerini kaynaklarına göre ayrı olarak değerlendirir.

time_detector hizmeti durum bilgisi olan bir hizmettir. Bu nedenle, her kaynak tarafından yapılan en son önerinin kaydını tutar. Bir kaynakta daha yeni Unix epoch zamanı bilgileri varsa time_detector için yeni önerilerde bulunulur. time_detector hizmeti, yeni ve mevcut önerileri yeniden değerlendirir ve öneriler alındığında cihaz durumunu günceller.

UTC saati uluslararası olarak kabul edilse de mevcut Unix dönemi zamanının belirlenmesinin Android destekli bir cihaz için her zaman kolay olmamasının çeşitli nedenleri vardır:

  • Unix epoch saati, UTC saatinden biraz farklı bir zaman tutma sistemidir. İkisi arasında dönüşüm yapmak için artık saniyelerin ne zaman gerçekleştiği ve kaynaklar tarafından nasıl işlendiği hakkında bilgi sahibi olmak gerekir.
  • Kökenler yalnızca belirli zamanlarda veya belirli koşullarda kullanılabilir. Örneğin, kaynağın ağ bağlantısı gerektirmesi durumunda, kaynak yalnızca cihaz internete bağlıyken kullanılabilir.
  • Kaynaklar hatalı veya yanlış olabilir ya da hatalar içerebilir. Örneğin, bir telefon şebekesi baz istasyonu UTC saatini doğru şekilde izlemiyorsa telefon şebekesi kaynağı yanlış zaman önerileri sunabilir.
  • Unix epoch zamanı alınırken hatalar oluşabilir. Örneğin, ağ gecikmesi, arabelleğe alma veya süreç planlama, Unix epoch zamanının yanlış olmasına neden olabilir.
  • Önerinin alınmasından bu yana geçen süre için öneriyi ayarlamak üzere 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) zaman 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ı da destekler:

  • GNSS: GNSS kaynağından zaman almak için GPS konum sağlayıcısını 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ındaki Sistem > Tarih ve Saat bölümünde otomatik saat algılamayı etkinleştirebilir.

Ayarlar'da otomatik zaman algılama

1.şekil Ayarlarda otomatik zaman 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 saati kullan olarak etiketlenir.

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.

Bu ayar etkin olduğunda cihaz, mevcut Unix dönemini algılamaktan sorumludur. Kapalı olduğunda kullanıcılara cihazın saatini manuel olarak ayarlayabilecekleri kontroller sunulur.

Kullanıcı, saati manuel olarak girdiğinde Unix epoch zamanını değil, yerel saatini girer. Mevcut Unix sıfır zamanı, Unix sıfır zamanını 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. Örneğin, hangi kaynakların kullanılacağını ve bu kaynaklardan gelen sinyallere nasıl öncelik verileceğini belirleyebilir.

Kaynak önceliklendirme

Android 12'den itibaren cihaz üreticileri, otomatik saat algılamaya hangi zaman kaynaklarının dahil edileceğini ve core/res/res/values/config.xml'nın bu kaynakları hangi öncelikte değerlendireceğini 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 sabit kodlanmıştır. Bu, telefon önerilerine ağ önerilerinden daha fazla öncelik verildiğ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 şeklinde yapılandırılır. Ağ saati önerilerine, telefon saati önerilerinden daha fazla öncelik verilir. Cihaz üreticileri, Android 11 veya önceki sürümlerdeki davranışa geri dönmek için kaynakların sırasını değiştirebilir. Bu sürümlerde telefoniye 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. Bu, ACTION_TIME_CHANGED amacını dinleyen yüklü uygulamalar için iş oluşturmayı önlemek amacıyla yapılır.

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

İzin verilen zaman sınırları

Android 14, time_detector hizmeti tarafından alınan zaman önerileri için üst bir zaman sınırı getiriyor. Cihaz 32 bit işlemleri destekliyorsa çerçeve, cihazın Y2038 sorununu tetikleyebilecek bir zaman önerisi kullanmasını önlemek için üst 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ı getirmiştir. 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 görüntüsü oluşturulmadan önce olamayacağı ilkesine dayanır. Bir zaman önerisi, alt zaman sınırından önceyse hizmet, derleme zaman damgası doğru olduğunda geçerli olamayacağından öneriyi siler.time_detector

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

Hata ayıklama ve test süresi

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

time_detector hizmetiyle etkileşim kurma

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

adb shell cmd time_detector dump

Saat dilimi algılamayı hata ayıklama ve test etme ile ilgili ek komutları görmek için şunu kullanın:

adb shell cmd time_detector help

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

Otomatik zaman algılamayı doğrulamak için test kullanıcıları, time_detector hizmetinin hangi kaynakları kullandığını bilmelidir. Aşağıda, adb shell cmd time_detector dump komutunun çıktısına ilişkin bir örnek verilmiştir. Mevcut kaynak ve hizmet durumuyla ilgili bilgiler kalın harflerle belirtilmiş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 gibi yorumlanabilir:

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

Zaman 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ılama, ayarlardaki kullanıcı kontrolleri, telefon ve konum saat dilimi algılama ile 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 şekilde ayarlar.

Otomatik saat dilimi algılama etkinleştirildiğinde time_zone_detector iki durumdan birinde olabilir: certain ve uncertain.

time_zone_detector hizmeti belirli bir durumdayken bu, time_zone_detector hizmetinin güçlü saat dilimi bilgileri aldığı anlamına gelir. Bu durum, hizmetin mevcut saat dilimini geçersiz kılmasına neden olabilir. Bu değer belirsiz olduğunda, herhangi bir bilgi almadığı veya yalnızca düşük güven düzeyine sahip bilgiler aldığı anlamına gelir. Bu durumda, geçerli saat dilimi geçersiz kılınmaz.

time_zone_detector hizmetinin belirli durumları, time_zone_detector hizmetinin kullanabileceği saat dilimi bilgisinin olmadığı veya aralarından seçim yapabileceği birden fazla saat diliminin bulunduğu durumları içerebilir. Bu eyaletler şunlardır:

  • Cihaz, saat dilimi olmayan bir yerde (ör. uluslararası sularda veya ihtilaflı bir bölgede) bulunduğunda saat dilimi sıfır olan belirli bir durum girilir. Bu durum, belirsiz bir duruma benzer ancak time_zone_detector'nın saat dilimini belirlemeye çalışmak için başka bir işlem yapması gerekmediğini gösterir.
  • Belirsizlik veya sınır koşullarının olduğu durumlarda birden fazla saat dilimi içeren belirli bir eyalet girilir. Bu durumda, geçerli saat dilimi time_zone_detector'nın emin olduğu saat dilimlerinden biriyse geçerli saat dilimi olduğu gibi bırakılır. Aksi takdirde, mevcut saat dilimlerinden biri kullanılır. Bu, kullanıcı saat dilimini daha önce manuel olarak seçmişse veya cihaz bir sınıra yaklaştığında time_zone_detector öğesine yapışkanlık özelliği kazandırır.

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

Genel olarak, öneriler time_zone_detector'nın olası durumlarıyla yakından eşleşen iki türde gelir: certain ve uncertain. Aşağıda öneri türlerine ilişkin örnekler verilmiştir:

  • type = uncertain, zoneIds = []

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

    • Algoritma, bölgenin Europe/London olduğundan emindir.
  • type = certain, zoneIds = []`

    • Algoritma kesin ancak mevcut konumla ilişkili bir bölge kimliği yok.
  • 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, algoritmasına göre öneri dizilerini ayrı olarak değerlendirir. Algoritmaya bağlı olarak, önerilerde algoritmanın ne kadar kesin olduğunu gösteren meta veriler de yer alabilir.

time_zone_detector hizmeti durum bilgisi olan bir hizmettir. Bu nedenle, her algoritmanın yaptığı en son önerinin kaydını tutar. Önceki bir öneri artık doğru değilse (ör. bir algoritma artık farklı bir öneriye sahipse 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. Konum algoritması bir cihazda desteklendiğinde, cihazın kullandığı algoritma kullanıcının yapılandırdığı saat dilimi ayarlarına göre belirlenir. Kullanımdaki algoritma saat diliminden emin olmadığında time_zone_detector genellikle farklı bir algoritmanın önerilerini kullanmaz. Kullanımda olmayan algoritmalarla ilişkili öneriler time_zone_detector tarafından bellekte tutulabilir ancak algoritma değişmediği sürece 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ılabilen en son öneri kullanılır.

Saat dilimini belirlemek için birden fazla algoritmanın kullanıldığı durumla ilgili ayrıntılar için Telefon hizmeti yedekleme modu başlıklı makaleye bakın.

Telefona geri dönüş modu

Android 13 ve sonraki sürümlerin yüklü olduğu cihazlarda time_zone_detector hizmeti, telefon görüşmesi yedek modunu destekler. Bu mod, konum algılamanın saat dilimini algılayamadığı veya saat dilimini algılamanın telefon algılamadan daha uzun sürdüğü durumlarda Android'in telefon algılama önerilerini geçici olarak kullanmasına olanak tanır.

Telefon görüşmesi yedekleme modu, hem telefon görüşmesi hem de konum algılama özelliklerinin desteklendiği ve kullanıcının Saat dilimi ayarlarında Saat dilimini ayarlamak için konumu kullan seçeneğini etkinleştirdiği cihazlarda geçerlidir. Bu mod, bir 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 görüşmesi yedeklemesi LTZP durum API'leri aracılığıyla tetiklenebilir. Yani bir LTZP, konum veya saat dilimi algılama yeteneğinin ortamı nedeniyle azaldığından emin olmadığını bildirirse telefon görüşmesi yedekleme modu tetiklenir.

Telefon görüşmesi yedekleme modundayken time_zone_detector hizmeti, konum algoritması belirli bir öneride bulunana kadar konum algılama devre dışı bırakılmış gibi telefon görüşmesi önerilerini kullanır. Belirli bir öneri alındıktan sonra telefon görüşmesi yedek modu devre dışı bırakılır ve yalnızca konum önerileri kullanılır.

Telefonla geri dönüş moduyla 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.

Ayarlarda otomatik saat dilimi algılama

Şekil 2. Ayarlarda otomatik saat dilimi algılama

Aşağıdaki tabloda, AOSP Ayarlar uygulamasındaki saat dilimi algılama ile 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 ayarlama* Tüm kullanıcılar

Açma/kapatma düğmesi.

Bu ayar açıkken cihaz, geçerli saat dilimini algılamaktan sorumludur. Kapalı olduğunda kullanıcılara cihazın saat dilimini manuel olarak ayarlayabilecekleri kontroller sunulur.

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

Açma/kapatma düğmesi.

Android 12 ve sonraki sürümlerde kullanılabilir. Bu açma/kapatma düğmesi yalnızca cihazda konum saat dilimini algılama desteklendiğinde gösterilir.

Android 14'te kullanıma sunulan 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 dilimini algılama destekleniyorsa geçerlidir.

Aşağıda, kullanıcı tarafından seçilen ayarlara göre saat dilimi algılamasıyla 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ın: AÇIK

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

İlgili ayarların birçoğu mevcut kullanıcıya göre belirlendiğinden, çok kullanıcılı Android destekli bir cihazda mevcut 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 mevcut kullanıcıyla sınırlıdır ve cihaz politikası tarafından kısıtlanmaz. Bu nedenle, Saat dilimini otomatik olarak ayarla açma/kapatma düğmesi kapalı olsa veya diğer saat ya da saat dilimi kontrolleri Cihaz Politikası Denetleyicisi tarafından kısıtlanmış olsa bile kullanıcılar 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

    • Konumu kullan seçeneği, AOSP Ayarlar uygulamasında kullanıcılara 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 yok sayılır. Bu değer, kullanıcının diğer cihaz türlerindeki tercihini kaydeder.
  • Android 12 veya Android 13

    • Konumu kullan seçeneği, AOSP Ayarlar uygulamasında kullanıcılara görünür ve kullanıcılar bu seçeneği devre dışı bırakabilir. Seçenek devre dışıysa cihaz, saat dilimini otomatik olarak algılamaz.

Otomatik algılamaya geçiş yaparken ve otomatik algılamadan çıkarkenki davranış

Kullanıcı, saat dilimi algılamayı manuel'den otomatik'e geçirdiğinde, time_zone_detector mevcut saat diliminden zaten emin olabilir. Bu durumda, kullanıcı otomatik algılamayı etkinleştirdiğinde cihazın saat dilimi, time_zone_detector hizmetinin görüşüne uygun olarak aynı anda değiştirilebilir.

Benzer şekilde, kullanıcı Ayarlar'da time_zone_detector hizmetinin mevcut algoritmasında değişikliğe neden olan bir değişiklik yaptığında time_zone_detector yeni algoritmayla ilgili öneriler almış olabilir. Bu nedenle, cihazın saati time_zone_detector hizmetinin görüşüne uyacak şekilde hemen değiştirilebilir.

Telefon saat dilimi algılama

Telefon saat dilimi algılama özelliği, mevcut saat dilimini belirlemek için telefon sinyallerini kullanır. Daha fazla bilgi için Telefonda 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. Bu özellik, cihazların mevcut saat dilimini belirlemek için konumlarını kullanmalarını sağlayan 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 konum algoritması önerilerini time_zone_detector hizmetine göndermekten sorumlu kodu içerir. Daha fazla bilgi için Konum saat dilimi algılama başlıklı makaleyi inceleyin.

Özellik kullanımına ilişkin dikkat edilmesi gereken noktalar

Bu bölümde, cihaz üreticilerinin bir cihazda bu özelliği kullanıp kullanmayacağına karar vermesine 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, saat dilimi algılama için telefon sinyalleri yerine konum sinyallerini kullanmanın avantajları ve dezavantajları karşılaştırılmaktadır.

Kategori Telefon hizmeti 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şir:
  • Konum sağlayıcının doğruluğu ve düzenliliği
  • Saat dilimi haritası verilerinin kalitesi.
Güncellenebilme durumu Telefon algılama, güncellenebilir Saat Dilimi Verileri modülünde (com.android.tzdata APEX) bulunan dosyalara dayanır. Özellik yapılandırmasına veya eklenti bileşenlerine bağlıdır.

Güncellenebilirlik genellikle cihazın sunucu veya istemci saat dilimi harita verilerini kullanıp kullanmadığına bağlıdır.

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ünde yer almaz.

Cihaz üreticileri, saat dilimi kuralları ile saat dilimi haritası verileri arasındaki sürüm tutarlılığını da göz önünde bulundurmalıdır.
Güç kullanımı Güç kullanımı yok veya düşük Kullanıcının konum ayarlarının yanı sıra kullanılan eklentilere ve genellikle konum isteyen diğer uygulamalara bağlıdır.
Kullanılabilirlik Yalnızca telefon cihazları. Genellikle çalışan bir SIM kart gerekir. Konum algılama, kullanılabilir 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ı konusunda endişelenebilir. Saat dilimi algılamayla ilgisi olmamakla birlikte, bir cihazda çalışan tüm uygulamalar Android izni gerektirmeden cihazın mevcut saat dilimini okuyabilir ve uygulamalar bu bilgilerden cihazın konumuna dair kesin olmayan bir fikir edinebilir.

Daha spesifik olarak, saat dilimi algılama özelliği pasif veya aktif yöntemlerle çalışabilir:

  • Pasif: Cihazın ortamındaki bir şey, cihaza o ortamda kullanılacak saat dilimini bildirir.
  • Etkin: Cihazın, kendisi için saat dilimini belirlemesi gerekir. Bunu yapmak için kullanıcıların gizlilik ayarlarına ve rızalarına 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 etkileri içermez.

Konum algoritması gibi etkin algılama, cihazın konumunun belirlenmesini içerir. Kullanıcılar bu durumu kabul etmek istemeyebilir ve 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ılara etkin olması beklenen algoritmaları tek tek devre dışı bırakma olanağı tanır. Ayrıca, AOSP platform kodu doğrudan konumla ilgilenmez: Konum algılama ve konumun saat dilimi kimlikleriyle eşlenmesi, cihaz üreticileri tarafından yapılandırılan eklenti bileşenlerine bırakılır.

Kullanıcı gizliliği özellikleriyle ilgili daha fazla bilgi için Konum saat dilimi algılama başlıklı makaleyi inceleyin.

Yapılandırma

Cihaz üreticileri, time_zone_detector hizmetinin davranışını değiştirmek için bu hizmeti yapılandırabilir. Bu bölümde, time_zone_detector hizmetinin genel davranışıyla ilgili yapılandırma seçenekleri açıklanmaktadır. Telefon ve saat dilimi algılama algoritmalarıyla ilgili 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 konumundadır.

Yapılandırma anahtarı AOSP değeri Açıklama
config_supportTelephonyTimeZoneFallback true true, time_zone_detector telefon görüşmesi yedek modunu kullandığında. 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, varsayılan olarak auto_time_zone ayarı true olarak ayarlanmış şekilde etkindir. Varsayılan olarak otomatik saat algılamayı devre dışı bırakmak için def_auto_time_zone değerini frameworks/base/packages/SettingsProvider/res/values/defaults.xml içinde false olarak ayarlayın.

Başka bir cihazdan yedekleme geri yüklenirken çerçeve, auto_time_zone ayarının değerini varsayılan olarak günceller. Bu ayarın yedekten geri yüklenmemesini istiyorsanız auto_time_zone öğesini frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml içinde tanımlanan restore_blocked_global_settings dizisine 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ışıyla ilgili hata ayıklama ve test işlemleri hakkında bilgi verilmektedir.

device_config hizmetini kullanarak cihaz yapılandırma

device_config hizmeti, genellikle tescilli (AOSP olmayan) kod tarafından uzak bir sunucudan çekilen değerler kullanılarak değiştirilebilir davranışları yapılandırmak için Android'de kullanılan bir mekanizmadır. device_config değerleri test için 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 temizlenir.

Android 12 veya sonraki sürümlerde, işaret senkronizasyonunu geçici olarak önlemek için:

adb shell cmd device_config set_sync_disabled_for_tests persistent

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

adb shell cmd device_config set_sync_disabled_for_tests none

İşaret senkronizasyonu geri yüklendikten sonra cihazı yeniden başlatın.

Daha fazla bilgi için $ adb shell cmd device_config help adresini ziyaret edin.

time_zone_detector hizmetiyle etkileşim kurma

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

adb shell cmd time_zone_detector dump

Saat dilimi algılamayı hata ayıklama ve test etme ile ilgili ek komutları görmek için şunu kullanın:

adb shell cmd time_zone_detector help

Yardım çıktısı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 service kullanarak cihaz yapılandırma başlıklı makaleyi inceleyin.

Saat dilimi algılamayı doğrulamak için test kullanıcıları, time_zone_detector hangi algoritmayı kullandığını bilmelidir. time_zone_detector ile ilgili mevcut algoritmayı 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ı kullanma:

    • time_zone_detector durumunu boşaltmak 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 adresini kullanın.

Aşağıda, adb shell cmd time_zone_detector dump komutunun çıktısına bir örnek verilmiştir. Mevcut algoritma ve hizmet durumuyla ilgili bilgiler 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 aşağıdaki gibi yorumlanabilir:

Anahtar Değer
mUserConfigAllowed Kullanıcının tarih ve saat ayarlarını Cihaz Politikası Denetleyicisi tarafından kontrol etmesi engellenip engellenmediği.
mTelephonyDetectionSupported Cihazda telefon saat dilimi algılama özelliği olup olmadığı.
mGeoDetectionSupported Cihazın konum saat dilimini algılamayı destekleyip desteklemediği. Bu, yapılandırmaya ve en az bir LTZP'nin varlığına dayalı 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) aracılığıyla ve telefon ile konum algoritmaları tarafından hangi önerilerin yapıldığını gösterir.