Bu sayfada, Android'de saat ve saat dilimi algılamanın işleyiş şekli açıklanmaktadır. Buna Android'in saati ve saat dilimlerini otomatik olarak algılama şekli, cihaz üreticileri için yapılandırma seçenekleri ve test bilgileri dahildir.
Saate ve saat dilimlerine genel bakış
Android, durum çubuğu gibi konumlarda gösterilecek kullanıcının yerel saatini belirlemek için 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 geçişinin yanı sıra, bir cihazın mevcut Unix çağ zamanının yanlış olduğu tespit edilirse (ör. cihazın gücü kesildikten sonra) ayarlanır.
Mevcut saat dilimi, mevcut Unix sıfır zamanını yerel saate dönüştürmek için yapılacak ayarı belirler. Örneğin, Los Angeles'ta yaz aylarında cihaz mevcut Unix epoch zamanından 7 saat, kış aylarında ise 8 saat çıkarır.
Bu yerel saat hesaplamalarını desteklemek için tüm Android cihazlarda tüm 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 dilimi kullanan yeni bir konuma seyahat ettiğinde, geçerli Unix epoch saatinin ayarlanması gerekmez 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 kendileri için otomatik olarak ayarlanıp ayarlanmayacağını aşağıdaki mekanizmalar aracılığıyla bağımsız olarak kontrol etmelerine olanak tanır.
- Otomatik 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 saat dilimini kullanmasını sağlar.
Otomatik zaman algılama
Bu bölümde, otomatik saat algılama, kullanıcı kontrolleri, yapılandırma seçenekleri ve test ayrıntılarını yöneten time_detector
hizmetine genel bir bakış sunulmaktadır.
time_detector hizmeti
Android 10 veya sonraki sürümleri çalıştıran cihazlarda bulunan time_detector
hizmeti, otomatik saat algılamayı yönetir. Otomatik saat algılama etkinleştirildiğinde cihazın mevcut Unix epoch zamanını gerektiği gibi 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 bilgisi içeren 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
belirsizse geçerli saati geçersiz kılmaz. Belirsiz durum genellikle time_detector
hizmetinin zaman önerileri almadığı anlamına gelir. Aldığı önerilerin kullanılamayacak kadar eski olduğu kabul edilirse time_detector
hizmeti de belirsiz hale gelir. Eski Unix zaman aralığı önerilerini kullanan ayarlamalar, cihazdaki geçen gerçek zamanlı saate dayanır. Bu saatin uzun süre boyunca yanlış olduğu varsayılır. Bu nedenle, önerilerin yaşı dikkate alınır.
Cihazlar, mevcut Unix zamanını otomatik olarak belirlemek için kullanabileceği çeşitli kaynaklara sahiptir. Bunlara bu dokümanda kaynaklar denir. time_detector
hizmeti, öneri sıralarını kaynaklarına göre farklı olarak değerlendirir.
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 zamanı uluslararası olarak kabul edilse de mevcut Unix epoch zamanını belirlemenin Android cihazlarda her zaman kolay olmamasının çeşitli nedenleri vardır:
- Unix sıfır zamanı, UTC zamanından biraz farklı bir zaman tutma sistemidir. 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ı'nın 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. Mevcut Unix başlangıç zamanı, Unix başlangıç zamanı elde etmek için mevcut saat dilimi kullanılarak hesaplanır.
Yapılandırma
Cihaz üreticileri, time_detector
hizmetini hangi kaynakların kullanılacağı ve bunlardan gelen sinyallerin nasıl önceliklendirileceği gibi çeşitli şekillerde yapılandırabilir.
Kaynak önceliklendirme
Android 12'den itibaren cihaz üreticileri, otomatik saat algılamaya hangi saat kaynaklarının dahil edileceğini ve bu kaynakların core/res/res/values/config.xml
hangi önceliğe sahip olacağını belirtmek için yapılandırma dosyasını değiştirebilir.
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, köklerin sırasını değiştirerek Android 11 veya önceki sürümlerdeki davranışa geri dönebilir. Bu sürümlerde telefon görüşmelerine daha yüksek öncelik verilir.
Varsayılan olarak, en yüksek öncelikli geçerli öneri cihazın mevcut sistem saatiyle birkaç saniye içinde eşleşirse cihaz saati değiştirilmez. Bunun amacı, ACTION_TIME_CHANGED
amacını dinleyen yüklü uygulamalar için iş oluşturmayı önlemektir.
İzin verilen kaynak değerleri şunlardır:
İzin verilen zaman aralıkları
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 2038 sorununu tetikleyebilecek bir zaman önerisi kullanmasını önlemek için üst bir zaman sınırı belirler.
Android 12, time_detector
hizmeti tarafından alınan zaman önerilerini doğrulamak için kullanılan daha düşük bir zaman sınırı getirdi. Otomatik öneriler için kullanılan alt zaman sınırı değeri, derleme zaman damgasından ayarlanır.
Bu, 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ğruysa geçerli olamayacağı için öneriyi reddeder.
Android 11 veya önceki sürümleri çalıştıran cihazlarda time_detector
hizmeti, gelen Unix dönem zaman önerilerini doğrulamaz.
Zamanla ilgili hata ayıklama ve test
Bu bölümde, time_detector
hizmetinin ve tüm kaynaklar tarafından paylaşılan diğer bileşenlerin davranışının nasıl hata ayıklanıp test edileceği hakkında bilgi verilmektedir.
time_detector hizmetiyle etkileşimde bulunma
time_detector
hizmetinin yapılandırmasını ve durumunu görüntülemek için şunları kullanın:
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 başlıklı makaleyi inceleyin.
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 etkinleştirildiğinde time_zone_detector
iki durumdan birinde olabilir: belirsiz ve kesin.
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. Belirsizlik olduğunda, cihaz hiçbir bilgi almamış veya yalnızca güvenilirliği düşük bilgiler almış demektir. Bu durumda, mevcut saat dilimi geçersiz kılınmaz.
time_zone_detector
hizmetinin belirli durumları, time_zone_detector
'ün kullanabileceği saat dilimi bilgisinin olmadığı veya aralarından seçim yapabileceği birden fazla saat dilimi bulunduğu durumları içerebilir. Bu eyaletler 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 duruma benzer ancak
time_zone_detector
'ün saat dilimini belirlemek için başka işlem yapması gerekmediğini 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, mevcut saat dilimi
time_zone_detector
'in emin olduğu saat dilimlerinden biriyse mevcut saat dilimi olduğu gibi bırakılır. Aksi takdirde, mevcut saat dilimlerinden biri kullanılır. Bu, kullanıcı daha önce saat dilimini manuel olarak seçtiyse veya cihaz bir sınıra yaklaştığındatime_zone_detector
'e bir yapışkan öğe verir.
time_zone_detector
hizmetinin belirli veya belirsiz durumu, bir algoritma tarafından gönderilen saat dilimi önerilerine göre belirlenir.
Genellikle öneriler, time_zone_detector
olası durumlarıyla yakından eşleşen iki türde gelir: kesin ve belirsiz. Aşağıda öneri türü örnekleri verilmiştir:
type =
uncertain
,zoneIds = []
- Algoritma, saat diliminin ne olduğunu bilmez.
tür =
certain
,zoneIds = ["Europe/London"]
- Algoritma, bölgenin Avrupa/Londra olduğundan emin.
tür =
certain
,zoneIds = []
`- Algoritma kesindir ancak geçerli konumla ilişkilendirilmiş bir alt bölge kimliği yoktur.
type =
certain
,zoneIds = ["America/Denver", "America/Phoenix"]
- Algoritma, yanıtın iki bölgeden biri olduğundan emin ancak "America/Denver" ile "America/Phoenix" arasında seçim yapamıyor.
time_zone_detector
hizmeti, öneri dizilerini algoritmasına göre ayrı olarak ele alır. Algoritmaya bağlı olarak öneriler, algoritmanın ne kadar kesin olduğunu belirten meta veriler 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 algoritma artık farklı bir öneri sunuyorsa veya saat dilimini algılama özelliğini kaybettiyse) time_zone_detector
hizmetine yeni öneriler gönderilir. time_zone_detector
hizmeti, yeni ve mevcut önerileri yeniden değerlendirir ve öneriler alındığında cihaz durumunu günceller.
Android, saat dilimi algılama için iki algoritmayı destekler:
- Telefon
- Konum
time_zone_detector
hizmeti, saat dilimini belirlemek için genellikle tek bir algoritma kullanır. Bir cihazda konum algoritması desteklendiğinde cihazın kullandığı algoritma, kullanıcı tarafından yapılandırılan Saat dilimi ayarlarına göre belirlenir. Kullanılan algoritma saat dilimini belirlediğinden emin olamadığı durumlarda time_zone_detector
genellikle farklı bir algoritmanın önerilerini kullanmaz. Kullanılmayan algoritmalarla ilişkili öneriler time_zone_detector
tarafından bellekte tutulabilir ancak algoritma değişmedikçe kullanılmaz. Kullanıcı otomatik saat dilimi algılama ayarlarını değiştirdiğinde ve algoritma değiştiğinde yeni algoritma için kullanılabilecek en son öneri kullanılır.
Saat dilimini belirlemek için birden fazla algoritmanın kullanıldığı durumlar hakkında ayrıntılı bilgi için Telefon yedek modu başlıklı makaleyi inceleyin.
Yedek telefon modu
Android 13 ve sonraki sürümleri çalıştıran cihazlarda time_zone_detector
hizmeti, telefon yedek modunu destekler. Bu mod, konum algılamanın saat dilimini algılayamadığı veya saat dilimini algılamanın konum algılamadan daha uzun sürdüğü durumlarda Android'in telefon algılama önerilerini geçici olarak kullanmasına olanak tanır.
Telefon desteği yedek modu, hem telefon desteğinin hem de konum algılamanın desteklendiği ve kullanıcının Saat dilimi ayarları'nda Saat dilimini ayarlamak için konumu kullan'ı etkinleştirdiği cihazlar için geçerlidir. Bu mod, cihaz yeniden başlatıldığında ve uçak modu devre dışı bırakıldığında otomatik olarak etkinleştirilir.
Android 14 ve sonraki sürümlerde telefon yedeği, LTZP durum raporlama API'leri aracılığıyla tetiklenebilir. Diğer bir deyişle, bir LTZP, durumun belirsiz olduğunu ve konumu veya saat dilimini algılama kabiliyetini, bulunduğu ortam nedeniyle azaltırsa 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 desteği yedek modu devre dışı bırakılı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 olarak etiketlenir. |
|||
AOSP Ayarları'nın konumu | AOSP Ayarları adı | Kapsam | Davranış |
---|---|---|---|
Sistem > Tarih ve Saat | Saat dilimini otomatik olarak ayarla* | Tüm kullanıcılar | Bir açma/kapatma düğmesi. Açık olduğunda cihaz, geçerli saat dilimini algılamaktan sorumludur. Kapalı olduğunda kullanıcılara cihazın saat dilimini manuel olarak ayarlamaları için kontroller sunulur. |
Sistem > Tarih ve Saat | Saat dilimini ayarlamak için konumu kullan | Geçerli kullanıcı | Bir açma/kapatma düğmesi. Android 12'den itibaren kullanılabilir. Bu açma/kapatma düğmesi yalnızca cihazda konum saat dilimi algılama özelliği desteklendiğinde gösterilir. Android 14'te 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ı | Bir açma/kapatma düğmesi. Cihazın konumunun genel olarak kullanılmasına izin verir veya bunu engeller. Bu değer, cihazda konum saat dilimi algılama özelliği destekleniyorsa geçerlidir. |
Aşağıda, kullanıcı tarafından seçilen ayarlar göz önüne alındığında saat dilimi algılamayla ilgili cihaz davranışına genel bir bakış sunulmaktadır:
[Tarih ve Saat] Saat dilimini otomatik olarak ayarla: KAPALI
- Kullanıcı saat dilimini manuel olarak seçmelidir.
[Tarih ve Saat] Saat dilimini otomatik olarak ayarla: AÇIK
[Konum] Konumu kullan: KAPALI
- 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
- Saat dilimini algılamak için telefon sinyalleri kullanılır.
Birden fazla kullanıcı cihazı
Ayarlardan bazıları geçerli 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ıyla 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 dilimini algılama algoritmasını destekleyen cihazlar
Bu bölümde, yalnızca konum algoritmasını destekleyen cihazların davranışı açıklanmaktadır.
Android 14 ve sonraki sürümler
- Konum bilgisi kullan seçeneği, AOSP Ayarlar uygulamasında kullanıcılara gösterilmez ve cihaz, Konum bilgisi kullan seçeneği etkinmiş gibi davranır.
- Kullanıcı kapsamlı
SettingsProvider
ayarını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
- Konum bilgisi kullan seçeneği, AOSP Ayarlar uygulamasında kullanıcılara gösterilir ve kullanıcılar bu seçeneği devre dışı bırakabilir. Bu seçenek devre dışıysa cihaz saat dilimini otomatik olarak algılamaz.
Otomatik algılamaya geçiş ve otomatik algılamadan geçiş sırasındaki davranış
Kullanıcı, saat dilimi algılama ayarını 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ştirirken cihazın saat dilimi de time_zone_detector
hizmetinin görüşüne uyacak şekilde aynı anda değiştirilebilir.
Benzer şekilde, kullanıcı Ayarlar'da time_zone_detector
hizmetinin mevcut algoritmasında değişikliğe neden olan bir değişiklik yaptığında time_zone_detector
yeni algoritma için öneriler almış olabilir. Bu nedenle cihazın süresi, time_zone_detector
hizmetinin fikriyle uyumlu olacak şekilde hemen değiştirilebilir.
Telefon saat dilimi algılama
Telefon saat dilimi algılama, mevcut saat dilimini belirlemek için telefon sinyallerini kullanır. Daha fazla bilgi için Telefon Saat Dilimi Algılama başlıklı makaleyi inceleyin.
Konum saat dilimini algılama
Konum saat dilimi algılama özelliği, Android 12 veya sonraki sürümlerde kullanılabilir. Cihazların mevcut saat dilimini belirlemek için konumlarını kullanmasına olanak tanıyan isteğe bağlı bir otomatik saat dilimi algılama özelliğidir.
Android 12'de kullanıma sunulan location_time_zone_manager
hizmeti, sistem sunucusunda çalışır ve time_zone_detector
hizmetine konum algoritması önerileri göndermekten sorumlu kodu içerir.
Daha fazla bilgi için Konum Saat Dilimi Algılama başlıklı makaleyi inceleyin.
Özellik 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 kullanmanın avantajları ve dezavantajları karşılaştırılmıştır.
Telefon algılama | Konum algılama | |
---|---|---|
Doğruluk | Ülkeye göre değişir. MCC, NITZ doğruluğuna ve kullanılabilirliğine bağlıdır. |
Özellik yapılandırmasına veya eklenti bileşenlerine bağlıdır. Doğruluk genellikle şunlara göre değişiklik gösterir:
|
Güncellenebilinme durumu | Telefon algılama, güncellenebilir Saat Dilimi Verileri modülünde (com.android.tzdata APEX) bulunan dosyalara dayanır. | Özellik yapılandırmasına veya eklenti bileşenlerine bağlıdır. Güncellenebilirlik genellikle cihazın sunucu veya istemci saat dilimi 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 haritası verileri arasındaki sürüm tutarlılığını da dikkate almalıdır. |
Güç kullanımı | Hiç güç kullanımı yok veya düşük güç kullanımı | Kullanıcının 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
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 bilgilere dayanarak cihazın konumuyla ilgili tam bir fikir verilmeyebilir.
Daha ayrıntılı olarak belirtmek gerekirse, saat dilimi algılama özelliği pasif veya etkin yöntemlerle çalışabilir:
- Pasif: Cihazın ortamındaki bir şey, cihaza söz konusu ortamda kullanılması gereken saat dilimini bildirir.
- Etkin: Cihazın saat dilimini kendisi belirlemesi gerekir. Bunun için kullanıcıların gizlilik ayarlarına ve izinlerine bağlı olarak cihazın konumunu alır. Ardından konumunu harici hizmetlerle paylaşabilir. Kullanıcı gizliliği ve izni hakkında ayrıntılı bilgi için aşağıdaki tartışmaya bakın.
Telefon algoritması gibi pasif algılama, kullanıcılar için ek gizlilik sorunları oluşturmaz.
Konum algoritması gibi etkin algılama, cihazın konumunu belirlemeyi içerir. Kullanıcılar bu durumu kabul etmek istemeyebilir. Ayrıca, saat dilimi kimliğini belirlemek için konum bir ağ üzerinden gönderilebilir.
Android'in saat dilimi algılama için kullanıcı gizliliğine yaklaşımı, kullanıcıya etkin olması beklenen algoritmaları tek tek devre dışı bırakma olanağı sunar. Ayrıca, AOSP platform kodu doğrudan 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 başlıklı makaleyi inceleyin.
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 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 başlıklı makaleleri inceleyin.
Temel AOSP yapılandırması frameworks/base/core/res/res/values/config.xml
konumunda.
Yapılandırma anahtarı | AOSP değeri | Açıklama |
---|---|---|
config_supportTelephonyTimeZoneFallback |
true |
true olduğunda time_zone_detector , telefon desteği yedek modunu kullanır. Bu özellik Android 13 ve sonraki sürümlerde kullanılabilir.
|
Cihazın varsayılan davranışını değiştirme
AOSP'de otomatik saat dilimi algılama özelliği varsayılan olarak etkindir ve auto_time_zone
ayarı true
olarak ayarlanmıştır. Otomatik 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üklenmediğinden emin olmak istiyorsanız frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml
içinde tanımlanan restore_blocked_global_settings
dizisine auto_time_zone
ekleyin.
Saat dilimi hata ayıklama ve 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 test yapma hakkında bilgi verilmektedir.
device_config hizmetini kullanarak cihaz yapılandırması
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 önlemek için şunları kullanın:
adb shell cmd device_config set_sync_disabled_for_tests persistent
Testlerden sonra işaret senkronizasyonunu geri yüklemek için şunları kullanın:
adb shell cmd device_config set_sync_disabled_for_tests none
İşaret senkronizasyonunu geri yükledikten sonra cihazı yeniden başlatın.
Daha fazla bilgi için $ adb shell cmd device_config help
sayfasını ziyaret edin.
time_zone_detector hizmetiyle etkileşim kurun
time_zone_detector
hizmetinin time_zone_detector
yapılandırmasını ve durumunu görüntülemek için şunları kullanın:
adb shell cmd time_zone_detector dump
Hata ayıklama ve saat dilimi algılama testiyle 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ılamayı doğrulamak için test kullanıcılarının time_zone_detector
'ın hangi algoritmayı kullandığından haberdar olması gerekir. time_zone_detector
işlevinin mevcut algoritmasını anlamak ve etkilemek için aşağıdaki seçeneklerden birini kullanın:
- Ayarlar kullanıcı arayüzünden görsel olarak kontrol edin. Daha fazla bilgi için Saat dilimi ayarları başlıklı makaleyi inceleyin.
adb üzerinden komut satırını kullanın:
time_zone_detector
durumunu dökmek içinadb 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çinadb shell cmd time_zone_detector help
sayfasını ziyaret edin.
Aşağıda, mevcut algoritma ve hizmet durumuyla ilgili bilgilerin kalın olarak gösterildiği adb shell cmd
time_zone_detector dump
komutunun çıktısı örneği verilmiştir:
$ adb shell cmd time_zone_detector dump
TimeZoneDetectorStrategy:
mEnvironment.getCurrentUserId()=0
mEnvironment.getConfiguration(currentUserId)=ConfigurationInternal{mUserId=0, mUserConfigAllowed=true, mTelephonyDetectionSupported=true, mGeoDetectionSupported=true, mAutoDetectionEnabled=true, mLocationEnabled=true, mGeoDetectionEnabled=true}
[Capabilities=TimeZoneCapabilitiesAndConfig{mCapabilities=TimeZoneDetectorCapabilities{mUserHandle=UserHandle{0}, mConfigureAutoDetectionEnabledCapability=40, mConfigureGeoDetectionEnabledCapability=40, mSuggestManualTimeZoneCapability=30}, mConfiguration=TimeZoneConfiguration{mBundle=Bundle[{geoDetectionEnabled=true, autoDetectionEnabled=true}]}}]
mEnvironment.isDeviceTimeZoneInitialized()=true
mEnvironment.getDeviceTimeZone()=Europe/London
Time zone change log:
Manual suggestion history:
...
Geolocation suggestion history:
...
Telephony suggestion history:
...
Bilgiler aşağıdaki şekilde yorumlanabilir:
Anahtar | Değer |
---|---|
mUserConfigAllowed |
Kullanıcının Cihaz Politikası Denetleyicisi tarafından tarih ve saat ayarlarını kontrol etmesinin engellenip engellenmediğini belirtir. |
mTelephonyDetectionSupported |
Cihazda telefon saat dilimi algılama özelliğinin olup olmadığı. |
mGeoDetectionSupported |
Cihazın konum saat dilimi algılama özelliğini destekleyip desteklemediği. Bu, yapılandırmaya ve en az bir LTZP'nin varlığına göre etkili 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) ve telefon ve konum algoritmaları tarafından hangi önerilerin yapıldığını gösterir.