Zamana Genel Bakış

Bu sayfada saat ve saat dilimi algılamanın Android'de nasıl çalıştığı açıklanmaktadır. Bu, Android'in saati ve saat dilimlerini otomatik olarak nasıl algıladığını, cihaz üreticileri için yapılandırma seçeneklerini ve test bilgilerini içerir.

Saat ve saat dilimlerine genel bakış

Durum çubuğu gibi konumlarda görüntülenecek kullanıcının yerel saatini belirlemek için Android, birbiriyle ilişkili ancak bağımsız iki durumu izler:

  • Geçerli Unix dönemi zamanı
  • Geçerli saat dilimi

Geçerli Unix dönemi zamanı ve geçerli zaman dilimi aygıt genelindeki durumlardır, yani bir aygıtın tüm kullanıcıları tarafından paylaşılırlar.

Geçerli Unix dönem süresi sabit bir değer değildir. Zamanın geçişini yansıtacak şekilde otomatik olarak güncellenir. Zamanın normal geçişine ek olarak, bir cihazın mevcut Unix dönem süresi, örneğin bir cihazın gücü kesildikten sonra yanlış olduğu tespit edilirse ayarlanır.

Geçerli saat dilimi, geçerli Unix dönemi saatini yerel saate dönüştürmek için yapılacak ayarlamayı belirler. Örneğin, Los Angeles'ta yaz aylarında cihaz, mevcut Unix dönemi saatinden 7 saat, kışın 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 yer aldığı bir veritabanı bulunur. Saat dilimi kuralları hakkında daha fazla bilgi için bkz. Saat Dilimi Kuralları .

Bir kullanıcı farklı bir saat dilimi kullanan yeni bir konuma gittiğinde, mevcut Unix dönemi saatinin ayarlanmasına gerek yoktur ancak kullanıcı genellikle önceki konumdaki saat yerine yerel saati görmek ister. Geçerli saat diliminin değiştirilmesi, yeni konum için doğru yerel saatin görüntülenmesi amacıyla geçerli Unix dönemi saatine doğru farkın uygulanmasını sağlar.

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

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

Otomatik zaman tespiti

Bu bölüm, otomatik zaman algılamayı, kullanıcı kontrollerini, yapılandırma seçeneklerini ve test ayrıntılarını yöneten time_detector hizmetine genel bir bakış sağlar.

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 tespiti etkinleştirildiğinde cihazın mevcut Unix dönem 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 önerileriyle belirlenir.

time_detector hizmeti kesin olduğunda, yani Unix dönem zamanı bilgileriyle bir öneri aldığı anlamına gelir ve eğer zaman önerisi geçerli 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 zamanı 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 sayılması durumunda da belirsiz hale gelir. Önerilerin yaşı dikkate alınır çünkü eski Unix çağ zamanı önerilerini kullanan ayarlamalar, cihazda geçen gerçek zamanlı saate dayanır ve bu saatin uzun süreler boyunca hatalı olduğu varsayılır.

Geçerli Unix çağ zamanını otomatik olarak oluşturmak için bir cihazın kullanabileceği çeşitli kaynaklar vardır. Bu belgede bunlara kökenler adı verilmektedir. time_detector hizmeti, öneri dizilerini kökenlerine göre farklı olarak ele alır.

time_detector hizmeti durum bilgilidir, yani her kaynak tarafından yapılan en son önerinin kaydını tutar. Eğer bir kökende daha yeni Unix dönemi zaman bilgisi mevcutsa time_detector yeni önerilerde bulunulur. time_detector hizmeti, yeni ve mevcut önerileri yeniden değerlendirir ve öneriler alındığında cihazın durumunu günceller.

