Konum saat dilimi algılama

Android 12 veya sonraki sürümlerde kullanılabilen konum saat dilimi algılama, cihazların saat dilimini belirlemek için konum ve saat dilimi harita verilerini kullanmasına olanak tanıyan isteğe bağlı bir otomatik saat dilimi algılama özelliğidir.

Konum saat dilimi tespiti, telefon saat dilimi tespitine alternatif bir mekanizmadır. Bu özellik telefon gerektirmediğinden, bu özellik mobil telefon cihazlarının yanı sıra çeşitli form faktörlerindeki cihazlarda da desteklenebilir.

Konum saat dilimi algılama özelliği, AOSP platformunda aşağıdaki bileşenlerden oluşur:

  • Sistem sunucusundaki saat dilimi algılama mantığı.
  • Kullanıcıların telefon ve konum saat dilimi algılama mekanizmaları arasında seçim yapmasına olanak tanıyan, Android 12'de kullanıma sunulan, Ayarlar'da kullanıcı tarafından erişilebilen bir seçenek.

  • Konum algılamayı ve zaman dilimi haritalamasını gerçekleştiren bileşenlere yönelik bir eklenti sistemi. Eklentiye Konum Saat Dilimi Sağlayıcısı (LTZP) adı verilir ve bir cihazda bunlardan en fazla iki tanesi bulunabilir. Platform, bir LTZP'yi uygulamak için kullanılması gereken sistem API'lerini sağlar.

  • Referans LTZP uygulaması.

  • Referans uygulamasıyla kullanılabilecek OpenStreetMap verilerinden bir referans veri seti oluşturmak için ana makine araçları.

Kullanıcı gizliliği

Konum saat dilimi algılama, aşağıdaki kullanıcı gizliliği özelliklerini içerir:

  • Konum algoritmasını seçmeye yönelik bir geçiş olduğunda kullanıcılar konum algoritmasını istedikleri zaman kapatabilirler.

  • Konumdan türetilen saat dilimi önerileri, cihazdaki kullanıcılar arasında paylaşılmaz.

  • Kullanıcılar , Tarih ve Saat Ayarları ekranı aracılığıyla saat dilimi tespiti için konum tespitini açıkça kontrol edebilir. Kullanıcıların izin iletişim kutusu aracılığıyla açıkça izin vermesi gerekmez.

  • Cihaz konum bilgileri Android platformu hizmetlerine aktarılmaz. Bunun yerine aşağıdakiler olur:

    • Saat dilimi algılayıcı hizmetlerine, saat dilimi kimlikleri cihazın konumu tarafından değil, yalnızca LTZP tarafından gönderilir. Bu, konum saat dilimi algılamayı desteklemek için gereken minimum API'dir.
    • Bireysel LTZP'lerin işleyişine karar vermek sistem entegratörlerine bırakılmıştır. LTZP uygulamaları, tamamen Android cihazında tutulan saat dilimi haritası verilerini kullanabilir, sunuculardan yararlanabilir veya hibrit bir yaklaşım kullanabilir.

Özellik davranışı

time_zone_detector hizmeti, algılama algoritmalarından aldığı önerilere göre cihazın mevcut saat diliminin ne zaman değiştirileceğini belirler.

location_time_zone_manager hizmeti, time_zone_detector konum algoritması için öneriler oluşturmaktan sorumludur. location_time_zone_manager hizmeti, sistem sunucusu işleminde çalışır.

location_time_zone_manager hizmeti herhangi bir saat dilimi algılama mantığı içermiyor. Konum Saat Dilimi Sağlayıcıları (LTZP) adı verilen bir veya iki eklentinin yaşam döngüsünü yönetmekten sorumludur.

Konum saat dilimi algılamaya gerek olmadığında LTZP'ler başlatılmaz. Bu, konum saat dilimi algılama sisteminin, açıkça gerekmedikçe LTZP'lerden cihazın konumunu izlemesini istemediği anlamına gelir. Bu davranışın nedenlerinden bazıları şunlardır:

  • Normal telefon işlemlerinin bir parçası olarak pasif olarak alınan telefon sinyallerinin aksine konum, Android konum sağlayıcılarından aktif olarak talep edilebilir ve ek güç tüketebilir.
  • Konum ayarları kullanıcı kapsamına sahiptir ve Android'in mevcut kullanıcının ayarlarına uyması gerekir.
  • Cihazın konumunun elde edilmesi gizliliğe duyarlıdır.

