Deteksi zona waktu lokasi, yang tersedia di Android 12 dan yang 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 teleponi, fitur ini dapat didukung di perangkat dengan berbagai faktor bentuk selain perangkat teleponi 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 Setelan, yang diperkenalkan di Android 12, untuk memungkinkan pengguna memilih antara mekanisme deteksi zona waktu lokasi dan teleponi
Sistem plug-in untuk komponen yang melakukan deteksi lokasi dan pemetaan zona waktu. Plugin ini disebut Location Time Zone Provider (LTZP) dan dapat berjumlah hingga dua di perangkat. Platform ini menyediakan API sistem yang harus digunakan untuk menerapkan LTZP.
Implementasi LTZP referensi.
Alat host untuk membuat set data referensi dari data Open Street Map (OSM) yang dapat digunakan dengan penerapan referensi.
Privasi pengguna
Deteksi zona waktu lokasi mencakup fitur privasi pengguna berikut:
Jika ada tombol untuk memilih algoritma lokasi, pengguna dapat menonaktifkan algoritma lokasi kapan saja.
Saran zona waktu yang berasal dari lokasi tidak dibagikan antar-pengguna di perangkat.
Pengguna dapat mengontrol deteksi lokasi untuk deteksi zona waktu secara eksplisit melalui layar Setelan Tanggal dan Waktu. Pengguna tidak perlu memberikan izin secara eksplisit melalui dialog izin.
Informasi lokasi perangkat tidak diteruskan ke layanan platform Android. Sebagai gantinya, hal berikut akan terjadi:
- Layanan pendeteksi zona waktu dikirimi ID zona waktu oleh LTZP, bukan lokasi perangkat. Ini adalah API minimal yang diperlukan untuk mendukung deteksi zona waktu lokasi.
- Integrator sistem mengontrol pengoperasian setiap LTZP. Implementasi LTZP dapat menggunakan data peta zona waktu yang disimpan sepenuhnya di perangkat Android, menggunakan server, atau menggunakan pendekatan hybrid.
Perilaku fitur
Layanan time_zone_detector
menentukan kapan harus mengubah zona waktu
perangkat saat ini berdasarkan saran yang diterima dari algoritma deteksi.
Layanan location_time_zone_manager
bertanggung jawab untuk membuat
saran untuk algoritma lokasi time_zone_detector
. Layanan
location_time_zone_manager
berjalan dalam proses server sistem.
Layanan location_time_zone_manager
tidak berisi logika deteksi zona waktu. Layanan ini bertanggung jawab untuk mengelola siklus proses satu atau dua plugin LTZP.
Jika deteksi zona waktu lokasi tidak diperlukan, LTZP tidak akan dimulai. Artinya, sistem deteksi zona waktu lokasi tidak meminta LTZP untuk melacak lokasi perangkat kecuali jika secara eksplisit diperlukan. Beberapa alasan perilaku ini meliputi:
- Tidak seperti sinyal telepon yang diterima secara pasif sebagai bagian dari operasi telepon normal, lokasi dapat diminta secara aktif dari penyedia lokasi Android dan dapat menggunakan daya tambahan.
- Setelan lokasi tercakup dalam pengguna dan Android harus mematuhi setelan pengguna saat ini.
- Mendapatkan lokasi perangkat bersifat sensitif terhadap privasi.
Selain itu, layanan location_time_zone_manager
membuat saran yang tidak pasti (jika
diperlukan) saat pengguna saat ini mengubah setelan untuk menghindari berbagi informasi
lokasi antar-pengguna.
Akibat pilihan ini, diperlukan beberapa detik setelah mengganti algoritma saat ini ke lokasi, atau setelah mengganti pengguna saat ini, sebelum zona waktu dapat dideteksi. Hal ini juga bergantung pada penerapan LTZP yang digunakan.
Implementasi deteksi zona waktu lokasi AOSP memungkinkan hingga dua LTZP, LTZP utama dan sekunder seperti yang ditentukan di sini:
- LTZP utama
- Berjalan setiap saat saat pengguna 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 tunggu habis selama inisialisasi. Berhenti jika LTZP utama mengirimkan saran tertentu.
Seperti yang ditunjukkan pada Gambar 1, layanan time_zone_detector
menerima saran zona waktu dari algoritma lokasi atau telepon. Algoritma lokasi menerima saran dari LTZP primer atau sekunder.
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 yang diaktifkan dan dikonfigurasi agar deteksi zona waktu lokasi berfungsi dan terlihat oleh pengguna di Setelan.
Konfigurasi perangkat
Bagian ini menjelaskan cara produsen perangkat dapat mengonfigurasi perangkat untuk mendukung deteksi zona waktu lokasi.
Konfigurasi AOSP dasar ada di
frameworks/base/core/res/res/values/config.xml
:
Kunci konfigurasi | Nilai AOSP | Deskripsi |
---|---|---|
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 akan menonaktifkan fitur sepenuhnya untuk
penghematan memori kecil. |
config_enablePrimaryLocationTimeZoneProvider |
false |
Tindakan ini mengaktifkan LTZP utama. |
config_primaryLocationTimeZoneProviderPackageName |
Tetapkan ini ke nama paket aplikasi tempat layanan penyedia utama dapat ditemukan. | |
config_enableSecondaryLocationTimeZoneProvider |
false |
Tindakan ini mengaktifkan LTZP sekunder. |
config_secondaryLocationTimeZoneProviderPackageName |
Tetapkan ini ke nama paket aplikasi tempat layanan penyedia sekunder dapat ditemukan. |
Secara default, konfigurasi AOSP memiliki
kunci config_enableGeolocationTimeZoneDetection
yang disetel ke true
, sehingga mengaktifkan dukungan
untuk fitur deteksi zona waktu lokasi. Fitur ini tidak terlihat oleh pengguna pada awalnya karena AOSP tidak menyertakan konfigurasi LTZP secara default.
Namun, dengan konfigurasi default ini, produsen perangkat dapat mengaktifkan dan
mensimulasikan LTZP dari command line untuk pengujian. (Untuk mengetahui informasi selengkapnya, lihat
Men-debug dan menguji)
API status LTZP
Di Android 14, LTZP API mendukung informasi status pelaporan LTZP. Hal ini memungkinkan LTZP melaporkan masalah yang mungkin tidak dapat dideteksi sendiri oleh platform, karena komponen deteksi zona waktu platform tidak terlibat secara langsung dalam deteksi lokasi atau zona waktu dalam algoritma lokasi.
Kemampuan untuk melaporkan bahwa perilaku LTZP telah menurun karena lingkungan perangkat berguna saat mode penggantian telepon didukung. Misalnya, jika LTZP pihak ketiga yang mengandalkan setelan atau izin kustom agar deteksi lokasinya berfungsi berjalan dalam mode yang lebih rendah atau dinonaktifkan oleh setelan perangkat saat ini, LTZP dapat melaporkan informasi status ini ke komponen platform internal seperti aplikasi Setelan melalui metode reportSuggestion
. Aplikasi Setelan kemudian dapat memberi tahu pengguna melalui string atau penyesuaian yang dapat disesuaikan bahwa ada setelan yang harus diubah agar algoritma lokasi berfungsi dengan baik atau berfungsi sama sekali.
Untuk mengetahui informasi selengkapnya tentang status yang dapat dilaporkan oleh LTZP, lihat
TimeZoneProviderStatus
.
Konfigurasi dan deployment LTZP
Saat mengonfigurasi LTZP, baca petunjuk dalam kode sumber untuk
frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java
.
Komentar Javadoc memberikan detail tentang layanan, izin yang diperlukan, dan
konfigurasi lainnya.
Untuk mengonfigurasi LTZP, produsen perangkat harus memilih proses aplikasi untuk menghosting layanan LTZP. Memiliki proses khusus untuk LTZP adalah overhead yang tinggi; idealnya, proses aplikasi yang dipilih adalah proses 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 ada dalam modul Data Zona Waktu (com.android.tzdata
). Update pada salah satu komponen tanpa update pada komponen lainnya kemungkinan akan menyebabkan masalah perbedaan versi. Untuk mengetahui informasi selengkapnya, lihat Pertimbangan adopsi fitur.
Referensi AOSP LTZP
AOSP berisi implementasi LTZP referensi di bagian
packages/modules/GeoTZ
. Implementasi referensi ini menggunakan AOSP API untuk
menentukan lokasi perangkat dan menggunakan file data di perangkat untuk memetakan
lokasi ke sekumpulan ID zona waktu.
Set data referensi yang berasal dari project open source lain disertakan dengan kode sumber. Untuk mengetahui detail selengkapnya, lihat README.md dan berbagai file LICENSE.
Proses debug dan pengujian
Bagian berikut menjelaskan perintah shell untuk men-debug dan menguji fitur deteksi zona waktu lokasi.
Berinteraksi dengan layanan location_time_zone_manager
Jika algoritma lokasi didukung di perangkat yang menjalankan Android 12 dan yang lebih tinggi, Android akan membuat instance layanan location_time_zone_manager
saat waktu booting.
Untuk mengekspor status location_time_zone_manager
saat ini, gunakan:
adb shell cmd location_time_zone_manager dump
Untuk melihat serangkaian opsi command line yang luas untuk membantu pengujian, gunakan:
adb shell cmd location_time_zone_manager help
Output bantuan juga menjelaskan properti layanan device_config
yang dapat digunakan untuk memengaruhi perilaku time_zone_detector
untuk pengujian atau dalam produksi. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi perangkat menggunakan
layanan device_config.
Penerapan LTZP dapat memberikan dukungan debug atau pengujiannya sendiri. Misalnya, Anda dapat menggunakan perintah berikut untuk men-debug LTZP referensi AOSP saat didaftarkan dalam proses server sistem:
adb shell dumpsys activity service android/com.android.timezone.location.provider.OfflineLocationTimeZoneProviderService