Konum saat dilimini algılama

Konum saat dilimini algılama özelliği Android 12'de kullanılabilir veya daha yüksek bir zaman dilimi, isteğe bağlı bir otomatik saat dilimi algılama saat dilimini belirlemek üzere konum ve saat dilimi harita verilerini kullanmalarını sağlar.

Konum saat dilimini algılama, telefon saat dilimine alternatif bir mekanizmadır algılama başlıklı makaleyi inceleyin. Çünkü bu için telefon kullanılması gerekmez. Bu özellik, ek olarak çeşitli form faktörleri bulunuyor.

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

  • Sistem sunucusundaki saat dilimi algılama mantığı.
  • Ayarlar'da kullanıcı tarafından erişilebilen bir seçenek, Android 12, kullanıcıların konum saat dilimi algılama mekanizmalarını kullanabilirsiniz.

  • Konum algılama ve konum tespiti yapan bileşenler için bir eklenti sistemi saat dilimi eşlemesi. Eklentilere Konum Saat Dilimi Sağlayıcısı adı verilir. (LTZP) biçimindedir ve bir cihazda en fazla iki video bulunabilir. Platform LTZP uygulamak için kullanılması gereken sistem API'leri sağlar.

  • Referans LTZP uygulaması.

  • Şuradan referans veri kümesi oluşturmak için kullanılan ana makine araçları: OpenStreetMap verileri referans uygulamayla birlikte kullanılabilecektir.

Kullanıcı gizliliği

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

  • Konum algoritmasını seçmek için bir düğme olduğunda kullanıcılar özelliği devre dışı bırakabilir. her an değiştirebilirsiniz.

  • Konumdan türetilen saat dilimi önerileri, olanak tanır.

  • Kullanıcılar, saat dilimi algılaması için konumun algılanmasını kontrol edebilir Tarih ve Saat Ayarları ekranı yoluyla açıkça ekleyebilirsiniz. Kullanıcıların kullanarak bir izin iletişim kutusu aracılığıyla açıkça izin verebilirsiniz.

  • Cihaz konumu bilgileri Android platform hizmetlerine iletilmez. Bunun yerine aşağıdaki işlem gerçekleşir:

    • Saat dilimi algılayıcı hizmetlerine yalnızca saat dilimi kimlikleri gönderilir cihazın konumuna değil, LTZP'ye göre değiştirebilirsiniz. Bu, gereken minimum API'dir algılamayı destekler.
    • Bağımsız LTZP'lerin çalışması sistem entegratörlerine bağlıdır sahip olacaksınız. LTZP uygulamaları, muhafazaya alınan saat dilimi haritası verilerini kullanabilir Android cihaza geçiş yapabilir, sunuculardan yararlanabilir ya da bahsedeceğiz.

Özellik davranışı

time_zone_detector hizmeti, cihazın geçerli ayarının ne zaman değiştirileceğini belirler Algılama algoritmalarından aldığı önerilere göre saat dilimi.

location_time_zone_manager hizmeti, time_zone_detector konum algoritması için öneriler. İlgili içeriği oluşturmak için kullanılan location_time_zone_manager hizmeti, sistem sunucusu işleminde çalışır.

location_time_zone_manager hizmeti, saat dilimi algılama özelliği içermez mantığıyla başlayalım. Adana, Google Analytics 4'te gerçekleştirilen bir veya iki eklentinin yaşam döngüsünü yönetmekten Konum Saat Dilimi Sağlayıcıları (LTZP).

Konum saat dilimini algılamak gerekli olmadığında LTZP'ler başlatılmaz. Bu konum saat dilimi algılama sisteminin LTZP'lerden açıkça zorunlu olmadığı sürece cihazın konumuna erişebilir. Bazı bu davranışın nedenleri arasında aşağıdakiler bulunmaktadır:

  • Bir projenin parçası olarak pasif olarak alınan telefon sinyallerinden normal telefon operasyonları kapsamında, Google Haritalar'ı kullanan Android konum sağlayıcılar, ek güç tüketebilir.
  • Konum ayarları kullanıcı kapsamlıdır ve Android geçerli ayarlarını yapabilir.
  • Cihazın konumunu öğrenmek gizlilik açısından hassastır.

Ayrıca, location_time_zone_manager hizmeti belirsiz bir öneride bulunur (eğer biri gerekir) - Mevcut kullanıcı, konum paylaşmaktan kaçınmak için değişiklik yaptığında ne kadar iyi karşıladığını görebileceksiniz.

Bu seçimlerin sonucu olarak, geçişten sonra genellikle birkaç saniye sürer konuma geçirdikten sonra veya geçerli kullanıcıyı değiştirdikten sonra bir şey yoktur. Bu, aynı zamanda LTZP'lerin yardımcı oluyorum.

AOSP konum saat dilimi algılama uygulaması en fazla iki LTZP'ye izin verir. burada tanımlandığı şekilde birincil ve ikincil LTZP:

Birincil LTZP
Kullanıcı, konum saat dilimini algılamaya izin verdiğinde her zaman çalışır özelliğini çalıştırabilirsiniz.
İkincil LTZP
Birincil LTZP, saat diliminin belirsiz olduğunu bildirirse çalışır. veya başlatma sırasında zaman aşımına uğrayabilir. Birincil LTZP belirli bir öneri gönderir.

Şekil 1'de gösterildiği gibi, time_zone_detector hizmetlerinin saat dilimi alır telefon veya konum algoritmasından öneriler alabilirsiniz. Konum algoritması Birincil veya ikincil LTZP'den öneri 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 LTZP'lerle yapılandırılması gerekir. bir şablon görevi görür. Cihazlar, en az bir LTZP'nin etkinleştirilmesini gerektirir ve konum saat dilimi algılamanın çalışır durumda olması ve kullanıcılar tarafından görülebilmesi için yapılandırıldı. Ayarlar'dan kontrol edebilirsiniz.

