Süreye Genel Bakış

Bu sayfada, Android'de saat ve saat dilimi algılama özelliğinin işleyiş şekli açıklanmaktadır. Android'in saat ve saat dilimlerini otomatik olarak algılama biçimi, cihaz üreticileri için yapılandırma seçenekleri ve test bilgileri de bu kapsamdadır.

Saat ve saat dilimlerine genel bakış

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

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

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

Geçerli Unix sıfır zamanı sabit bir değer değil. Zamanın geçişini yansıtacak şekilde otomatik olarak güncellenir. Normal zamanın yanı sıra cihazın mevcut Unix epoch zamanı da bu saatin 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ürmek için yapılacak düzenlemeyi belirler. Örneğin, Los Angeles'ta yaz mevsiminde cihaz, geçerli Unix dönem zamanından 7 saat çıkarıyor ve kışın 8 saat çıkarıyor.

Bu yerel saat hesaplamalarını desteklemek için tüm Android cihazlarda tüm küresel saat dilimi kurallarının bir veritabanı vardır. Saat dilimi kuralları hakkında daha fazla bilgi için Saat Dilimi Kuralları'na bakın.

Bir kullanıcı farklı bir saat diliminin kullanıldığı yeni bir konuma seyahat ettiğinde, geçerli Unix dönem saatinin ayarlanmasına gerek yoktur ancak kullanıcı genellikle önceki konumundaki saat yerine yerel saati görmek ister. Geçerli saat diliminin değiştirilmesi, yeni konum için doğru yerel saati göstermek üzere geçerli Unix dönem saatine doğru ofsetin uygulanmasını sağlar.

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

  • Otomatik zaman algılama: Cihazın geçerli Unix sıfır zamanına sahip olmasını sağlar.
  • Otomatik saat dilimi algılama: Cihazın doğru geçerli saat dilimini kullanmasını sağlar.

Otomatik saat algılama

Bu bölümde otomatik zaman algılamayı, kullanıcı denetimlerini, yapılandırma seçeneklerini 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 zaman algılamayı yönetir. Otomatik zaman algılama etkinleştirildiğinde cihazın geçerli Unix sıfır süresini gereken şekilde ayarlar.

time_detector hizmeti her zaman şu iki durumdan birindedir: belirsiz veya certain. Hizmetin belirli veya belirsiz durumu, çeşitli kaynaklardan aldığı zaman önerileriyle belirlenir.

time_detector hizmeti kesin olduğunda, yani Unix dönem saati bilgisiyle bir öneri aldığında, zaman önerisi mevcut Unix dönem zamanından farklıysa geçerli Unix dönem 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ığı önerilerin kullanılamayacak kadar eski olup olmadığından da emin olamaz. Eski Unix dönem zaman önerilerinin kullanıldığı düzenlemeler, cihazda geçen gerçek zamanlı saate dayandığı için önerilerin yaşı dikkate alınır. Bu saatin uzun süre boyunca yanlış olduğu varsayılır.

Geçerli Unix dönem saatini otomatik olarak ayarlamak için cihazların kullanabileceği çeşitli kaynaklar bulunur. Bu dokümanda, bunlara kaynaklar adı verilir. time_detector hizmeti, öneri dizilerini kaynaklarına göre ayrı olarak ele alır.