Her ne kadar UTC saati uluslararası olarak kabul edilmiş olsa da, mevcut Unix çağ zamanını belirlemenin bir Android cihaz için her zaman kolay olmamasının çeşitli nedenleri vardır:

  • Unix dönem zamanı, UTC zamanından oldukça farklı bir zaman işleyişi sistemidir. İkisi arasında dönüşüm yapmak, artık saniyelerin ne zaman oluştuğuna ve bunların başlangıç ​​noktaları tarafından nasıl ele alındığına dair bilgi gerektirir.
  • Kökenler yalnızca belirli zamanlarda veya belirli koşullar altında mevcut olabilir. Örneğin, kaynak ağ bağlantısı gerektiriyorsa yalnızca cihaz internete bağlıyken kullanılabilir.
  • Kaynaklar hatalı veya kesin olmayabilir ya da hatalar içerebilir. Örneğin, bir telefon baz istasyonu "evrensel saati" doğru şekilde izlemiyorsa, telefon kaynağı yanlış zaman önerileri sağlayabilir.
  • Unix dönemi zamanını alırken yanlışlıklar ortaya çıkabilir. Örneğin, bir ağ gecikmesi, ara belleğe alma veya işlem planlama, Unix dönem zamanının hatalı olmasına neden olabilir.
  • Önerinin alınmasından bu yana geçen süreyi ayarlamak için kullanılan referans saati hatalı olabilir.

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

  • : Ağ Zaman 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 mevcut olmayan harici ağlara bağlantı gerektirir.

Android 12'den itibaren Android, varsayılan olarak kullanım için yapılandırılmamış olan 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 çağ zamanı kaynaklarını entegre etmelerine olanak tanıyan genel köken.

Zaman Ayarları

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

Ayarlar'da otomatik zaman algılama

Şekil 1. Ayarlar'da otomatik zaman algılama.

Aşağıdaki tabloda AOSP Ayarları uygulamasında zaman algılamaya yönelik 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 ayarla* Tüm kullanıcılar

Bir geçiş.

Açık olduğunda cihaz, geçerli Unix dönem zamanının tespit edilmesinden sorumludur. Kapalıyken kullanıcılara cihazın saatini manuel olarak ayarlamaları için kontroller sağlanır.

Kullanıcı saati manuel olarak girdiğinde Unix dönem saatini değil, kendi yerel saatini girer. Geçerli Unix dönemi zamanı, bir Unix dönemi zamanı türetmek için geçerli zaman 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ırabilirler.

Menşe önceliklendirmesi

Android 12'den itibaren cihaz üreticileri, otomatik zaman algılamaya hangi zaman kökenlerinin dahil edileceğini ve time_detector bu kökenleri dikkate aldığı önceliği belirtmek için core/res/res/values/config.xml yapılandırma dosyasını değiştirebilir.

Android 11 veya daha düşük sürümleri çalıştıran cihazlarda, kaynak önceliği ["telephony", "network"] olarak kodlanmıştır; bu, telefon önerilerinin ağ önerilerinin üzerinde öncelikli olduğu 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ılmıştır. Ağ süresi önerileri, telefon süresi önerilerine göre önceliklendirilir. Cihaz üreticileri, telefona daha yüksek öncelik verilen Android 11 veya önceki sürümlerdeki davranışa geri dönmek için kaynakların sırasını değiştirebilir.

Varsayılan olarak, en yüksek öncelikli geçerli öneri cihazın geçerli sistem saati saatiyle birkaç saniye içinde eşleşirse cihaz saati değişmeyecektir . Bunun amacı, ACTION_TIME_CHANGED amacını dinleyen yüklü uygulamalar için iş oluşturulmasını önlemektir.

İ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 bir üst zaman sınırlaması getiriyor. Cihaz 32 bit işlemleri destekliyorsa çerçeve, cihazın Y2038 sorununu tetikleyebilecek bir zaman önerisini kullanmasını önlemek için bir üst zaman sınırı ayarlar.

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 daha düşük zaman sınırı değeri, derleme zaman damgasından ayarlanır. Bu, cihazın sistem görüntüsünün oluşturulmasından önce geçerli bir zamanın olamayacağı ilkesine göre çalışı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 atar.

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

Zaman hata ayıklama ve test etme

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ıklanacağı ve test edileceği hakkında bilgi sağlanır.

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ılamada hata ayıklama ve test etmeye yönelik ek komutları görmek için şunu kullanın:

adb shell cmd time_detector help

Yardım çıktısı ayrıca test veya üretim sırasında time_detector davranışını etkilemek için kullanılabilecek Device_config hizmet özelliklerini de açıklar. Ayrıntılar için bkz. Device_config hizmetini kullanarak bir cihazı yapılandırma .

