Bu sayfada saat ve saat dilimi algılamanın Android'de nasıl çalıştığı açıklanmaktadır. Bu, Android'in saati ve saat dilimlerini otomatik olarak nasıl algıladığını, cihaz üreticileri için yapılandırma seçeneklerini ve test bilgilerini içerir.
Saat ve saat dilimlerine genel bakış
Durum çubuğu gibi konumlarda görüntülenecek kullanıcının yerel saatini belirlemek için Android, birbiriyle ilişkili ancak bağımsız iki durumu izler:
- Geçerli Unix dönemi zamanı
- Geçerli saat dilimi
Geçerli Unix dönemi zamanı ve geçerli zaman dilimi aygıt genelindeki durumlardır, yani bir aygıtın tüm kullanıcıları tarafından paylaşılırlar.
Geçerli Unix dönem süresi sabit bir değer değildir. Zamanın geçişini yansıtacak şekilde otomatik olarak güncellenir. Normal zamanın geçişine ek olarak, bir cihazın mevcut Unix dönem süresi, örneğin bir cihazın gücü kesildikten sonra yanlış olduğu tespit edilirse ayarlanır.
Geçerli saat dilimi, geçerli Unix dönemi saatini yerel saate dönüştürmek için yapılacak ayarlamayı belirler. Örneğin, Los Angeles'ta yaz aylarında cihaz, mevcut Unix dönemi saatinden 7 saat, kışın ise 8 saat çıkarır.
Bu yerel saat hesaplamalarını desteklemek için tüm Android cihazlarda, tüm küresel saat dilimi kurallarının yer aldığı bir veritabanı bulunur. Saat dilimi kuralları hakkında daha fazla bilgi için bkz. Saat Dilimi Kuralları .
Bir kullanıcı farklı bir saat dilimi kullanan yeni bir konuma gittiğinde, mevcut Unix dönemi saatinin ayarlanmasına gerek yoktur ancak kullanıcı genellikle önceki konumdaki saat yerine yerel saati görmek ister. Geçerli saat diliminin değiştirilmesi, yeni konum için doğru yerel saatin görüntülenmesi amacıyla geçerli Unix dönemi saatine doğru farkın uygulanmasını sağlar.
AOSP, kullanıcıların aşağıdaki mekanizmalar aracılığıyla saat ve saat diliminin kendileri için otomatik olarak ayarlanıp ayarlanmadığını bağımsız olarak kontrol etmelerine olanak tanır.
- Otomatik zaman algılama: Cihazın geçerli Unix dönem zamanına sahip olmasını sağlar.
- Otomatik saat dilimi algılama: Cihazın doğru geçerli saat dilimine sahip olmasını sağlar.
Otomatik zaman tespiti
Bu bölüm, otomatik zaman algılamayı, kullanıcı kontrollerini, yapılandırma seçeneklerini ve test ayrıntılarını yöneten time_detector
hizmetine genel bir bakış sağlar.
Time_detector hizmeti
Android 10 veya sonraki sürümleri çalıştıran cihazlarda bulunan time_detector
hizmeti, otomatik zaman algılamayı yönetir. Otomatik zaman tespiti etkinleştirildiğinde cihazın mevcut Unix dönem zamanını gerektiği gibi ayarlar.
time_detector
hizmeti her zaman iki durumdan birindedir: belirsiz veya kesin . Hizmetin kesin veya belirsiz durumu, çeşitli kaynaklardan aldığı zaman önerileriyle belirlenir.
time_detector
hizmeti kesin olduğunda, yani Unix dönem zamanı bilgileriyle bir öneri aldığı anlamına gelir ve eğer zaman önerisi geçerli Unix dönem zamanından farklıysa, geçerli Unix dönem zamanını geçersiz kılar.
time_detector
belirsiz olduğunda geçerli zamanı geçersiz kılmaz. Belirsiz durum genellikle time_detector
hizmetinin zaman önerileri almadığı anlamına gelir. time_detector
hizmeti, aldığı önerilerin kullanılamayacak kadar eski sayılması durumunda da belirsiz hale gelir. Önerilerin yaşı dikkate alınır çünkü eski Unix çağ zamanı önerilerini kullanan ayarlamalar, cihazda geçen gerçek zamanlı saate dayanır ve bu saatin uzun süreler boyunca hatalı olduğu varsayılır.
Geçerli Unix çağ zamanını otomatik olarak oluşturmak için bir cihazın kullanabileceği çeşitli kaynaklar vardır. Bu belgede bunlara kökenler adı verilmektedir. time_detector
hizmeti, öneri dizilerini kökenlerine göre farklı olarak ele alır.
time_detector
hizmeti durum bilgilidir, yani her kaynak tarafından yapılan en son önerinin kaydını tutar. Eğer bir kökende daha yeni Unix dönemi zaman bilgisi mevcutsa time_detector
yeni önerilerde bulunulur. time_detector
hizmeti, yeni ve mevcut önerileri yeniden değerlendirir ve öneriler alındığında cihazın durumunu günceller.
Her ne kadar UTC saati uluslararası olarak kabul edilmiş olsa da, mevcut Unix çağ zamanını belirlemenin bir Android cihaz için her zaman kolay olmamasının çeşitli nedenleri vardır:
- Unix dönem zamanı, UTC zamanından oldukça farklı bir zaman işleyişi sistemidir. İkisi arasında dönüşüm yapmak, artık saniyelerin ne zaman oluştuğuna ve bunların başlangıç noktaları tarafından nasıl ele alındığına dair bilgi gerektirir.
- Kökenler yalnızca belirli zamanlarda veya belirli koşullar altında mevcut olabilir. Örneğin, kaynak ağ bağlantısı gerektiriyorsa yalnızca cihaz internete bağlıyken kullanılabilir.
- Kaynaklar hatalı veya kesin olmayabilir ya da hatalar içerebilir. Örneğin, bir telefon baz istasyonu "evrensel saati" doğru şekilde izlemiyorsa, telefon kaynağı yanlış zaman önerileri sağlayabilir.
- Unix dönemi zamanını alırken yanlışlıklar ortaya çıkabilir. Örneğin, bir ağ gecikmesi, ara belleğe alma veya işlem planlama, Unix dönem zamanının hatalı olmasına neden olabilir.
- Önerinin alınmasından bu yana geçen süreyi ayarlamak için kullanılan referans saati hatalı olabilir.
AOSP'de varsayılan olarak kullanılmak üzere yapılandırılmış iki ana zaman algılama kaynağı vardır:
- Ağ : Ağ Zaman Protokolü (NTP) zaman sunucularını kullanır.
- Telefon: Ağ Kimliği ve Saat Dilimi (NITZ) telefon sinyallerini kullanır.
Hem telefon hem de ağ kaynakları, her zaman mevcut olmayan harici ağlara bağlantı gerektirir.
Android 12'den itibaren Android, varsayılan olarak kullanım için yapılandırılmamış olan aşağıdaki kaynakları da destekler:
- GNSS : Bir GNSS kaynağından zaman almak için GPS konum sağlayıcısını kullanır.
- Harici : Cihaz üreticilerinin kendi Unix çağ zamanı kaynaklarını entegre etmelerine olanak tanıyan genel köken.
Zaman Ayarları
Kullanıcılar, AOSP Ayarları uygulamasında Sistem > Tarih ve Saat bölümünden otomatik zaman algılamayı etkinleştirebilir.
Şekil 1. Ayarlar'da otomatik zaman algılama.
Aşağıdaki tabloda AOSP Ayarları uygulamasında zaman algılamaya yönelik kullanıcı kontrolleri açıklanmaktadır.
*Android 11 ve önceki sürümlerde bu ayar, Ağ tarafından sağlanan zamanı kullan olarak etiketlenir | |||
AOSP Ayarları konumu | AOSP Ayarları adı | Kapsam | Davranış |
---|---|---|---|
Sistem > Tarih ve Saat | Saati otomatik olarak ayarla* | Tüm kullanıcılar | Bir geçiş. Açık olduğunda cihaz, geçerli Unix dönem zamanının tespit edilmesinden sorumludur. Kapalıyken kullanıcılara cihazın saatini manuel olarak ayarlamaları için kontroller sağlanır. |
Kullanıcı saati manuel olarak girdiğinde Unix dönem saatini değil, kendi yerel saatini girer. Geçerli Unix dönemi zamanı, bir Unix dönemi zamanı türetmek için geçerli zaman dilimi kullanılarak hesaplanır.
Yapılandırma
Cihaz üreticileri time_detector
hizmetini, hangi kaynakların kullanılacağı ve bunlardan gelen sinyallerin nasıl önceliklendirileceği gibi çeşitli şekillerde yapılandırabilirler.
Menşe önceliklendirmesi
Android 12'den itibaren cihaz üreticileri, otomatik zaman algılamaya hangi zaman kökenlerinin dahil edileceğini ve time_detector
bu kökenleri dikkate aldığı önceliği belirtmek için core/res/res/values/config.xml
yapılandırma dosyasını değiştirebilir.
Android 11 veya daha düşük sürümleri çalıştıran cihazlarda, kaynak önceliği ["telephony", "network"]
olarak kodlanmıştır; bu, telefon önerilerinin ağ önerilerinin üzerinde öncelikli olduğu anlamına gelir.
Varsayılan AOSP yapılandırması aşağıdaki gibidir:
<!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list
take precedence over lower ones.
See com.android.server.timedetector.TimeDetectorStrategy for available sources. -->
<string-array name="config_autoTimeSourcesPriority">
<item>network</item>
<item>telephony</item>
</string-array>
Android 12'de ağ ve telefon önerileri varsayılan olarak kullanılacak kaynaklar olarak yapılandırılmıştır. Ağ süresi önerileri, telefon süresi önerilerine göre önceliklendirilir. Cihaz üreticileri, telefona daha yüksek öncelik verilen Android 11 veya önceki sürümlerdeki davranışa geri dönmek için kaynakların sırasını değiştirebilir.
Varsayılan olarak, en yüksek öncelikli geçerli öneri cihazın geçerli sistem saati saatiyle birkaç saniye içinde eşleşirse cihaz saati değişmeyecektir . Bunun amacı, ACTION_TIME_CHANGED
amacını dinleyen yüklü uygulamalar için iş oluşturulmasını önlemektir.
İzin verilen kaynak değerleri şunlardır:
İzin verilen zaman sınırları
Android 14, time_detector
hizmeti tarafından alınan zaman önerileri için bir üst zaman sınırlaması getiriyor. Cihaz 32 bit işlemleri destekliyorsa çerçeve, cihazın Y2038 sorununu tetikleyebilecek bir zaman önerisini kullanmasını önlemek için bir üst zaman sınırı ayarlar.
Android 12, time_detector
hizmeti tarafından alınan zaman önerilerini doğrulamak için kullanılan daha düşük bir zaman sınırı getirdi. Otomatik öneriler için kullanılan daha düşük zaman sınırı değeri, derleme zaman damgasından ayarlanır. Bu, cihazın sistem görüntüsünün oluşturulmasından önce geçerli bir zamanın olamayacağı ilkesine göre çalışır. Bir zaman önerisi alt zaman sınırından önceyse time_detector
hizmeti, derleme zaman damgası doğruysa geçerli olamayacağı için öneriyi atar.
Android 11 veya daha düşük sürümleri çalıştıran cihazlarda time_detector
hizmeti, gelen Unix dönem zamanı önerilerini doğrulamaz.
Zaman hata ayıklama ve test etme
Bu bölümde, time_detector
hizmetinin ve tüm kaynaklar tarafından paylaşılan diğer bileşenlerin davranışının nasıl hata ayıklanacağı ve test edileceği hakkında bilgi sağlanır.
Time_detector hizmetiyle etkileşim kurma
time_detector
hizmetinin yapılandırmasını ve time_detector
hizmetinin durumunu görüntülemek için şunu kullanın:
adb shell cmd time_detector dump
Saat dilimi algılamada hata ayıklama ve test etmeye yönelik ek komutları görmek için şunu kullanın:
adb shell cmd time_detector help
Yardım çıktısı ayrıca test veya üretim sırasında time_detector
davranışını etkilemek için kullanılabilecek Device_config hizmet özelliklerini de açıklar. Ayrıntılar için bkz. Device_config hizmetini kullanarak bir cihazı yapılandırma .
Otomatik zaman algılamayı doğrulamak için test uzmanlarının time_detector
hizmetinin hangi kaynakları kullandığının farkında olması gerekir. Aşağıda, geçerli kaynak ve hizmet durumuyla ilgili bilgilerin kalın harflerle yazıldığı adb shell cmd time_zone_detector dump
komutunun çıktısının bir örneği yer almaktadır:
$ adb shell cmd time_detector dump
TimeDetectorStrategy:
mLastAutoSystemClockTimeSet=null
mEnvironment.isAutoTimeDetectionEnabled()=true
mEnvironment.elapsedRealtimeMillis()=23717241
mEnvironment.systemClockMillis()=1626707861336
mEnvironment.systemClockUpdateThresholdMillis()=2000
mEnvironment.autoTimeLowerBound()=2021-07-19T07:48:05Z(1626680885000)
mEnvironment.autoOriginPriorities()=[network,telephony]
Time change log:
...
Telephony suggestion history:
...
Network suggestion history:
...
Gnss suggestion history:
...
External suggestion history:
...
Bilgiler şu şekilde yorumlanabilir:
Anahtar | Değer |
---|---|
mEnvironment.isAutoTimeDetectionEnabled() | Otomatik zaman algılamanın etkin olup olmadığı. |
mEnvironment.autoTimeLowerBound() | Zaman önerilerini doğrulamak için kullanılan mevcut alt sınır. |
mEnvironment.autoOriginPriorities() | Kullanımdaki kökenler ve öncelik sırası. |
Zaman değişikliği günlüğü, time_detector
hizmetinin cihazın geçerli Unix dönemi zamanını değiştirdiği durumları gösterir.
Öneri geçmişi bilgileri, her kaynak tarafından hangi önerilerin yapıldığını gösterir.
Otomatik saat dilimi algılama
Bu bölüm, otomatik saat dilimi algılamayı, ayarlardaki kullanıcı kontrollerini, telefon ve konum saat dilimi algılamayı ve test ayrıntılarını yöneten time_zone_detector
hizmetine genel bir bakış sağlar.
Time_zone_detector hizmeti
Android 11 veya sonraki sürümleri çalıştıran cihazlarda bulunan time_zone_detector
hizmeti, otomatik saat dilimi algılamayı yönetir. Otomatik saat dilimi algılama etkinleştirildiğinde cihazın geçerli saat dilimini gerektiği gibi ayarlar.
Otomatik saat dilimi algılama etkinleştirildiğinde, time_zone_detector
iki durumdan birinde olabilir: belirsiz ve kesin .
time_zone_detector
hizmeti belirli bir durumda olduğunda bu, time_zone_detector
hizmetinin, geçerli saat dilimini geçersiz kılmasına neden olabilecek güçlü saat dilimi bilgileri aldığı anlamına gelir. Belirsiz olduğunda bu, hiçbir bilgi almadığı veya yalnızca düşük güvenilirliğe sahip bilgi aldığı anlamına gelir; bu, geçerli saat dilimini geçersiz kılmayacağı anlamına gelir.
time_zone_detector
hizmetinin belirli durumları, time_zone_detector
kullanacak saat dilimi bilgisinin olmadığı veya aralarından seçim yapabileceği birden fazla saat diliminin olduğu durumları içerebilir. Bu durumlar aşağıdaki gibidir:
- Cihaz, uluslararası sular veya tartışmalı bir bölge gibi saat dilimi olmayan bir yerde olduğunda, sıfır saat dilimine sahip belirli bir duruma girilir. Bu durum belirsiz bir duruma benzer ancak
time_zone_detector
saat dilimini belirlemeye çalışmak için başka bir işlem yapmasına gerek olmadığını gösterir. - Belirsizliğin veya sınır koşullarının olduğu birden fazla zaman dilimine sahip belirli bir duruma girilir. Bu durumda, eğer geçerli zaman dilimi,
time_zone_detector
kesin olduğu zaman dilimlerinden biri ise, geçerli zaman dilimi olduğu gibi bırakılır. Aksi takdirde mevcut saat dilimlerinden biri kullanılır. Bu, kullanıcının daha önce saat dilimini manuel olarak seçmesi durumunda veya cihaz bir sınıra yaklaştığındatime_zone_detector
bir yapışkanlık unsuru verir.
time_zone_detector
hizmetinin kesin veya belirsiz durumu, bir algoritma tarafından gönderilen saat dilimi önerilerine göre belirlenir.
Genel olarak öneriler, time_zone_detector
olası durumlarıyla yakından eşleşen iki türde gelir: kesin ve belirsiz . Aşağıda öneri türlerine örnekler verilmiştir:
tür =
uncertain
,zoneIds = []
- Algoritma saat diliminin ne olduğunu bilmiyor.
type =
certain
,zoneIds = ["Europe/London"]
- Algoritma bölgenin Avrupa/Londra olduğundan emin.
tür =
certain
,zoneIds = []
`- Algoritma kesin ama mevcut konumla ilişkilendirilmiş bir bölge kimliği yok.
type =
certain
,zoneIds = ["America/Denver", "America/Phoenix"]
- Algoritma, cevabın iki bölgeden biri olduğundan emin ancak "Amerika/Denver" ve "Amerika/Phoenix" arasında seçim yapamıyor.
time_zone_detector
hizmeti, öneri dizilerini algoritmalarına göre farklı olarak ele alır. Algoritmaya bağlı olarak öneriler, algoritmanın ne kadar kesin olduğunu gösteren meta veriler de içerebilir.
time_zone_detector
hizmeti durum bilgilidir; bu, her algoritma tarafından yapılan en son önerinin kaydını tuttuğu anlamına gelir. Önceki öneri artık doğru değilse yeni öneriler time_zone_detector
hizmetine gönderilir; yani, bir algoritmanın artık farklı bir önerisi varsa veya saat dilimini tespit etme yeteneğini kaybetmişse. time_zone_detector
hizmeti, yeni ve mevcut önerileri yeniden değerlendirir ve öneriler alındığında cihazın durumunu günceller.
Android, saat dilimi tespiti için iki algoritmayı destekler:
- Telefon
- Konum
time_zone_detector
hizmeti genellikle saat dilimini belirlemek için tek bir algoritma kullanır. Bir cihazda konum algoritması desteklendiğinde cihazın kullandığı algoritma, kullanıcı tarafından yapılandırılan Saat dilimi ayarlarına göre belirlenir. Kullanılan algoritma saat diliminden emin olmadığında time_zone_detector
genellikle farklı bir algoritmanın önerilerini kullanmaz. Kullanılmayan algoritmalarla ilişkili öneriler time_zone_detector
tarafından bellekte tutulabilir ancak algoritma değişmedikçe kullanılmaz. Kullanıcı otomatik saat dilimi algılama ayarlarını değiştirdiğinde ve algoritma değiştiğinde, yeni algoritma için mevcut olan en son öneri kullanılır.
Saat dilimini belirlemek için birden fazla algoritmanın kullanıldığı durumla ilgili ayrıntılar için bkz. Telefon geri dönüş modu .
Telefon geri dönüş modu
Android 13 ve sonraki sürümleri çalıştıran cihazlarda time_zone_detector
hizmeti, telefon geri dönüş modunu destekler. Bu mod, konum algılamanın saat dilimini algılayamadığı veya konum algılamanın saat dilimini algılamasının telefon algılamaya göre daha uzun sürdüğü durumlarda Android'in telefon algılama önerilerini geçici olarak kullanmasına olanak tanır.
Telefon geri dönüş modu, hem telefonun hem de konum algılamanın desteklendiği ve kullanıcının Saat dilimi ayarlarında Saat dilimini ayarlamak için konumu kullan seçeneğinin etkinleştirildiği cihazlar için geçerlidir. Cihaz yeniden başlatıldığında ve uçak modu devre dışı bırakıldığında mod otomatik olarak etkinleştirilir.
Android 14 ve üzeri sürümlerde, LTZP durum raporlama API'leri aracılığıyla telefon geri dönüşü tetiklenebilir; yani bir LTZP, belirsiz olduğunu bildirirse ve konum veya saat dilimini algılama yeteneğinin ortamı nedeniyle bozulduğunu bildirirse, telefon geri dönüş modu tetiklenir.
Telefon geri dönüş modundayken time_zone_detector
hizmeti, konum algoritması belirli bir öneride bulunana kadar konum algılama devre dışı bırakılmış gibi telefon önerilerini kullanır. Belirli bir öneri alındıktan sonra telefon geri dönüş modu devre dışı bırakılır ve yalnızca konum önerileri kullanılır.
Telefon geri dönüş moduna ilişkin yapılandırma ayrıntıları için bkz. Saat dilimi algılama yapılandırması .
Saat dilimi ayarları
Kullanıcılar, AOSP Ayarları uygulamasında otomatik saat dilimi algılamaya yönelik ayarları etkinleştirebilir ve yapılandırabilir.
Şekil 2. Ayarlar'da otomatik saat dilimi algılama.
Aşağıdaki tabloda, AOSP Ayarları uygulamasında saat dilimi algılamaya yönelik kullanıcı kontrolleri açıklanmaktadır.
*Android 11 ve önceki sürümlerde bu ayar, Ağ tarafından sağlanan saat dilimini kullan olarak etiketlenir | |||
AOSP Ayarları konumu | AOSP Ayarları adı | Kapsam | Davranış |
---|---|---|---|
Sistem > Tarih ve Saat | Saat dilimini otomatik olarak ayarla* | Tüm kullanıcılar | Bir geçiş. Açık olduğunda cihaz geçerli saat dilimini tespit etmekten sorumludur. Kapalıyken , kullanıcılara cihazın saat dilimini manuel olarak ayarlamaları için kontroller sağlanır. |
Sistem > Tarih ve Saat | Saat dilimini ayarlamak için konumu kullanın | Şu anki kullanıcı | Bir geçiş. Android 12'de mevcuttur. Bu geçiş yalnızca cihazda konum saat dilimi tespiti desteklendiğinde görüntülenir. 14'te yapılan değişiklikler için bkz. Yalnızca konum saat dilimi algılamayı destekleyen cihazlar . |
Konum | Konumu kullan | Şu anki kullanıcı | Bir geçiş. Genel olarak cihazın konumunun kullanılmasına izin verir veya bunu engeller. Bu değer, cihazda konum saat dilimi algılamanın desteklenmesi durumunda geçerlidir. |
Aşağıda, kullanıcı tarafından seçilen ayarlar göz önüne alındığında, saat dilimi algılamaya yönelik cihaz davranışına ilişkin bir genel bakış sunulmaktadır:
[Tarih ve Saat] Saat dilimini otomatik olarak ayarla: KAPALI
- Kullanıcının saat dilimini manuel olarak seçmesi gerekir.
[Tarih ve Saat] Saat dilimini otomatik olarak ayarla: AÇIK
[Konum] Konumu kullan: KAPALI
- Saat dilimini tespit etmek için telefon sinyalleri kullanılır.
[Konum] Konumu kullan: AÇIK
[Tarih ve Saat] Saat dilimini ayarlamak için konumu kullanın: AÇIK
- Konum, saat dilimini tespit etmek için kullanılır.
[Tarih ve Saat] Saat dilimini ayarlamak için konumu kullanın: KAPALI
- Saat dilimini tespit etmek için telefon sinyalleri kullanılır.
Çoklu kullanıcı cihazları
İlgili ayarların birçoğunun kapsamı geçerli kullanıcıyı kapsadığından, çok kullanıcılı bir Android cihazında geçerli kullanıcı değiştiğinde cihazın saat dilimi algılama davranışı değişebilir.
Saat dilimini ayarlamak için konumu kullan geçişi geçerli kullanıcıya yöneliktir ve cihaz politikasıyla sınırlandırılmamıştır; bu , Saat dilimini otomatik olarak ayarla geçişi kapalı olsa veya diğer saat veya saat dilimi kontrolleri olsa bile kullanıcıların her zaman değerini değiştirebileceği anlamına gelir Device Policy Controller tarafından kısıtlanmıştır.
Yalnızca konum saat dilimi algılama algoritmasını destekleyen cihazlar
Bu bölümde yalnızca konum algoritmasını destekleyen aygıtların davranışı açıklanmaktadır.
Android 14 ve üzeri
- AOSP Ayarları uygulamasında Konumu kullan seçeneği kullanıcılara gösterilmiyor ve cihaz, Konumu kullan seçeneği etkinmiş gibi davranıyor.
- Kullanıcı kapsamlı
SettingsProvider
ayarını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ılar tarafından görülebilir ve kullanıcılar bu seçeneği devre dışı bırakabilir. Seçenek devre dışı bırakılırsa cihaz, saat dilimini otomatik olarak algılamaz.
Otomatik algılamaya geçiş ve otomatik algılamadan geçiş sırasındaki davranış
Kullanıcı saat dilimi algılamayı manüelden otomatiğe değiştirdiğinde, time_zone_detector
halihazırda geçerli saat diliminden emin olabilir. Böyle bir durumda, kullanıcı otomatik algılamayı etkinleştirirken cihazın saat dilimi de time_zone_detector
hizmetinin görüşüyle eşleşecek şekilde değiştirilebilir.
Benzer şekilde, kullanıcı Ayarlar'da time_zone_detector
hizmetinin geçerli algoritmasında değişiklikle sonuçlanan bir değişiklik yaptığında, time_zone_detector
yeni algoritma için önerileri zaten almış olabilir ve bu nedenle cihazın saati, time_zone_detector
hizmetinin görüşüyle hemen eşleşecek şekilde değiştirilebilir.
Telefon zaman dilimi tespiti
Telefon saat dilimi algılama, geçerli saat dilimini belirlemek için telefon sinyallerini kullanır. Daha fazla bilgi için bkz. Telefon Saat Dilimi Algılaması .
Konum saat dilimi algılama
Konum saat dilimi algılama, Android 12 veya sonraki sürümlerde kullanılabilir. Cihazların mevcut saat dilimini belirlemek için konumlarını kullanmalarına olanak tanıyan isteğe bağlı bir otomatik saat dilimi algılama özelliğidir.
Android 12'de location_time_zone_manager
hizmeti, sistem sunucusunda çalışıyor ve konum algoritması önerilerinin time_zone_detector
hizmetine gönderilmesinden sorumlu kodu içeriyor. Daha fazla bilgi için bkz. Konum Saat Dilimi Algılaması .
Özellik benimseme hususları
Bu bölümde, bir cihaz üreticisinin bu özelliği bir cihazda benimseyip benimsemeyeceğini belirlemesine yardımcı olmak için konum saat dilimi algılama özelliğinin yönleri açıklanmaktadır.
Telefon ve konum algılamanın karşılaştırılması
Aşağıdaki tablo, saat dilimi tespiti için telefon sinyalleri yerine konum sinyallerini kullanmanın avantaj ve dezavantajlarının bir karşılaştırmasını sağlar.
Telefon algılama | Konum tespiti | |
---|---|---|
Doğruluk | Ülkeye göre değişir. MM'ye, NITZ'in doğruluğuna ve kullanılabilirliğine bağlıdır. | Özellik yapılandırmasına veya eklenti bileşenlerine bağlıdır. Doğruluk genellikle aşağıdakilere göre değişir:
|
Güncellenebilirlik | Telefon algılama, güncellenebilir Saat Dilimi Verileri modülünde (com.android.tzdata APEX) bulunan dosyalara dayanır. | Özellik yapılandırmasına veya eklenti bileşenlerine bağlıdır. Güncellenebilirlik genellikle cihazın sunucu veya istemci saat dilimi harita verilerini kullanmasına bağlıdır. Not: Saat dilimi 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 bulunmaz. Cihaz üreticilerinin ayrıca saat dilimi kuralları ile saat dilimi harita verileri arasındaki sürüm tutarlılığını da dikkate alması gerekir. |
Güç kullanımı | Yok veya düşük güç kullanımı | Kullanıcı konum ayarlarına, kullanılan eklentilere ve genellikle diğer hangi uygulamaların konum isteğinde bulunduğuna bağlıdır. |
Kullanılabilirlik | Yalnızca telefon cihazları. Genellikle çalışan bir SIM gerektirir. | Konum tespiti, mevcut konum sağlayıcılara bağlıdır. |
Kullanıcı gizliliği
Bir kullanıcının tercih ettiği saat dilimi genellikle coğrafi konumuna göre belirlenir. Konum hassas verilerdir. Kullanıcılar, saat dilimi algılamanın bir parçası olarak konumlarının paylaşılmasından endişe duyabilir. Saat dilimi algılamayla ilgisi olmayan bir cihazda çalışan tüm uygulamalar, Android izni gerektirmeden cihazın mevcut saat dilimini okuyabilir ve uygulamalar bu bilgilerden cihazın konumu hakkında kesin olmayan bir fikir çıkarabilir.
Daha spesifik olarak, zaman dilimi tespiti pasif veya aktif yollarla çalışabilir:
- Pasif: Cihazın ortamındaki bir şey, cihaza o ortamda kullanılacak saat dilimini söyler.
- Etkin: Cihazın saat dilimini kendisi hesaplaması gerekir ve kullanıcıların gizlilik ayarlarına ve onaylarına bağlı olarak, bunu yapmak için cihazın konumunu alır. Daha sonra konumunu harici servislerle paylaşabilir. Kullanıcı gizliliği ve onayına ilişkin ayrıntılar için aşağıdaki tartışmaya bakın.
Telefon algoritmasında olduğu gibi pasif algılamanın kullanıcılar için ek bir gizlilik etkisi yoktur.
Konum algoritmasında olduğu gibi aktif algılama, kullanıcıların kabul etmek istemeyeceği cihazın konumunun belirlenmesini içerir ve zaman dilimi kimliğini belirlemek için konum bir ağ üzerinden gönderilebilir.
Android'in zaman dilimi tespiti için kullanıcı gizliliğine yaklaşımı, kullanıcıya aktif olması beklenen algoritmaları bireysel olarak devre dışı bırakma yeteneği verir. Ek olarak, AOSP platform kodu konumun kendisiyle doğrudan ilgilenmez: konum tespiti ve konumun zaman dilimi kimlikleriyle eşleştirilmesi, cihaz üreticileri tarafından yapılandırılan eklenti bileşenlerine bırakılır.
Kullanıcı gizliliği özellikleri hakkında daha fazla ayrıntı için bkz. Konum Saat Dilimi Algılama .
Yapılandırma
Cihaz üreticileri time_zone_detector
hizmetini davranışını değiştirecek şekilde yapılandırabilir. Bu bölümde time_zone_detector
hizmetinin genel davranışına ilişkin yapılandırma seçenekleri açıklanmaktadır. Telefon ve saat dilimi algılama algoritmalarına ilişkin yapılandırma ayrıntıları için bkz. Telefon Zaman Dilimi Algılama ve Konum Saat Dilimi Algılama .
Temel AOSP yapılandırması frameworks/base/core/res/res/values/config.xml
konumundadır.
Yapılandırma anahtarı | AOSP değeri | Tanım |
---|---|---|
config_supportTelephonyTimeZoneFallback | true | true olduğunda, time_zone_detector telefon geri dönüş modunu kullanır. Bu, Android 13 ve üzeri için kullanılabilir. |
Cihazın varsayılan davranışını değiştirme
AOSP'de, otomatik saat dilimi algılama, auto_time_zone
ayarı true
olarak ayarlandığında varsayılan olarak etkinleştirilir. Otomatik zaman algılamayı varsayılan olarak devre dışı bırakmak için, frameworks/base/packages/SettingsProvider/res/values/defaults.xml
dosyasında tanımlanan def_auto_time_zone
değerini false
olarak ayarlayın.
Başka bir cihazdan bir yedeği geri yüklerken çerçeve, varsayılan olarak auto_time_zone
ayarının değerini günceller. Bu ayarın bir yedekten geri yüklenmediğinden emin olmak istiyorsanız, frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml
dosyasında tanımlanan restore_blocked_global_settings
dizisine auto_time_zone
ekleyin.
Saat dilimi hata ayıklama ve testi
Bu bölümde time_zone_detector
hizmetinin ve tüm algoritmalar tarafından paylaşılan diğer bileşenlerin davranışının nasıl hata ayıklanacağı ve test edileceği hakkında bilgi sağlanır.
Device_config hizmetini kullanarak bir cihazı yapılandırma
device_config
hizmeti, genellikle uzak bir sunucudan özel (AOSP olmayan) kodla alınan değerleri kullanarak değiştirilebilir davranışı yapılandırmak için Android'de kullanılan bir mekanizmadır. device_config
değerlerini test için kullanırken, özellikle uzun süren manuel testler sırasında, cihaz bayrakları senkronize edebilir, bu da bayrakları sıfırlayabilir ve test için ayarlanan değerleri temizleyebilir.
Android 12 veya sonraki sürümlerde bayrak senkronizasyonunu geçici olarak engellemek için şunu kullanın:
adb shell cmd device_config set_sync_disabled_for_tests persistent
Testlerden sonra bayrak senkronizasyonunu geri yüklemek için şunu kullanın:
adb shell cmd device_config set_sync_disabled_for_tests none
Bayrak senkronizasyonunu geri yükledikten sonra cihazı yeniden başlatın.
Daha fazla bilgi için $ adb shell cmd device_config help
kullanın.
time_zone_detector hizmetiyle etkileşim kurma
time_zone_detector
yapılandırmasını ve time_zone_detector
hizmetinin durumunu görüntülemek için şunu kullanın:
adb shell cmd time_zone_detector dump
Saat dilimi algılamada hata ayıklama ve test etmeye yönelik ek komutları görmek için şunu kullanın:
adb shell cmd time_zone_detector help
Yardım çıktısı ayrıca test amacıyla veya üretimde time_zone_detector
hizmetinin davranışını etkilemek için kullanılabilecek device_config
hizmet özelliklerini de açıklar. Ayrıntılar için bkz. Device_config hizmetini kullanarak bir cihazı yapılandırma .
Saat dilimi tespitini doğrulamak için test uzmanlarının, time_zone_detector
hangi algoritmayı kullandığının farkında olması gerekir. time_zone_detector
öğesinin geçerli algoritmasını anlamak ve etkilemek için aşağıdaki seçeneklerden birini kullanın:
- Ayarlar Kullanıcı Arayüzü aracılığıyla görsel olarak kontrol edin. Daha fazla bilgi için bkz. Saat dilimi ayarları .
Adb aracılığıyla komut satırını kullanın:
-
time_zone_detector
durumunu boşaltmak iç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
kullanın.
-
Aşağıda, geçerli algoritma ve hizmet durumu hakkındaki bilgilerin kalın harflerle yazıldığı adb shell cmd time_zone_detector dump
komutunun çıktısının bir örneği verilmiştir:
$ adb shell cmd time_zone_detector dump
TimeZoneDetectorStrategy:
mEnvironment.getCurrentUserId()=0
mEnvironment.getConfiguration(currentUserId)=ConfigurationInternal{mUserId=0, mUserConfigAllowed=true, mTelephonyDetectionSupported=true, mGeoDetectionSupported=true, mAutoDetectionEnabled=true, mLocationEnabled=true, mGeoDetectionEnabled=true}
[Capabilities=TimeZoneCapabilitiesAndConfig{mCapabilities=TimeZoneDetectorCapabilities{mUserHandle=UserHandle{0}, mConfigureAutoDetectionEnabledCapability=40, mConfigureGeoDetectionEnabledCapability=40, mSuggestManualTimeZoneCapability=30}, mConfiguration=TimeZoneConfiguration{mBundle=Bundle[{geoDetectionEnabled=true, autoDetectionEnabled=true}]}}]
mEnvironment.isDeviceTimeZoneInitialized()=true
mEnvironment.getDeviceTimeZone()=Europe/London
Time zone change log:
Manual suggestion history:
...
Geolocation suggestion history:
...
Telephony suggestion history:
...
Bilgiler şu şekilde yorumlanabilir:
Anahtar | Değer |
---|---|
mUserConfigAllowed | Kullanıcının tarih ve saat ayarlarını kontrol etmesinin Device Policy Controller tarafından engellenip engellenmediği. |
mTelephonyDetectionSupported | Cihazın telefon saat dilimi algılamasına sahip olup olmadığı. |
mGeoDetectionSupported | Cihazın konum saat dilimi algılamayı destekleyip desteklemediği. Bu, konfigürasyona ve en az bir LTZP'nin varlığına dayalı etkili durumdur. |
mAutoDetectionEnabled | Otomatik saat dilimi algılamanın etkin olup olmadığı. |
mLocationEnabled | Ana konum geçişi. |
mGeoDetectionEnabled | Algoritma anahtarı: false , telefon algoritmasını, true ise konum algoritmasını belirtir. |
Öneri geçmişi bilgileri, Ayarlar (manuel) ve telefon ve konum algoritmaları aracılığıyla hangi önerilerin yapıldığını gösterir.