time_detector hizmeti durum bilgilidir. Yani, her kaynak tarafından yapılan en son önerinin kaydını tutar. Bir kaynak daha yeni Unix dönem saati bilgisine sahipse 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 saati uluslararası ölçekte kararlaştırılsa da Android cihazlar için geçerli Unix dönem saatini belirlemenin çeşitli nedenleri vardır:

  • Unix dönem saati, UTC saatinden oldukça farklı bir zaman tutma sistemidir. Bu ikisi arasında dönüşüm yapmak için artık saniyelerin ne zaman gerçekleştiğini ve bunların kaynaklar tarafından nasıl işlendiğini bilmek gerekir.
  • Kaynaklar yalnızca belirli zamanlarda veya belirli durumlarda kullanılabilir. Örneğin, kaynak ağ bağlantısı gerektiriyorsa kaynak yalnızca cihaz internete bağlıyken kullanılabilir.
  • Kaynaklar yanlış veya tam olmayan ya da hatalı olabilir. Örneğin, bir telefon baz istasyonu "evrensel zamanı" doğru şekilde izlemiyorsa telefon kaynağı yanlış zaman önerileri sunabilir.
  • Unix dönem saati alınırken yanlışlıklar olabilir. Örneğin, bir ağ gecikmesi, arabelleğe alma veya işlem programlama, Unix dönem zamanının yanlış olmasına neden olabilir.
  • Bir öneriyi, önerinin alınmasından itibaren geçen süreye göre düzenlemek 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) 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ım için yapılandırılmamış aşağıdaki kaynakları da destekler:

  • GNSS: Bir GNSS kaynağından zaman almak için GPS konum sağlayıcısını kullanır.
  • Harici: Cihaz üreticilerinin kendi Unix dönem zamanı kaynaklarını entegre etmesine olanak tanıyan genel kaynak.

Zaman ayarları

Kullanıcılar, AOSP Ayarları uygulamasındaki Sistem > Tarih ve Saat bölümünden otomatik saat algılamayı etkinleştirebilir.

Ayarlar'da otomatik saat algılama

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

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

*Android 11 ve önceki sürümlerde bu ayar Ağ tarafından sağlanan zamanı kullan şeklinde 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.

Açıldığında cihaz, geçerli Unix sıfır saatini algılamaktan sorumludur. Kapalı olduğunda, kullanıcılara cihazın saatini manuel olarak ayarlayabilmeleri için kontroller sağlanır.

Kullanıcı, saati manuel olarak girdiğinde Unix epoch saatini değil, yerel saatini girer. Geçerli Unix sıfır zamanı, Unix dönem saatini türetmek için geçerli saat dilimi kullanılarak hesaplanır.

Yapılandırma

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

Kaynak önceliklendirme

Cihaz üreticileri, Android 12'den itibaren core/res/res/values/config.xmlyapılandırma dosyasını değiştirerek otomatik zaman algılamaya hangi zaman kaynaklarının dahil edileceğini ve time_detector tarafından bu kaynakların dikkate alındığı önceliği belirtebilir.

Android 11 veya önceki sürümleri çalıştıran cihazlarda kaynak önceliği, ["telephony", "network"] olarak kodlanır. Yani telefon önerileri, ağ önerilerinden daha önceliklidir.

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 kaynak olarak yapılandırılır. Ağ saati önerileri, telefon saati önerilerinden daha önceliklidir. Cihaz üreticileri, kaynakların sırasını değiştirerek telefona daha yüksek öncelik verilen Android 11 veya önceki sürümlerdeki davranışa geri dönebilir.

Varsayılan olarak, en yüksek önceliğe sahip geçerli öneri, cihazın mevcut sistem saatiyle birkaç saniye içinde eşleşirse cihaz süresi değişmez. Bunun amacı, ACTION_TIME_CHANGED amacını dinleyen yüklü uygulamalar için iş oluşturmayı önlemektir.

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

İzin verilen zaman sınırları

Android 14, time_detector hizmetinin aldığı zaman önerileri için bir üst zaman sınırı sunar. Cihaz 32 bit işlemleri destekliyorsa çerçeve, cihazın Y2038 sorununu tetikleyebilecek bir zaman önerisi kullanmasını önlemek için bir üst süre sınırı belirler.

Android 12'de, time_detector hizmetinin aldığı zaman önerilerini doğrulamak için kullanılan daha düşük bir zaman sınırı kullanıma sunuldu. Otomatik öneriler için kullanılan alt zaman sınırı değeri, derleme zaman damgasından ayarlanır. Bu, geçerli bir zamanın, cihazın sistem görüntüsü oluşturulmadan önce olamayacağı ilkesi doğrultusunda çalışır. Bir zaman önerisi alt zaman sınırından önceyse time_detector hizmeti, derleme zaman damgası doğru olduğunda geçerli olamayacağı için öneriyi siler.

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