Otomatik zaman algılamayı doğrulamak için test uzmanlarının time_detector hizmetinin hangi kaynakları kullandığının farkında olması gerekir. Aşağıda, geçerli kaynak ve hizmet durumu hakkındaki bilgilerin kalın harflerle yazıldığı, adb shell cmd time_detector dump komutunun çıktısının bir örneği yer almaktadır:

$ 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 zaman algılamanın etkin olup olmadığı.
mEnvironment.autoTimeLowerBound() Zaman önerilerini doğrulamak için kullanılan mevcut alt sınır.
mEnvironment.autoOriginPriorities() Kullanımdaki kökenler ve öncelik sırası.

Zaman değişikliği günlüğü, time_detector hizmetinin cihazın geçerli Unix dönemi 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üm, otomatik saat dilimi algılamayı, ayarlardaki kullanıcı kontrollerini, telefon ve konum saat dilimi algılamayı ve test ayrıntılarını yöneten time_zone_detector hizmetine genel bir bakış sağlar.

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 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 bu, time_zone_detector hizmetinin, geçerli saat dilimini geçersiz kılmasına neden olabilecek güçlü saat dilimi bilgileri aldığı anlamına gelir. Belirsiz olduğunda bu, hiçbir bilgi almadığı veya yalnızca düşük güvenilirliğe sahip bilgi aldığı anlamına gelir; bu, geçerli saat dilimini geçersiz kılmayacağı anlamına gelir.

time_zone_detector hizmetinin belirli durumları, time_zone_detector kullanacak saat dilimi bilgisinin olmadığı veya aralarından seçim yapabileceği birden fazla saat diliminin olduğu durumları içerebilir. Bu durumlar aşağıdaki gibidir:

  • Cihaz, uluslararası sular veya tartışmalı bir bölge gibi saat dilimi olmayan bir yerde olduğunda, sıfır saat dilimine sahip belirli bir duruma girilir. Bu durum belirsiz bir duruma benzer ancak time_zone_detector saat dilimini belirlemeye çalışmak için başka bir işlem yapmasına gerek olmadığını gösterir.
  • Belirsizliğin veya sınır koşullarının olduğu birden fazla zaman dilimine sahip belirli bir duruma girilir. Bu durumda, eğer geçerli zaman dilimi, time_zone_detector kesin olduğu zaman dilimlerinden biri ise, geçerli zaman dilimi olduğu gibi bırakılır. Aksi takdirde mevcut saat dilimlerinden biri kullanılır. Bu, kullanıcının daha önce saat dilimini manuel olarak seçmesi durumunda veya cihaz bir sınıra yaklaştığında time_zone_detector bir yapışkanlık unsuru verir.

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

Genel olarak ö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 örnekler verilmiştir:

  • tür = uncertain , zoneIds = []

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

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

    • Algoritma kesin ama mevcut konumla ilişkilendirilmiş bir bölge kimliği yok.
  • type = certain , zoneIds = ["America/Denver", "America/Phoenix"]

    • Algoritma, cevabın iki bölgeden biri olduğundan emin ancak "Amerika/Denver" ve "Amerika/Phoenix" arasında seçim yapamıyor.

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

time_zone_detector hizmeti durum bilgilidir; bu, her algoritma tarafından yapılan en son önerinin kaydını tuttuğu anlamına gelir. Önceki öneri artık doğru değilse yeni öneriler time_zone_detector hizmetine gönderilir; yani, bir algoritmanın artık farklı bir önerisi varsa veya saat dilimini tespit etme yeteneğini kaybetmişse. time_zone_detector hizmeti, yeni ve mevcut önerileri yeniden değerlendirir ve öneriler alındığında cihazın durumunu günceller.

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

  • Telefon
  • Konum

time_zone_detector hizmeti genellikle saat dilimini belirlemek için 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 diliminden emin olmadığında 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 mevcut olan en son öneri kullanılır.

Saat dilimini belirlemek için birden fazla algoritmanın kullanıldığı durumla ilgili ayrıntılar için bkz. Telefon geri dönüş modu .

Telefon geri dönüş modu

Android 13 ve sonraki sürümleri çalıştıran cihazlarda time_zone_detector hizmeti, telefon geri dönüş 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ılamaya göre daha uzun sürdüğü durumlarda Android'in telefon algılama önerilerini geçici olarak kullanmasına olanak tanır.

