Lokasi Deteksi Zona Waktu

Deteksi Zona Waktu Lokasi, tersedia di Android 12 atau lebih tinggi, adalah fitur deteksi zona waktu otomatis opsional yang memungkinkan perangkat menggunakan lokasi dan data peta zona waktu untuk menentukan zona waktu.

Deteksi zona waktu lokasi adalah mekanisme alternatif untuk deteksi zona waktu telepon . Karena fitur ini tidak memerlukan telepon, fitur ini dapat didukung pada perangkat dengan berbagai faktor bentuk selain perangkat telepon seluler.

Fitur deteksi zona waktu lokasi terdiri dari komponen berikut di platform AOSP:

  • Logika deteksi zona waktu di server sistem.
  • Opsi yang dapat diakses pengguna di Pengaturan, diperkenalkan di Android 12, untuk memungkinkan pengguna memilih antara mekanisme deteksi zona waktu telepon dan lokasi.
  • Sistem plug-in untuk komponen yang melakukan deteksi lokasi dan pemetaan zona waktu. Plug-in disebut Penyedia Zona Waktu Lokasi (LTZP) dan bisa ada hingga dua di perangkat.
  • Implementasi LTZP referensi.
  • Alat host untuk menghasilkan kumpulan data referensi dari data OpenStreetMap yang dapat digunakan dengan implementasi referensi.

Privasi pengguna

Deteksi zona waktu lokasi mencakup fitur privasi pengguna berikut:

  • Pengguna dapat mematikan deteksi zona waktu lokasi kapan saja.
  • Saran zona waktu berdasarkan lokasi tidak dibagikan di antara pengguna di perangkat.
  • Pengguna dapat mengontrol deteksi lokasi untuk deteksi zona waktu secara eksplisit melalui layar Pengaturan Tanggal dan Waktu . Pengguna tidak harus secara eksplisit memberikan izin melalui dialog izin.
  • Informasi lokasi perangkat tidak diteruskan ke layanan platform Android. Hal berikut terjadi sebagai gantinya:

    • Layanan pendeteksi zona waktu hanya dikirimi ID zona waktu oleh LTZP, bukan lokasi perangkat. Ini adalah API minimal yang diperlukan untuk mendukung deteksi zona waktu lokasi.
    • Pengoperasian LTZP individu diserahkan kepada integrator sistem untuk memutuskan. Implementasi LTZP dapat menggunakan data peta zona waktu yang disimpan sepenuhnya di perangkat Android, server leverage, atau menggunakan pendekatan hybrid.

Perilaku fitur

Layanan time_zone_detector menentukan kapan harus mengubah zona waktu perangkat saat ini berdasarkan saran yang diterimanya dari asal deteksi .

Layanan location_time_zone_manager bertanggung jawab untuk menghasilkan saran untuk lokasi asal time_zone_detector . Layanan location_time_zone_manager berjalan dalam proses server sistem.

Layanan location_time_zone_manager tidak berisi logika deteksi zona waktu. Ini bertanggung jawab untuk mengelola siklus hidup satu atau dua plug-in yang disebut Penyedia Zona Waktu Lokasi (LTZP).

Saat deteksi zona waktu lokasi tidak diperlukan, LTZP tidak dimulai. Ini berarti bahwa sistem deteksi zona waktu lokasi tidak meminta LTZP untuk melacak lokasi perangkat kecuali mereka secara eksplisit diminta. Beberapa penyebab perilaku tersebut antara lain sebagai berikut:

  • Tidak seperti sinyal telepon yang diterima secara pasif sebagai bagian dari operasi telepon biasa, lokasi dapat diminta secara aktif dari penyedia lokasi Android dan dapat menghabiskan daya tambahan.
  • Pengaturan lokasi adalah cakupan pengguna dan Android harus menghormati pengaturan pengguna saat ini.
  • Mendapatkan lokasi perangkat sensitif terhadap privasi.

Juga, layanan location_time_zone_manager membuat saran yang tidak pasti (jika diperlukan) ketika pengguna saat ini berubah untuk menghindari berbagi informasi lokasi di antara pengguna.

Sebagai hasil dari pilihan ini, biasanya diperlukan beberapa detik setelah mengalihkan asal saat ini ke lokasi, atau setelah mengalihkan pengguna saat ini, sebelum zona waktu dapat dideteksi. Ini juga tergantung pada implementasi LTZP yang digunakan.

Implementasi deteksi zona waktu lokasi AOSP memungkinkan hingga dua LTZP, LTZP primer dan sekunder seperti yang didefinisikan di sini:

LTZP primer
Berjalan setiap saat ketika pengguna telah mengizinkan fitur deteksi zona waktu lokasi untuk berjalan.
LTZP sekunder
Berjalan jika LTZP utama melaporkan bahwa zona waktu tidak pasti , melaporkan kegagalan permanen, atau waktu habis selama inisialisasi. Berhenti jika LTZP utama mengajukan saran tertentu .

Seperti yang ditunjukkan pada Gambar 1, layanan time_zone_detector menerima saran zona waktu dari telepon atau lokasi asal. Asal lokasi menerima saran dari LTZP primer atau sekunder.