Zaman hata ayıklaması ve testi

Bu bölümde, time_detector hizmeti ve tüm kaynaklar tarafından paylaşılan diğer bileşenlerin hatalarını ayıklama ve davranışları test etme hakkında bilgi verilmektedir.

time_detector hizmetiyle etkileşim kurun

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

adb shell cmd time_detector dump

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

adb shell cmd time_detector help

Yardım çıkışında, test veya üretim sırasında time_detector ürününün davranışını etkilemek için kullanılabilecek device_config hizmet özellikleri de açıklanır. Ayrıntılar için device_config hizmetini kullanarak cihaz yapılandırma bölümüne göz atın.

Otomatik zaman algılamayı doğrulamak için test kullanıcılarının time_detector hizmetinin hangi kaynakları kullandığını bilmesi gerekir. Aşağıda, adb shell cmd time_detector dump komutu çıkışının bir örneği verilmiştir. Geçerli kaynak ve hizmet durumu hakkındaki bilgiler kalın harflerle gösterilmiştir:

$ adb shell cmd time_detector dump

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

Bilgiler şu şekilde yorumlanabilir:

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

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

Öneri geçmişi bilgileri, her kaynak tarafından hangi önerilerde bulunulduğunu gösterir.

Otomatik saat dilimi algılama

Bu bölümde otomatik saat dilimi algılamayı, ayarlardaki kullanıcı denetimlerini, telefon ve konum saat dilimini algılamayı ve test ayrıntılarını yöneten time_zone_detector hizmetine genel 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 geçerli saat dilimini gerektiği şekilde ayarlar.

Otomatik saat dilimi algılama özelliği etkinleştirildiğinde time_zone_detector iki durumdan birinde olabilir: belirsiz ve belirli.

time_zone_detector hizmetinin belirli bir durumda olması, time_zone_detector hizmetinin güçlü saat dilimi bilgileri aldığı anlamına gelir. Bu da geçerli saat dilimini geçersiz kılabilir. Verilerin belirsiz olması, hiç bilgi almadığı veya yalnızca güvenilirliği düşük bilgiler aldığı anlamına gelir. Bu da geçerli saat diliminin geçersiz kılınmayacağı anlamına gelir.

time_zone_detector hizmetinin belirli durumları, time_zone_detector için kullanılacak saat dilimi bilgisinin olmadığı veya aralarında seçim yapabileceğiniz birden fazla saat dilimi bulunduğu durumları içerebilir. Bu eyaletler aşağıdaki gibidir:

  • Cihaz, saat dilimi bulunmayan bir yerdeyse (ör. uluslararası sularda veya ihtilaflı bir bölgede), sıfır saat dilimi olan belirli bir eyalet girilir. Bu durum, belirsiz bir duruma benzer ancak time_zone_detector hizmetinin, saat dilimini belirlemeyi denemek için başka bir işlem yapmasına gerek olmadığını gösterir.
  • Belirsizliğin veya sınır koşullarının bulunduğu, birden çok saat dilimi bulunan belirli bir eyalet girilir. Bu durumda, geçerli saat dilimi time_zone_detector ürününün kesin olduğu saat dilimlerinden biriyse geçerli saat dilimi olduğu gibi kalır. Aksi takdirde, mevcut saat dilimlerinden biri kullanılır. Kullanıcı saat dilimini daha önce manuel olarak seçtiyse veya cihaz bir sınıra yaklaştıkça bu işlem, time_zone_detector için bir yapışkanlık öğesi sağlar.

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