Telefon geri dönüş modu, hem telefonun 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ğinin etkinleştirildiği cihazlar için geçerlidir. Cihaz yeniden başlatıldığında ve uçak modu devre dışı bırakıldığında mod otomatik olarak etkinleştirilir.

Android 14 ve üzeri sürümlerde, LTZP durum raporlama API'leri aracılığıyla telefon geri dönüşü tetiklenebilir; yani bir LTZP, belirsiz olduğunu bildirirse ve konum veya saat dilimini algılama yeteneğinin ortamı nedeniyle bozulduğunu bildirirse, telefon geri dönüş modu tetiklenir.

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

Telefon geri dönüş moduna ilişkin yapılandırma ayrıntıları için bkz. Saat dilimi algılama yapılandırması .

Saat dilimi ayarları

Kullanıcılar, AOSP Ayarları uygulamasında otomatik saat dilimi algılamaya yönelik ayarları etkinleştirebilir ve yapılandırabilir.

Ayarlar'da otomatik saat dilimi algılama

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

Aşağıdaki tabloda, AOSP Ayarları uygulamasında saat dilimi algılamaya yönelik 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 geçiş.

Açık olduğunda cihaz geçerli saat dilimini tespit etmekten sorumludur. Kapalıyken , kullanıcılara cihazın saat dilimini manuel olarak ayarlamaları için kontroller sağlanır.

Sistem > Tarih ve Saat Saat dilimini ayarlamak için konumu kullanın Şu anki kullanıcı

Bir geçiş.

Android 12'de mevcuttur. Bu geçiş yalnızca cihazda konum saat dilimi tespiti desteklendiğinde görüntülenir.

14'te yapılan değişiklikler için bkz. Yalnızca konum saat dilimi algılamayı destekleyen cihazlar .

Konum Konumu kullan Şu anki kullanıcı

Bir geçiş.

Genel olarak cihazın konumunun kullanılmasına izin verir veya bunu engeller. Bu değer, cihazda konum saat dilimi algılamanın desteklenmesi durumunda geçerlidir.

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

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

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

    • [Konum] Konumu kullan: KAPALI

      • Saat dilimini tespit etmek 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

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

        • Saat dilimini tespit etmek için telefon sinyalleri kullanılır.

Çoklu kullanıcı cihazları

İlgili ayarların birçoğunun kapsamı geçerli kullanıcıyı kapsadığından, çok kullanıcılı bir Android cihazında 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 geçişi geçerli kullanıcıya yöneliktir ve cihaz politikasıyla sınırlandırılmamıştır; bu , Saat dilimini otomatik olarak ayarla geçişi kapalı olsa veya diğer saat veya saat dilimi kontrolleri olsa bile kullanıcıların her zaman değerini değiştirebileceği anlamına gelir Device Policy Controller tarafından kısıtlanmıştır.

Yalnızca konum saat dilimi algılama algoritmasını destekleyen cihazlar

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

  • Android 14 ve üzeri

    • AOSP Ayarları uygulamasında Konumu kullan seçeneği kullanıcılara gösterilmiyor ve cihaz, Konumu kullan seçeneği etkinmiş gibi davranıyor.
    • 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ılar tarafından görülebilir ve kullanıcılar 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ş sırasındaki davranış

Kullanıcı saat dilimi algılamayı manüelden otomatiğe değiştirdiğinde, time_zone_detector halihazırda geçerli saat diliminden emin olabilir. Böyle bir durumda, kullanıcı otomatik algılamayı etkinleştirirken cihazın saat dilimi de time_zone_detector hizmetinin görüşüyle ​​eşleşecek şekilde değiştirilebilir.

Benzer şekilde, kullanıcı Ayarlar'da time_zone_detector hizmetinin geçerli algoritmasında değişiklikle sonuçlanan bir değişiklik yaptığında, time_zone_detector yeni algoritma için önerileri zaten almış olabilir ve bu nedenle cihazın saati, time_zone_detector hizmetinin görüşüyle ​​hemen eşleşecek şekilde değiştirilebilir.

Telefon zaman dilimi tespiti

Telefon saat dilimi algılama, geçerli saat dilimini belirlemek için telefon sinyallerini kullanır. Daha fazla bilgi için bkz. Telefon Saat Dilimi Algılaması .

Konum saat dilimi algılama