Ayrıca, konum bilgisinin kullanıcılar arasında paylaşılmasını önlemek için mevcut kullanıcı değiştiğinde, location_time_zone_manager hizmeti (eğer gerekiyorsa) belirsiz bir öneride bulunur.

Bu seçimlerin bir sonucu olarak, mevcut algoritmayı konuma değiştirdikten sonra veya mevcut kullanıcıyı değiştirdikten sonra saat diliminin algılanabilmesi genellikle birkaç saniye sürer. Bu aynı zamanda kullanılan LTZP'lerin uygulamalarına da bağlıdır.

AOSP konumu saat dilimi algılama uygulaması, burada tanımlandığı gibi biri birincil ve ikincil LTZP olmak üzere en fazla iki LTZP'ye izin verir:

Birincil LTZP
Kullanıcı konum saat dilimi algılama özelliğinin çalışmasına izin verdiğinde her zaman çalışır.
İkincil LTZP
Birincil LTZP, saat diliminin belirsiz olduğunu bildirirse, kalıcı bir hata bildirirse veya başlatma sırasında zaman aşımına uğrarsa çalışır. Birincil LTZP belirli bir öneri gönderirse durur.

Şekil 1'de gösterildiği gibi time_zone_detector hizmetleri, telefon veya konum algoritmasından zaman dilimi önerilerini alır. Konum algoritması, birincil veya ikincil LTZP'den öneriler alır.

Konum saat dilimi algılama bilgi akışı

Şekil 1. Konum saat dilimi algılama bilgi akışı.

Cihaz yapılandırma gereksinimleri

Konum saat dilimi özelliğini desteklemek için cihazların kullanabileceği LTZP'lerle yapılandırılması gerekir. Cihazlar, konum saat dilimi algılamanın işlevsel olması ve Ayarlar'da kullanıcılar tarafından görülebilmesi için en az bir LTZP'nin etkinleştirilmesini ve yapılandırılmasını gerektirir.

Cihaz konfigürasyonu

Bu bölümde, cihaz üreticilerinin cihazları konum saat dilimi algılamayı destekleyecek şekilde nasıl yapılandırabilecekleri açıklanmaktadır.

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_enableGeolocationTimeZoneDetection true Bu, konum saat dilimi algılama özelliğinin ana kontrolüdür.

Bu özellik AOSP'de varsayılan olarak desteklenir. Özelliğin kullanıcılara sunulabilmesi için en az bir LTZP'nin etkinleştirilmesi veya yapılandırılması gerekir.

Değerin false olarak ayarlanması, küçük bir bellek tasarrufu için özelliği tamamen devre dışı bırakır.
config_enablePrimaryLocationTimeZoneProvider false Bu, birincil LTZP'yi etkinleştirir.
config_primaryLocationTimeZoneProviderPackageName Bunu, birincil sağlayıcı hizmetinin bulunabileceği uygulamanın paket adına ayarlayın.
config_enableSecondaryLocationTimeZoneProvider false Bu, ikincil LTZP'yi etkinleştirir.
config_secondaryLocationTimeZoneProviderPackageName Bunu, ikincil sağlayıcı hizmetinin bulunabileceği uygulamanın paket adına ayarlayın.

Varsayılan olarak, AOSP yapılandırmasında config_enableGeolocationTimeZoneDetection anahtarı true olarak ayarlanmıştır ve konum saat dilimi algılama özelliği için destek etkinleştirilir. AOSP varsayılan olarak bir LTZP yapılandırması içermediğinden bu özellik başlangıçta kullanıcılar tarafından görülemez. Ancak cihaz üreticileri, bu varsayılan yapılandırmayı kullanarak test amacıyla LTZP'leri komut satırından etkinleştirebilir ve simüle edebilir. (Daha fazla bilgi için bkz. Hata ayıklama ve test etme .)

LTZP durumu API'leri