Genel olarak, öneriler time_zone_detector'ın olası durumlarıyla yakından eşleşen iki türe sahiptir: belirli ve belirsiz. Aşağıda öneri türü örnekleri verilmiştir:

  • tür = uncertain, zoneIds = []

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

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

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

    • Algoritma, yanıtın iki alt bölgeden biri olduğundan emindir ancak "Amerika/Denver" ile "Amerika/Phoenix" arasında seçim yapamaz.

time_zone_detector hizmeti, öneri dizilerini algoritmasına göre ayrı olarak ele alır. Algoritmaya bağlı olarak, öneriler algoritmanın ne kadar kesin olduğunu gösteren meta verileri de içerebilir.

time_zone_detector hizmeti durum bilgili olduğundan her algoritma tarafından yapılan en son önerinin kaydını tutar. Önceki bir öneri artık doğru değilse, yani 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 dilimini 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 dilimi belirsiz hale geldiğinde time_zone_detector genellikle farklı bir algoritmadan önerileri kullanmaz. Kullanılmayan 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 mevcut en son öneri kullanılır.

Saat dilimini belirlemek amacıyla birden fazla algoritmanın kullanıldığı durumla ilgili ayrıntılar için Yedek telefon modu bölümüne bakın.

Yedek telefon modu

Android 13 ve sonraki sürümleri çalıştıran cihazlarda time_zone_detector hizmeti, yedek telefon modunu destekler. Bu mod, konum algılamanın saat dilimini algılayamadığı veya konum algılamanın saat dilimini algılamasının telefon algılamasına göre daha uzun sürdüğü durumlarda telefon algılama önerilerini geçici olarak kullanmasına olanak tanır.

Yedek telefon modu, hem telefon hem de konum algılamanın desteklendiği ve kullanıcının Saat dilimi ayarları'nda Saat dilimini ayarlamak için konumu kullan seçeneğini etkinleştirdiği cihazlar için 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 yedeği, LTZP durum raporlama API'leri aracılığıyla tetiklenebilir. Yani, bir LTZP'nin belirsiz olduğunu bildirmesi ve konumu veya saat dilimini algılama becerisinin ortamı nedeniyle bozulması durumunda yedek telefon modu tetiklenir.

Telefon yedek modundayken time_zone_detector hizmeti, konum algoritması belirli bir öneride bulunan a kadar konum algılama devre dışıymış gibi telefon önerilerini kullanır. Belirli bir öneri alındıktan sonra telefon yedek modu devre dışı kalır ve yalnızca konum önerileri kullanılır.

Yedek telefon moduna ilişkin yapılandırma ayrıntıları için Saat dilimi algılama yapılandırması bölümüne bakın.

Saat dilimi ayarları

Kullanıcılar, otomatik saat dilimi algılama ayarlarını AOSP Ayarları uygulamasından etkinleştirip 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ında saat dilimi algılama için kullanıcı kontrolleri açıklanmaktadır.

*Android 11 ve önceki sürümlerde bu ayar Ağ tarafından sağlanan saat dilimini kullan şeklinde 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.

Açık olduğunda geçerli saat dilimini algılamaktan cihaz sorumludur. Kapalı olduğunda, kullanıcılara cihazın saat dilimini manuel olarak ayarlama kontrolleri sağlanır.

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

Açma/kapatma düğmesi.

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

14 sürümünde yapılan değişiklikler için Yalnızca konum saat dilimi algılamayı destekleyen cihazlar bölümüne bakın.

Konum Konumu kullan Geçerli kullanıcı

Açma/kapatma düğmesi.

Cihazın konumunun genel olarak kullanılmasına izin verir veya bunu önler. Bu değer, cihazda konum saat dilimi algılama özelliği destekleniyorsa geçerlidir.

Aşağıda, kullanıcı tarafından seçilen ayarlara göre saat dilimini algılamak için 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

      • 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, saat dilimini algılamak için kullanılır.

Birden fazla kullanıcı cihazı

Ayarlardan bazıları mevcut kullanıcıya göre ayarlandığından, geçerli kullanıcı çok kullanıcılı bir Android cihazda değişiklik yaptığında cihazın saat dilimi algılama davranışı değişebilir.