Konum saat dilimi algılama, Android 12 veya sonraki sürümlerde kullanılabilir. Cihazların mevcut saat dilimini belirlemek için konumlarını kullanmalarına olanak tanıyan isteğe bağlı bir otomatik saat dilimi algılama özelliğidir.

Android 12'de location_time_zone_manager hizmeti, sistem sunucusunda çalışıyor ve konum algoritması önerilerinin time_zone_detector hizmetine gönderilmesinden sorumlu kodu içeriyor. Daha fazla bilgi için bkz. Konum Saat Dilimi Algılaması .

Özellik benimseme hususları

Bu bölümde, bir cihaz üreticisinin bu özelliği bir cihazda benimseyip benimsemeyeceğini belirlemesine yardımcı olmak için konum saat dilimi algılama özelliğinin yönleri açıklanmaktadır.

Telefon ve konum algılamanın karşılaştırılması

Aşağıdaki tablo, saat dilimi tespiti için telefon sinyalleri yerine konum sinyallerini kullanmanın avantaj ve dezavantajlarının bir karşılaştırmasını sağlar.

Telefon algılama Konum tespiti
Doğruluk Ülkeye göre değişir.

MM'ye, NITZ'in 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 aşağıdakilere göre değişir:
  • Konum sağlayıcı doğruluğu ve düzenliliği.
  • Saat dilimi haritası 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üncellenebilirlik genellikle cihazın sunucu veya istemci saat dilimi harita verilerini kullanması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ünde bulunmaz.

Cihaz üreticilerinin ayrıca saat dilimi kuralları ile saat dilimi harita verileri arasındaki sürüm tutarlılığını da dikkate alması gerekir.
Güç kullanımı Yok veya düşük güç kullanımı Kullanıcı konum ayarlarına, kullanılan eklentilere ve genellikle diğer hangi uygulamaların konum isteğinde bulunduğuna bağlıdır.
Kullanılabilirlik Yalnızca telefon cihazları. Genellikle çalışan bir SIM gerektirir. Konum tespiti, 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 verilerdir. Kullanıcılar, saat dilimi algılamanın bir parçası olarak konumlarının paylaşılmasından endişe duyabilir. Saat dilimi algılamayla ilgisi olmayan bir cihazda çalışan tüm uygulamalar, Android izni gerektirmeden cihazın mevcut saat dilimini okuyabilir ve uygulamalar bu bilgilerden cihazın konumu hakkında kesin olmayan bir fikir çıkarabilir.

Daha spesifik olarak, zaman dilimi tespiti pasif veya aktif yollarla çalışabilir:

  • Pasif: Cihazın ortamındaki bir şey, cihaza o ortamda kullanılacak saat dilimini söyler.
  • Etkin: Cihazın saat dilimini kendisi hesaplaması gerekir ve kullanıcıların gizlilik ayarlarına ve onaylarına bağlı olarak, bunu yapmak için cihazın konumunu alır. Daha sonra konumunu harici servislerle paylaşabilir. Kullanıcı gizliliği ve onayına ilişkin ayrıntılar için aşağıdaki tartışmaya bakın.

Telefon algoritmasında olduğu gibi pasif algılamanın kullanıcılar için ek bir gizlilik etkisi yoktur.

Konum algoritmasında olduğu gibi aktif algılama, kullanıcıların kabul etmek istemeyeceği cihazın konumunun belirlenmesini içerir ve zaman dilimi kimliğini belirlemek için konum bir ağ üzerinden gönderilebilir.

Android'in zaman dilimi tespiti için kullanıcı gizliliğine yaklaşımı, kullanıcıya aktif olması beklenen algoritmaları bireysel olarak devre dışı bırakma yeteneği verir. Ek olarak, AOSP platform kodu konumun kendisiyle doğrudan ilgilenmez: konum tespiti ve konumun zaman dilimi kimlikleriyle eşleştirilmesi, cihaz üreticileri tarafından yapılandırılan eklenti bileşenlerine bırakılır.

Kullanıcı gizliliği özellikleri hakkında daha fazla ayrıntı için bkz. Konum Saat Dilimi Algılama .

Yapılandırma