Cihaz yapılandırması

Bu bölümde, cihaz üreticilerinin Konum saat dilimi algılama seçeneğini tıklayın.

Temel AOSP yapılandırması şurada: frameworks/base/core/res/res/values/config.xml:

Yapılandırma anahtarı AOSP değeri Açıklama
config_enableGeolocationTimeZoneDetection true Bu, konum saat dilimi algılama özelliğinin ana denetimidir.
.
. Bu özellik AOSP'de varsayılan olarak desteklenmektedir. En az bir LTZP olmalıdır kullanıma sunulması için etkin veya yapılandırılmış olmalıdır.
.
. Değerin false (yanlış) olarak ayarlanması, bu özelliği küçük bir bellek için tamamen devre dışı bırakır kaydedin.
config_enablePrimaryLocationTimeZoneProvider false Bu, birincil LTZP'yi etkinleştirir.
config_primaryLocationTimeZoneProviderPackageName Bunu, birincil sağlayıcı hizmetinin çalışacağı uygulamanın paket adına ayarlayın bulabilirsiniz.
config_enableSecondaryLocationTimeZoneProvider false Bu, ikincil LTZP'yi etkinleştirir.
config_secondaryLocationTimeZoneProviderPackageName Bu değeri, ikincil sağlayıcının söz konusu olduğu uygulamanın paket adına ayarlayın. bulunabilir.

AOSP yapılandırmasında varsayılan olarak config_enableGeolocationTimeZoneDetection anahtarı true olarak ayarlandı, destek etkinleştiriliyor özelliğini kullanabilirsiniz. Bu özelliği AOSP varsayılan olarak bir LTZP yapılandırması içermediğinden Ancak, cihaz üreticileri bu varsayılan yapılandırmayı kullanarak LTZP'leri komut satırından simüle ederek test edin. (Daha fazla bilgi için bkz. Hata ayıklama ve test etme.)

LTZP durumu API'leri

LTZP API'leri, Android 14'te LTZP'yi destekler. raporlama durumu bilgileri. Bu, LTZP'nin diğer sorunlar ise platformun kendisinin tespit edemediği sorunlardır. Saat dilimi algılama bileşenleri, konum veya zamana doğrudan dahil değildir konum algoritmasındaki alt bölge algılama özelliğini kullanabilirsiniz.

LTZP davranışının cihazın uygun olduğu durumlarda telefon yedek modu desteklenir. Örneğin, özel ayarları temel alan bir üçüncü taraf LTZP konum algılama özelliğinin çalışması için gereken izinler düşük modda çalışıyor veya geçerli cihaz ayarları tarafından devre dışı bırakılırsa bu durumu Ayarlar uygulaması gibi dahili platform bileşenlerine reportSuggestion yöntemidir. Ardından Ayarlar uygulaması, özelleştirilebilir dizeler veya konum için değiştirilmesi gereken ayarların bulunduğu özelleştirmeler iyi çalışan veya hiç çalışmadığı anlamına gelir.

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

LTZP yapılandırması ve dağıtımı

Bir LTZP'yi yapılandırırken frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java. Javadoc yorumlarında hizmet hakkında ayrıntılı bilgi verilir, gerekli izinler ve yapılandırma.

LTZP yapılandırmak için cihaz üreticilerinin uygulama işlemi ile ilgili daha fazla bilgi edinebilirsiniz. LTZP'ye özel bir sürecin olması yüksek bir genel gider; tercihen, seçilen uygulama işlemi örneğin sistem sunucusu gibi.

Şu cihazlarda modüler sistem bileşenleri (modüller), LTZP ve LTZP tarafından kullanılan coğrafi veriler arasındaki etkileşimi oluşturulan saat dilimi kurallarını (tzdb) Saat Dilimi Verileri modülü (com.android.tzdata). Birinde güncelleme olmadan diğerinde güncelleme yapılmaması soruna neden olabilir. Daha fazla bilgi için bkz. Özellik benimsemeyle ilgili dikkat edilmesi gereken noktalar.

AOSP referansı LTZP

AOSP, packages/modules/GeoTZ. 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 üzerinde bir veri dosyası kullanır.

Diğer açık kaynak projelerinden türetilen bir referans veri kümesi kaynak koda ekleyin. Daha fazla bilgi için bkz. BENİOKU.md ve çeşitli LICENSE dosyaları.

Hata ayıkla ve test et

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

location_time_zone_manager hizmetiyle etkileşim kurun

Çalışan bir cihazda konum algoritması desteklendiğinde Android 12 veya sonraki sürümler Android, başlatma sırasında location_time_zone_manager hizmetini örneklendirir.

location_time_zone_manager öğesinin mevcut durumunu döküm almak için şunu kullanın:

adb shell cmd location_time_zone_manager dump

Teste yardımcı olacak kapsamlı bir komut satırı seçeneği grubunu görmek için şunları kullanın:

adb shell cmd location_time_zone_manager help

Yardım çıkışında, aşağıdakileri yapabilecek device_config hizmet özellikleri de açıklanır: test amacıyla veya test amacıyla time_zone_detector öğesinin davranışını etkilemek için çok önemlidir. Daha fazla bilgi için bkz. device_config hizmetini kullanarak bir cihazı yapılandırma.

LTZP uygulamaları, kendi hata ayıklama veya test desteği de sağlayabilir. Örneğin, AOSP referansı LTZP'deki hataları ayıklamak için aşağıdaki komutu kullanabilirsiniz kaydedildiğinde bu işlemi görebilirsiniz.

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