Saat dilimini otomatik olarak ayarlamak için konumu kullan düğmesi, geçerli kullanıcıyı kapsar ve cihaz politikası tarafından kısıtlanmaz. Diğer bir deyişle, kullanıcılar Saat dilimini otomatik olarak ayarla düğmesi kapalı olduğunda veya diğer saat ya da saat dilimi kontrolleri Device Policy Denetleyicisi tarafından kısıtlanmış olsa bile kullanıcının değerini istedikleri zaman değiştirebilirler.

Yalnızca konum saat dilimi 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ı uygulaması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 location_time_zone_detection_enabled değeri yoksayı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 bu seçeneği devre dışı bırakabilir. Seçenek devre dışı bırakılırsa cihaz, saat dilimini otomatik olarak algılamaz.

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

Kullanıcı, saat dilimi algılama seçeneğini manuel yerine otomatik olarak değiştirdiğinde, time_zone_detector geçerli saat diliminden zaten emin olabilir. Bu durumda, kullanıcı otomatik algılamayı etkinleştirdiğinden cihazın saat dilimi aynı anda time_zone_detector hizmetinin fikrine uygun olacak şekilde değiştirilebilir.

Benzer şekilde, kullanıcı Ayarlar'da time_zone_detector hizmetinin mevcut algoritmasında değişikliğe yol açan bir değişiklik yaptığında time_zone_detector, yeni algoritma için öneriler almış olabilir. Bu nedenle, cihazın süresi, time_zone_detector hizmetinin fikriyle uyumlu olacak şekilde 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. Daha fazla bilgi için Telefon Saat Dilimi Algılama bölümünü inceleyin.

Konum saat dilimini algılama

Konum saat dilimi algılama özelliği, Android 12 veya sonraki sürümlerde kullanılabilir. İsteğe bağlı bir otomatik saat dilimi algılama özelliğidir. Bu özellik, cihazların mevcut saat dilimini belirlemek için kendi konumlarını kullanmalarını sağlar.

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 bölümünü inceleyin.

Özellik benimsemeyle ilgili dikkat edilmesi gereken noktalar

Bu bölümde, cihaz üreticisinin bu özelliğin bir cihazda kullanılıp kullanılmayacağını belirlemesine yardımcı olmak için konum saat dilimi algılama özelliğinin ö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 bilgisi 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.

MM'ye, NITZ'nin doğruluğuna ve kullanılabilirliğine bağlıdır.
Özellik yapılandırmasına veya eklenti bileşenlerine bağlıdır.

Doğruluk genellikle şu ölçütlere göre değişiklik gösterir:
  • Konum sağlayıcı doğruluğu ve düzenliliği.
  • Saat dilimi harita verilerinin kalitesi.
Güncellenebilirlik 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üncellenebilme durumu, genellikle cihazın sunucu veya istemci saat dilimi haritası verilerini kullanıp kullanmadığına bağlıdır.

Not: Saat dilimi harita 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 harita verileri arasında sürüm tutarlılığını da göz önünde bulundurmalıdır.
Güç kullanımı Hiç güç kullanımı yok veya düşük güç kullanımı Kullanıcı konum ayarlarına, kullanılmakta olan eklentilere ve genellikle diğer uygulamaların konum bilgisi istediklerine 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

Bir 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 özelliğinin bir parçası olarak konumlarının paylaşıldığını bilme konusunda endişe duyuyor olabilir. Saat dilimi algılama özelliğinden bağımsız olarak, bir cihazda çalışan tüm uygulamalar Android izni gerekmeden cihazın geçerli saat dilimini okuyabilir ve bu bilgilerden cihazın konumuyla ilgili tam bir fikir verilmeyebilir.

