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ğ: 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.
Ş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.xml
yapı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.
Ş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ınlocation_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:
|
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çinadb 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çinadb 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.