Alur informasi deteksi zona waktu lokasi

Gambar 1. Alur informasi deteksi zona waktu lokasi.

Persyaratan konfigurasi perangkat

Untuk mendukung fitur zona waktu lokasi, perangkat harus dikonfigurasi dengan LTZP yang dapat digunakan perangkat. Perangkat memerlukan setidaknya satu LTZP untuk diaktifkan dan dikonfigurasi agar deteksi zona waktu lokasi berfungsi dan terlihat oleh pengguna di Setelan.

Konfigurasi perangkat

Bagian ini menjelaskan bagaimana produsen perangkat dapat mengonfigurasi perangkat untuk mendukung deteksi zona waktu lokasi.

Konfigurasi dasar AOSP ada di frameworks/base/core/res/res/values/config.xml :

Kunci konfigurasi nilai AOSP Keterangan
config_enableGeolocationTimeZoneDetection true Ini adalah kontrol utama untuk fitur deteksi zona waktu lokasi.

Fitur ini didukung secara default di AOSP. Setidaknya satu LTZP harus diaktifkan atau dikonfigurasi agar fitur tersedia bagi pengguna.

Menyetel nilai ke false menonaktifkan fitur sepenuhnya untuk menghemat memori kecil.
config_enablePrimaryLocationTimeZoneProvider false Ini memungkinkan LTZP utama.
config_primaryLocationTimeZoneProviderPackageName Setel ini ke nama paket aplikasi tempat layanan penyedia utama dapat ditemukan.
config_enableSecondaryLocationTimeZoneProvider false Ini memungkinkan LTZP sekunder.
config_secondaryLocationTimeZoneProviderPackageName Setel ini ke nama paket aplikasi tempat layanan penyedia sekunder dapat ditemukan.

Secara default, konfigurasi AOSP memiliki kunci config_enableGeolocationTimeZoneDetection disetel ke true , memungkinkan dukungan untuk fitur deteksi zona waktu lokasi. Fitur ini awalnya tidak terlihat oleh pengguna karena AOSP tidak menyertakan konfigurasi LTZP secara default. Namun, dengan menggunakan konfigurasi default ini, produsen perangkat dapat mengaktifkan dan mensimulasikan LTZP dari baris perintah untuk pengujian. (Untuk informasi selengkapnya, lihat Debugging dan pengujian .)

Konfigurasi dan penerapan Penyedia Zona Waktu Lokasi

Saat mengonfigurasi LTZP, baca petunjuk dalam kode sumber untuk frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java . Komentar Javadoc memberikan rincian tentang layanan, izin yang diperlukan dan konfigurasi lainnya.

Untuk mengonfigurasi Penyedia Zona Waktu Lokasi, produsen perangkat harus memilih proses aplikasi untuk meng-host layanan LTZP. Memiliki proses khusus untuk LTZP adalah overhead yang tinggi; idealnya, proses aplikasi yang dipilih adalah yang berjalan setiap saat seperti server sistem.

Pada perangkat dengan komponen sistem modular (modul), pertimbangkan interaksi antara data geo yang digunakan oleh LTZP dan aturan zona waktu (tzdb) yang dibawa dalam modul Data Zona Waktu ( com.android.tzdata ). Pembaruan ke satu tanpa pembaruan ke yang lain cenderung menyebabkan masalah kemiringan versi. Untuk informasi selengkapnya, lihat Pertimbangan adopsi fitur .

Referensi AOSP Lokasi Penyedia Zona Waktu

AOSP berisi referensi implementasi Penyedia Zona Waktu Lokasi di bawah packages/modules/GeoTZ . Implementasi referensi ini menggunakan API AOSP untuk menentukan lokasi perangkat dan menggunakan file data di perangkat untuk memetakan lokasi ke kumpulan ID zona waktu.

Kumpulan data referensi yang berasal dari proyek sumber terbuka lainnya disertakan dengan kode sumber. Untuk detail lebih lanjut, lihat README.md dan berbagai file LISENSI.

Debug dan pengujian

Bagian berikut menjelaskan perintah shell untuk debugging dan pengujian fitur deteksi zona waktu lokasi.

Berinteraksi dengan layanan location_time_zone_manager

Saat asal lokasi didukung pada perangkat yang menjalankan Android 12 atau lebih tinggi, Android membuat instance layanan location_time_zone_manager saat boot.

Untuk membuang status location_time_zone_manager saat ini, gunakan:

adb shell cmd location_time_zone_manager dump

Untuk melihat serangkaian opsi baris perintah yang ekstensif untuk membantu pengujian, gunakan:

adb shell cmd location_time_zone_manager help

Output bantuan juga menjelaskan properti layanan device_config yang dapat digunakan untuk mempengaruhi perilaku time_zone_detector untuk pengujian atau produksi. Untuk informasi selengkapnya, lihat Mengonfigurasi perangkat menggunakan layanan device_config .

Implementasi LTZP juga dapat memberikan dukungan debugging atau pengujian mereka sendiri. Misalnya, Anda dapat menggunakan perintah berikut untuk men-debug LTZP referensi AOSP ketika terdaftar dalam proses server sistem.

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