Android 14'te LTZP API'leri, LTZP raporlama durumu bilgilerini destekler. Bu, platform saat dilimi algılama bileşenleri konum algoritmasındaki konum veya saat dilimi algılamaya doğrudan dahil olmadığından, LTZP'nin platformun kendi başına tespit edemeyebileceği sorunları rapor etmesine olanak tanır.

LTZP'nin davranışının cihazın ortamı tarafından bozulduğunu bildirme yeteneği , telefon geri dönüş modu desteklendiğinde kullanışlıdır. Örneğin, konum tespitinin çalışması için özel ayarlara veya izinlere dayanan bir üçüncü taraf LTZP, düşük modda çalışıyorsa veya mevcut cihaz ayarları tarafından devre dışı bırakılmışsa, bu durum bilgisini Ayarlar uygulaması gibi dahili platform bileşenlerine bildirebilir. reportSuggestion yöntemi aracılığıyla. Ayarlar uygulaması daha sonra özelleştirilebilir dizeler veya özelleştirmeler aracılığıyla kullanıcılara, konum algoritmasının iyi çalışması veya hiç çalışması için değişmesi gereken ayarlar olduğunu bildirebilir.

LTZP'nin bildirebileceği durumlar hakkında daha fazla bilgi için bkz. TimeZoneProviderStatus .

Konum Saat Dilimi Sağlayıcısı yapılandırması ve dağıtımı

Bir LTZP yapılandırırken, frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java için kaynak kodundaki talimatları okuyun. Javadoc yorumları hizmet, gerekli izinler ve diğer yapılandırmayla ilgili ayrıntıları sağlar.

Konum Saat Dilimi Sağlayıcısını yapılandırmak için cihaz üreticilerinin LTZP hizmetini barındıracak bir uygulama işlemi seçmesi gerekir. Bir LTZP için özel bir sürece sahip olmak yüksek bir yüktür; ideal olarak seçilen uygulama işlemi, sistem sunucusu gibi her zaman çalışan bir işlemdir.

Modüler sistem bileşenlerine (modüller) sahip cihazlarda, LTZP tarafından kullanılan coğrafi veriler ile Saat Dilimi Verileri modülünde ( com.android.tzdata ) taşınan saat dilimi kuralları (tzdb) arasındaki etkileşimi göz önünde bulundurun. Birinde güncelleme yapılmadan diğerinde güncelleme yapılmasının sürüm çarpıklığı sorunlarına neden olması muhtemeldir. Daha fazla bilgi için bkz. Özellik benimsemeyle ilgili hususlar .

AOSP referansı LTZP

AOSP packages/modules/GeoTZ altında bir referans LTZP uygulaması içerir. Bu referans uygulaması, cihazın konumunu belirlemek için AOSP API'lerini kullanır ve konumu bir dizi saat dilimi kimliğiyle eşlemek için cihaz üzerindeki bir veri dosyasını kullanır.

Diğer açık kaynaklı projelerden türetilen bir referans veri seti kaynak koduna dahil edilmiştir. Daha fazla ayrıntı için README.md'ye ve çeşitli LİSANS dosyalarına bakın.

Hata ayıklama ve test etme

Aşağıdaki bölümde, konum saat dilimi algılama özelliğinde hata ayıklama ve test etmeye yönelik kabuk komutları açıklanmaktadır.

Location_time_zone_manager hizmetiyle etkileşime geçin

Konum algoritması Android 12 veya üstünü çalıştıran bir cihazda desteklendiğinde, Android, location_time_zone_manager sırasındalocation_time_zone_manager hizmetini başlatır.

location_time_zone_manager mevcut durumunu boşaltmak için şunu kullanın:

adb shell cmd location_time_zone_manager dump

Teste yardımcı olacak kapsamlı komut satırı seçeneklerini görmek için şunu kullanın:

adb shell cmd location_time_zone_manager help

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

LTZP uygulamaları ayrıca kendi hata ayıklama veya test desteğini de sağlayabilir. Örneğin, sistem sunucusu işlemine kaydedildiğinde AOSP referansı LTZP'de hata ayıklamak için aşağıdaki komutu kullanabilirsiniz.

adb shell dumpsys activity service android/com.android.timezone.location.provider.OfflineLocationTimeZoneProviderService