Daha açık belirtmek gerekirse, saat dilimi algılama özelliği pasif veya etkin yollarla çalışabilir:

  • Pasif: Cihazın ortamındaki bir şey, cihaza söz konusu ortamda kullanılması gereken saat dilimini bildirir.
  • Etkin: Cihazın saat dilimini kendi başına hesaplaması gerekir ve kullanıcının gizlilik ayarlarına ve iznine bağlı olarak bu işlem için cihazın konumunu alır. Daha sonra konumunu harici hizmetlerle paylaşabilir. Kullanıcı gizliliği ve kullanıcı rızasıyla ilgili ayrıntılar için aşağıdaki açıklamayı inceleyin.

Telefon algoritmasındaki gibi pasif algılamanın kullanıcılar için ek gizlilik etkisi yoktur.

Konum algoritmasında olduğu gibi aktif algılama, cihaz konumunun belirlenmesini içerir. Kullanıcıların bunu kabul etmek istemeyebileceği durumlar ve konum, saat dilimi kimliğinin belirlenmesi 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ğı tanır. Ayrıca, AOSP platform kodu doğrudan konumun kendisiyle ilgilenmez: Konum algılama ve konumu saat dilimi kimliklerine 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 bölümüne bakın.

Yapılandırma

Cihaz üreticileri, time_zone_detector hizmetinin davranışını değiştirecek şekilde yapılandırabilir. Bu bölümde, time_zone_detector hizmetinin genel davranışına yönelik 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 bölümlerine göz atın.

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, time_zone_detector telefon 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, auto_time_zone ayarı true seçeneğine ayarlandığında varsayılan olarak etkindir. Otomatik zaman 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 varsayılan olarak auto_time_zone ayarının değerini günceller. Bu ayarın bir yedekten geri yüklenmemesini sağlamak istiyorsanız frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml politikasında tanımlanan restore_blocked_global_settings dizisine auto_time_zone ifadesini ekleyin.

Saat dilimi hata ayıklama ve testi

Bu bölümde, time_zone_detector hizmeti ve tüm algoritmalar tarafından paylaşılan diğer bileşenlerin davranışlarında hata ayıklama ve davranış test etme hakkında bilgi verilmektedir.

device_config hizmetini kullanarak bir cihazı yapılandırma

device_config hizmeti, Android'de özel (AOSP olmayan) kod tarafından genellikle uzaktaki bir sunucudan çekilen değerleri kullanarak değiştirilebilir davranışları yapılandırmak için kullanılan bir mekanizmadır. Test için device_config değerleri kullanılırken, özellikle uzun süreli manuel testler sırasında cihaz, işaretleri senkronize edebilir. Bu da işaretleri sıfırlayıp test için ayarlanan değerleri temizler.

Android 12 veya sonraki sürümlerde işaret senkronizasyonunu geçici olarak engellemek için şunu kullanın:

adb shell cmd device_config set_sync_disabled_for_tests persistent

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

adb shell cmd device_config set_sync_disabled_for_tests none

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

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

time_zone_detector hizmetiyle etkileşim kurun

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

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 sırasında time_zone_detector hizmetinin davranışını etkilemek için kullanılabilecek device_config hizmet özellikleri de açıklanmaktadır. Ayrıntılar için device_config hizmetini kullanarak cihaz yapılandırma bölümüne göz atın.

Saat dilimi algılamasını doğrulamak için test kullanıcılarının time_zone_detector tarafından hangi algoritmayı kullandığını bilmesi gerekir. time_zone_detector işlevinin 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ı bölümüne bakın.
  • Adb üzerinden komut satırını kullanın:

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

Aşağıda, adb shell cmd time_zone_detector dump komutu çıkışının bir örneği verilmiştir. Geçerli algoritma ve hizmet durumu hakkındaki 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 şu ş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 Cihazın telefon saat dilimi algılama özelliğine sahip olup olmadığı.
mGeoDetectionSupported Cihazın konum saat dilimi algılama özelliğini destekleyip desteklemediği. Bu, yapılandırmaya ve en az bir LTZP'nin varlığına göre geçerli durumdur.
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ı, true ise konum algoritmasını gösterir.

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