Bu sayfada, Android'de saat ve saat dilimi algılamanın işleyiş şekli açıklanmaktadır. Android'in saati ve saat dilimlerini otomatik olarak nasıl algıladığı, cihaz üreticileri için yapılandırma seçenekleri ve test bilgileri bu kapsamdadır.
Saat ve saat dilimlerine genel bakış
Android, durum çubuğu gibi yerlerde gösterilecek kullanıcının yerel saatini belirlemek için birbiriyle ilişkili ancak birbirinden bağımsız iki durumu takip eder:
- Mevcut Unix epoch zamanı
- Geçerli saat dilimi
Mevcut Unix dönemi zamanı ve mevcut saat dilimi, cihaz genelinde durumlar olduğundan bir cihazın tüm kullanıcıları tarafından paylaşılır.
Mevcut Unix dönemi zamanı sabit bir değer değildir. Zaman geçtikçe otomatik olarak güncellenir. Normal zaman geçişinin yanı sıra, bir cihazın mevcut Unix dönemi zamanı yanlış olduğu tespit edilirse (ör. cihazın gücü kesildikten sonra) ayarlanır.
Mevcut saat dilimi, mevcut Unix sıfır zamanını yerel saate dönüştürmek için yapılacak ayarlamayı belirler. Örneğin, Los Angeles'ta yaz aylarında cihaz, mevcut Unix döneminden 7 saat çıkarır. Kış aylarında ise 8 saat çıkarır.
Bu yerel saat hesaplamalarını desteklemek için tüm Android cihazlarda tüm küresel saat dilimi kurallarının bulunduğu bir veritabanı bulunur. Saat dilimi kuralları hakkında daha fazla bilgi için Saat dilimi kuralları başlıklı makaleyi inceleyin.
Farklı bir saat diliminin kullanıldığı yeni bir yere seyahat eden kullanıcının mevcut Unix dönemi zamanının ayarlanması gerekmez ancak kullanıcı genellikle önceki konumundaki saat yerine yerel saati görmek ister. Mevcut saat diliminin değiştirilmesi, yeni konumun doğru yerel saatini göstermek için mevcut Unix sıfır zamanına doğru farkın uygulanmasını sağlar.
AOSP, aşağıdaki mekanizmalar aracılığıyla kullanıcıların saat ve saat diliminin otomatik olarak ayarlanıp ayarlanmayacağını bağımsız bir şekilde kontrol etmesine olanak tanır.
- Otomatik zaman algılama: Cihazın doğru Unix dönemi zamanına sahip olmasını sağlar.
- Otomatik saat dilimi algılama: Cihazın doğru saat dilimine sahip olmasını sağlar.
Otomatik zaman algılama
Bu bölümde, otomatik saat algılama, kullanıcı kontrolleri, yapılandırma seçenekleri ve test ayrıntılarını yöneten time_detector
hizmetine genel bir bakış sunulmaktadır.
The time_detector service
Android 10 veya daha yeni sürümlerin yüklü olduğu cihazlarda bulunan time_detector
hizmeti, otomatik saat algılamayı yönetir. Otomatik zaman algılama etkinleştirildiğinde cihazın mevcut Unix epoch zamanını gerektiği şekilde ayarlar.
time_detector
hizmeti her zaman iki durumdan birinde olur: certain
veya uncertain
. Hizmetin kesin veya belirsiz durumu, çeşitli kaynaklardan aldığı zaman önerileri ile belirlenir.
time_detector
hizmeti kesin olduğunda (yani Unix sıfır zamanı bilgisi içeren bir öneri aldığında) zaman önerisi mevcut Unix sıfır zamanından farklıysa mevcut Unix sıfır zamanını geçersiz kılar.
time_detector
belirsiz olduğunda geçerli saati geçersiz kılmaz. Belirsiz durum genellikle time_detector
hizmetinin zaman önerileri almadığı anlamına gelir. time_detector
hizmeti, aldığı öneriler kullanılmak için çok eski kabul edilirse de belirsizleşir. Eski Unix zaman saati önerilerini kullanan ayarlamalar, cihazdaki geçen gerçek zamanlı saatten yararlandığı için önerilerin yaşı dikkate alınır. Bu saatin uzun süreler boyunca yanlış olduğu varsayılır.
Bir cihaz, mevcut Unix epoch zamanını otomatik olarak belirlemek için çeşitli kaynaklardan yararlanabilir. Bu dokümanda bunlar kaynaklar olarak adlandırılır. time_detector
hizmeti, öneri dizilerini kaynaklarına göre ayrı olarak değerlendirir.
time_detector
hizmeti durum bilgisi olan bir hizmettir. Bu nedenle, her kaynak tarafından yapılan en son önerinin kaydını tutar. Bir kaynakta daha yeni Unix epoch zamanı bilgileri varsa time_detector
için yeni önerilerde bulunulur. time_detector
hizmeti, yeni ve mevcut önerileri yeniden değerlendirir ve öneriler alındığında cihaz durumunu günceller.
UTC saati uluslararası olarak kabul edilse de mevcut Unix dönemi zamanının belirlenmesinin Android destekli bir cihaz için her zaman kolay olmamasının çeşitli nedenleri vardır:
- Unix epoch saati, UTC saatinden biraz farklı bir zaman tutma sistemidir. İkisi arasında dönüşüm yapmak için artık saniyelerin ne zaman gerçekleştiği ve kaynaklar tarafından nasıl işlendiği hakkında bilgi sahibi olmak gerekir.
- Kökenler yalnızca belirli zamanlarda veya belirli koşullarda kullanılabilir. Örneğin, kaynağın ağ bağlantısı gerektirmesi durumunda, kaynak yalnızca cihaz internete bağlıyken kullanılabilir.
- Kaynaklar hatalı veya yanlış olabilir ya da hatalar içerebilir. Örneğin, bir telefon şebekesi baz istasyonu UTC saatini doğru şekilde izlemiyorsa telefon şebekesi kaynağı yanlış zaman önerileri sunabilir.
- Unix epoch zamanı alınırken hatalar oluşabilir. Örneğin, ağ gecikmesi, arabelleğe alma veya süreç planlama, Unix epoch zamanının yanlış olmasına neden olabilir.
- Önerinin alınmasından bu yana geçen süre için öneriyi ayarlamak üzere kullanılan referans saat yanlış olabilir.
AOSP'de varsayılan olarak kullanılmak üzere yapılandırılmış iki ana zaman algılama kaynağı vardır:
- Ağ: Ağ Saati Protokolü (NTP) zaman sunucularını kullanır.
- Telefon: Ağ Kimliği ve Saat Dilimi (NITZ) telefon sinyallerini kullanır.
Hem telefon hem de ağ kaynakları, her zaman kullanılamayan harici ağlara bağlantı gerektirir.
Android 12'den itibaren Android, varsayılan olarak kullanılmak üzere yapılandırılmamış aşağıdaki kaynakları da destekler:
- GNSS: GNSS kaynağından zaman almak için GPS konum sağlayıcısını kullanır.
- Harici: Cihaz üreticilerinin kendi Unix Epoch zamanı kaynağını entegre etmesine olanak tanıyan genel kaynak.
Zaman ayarları
Kullanıcılar, AOSP Ayarlar uygulamasındaki Sistem > Tarih ve Saat bölümünde otomatik saat algılamayı etkinleştirebilir.
1.şekil Ayarlarda otomatik zaman algılama
Aşağıdaki tabloda, AOSP Ayarlar uygulamasında zaman algılamayla ilgili kullanıcı kontrolleri açıklanmaktadır.
*Android 11 ve önceki sürümlerde bu ayar Ağ tarafından sağlanan saati kullan olarak etiketlenir. |
|||
AOSP Ayarları konumu | AOSP Ayarları adı | Kapsam | Davranış |
---|---|---|---|
Sistem > Tarih ve Saat | Saati otomatik olarak ayarlama* | Tüm kullanıcılar | Açma/kapatma düğmesi. Bu ayar etkin olduğunda cihaz, mevcut Unix dönemini algılamaktan sorumludur. Kapalı olduğunda kullanıcılara cihazın saatini manuel olarak ayarlayabilecekleri kontroller sunulur. |
Kullanıcı, saati manuel olarak girdiğinde Unix epoch zamanını değil, yerel saatini girer. Mevcut Unix sıfır zamanı, Unix sıfır zamanını elde etmek için mevcut saat dilimi kullanılarak hesaplanır.
Yapılandırma
Cihaz üreticileri, time_detector
hizmetini çeşitli şekillerde yapılandırabilir. Örneğin, hangi kaynakların kullanılacağını ve bu kaynaklardan gelen sinyallere nasıl öncelik verileceğini belirleyebilir.
Kaynak önceliklendirme
Android 12'den itibaren cihaz üreticileri, otomatik saat algılamaya hangi zaman kaynaklarının dahil edileceğini ve core/res/res/values/config.xml
'nın bu kaynakları hangi öncelikte değerlendireceğini belirtmek için yapılandırma dosyasını değiştirebilir.time_detector
Android 11 veya önceki sürümleri çalıştıran cihazlarda kaynak önceliği ["telephony", "network"]
olarak sabit kodlanmıştır. Bu, telefon önerilerine ağ önerilerinden daha fazla öncelik verildiği anlamına gelir.
Varsayılan AOSP yapılandırması aşağıdaki gibidir:
<!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list
take precedence over lower ones.
See com.android.server.timedetector.TimeDetectorStrategy for available sources. -->
<string-array name="config_autoTimeSourcesPriority">
<item>network</item>
<item>telephony</item>
</string-array>
Android 12'de ağ ve telefon önerileri, varsayılan olarak kullanılacak kaynaklar şeklinde yapılandırılır. Ağ saati önerilerine, telefon saati önerilerinden daha fazla öncelik verilir. Cihaz üreticileri, Android 11 veya önceki sürümlerdeki davranışa geri dönmek için kaynakların sırasını değiştirebilir. Bu sürümlerde telefoniye daha yüksek öncelik verilir.
Varsayılan olarak, en yüksek öncelikli geçerli öneri cihazın mevcut sistem saatiyle birkaç saniye içinde eşleşirse cihaz saati değiştirilmez. Bu, ACTION_TIME_CHANGED
amacını dinleyen yüklü uygulamalar için iş oluşturmayı önlemek amacıyla yapılır.
İzin verilen kaynak değerleri şunlardır:
İzin verilen zaman sınırları
Android 14, time_detector
hizmeti tarafından alınan zaman önerileri için üst bir zaman sınırı getiriyor. Cihaz 32 bit işlemleri destekliyorsa çerçeve, cihazın Y2038 sorununu tetikleyebilecek bir zaman önerisi kullanmasını önlemek için üst zaman sınırı belirler.
Android 12, time_detector
hizmeti tarafından alınan zaman önerilerini doğrulamak için kullanılan daha düşük bir zaman sınırı getirmiştir. Otomatik öneriler için kullanılan alt zaman sınırı değeri, derleme zaman damgasından ayarlanır. Bu işlem, geçerli bir saatin cihazın sistem görüntüsü oluşturulmadan önce olamayacağı ilkesine dayanır. Bir zaman önerisi, alt zaman sınırından önceyse hizmet, derleme zaman damgası doğru olduğunda geçerli olamayacağından öneriyi siler.time_detector
Android 11 veya önceki sürümleri çalıştıran cihazlarda time_detector
hizmeti, gelen Unix dönemi zamanı önerilerini doğrulamıyor.
Hata ayıklama ve test süresi
Bu bölümde, time_detector
hizmetinin ve tüm kaynaklar tarafından paylaşılan diğer bileşenlerin davranışını nasıl ayıklayıp test edeceğiniz hakkında bilgi verilmektedir.
time_detector hizmetiyle etkileşim kurma
time_detector
hizmetinin yapılandırmasını ve time_detector
hizmetinin durumunu görüntülemek için şunu kullanın:
adb shell cmd time_detector dump
Saat dilimi algılamayı hata ayıklama ve test etme ile ilgili ek komutları görmek için şunu kullanın:
adb shell cmd time_detector help
Yardım çıktısında, test veya üretim için device_config
davranışını etkilemek üzere kullanılabilecek hizmet özellikleri de açıklanır.time_detector
Ayrıntılar için device_config hizmetini kullanarak cihaz yapılandırma başlıklı makaleyi inceleyin.
Otomatik zaman algılamayı doğrulamak için test kullanıcıları, time_detector
hizmetinin hangi kaynakları kullandığını bilmelidir. Aşağıda, adb shell cmd time_detector dump
komutunun çıktısına ilişkin bir örnek verilmiştir. Mevcut kaynak ve hizmet durumuyla ilgili bilgiler kalın harflerle belirtilmiştir:
$ adb shell cmd time_detector dump
TimeDetectorStrategy:
mLastAutoSystemClockTimeSet=null
mEnvironment.isAutoTimeDetectionEnabled()=true
mEnvironment.elapsedRealtimeMillis()=23717241
mEnvironment.systemClockMillis()=1626707861336
mEnvironment.systemClockUpdateThresholdMillis()=2000
mEnvironment.autoTimeLowerBound()=2021-07-19T07:48:05Z(1626680885000)
mEnvironment.autoOriginPriorities()=[network,telephony]
Time change log:
...
Telephony suggestion history:
...
Network suggestion history:
...
Gnss suggestion history:
...
External suggestion history:
...
Bilgiler aşağıdaki gibi yorumlanabilir:
Anahtar | Değer |
---|---|
mEnvironment.isAutoTimeDetectionEnabled() |
Otomatik saat algılama özelliğinin etkin olup olmadığı. |
mEnvironment.autoTimeLowerBound() |
Zaman önerilerini doğrulamak için kullanılan mevcut alt sınır. |
mEnvironment.autoOriginPriorities() |
Kullanımdaki kaynaklar ve öncelik sırası. |
Zaman değişikliği günlüğü, time_detector
hizmetinin cihazın mevcut Unix sıfır zamanını değiştirdiği durumları gösterir.
Öneri geçmişi bilgileri, her kaynak tarafından hangi önerilerin yapıldığını gösterir.
Otomatik saat dilimi algılama
Bu bölümde, otomatik saat dilimi algılama, ayarlardaki kullanıcı kontrolleri, telefon ve konum saat dilimi algılama ile test ayrıntılarını yöneten time_zone_detector
hizmetine genel bir bakış sunulmaktadır.
time_zone_detector hizmeti
Android 11 veya sonraki sürümlerin yüklü olduğu cihazlarda bulunan time_zone_detector
hizmeti, otomatik saat dilimi algılamayı yönetir. Otomatik saat dilimi algılama etkinleştirildiğinde cihazın mevcut saat dilimini gerektiği şekilde ayarlar.
Otomatik saat dilimi algılama etkinleştirildiğinde time_zone_detector
iki durumdan birinde olabilir: certain
ve uncertain
.
time_zone_detector
hizmeti belirli bir durumdayken bu, time_zone_detector
hizmetinin güçlü saat dilimi bilgileri aldığı anlamına gelir. Bu durum, hizmetin mevcut saat dilimini geçersiz kılmasına neden olabilir. Bu değer belirsiz olduğunda, herhangi bir bilgi almadığı veya yalnızca düşük güven düzeyine sahip bilgiler aldığı anlamına gelir. Bu durumda, geçerli saat dilimi geçersiz kılınmaz.
time_zone_detector
hizmetinin belirli durumları, time_zone_detector
hizmetinin kullanabileceği saat dilimi bilgisinin olmadığı veya aralarından seçim yapabileceği birden fazla saat diliminin bulunduğu durumları içerebilir. Bu eyaletler şunlardır:
- Cihaz, saat dilimi olmayan bir yerde (ör. uluslararası sularda veya ihtilaflı bir bölgede) bulunduğunda saat dilimi sıfır olan belirli bir durum girilir.
Bu durum, belirsiz bir duruma benzer ancak
time_zone_detector
'nın saat dilimini belirlemeye çalışmak için başka bir işlem yapması gerekmediğini gösterir. - Belirsizlik veya sınır koşullarının olduğu durumlarda birden fazla saat dilimi içeren belirli bir eyalet girilir. Bu durumda, geçerli saat dilimi
time_zone_detector
'nın emin olduğu saat dilimlerinden biriyse geçerli saat dilimi olduğu gibi bırakılır. Aksi takdirde, mevcut saat dilimlerinden biri kullanılır. Bu, kullanıcı saat dilimini daha önce manuel olarak seçmişse veya cihaz bir sınıra yaklaştığındatime_zone_detector
öğesine yapışkanlık özelliği kazandırır.
time_zone_detector
hizmetinin kesin veya belirsiz durumu, bir algoritma tarafından gönderilen saat dilimi önerileri ile belirlenir.
Genel olarak, öneriler time_zone_detector
'nın olası durumlarıyla yakından eşleşen iki türde gelir: certain
ve uncertain
. Aşağıda öneri türlerine ilişkin örnekler verilmiştir:
type =
uncertain
,zoneIds = []
- Algoritma, saat diliminin ne olduğunu bilmiyor.
type =
certain
,zoneIds = ["Europe/London"]
- Algoritma, bölgenin Europe/London olduğundan emindir.
type =
certain
,zoneIds = []
`- Algoritma kesin ancak mevcut konumla ilişkili bir bölge kimliği yok.
type =
certain
,zoneIds = ["America/Denver", "America/Phoenix"]
- Algoritma, yanıtın iki bölgeden biri olduğundan emin ancak America/Denver ile America/Phoenix arasında seçim yapamıyor.
time_zone_detector
hizmeti, algoritmasına göre öneri dizilerini ayrı olarak değerlendirir. Algoritmaya bağlı olarak, önerilerde algoritmanın ne kadar kesin olduğunu gösteren meta veriler de yer alabilir.
time_zone_detector
hizmeti durum bilgisi olan bir hizmettir. Bu nedenle, her algoritmanın yaptığı en son önerinin kaydını tutar. Önceki bir öneri artık doğru değilse (ör. bir algoritma artık farklı bir öneriye sahipse veya saat dilimini algılama özelliğini kaybetmişse) time_zone_detector
hizmetine yeni öneriler gönderilir. time_zone_detector
hizmeti, yeni ve mevcut önerileri yeniden değerlendirir ve öneriler alındığında cihaz durumunu günceller.
Android, saat dilimi algılama için iki algoritmayı destekler:
- Telefon Hizmeti
- Konum
time_zone_detector
hizmeti, saat dilimini belirlemek için genellikle tek bir algoritma kullanır. Konum algoritması bir cihazda desteklendiğinde, cihazın kullandığı algoritma kullanıcının yapılandırdığı saat dilimi ayarlarına göre belirlenir. Kullanımdaki algoritma saat diliminden emin olmadığında time_zone_detector
genellikle farklı bir algoritmanın önerilerini kullanmaz. Kullanımda olmayan algoritmalarla ilişkili öneriler time_zone_detector
tarafından bellekte tutulabilir ancak algoritma değişmediği sürece kullanılmaz. Kullanıcı, otomatik saat dilimi algılama ayarlarını değiştirdiğinde ve algoritma değiştiğinde, yeni algoritma için kullanılabilen en son öneri kullanılır.
Saat dilimini belirlemek için birden fazla algoritmanın kullanıldığı durumla ilgili ayrıntılar için Telefon hizmeti yedekleme modu başlıklı makaleye bakın.
Telefona geri dönüş modu
Android 13 ve sonraki sürümlerin yüklü olduğu cihazlarda time_zone_detector
hizmeti, telefon görüşmesi yedek modunu destekler. Bu mod, konum algılamanın saat dilimini algılayamadığı veya saat dilimini algılamanın telefon algılamadan daha uzun sürdüğü durumlarda Android'in telefon algılama önerilerini geçici olarak kullanmasına olanak tanır.
Telefon görüşmesi yedekleme modu, hem telefon görüşmesi hem de konum algılama özelliklerinin desteklendiği ve kullanıcının Saat dilimi ayarlarında Saat dilimini ayarlamak için konumu kullan seçeneğini etkinleştirdiği cihazlarda geçerlidir. Bu mod, bir cihaz yeniden başlatıldığında ve uçak modu devre dışı bırakıldığında otomatik olarak etkinleştirilir.
Android 14 ve sonraki sürümlerde, telefon görüşmesi yedeklemesi LTZP durum API'leri aracılığıyla tetiklenebilir. Yani bir LTZP, konum veya saat dilimi algılama yeteneğinin ortamı nedeniyle azaldığından emin olmadığını bildirirse telefon görüşmesi yedekleme modu tetiklenir.
Telefon görüşmesi yedekleme modundayken time_zone_detector
hizmeti, konum algoritması belirli bir öneride bulunana kadar konum algılama devre dışı bırakılmış gibi telefon görüşmesi önerilerini kullanır. Belirli bir öneri alındıktan sonra telefon görüşmesi yedek modu devre dışı bırakılır ve yalnızca konum önerileri kullanılır.
Telefonla geri dönüş moduyla ilgili yapılandırma ayrıntıları için Saat dilimi algılama yapılandırması başlıklı makaleyi inceleyin.
Saat dilimi ayarları
Kullanıcılar, AOSP Ayarlar uygulamasında otomatik saat dilimi algılama ayarlarını etkinleştirebilir ve yapılandırabilir.
Şekil 2. Ayarlarda otomatik saat dilimi algılama
Aşağıdaki tabloda, AOSP Ayarlar uygulamasındaki saat dilimi algılama ile ilgili kullanıcı kontrolleri açıklanmaktadır.
*Android 11 ve önceki sürümlerde bu ayar Ağ tarafından sağlanan saat dilimini kullan olarak etiketlenir. |
|||
AOSP Ayarları konumu | AOSP Ayarları adı | Kapsam | Davranış |
---|---|---|---|
Sistem > Tarih ve Saat | Saat dilimini otomatik olarak ayarlama* | Tüm kullanıcılar | Açma/kapatma düğmesi. Bu ayar açıkken cihaz, geçerli saat dilimini algılamaktan sorumludur. Kapalı olduğunda kullanıcılara cihazın saat dilimini manuel olarak ayarlayabilecekleri kontroller sunulur. |
Sistem > Tarih ve Saat | Saat dilimini ayarlamak için konumu kullanma | Geçerli kullanıcı | Açma/kapatma düğmesi. Android 12 ve sonraki sürümlerde kullanılabilir. Bu açma/kapatma düğmesi yalnızca cihazda konum saat dilimini algılama desteklendiğinde gösterilir. Android 14'te kullanıma sunulan değişiklikler için Yalnızca konum saat dilimi algılamayı destekleyen cihazlar başlıklı makaleyi inceleyin. |
Konum | Konumu kullan | Geçerli kullanıcı | Açma/kapatma düğmesi. Cihazın konumunun genel olarak kullanılmasına izin verir veya bunu engeller. Değer, cihazda konum saat dilimini algılama destekleniyorsa geçerlidir. |
Aşağıda, kullanıcı tarafından seçilen ayarlara göre saat dilimi algılamasıyla ilgili cihaz davranışına genel bir bakış sunulmaktadır:
[Tarih ve Saat] Saat dilimini otomatik olarak ayarla: KAPALI
- Kullanıcı, saat dilimini manuel olarak seçmelidir.
[Tarih ve Saat] Saat dilimini otomatik olarak ayarla: AÇIK
[Konum] Konumu kullan: KAPALI
- Saat dilimini algılamak için telefon sinyalleri kullanılır.
[Konum] Konumu kullan: AÇIK
[Tarih ve Saat] Saat dilimini ayarlamak için konumu kullanın: AÇIK
- Saat dilimini algılamak için konum kullanılır.
[Tarih ve Saat] Saat dilimini ayarlamak için konumu kullan: KAPALI
- Saat dilimini algılamak için telefon sinyalleri kullanılır.
Birden fazla kullanıcı cihazı
İlgili ayarların birçoğu mevcut kullanıcıya göre belirlendiğinden, çok kullanıcılı Android destekli bir cihazda mevcut kullanıcı değiştiğinde cihazın saat dilimi algılama davranışı değişebilir.
Saat dilimini ayarlamak için konumu kullan açma/kapatma düğmesi mevcut kullanıcıyla sınırlıdır ve cihaz politikası tarafından kısıtlanmaz. Bu nedenle, Saat dilimini otomatik olarak ayarla açma/kapatma düğmesi kapalı olsa veya diğer saat ya da saat dilimi kontrolleri Cihaz Politikası Denetleyicisi tarafından kısıtlanmış olsa bile kullanıcılar bu düğmenin değerini her zaman değiştirebilir.
Yalnızca konum saat dilimini algılama algoritmasını destekleyen cihazlar
Bu bölümde, yalnızca konum algoritmasını destekleyen cihazların davranışı açıklanmaktadır.
Android 14 ve sonraki sürümler
- Konumu kullan seçeneği, AOSP Ayarlar uygulamasında kullanıcılara gösterilmez ve cihaz, Konumu kullan seçeneği etkinleştirilmiş gibi davranır.
- Kullanıcı kapsamlı
SettingsProvider
ayarının değerilocation_time_zone_detection_enabled
yok sayılır. Bu değer, kullanıcının diğer cihaz türlerindeki tercihini kaydeder.
Android 12 veya Android 13
- Konumu kullan seçeneği, AOSP Ayarlar uygulamasında kullanıcılara görünür ve kullanıcılar bu seçeneği devre dışı bırakabilir. Seçenek devre dışıysa cihaz, saat dilimini otomatik olarak algılamaz.
Otomatik algılamaya geçiş yaparken ve otomatik algılamadan çıkarkenki davranış
Kullanıcı, saat dilimi algılamayı manuel'den otomatik'e geçirdiğinde,
time_zone_detector
mevcut saat diliminden zaten emin olabilir. Bu durumda, kullanıcı otomatik algılamayı etkinleştirdiğinde cihazın saat dilimi, time_zone_detector
hizmetinin görüşüne uygun olarak aynı anda değiştirilebilir.
Benzer şekilde, kullanıcı Ayarlar'da time_zone_detector
hizmetinin mevcut algoritmasında değişikliğe neden olan bir değişiklik yaptığında time_zone_detector
yeni algoritmayla ilgili öneriler almış olabilir. Bu nedenle, cihazın saati time_zone_detector
hizmetinin görüşüne uyacak şekilde hemen değiştirilebilir.
Telefon saat dilimi algılama
Telefon saat dilimi algılama özelliği, mevcut saat dilimini belirlemek için telefon sinyallerini kullanır. Daha fazla bilgi için Telefonda saat dilimi algılama başlıklı makaleyi inceleyin.
Konum saat dilimini algılama
Konum saat dilimini algılama özelliği Android 12 veya sonraki sürümlerde kullanılabilir. Bu özellik, cihazların mevcut saat dilimini belirlemek için konumlarını kullanmalarını sağlayan isteğe bağlı bir otomatik saat dilimi algılama özelliğidir.
Android 12'de kullanıma sunulan location_time_zone_manager
hizmeti, sistem sunucusunda çalışır ve konum algoritması önerilerini time_zone_detector
hizmetine göndermekten sorumlu kodu içerir. Daha fazla bilgi için Konum saat dilimi algılama başlıklı makaleyi inceleyin.
Özellik kullanımına ilişkin dikkat edilmesi gereken noktalar
Bu bölümde, cihaz üreticilerinin bir cihazda bu özelliği kullanıp kullanmayacağına karar vermesine yardımcı olmak için konum saat dilimini algılama özelliğinin bazı yönleri açıklanmaktadır.
Telefon ve konum algılamayı karşılaştırma
Aşağıdaki tabloda, saat dilimi algılama için telefon sinyalleri yerine konum sinyallerini kullanmanın avantajları ve dezavantajları karşılaştırılmaktadır.
Kategori | Telefon hizmeti algılama | Konum algılama |
---|---|---|
Doğruluk | Ülkeye göre değişir. MCC, NITZ doğruluğuna ve kullanılabilirliğine bağlıdır. |
Özellik yapılandırmasına veya eklenti bileşenlerine bağlıdır. Doğruluk genellikle şu faktörlere göre değişir:
|
Güncellenebilme durumu | Telefon algılama, güncellenebilir Saat Dilimi Verileri modülünde
(com.android.tzdata APEX) bulunan dosyalara dayanır. |
Özellik yapılandırmasına veya eklenti bileşenlerine bağlıdır. Güncellenebilirlik genellikle cihazın sunucu veya istemci saat dilimi harita verilerini kullanıp kullanmadığına bağlıdır. Saat dilimi haritası verileri, Android'in TZDB kopyasını ve diğer saat dilimi bilgilerini güncellemek için kullanılan Saat Dilimi Verileri modülünde yer almaz. Cihaz üreticileri, saat dilimi kuralları ile saat dilimi haritası verileri arasındaki sürüm tutarlılığını da göz önünde bulundurmalıdır. |
Güç kullanımı | Güç kullanımı yok veya düşük | Kullanıcının konum ayarlarının yanı sıra kullanılan eklentilere ve genellikle konum isteyen diğer uygulamalara bağlıdır. |
Kullanılabilirlik | Yalnızca telefon cihazları. Genellikle çalışan bir SIM kart gerekir. | Konum algılama, kullanılabilir konum sağlayıcılara bağlıdır. |
Kullanıcı gizliliği
Kullanıcının tercih ettiği saat dilimi genellikle coğrafi konumuna göre belirlenir. Konum, hassas veridir. Kullanıcılar, saat dilimi algılama kapsamında konum bilgilerinin paylaşılması konusunda endişelenebilir. Saat dilimi algılamayla ilgisi olmamakla birlikte, bir cihazda çalışan tüm uygulamalar Android izni gerektirmeden cihazın mevcut saat dilimini okuyabilir ve uygulamalar bu bilgilerden cihazın konumuna dair kesin olmayan bir fikir edinebilir.
Daha spesifik olarak, saat dilimi algılama özelliği pasif veya aktif yöntemlerle çalışabilir:
- Pasif: Cihazın ortamındaki bir şey, cihaza o ortamda kullanılacak saat dilimini bildirir.
- Etkin: Cihazın, kendisi için saat dilimini belirlemesi gerekir. Bunu yapmak için kullanıcıların gizlilik ayarlarına ve rızalarına bağlı olarak cihazın konumunu alır. Ardından konumunu harici hizmetlerle paylaşabilir. Kullanıcı gizliliği ve izniyle ilgili ayrıntılar için aşağıdaki tartışmaya bakın.
Telefon algoritması gibi pasif algılama, kullanıcılar için ek gizlilik etkileri içermez.
Konum algoritması gibi etkin algılama, cihazın konumunun belirlenmesini içerir. Kullanıcılar bu durumu kabul etmek istemeyebilir ve saat dilimi kimliğini belirlemek için konum bir ağ üzerinden gönderilebilir.
Android'in saat dilimi algılama için kullanıcı gizliliğine yaklaşımı, kullanıcılara etkin olması beklenen algoritmaları tek tek devre dışı bırakma olanağı tanır. Ayrıca, AOSP platform kodu doğrudan konumla ilgilenmez: Konum algılama ve konumun saat dilimi kimlikleriyle eşlenmesi, cihaz üreticileri tarafından yapılandırılan eklenti bileşenlerine bırakılır.
Kullanıcı gizliliği özellikleriyle ilgili daha fazla bilgi için Konum saat dilimi algılama başlıklı makaleyi inceleyin.
Yapılandırma
Cihaz üreticileri, time_zone_detector
hizmetinin davranışını değiştirmek için bu hizmeti yapılandırabilir. Bu bölümde, time_zone_detector
hizmetinin genel davranışıyla ilgili yapılandırma seçenekleri açıklanmaktadır. Telefon ve saat dilimi algılama algoritmalarıyla ilgili yapılandırma ayrıntıları için Telefon saat dilimi algılama ve Konum saat dilimi algılama başlıklı makaleleri inceleyin.
Temel AOSP yapılandırması frameworks/base/core/res/res/values/config.xml
konumundadır.
Yapılandırma anahtarı | AOSP değeri | Açıklama |
---|---|---|
config_supportTelephonyTimeZoneFallback |
true |
true , time_zone_detector telefon görüşmesi yedek modunu kullandığında. Bu özellik, Android 13 ve sonraki sürümlerde kullanılabilir.
|
Cihazın varsayılan davranışını değiştirme
AOSP'de otomatik saat dilimi algılama, varsayılan olarak auto_time_zone
ayarı true
olarak ayarlanmış şekilde etkindir. Varsayılan olarak otomatik saat algılamayı devre dışı bırakmak için def_auto_time_zone
değerini frameworks/base/packages/SettingsProvider/res/values/defaults.xml
içinde false
olarak ayarlayın.
Başka bir cihazdan yedekleme geri yüklenirken çerçeve, auto_time_zone
ayarının değerini varsayılan olarak günceller. Bu ayarın yedekten geri yüklenmemesini istiyorsanız auto_time_zone
öğesini frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml
içinde tanımlanan restore_blocked_global_settings
dizisine ekleyin.
Saat dilimi hata ayıklama ve test
Bu bölümde, time_zone_detector
hizmetinin ve tüm algoritmalar tarafından paylaşılan diğer bileşenlerin davranışıyla ilgili hata ayıklama ve test işlemleri hakkında bilgi verilmektedir.
device_config hizmetini kullanarak cihaz yapılandırma
device_config
hizmeti, genellikle tescilli (AOSP olmayan) kod tarafından uzak bir sunucudan çekilen değerler kullanılarak değiştirilebilir davranışları yapılandırmak için Android'de kullanılan bir mekanizmadır. device_config
değerleri test için kullanılırken, özellikle uzun süren manuel testler sırasında cihaz, işaretleri senkronize edebilir. Bu durumda işaretler sıfırlanır ve test için ayarlanan değerler temizlenir.
Android 12 veya sonraki sürümlerde, işaret senkronizasyonunu geçici olarak önlemek için:
adb shell cmd device_config set_sync_disabled_for_tests persistent
Testlerden sonra işaret senkronizasyonunu geri yüklemek için şunu kullanın:
adb shell cmd device_config set_sync_disabled_for_tests none
İşaret senkronizasyonu geri yüklendikten sonra cihazı yeniden başlatın.
Daha fazla bilgi için $ adb shell cmd device_config help
adresini ziyaret edin.
time_zone_detector hizmetiyle etkileşim kurma
time_zone_detector
yapılandırmasını ve time_zone_detector
hizmetinin durumunu görüntülemek için şunu kullanın:
adb shell cmd time_zone_detector dump
Saat dilimi algılamayı hata ayıklama ve test etme ile ilgili ek komutları görmek için şunu kullanın:
adb shell cmd time_zone_detector help
Yardım çıktısında, test veya üretim için time_zone_detector
hizmetinin davranışını etkilemek üzere kullanılabilecek device_config
hizmet özellikleri de açıklanır. Ayrıntılar için device_config
service kullanarak cihaz yapılandırma başlıklı makaleyi inceleyin.
Saat dilimi algılamayı doğrulamak için test kullanıcıları, time_zone_detector
hangi algoritmayı kullandığını bilmelidir. time_zone_detector
ile ilgili mevcut algoritmayı anlamak ve etkilemek için aşağıdaki seçeneklerden birini kullanın:
- Ayarlar kullanıcı arayüzünden görsel olarak kontrol edin. Daha fazla bilgi için Saat dilimi ayarları başlıklı makaleyi inceleyin.
adb üzerinden komut satırını kullanma:
time_zone_detector
durumunu boşaltmak iç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
adresini kullanın.
Aşağıda, adb shell cmd
time_zone_detector dump
komutunun çıktısına bir örnek verilmiştir. Mevcut algoritma ve hizmet durumuyla ilgili bilgiler kalın harflerle gösterilmiştir:
$ adb shell cmd time_zone_detector dump
TimeZoneDetectorStrategy:
mEnvironment.getCurrentUserId()=0
mEnvironment.getConfiguration(currentUserId)=ConfigurationInternal{mUserId=0, mUserConfigAllowed=true, mTelephonyDetectionSupported=true, mGeoDetectionSupported=true, mAutoDetectionEnabled=true, mLocationEnabled=true, mGeoDetectionEnabled=true}
[Capabilities=TimeZoneCapabilitiesAndConfig{mCapabilities=TimeZoneDetectorCapabilities{mUserHandle=UserHandle{0}, mConfigureAutoDetectionEnabledCapability=40, mConfigureGeoDetectionEnabledCapability=40, mSuggestManualTimeZoneCapability=30}, mConfiguration=TimeZoneConfiguration{mBundle=Bundle[{geoDetectionEnabled=true, autoDetectionEnabled=true}]}}]
mEnvironment.isDeviceTimeZoneInitialized()=true
mEnvironment.getDeviceTimeZone()=Europe/London
Time zone change log:
Manual suggestion history:
...
Geolocation suggestion history:
...
Telephony suggestion history:
...
Bilgiler aşağıdaki gibi yorumlanabilir:
Anahtar | Değer |
---|---|
mUserConfigAllowed |
Kullanıcının tarih ve saat ayarlarını Cihaz Politikası Denetleyicisi tarafından kontrol etmesi engellenip engellenmediği. |
mTelephonyDetectionSupported |
Cihazda telefon saat dilimi algılama özelliği olup olmadığı. |
mGeoDetectionSupported |
Cihazın konum saat dilimini algılamayı destekleyip desteklemediği. Bu, yapılandırmaya ve en az bir LTZP'nin varlığına dayalı etkili durumdur. |
mAutoDetectionEnabled |
Otomatik saat dilimi algılamanın etkin olup olmadığı. |
mLocationEnabled |
Ana konum açma/kapatma düğmesi. |
mGeoDetectionEnabled |
Algoritma anahtarı: false telefon algoritmasını, true ise konum algoritmasını gösterir. |
Öneri geçmişi bilgileri, Ayarlar (manuel) aracılığıyla ve telefon ile konum algoritmaları tarafından hangi önerilerin yapıldığını gösterir.