Cihaz üreticileri time_zone_detector hizmetini davranışını değiştirecek şekilde yapılandırabilir. Bu bölümde time_zone_detector hizmetinin genel davranışına ilişkin yapılandırma seçenekleri açıklanmaktadır. Telefon ve saat dilimi algılama algoritmalarına ilişkin yapılandırma ayrıntıları için bkz. Telefon Zaman Dilimi Algılama ve Konum Saat Dilimi Algılama .

Temel AOSP yapılandırması frameworks/base/core/res/res/values/config.xml konumundadır.

Yapılandırma anahtarı AOSP değeri Tanım
config_supportTelephonyTimeZoneFallback true true olduğunda, time_zone_detector telefon geri dönüş modunu kullanır. Bu, Android 13 ve üzeri için kullanılabilir.

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

AOSP'de, otomatik saat dilimi algılama, auto_time_zone ayarı true olarak ayarlandığında varsayılan olarak etkinleştirilir. Otomatik zaman algılamayı varsayılan olarak devre dışı bırakmak için, frameworks/base/packages/SettingsProvider/res/values/defaults.xml dosyasında tanımlanan def_auto_time_zone değerini false olarak ayarlayın.

Başka bir cihazdan bir yedeği geri yüklerken çerçeve, varsayılan olarak auto_time_zone ayarının değerini günceller. Bu ayarın bir yedekten geri yüklenmediğinden emin olmak istiyorsanız, frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml dosyasında tanımlanan restore_blocked_global_settings dizisine auto_time_zone ekleyin.

Saat dilimi hata ayıklama ve testi

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

Device_config hizmetini kullanarak bir cihazı yapılandırma

device_config hizmeti, genellikle uzak bir sunucudan özel (AOSP olmayan) kodla alınan değerleri kullanarak değiştirilebilir davranışı yapılandırmak için Android'de kullanılan bir mekanizmadır. device_config değerlerini test için kullanırken, özellikle uzun süren manuel testler sırasında, cihaz bayrakları senkronize edebilir, bu da bayrakları sıfırlayabilir ve test için ayarlanan değerleri temizleyebilir.

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

adb shell cmd device_config set_sync_disabled_for_tests persistent

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

adb shell cmd device_config set_sync_disabled_for_tests none

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

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

time_zone_detector hizmetiyle etkileşim kurma

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

adb shell cmd time_zone_detector dump

Saat dilimi algılamada hata ayıklama ve test etmeye yönelik ek komutları görmek için şunu kullanın:

adb shell cmd time_zone_detector help

Yardım çıktısı ayrıca test amacıyla veya üretimde time_zone_detector hizmetinin davranışını etkilemek için kullanılabilecek device_config hizmet özelliklerini de açıklar. Ayrıntılar için bkz. Device_config hizmetini kullanarak bir cihazı yapılandırma .

Saat dilimi tespitini doğrulamak için test uzmanlarının, time_zone_detector hangi algoritmayı kullandığının farkında olması gerekir. time_zone_detector öğesinin geçerli algoritmasını anlamak ve etkilemek için aşağıdaki seçeneklerden birini kullanın:

  • Ayarlar Kullanıcı Arayüzü aracılığıyla görsel olarak kontrol edin. Daha fazla bilgi için bkz. Saat dilimi ayarları .
  • Adb aracılığıyla komut satırını kullanın:

    • 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 kullanın.

Aşağıda, geçerli algoritma ve hizmet durumu hakkındaki bilgilerin kalın harflerle yazıldığı adb shell cmd time_zone_detector dump komutunun çıktısının bir ö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 şu şekilde yorumlanabilir:

Anahtar Değer
mUserConfigAllowed Kullanıcının tarih ve saat ayarlarını kontrol etmesinin Device Policy Controller tarafından engellenip engellenmediği.
mTelephonyDetectionSupported Cihazın telefon saat dilimi algılamasına sahip olup olmadığı.
mGeoDetectionSupported Cihazın konum saat dilimi algılamayı destekleyip desteklemediği. Bu, konfigürasyona ve en az bir LTZP'nin varlığına dayalı etkili durumdur.
mAutoDetectionEnabled Otomatik saat dilimi algılamanın etkin olup olmadığı.
mLocationEnabled Ana konum geçişi.
mGeoDetectionEnabled Algoritma anahtarı: false , telefon algoritmasını, true ise konum algoritmasını belirtir.

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