Deteksi zona waktu lokasi, yang tersedia di Android 12 dan yang lebih baru, adalah fitur deteksi zona waktu otomatis opsional yang memungkinkan perangkat menggunakan data peta zona waktu dan lokasinya untuk menentukan zona waktu.
Deteksi zona waktu lokasi adalah mekanisme alternatif untuk deteksi zona waktu telepon. Karena fitur ini tidak memerlukan telefoni, fitur ini dapat didukung di perangkat berbagai faktor bentuk selain perangkat telefoni 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 telepon
Sistem plugin untuk komponen yang melakukan deteksi lokasi dan pemetaan zona waktu. Plugin ini disebut Penyedia Zona Waktu Lokasi (LTZP) dan dapat ada hingga dua plugin 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 implementasi 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 antarpengguna 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 dikirim ID zona waktu oleh LTZP, bukan lokasi perangkat. Ini adalah API minimum yang diperlukan untuk mendukung deteksi zona waktu lokasi.
- Integrator sistem mengontrol operasi setiap LTZP. Implementasi LTZP dapat menggunakan data peta zona waktu yang disimpan sepenuhnya di perangkat Android, menggunakan server, atau menggunakan pendekatan hibrida.
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. Hal ini berarti bahwa sistem deteksi zona waktu lokasi tidak meminta LTZP untuk melacak lokasi perangkat kecuali jika mereka secara eksplisit diwajibkan untuk melakukannya. Beberapa alasan perilaku ini meliputi:
- Tidak seperti sinyal telefoni yang diterima secara pasif sebagai bagian dari operasi telefoni normal, lokasi dapat diminta secara aktif dari penyedia lokasi Android dan dapat menggunakan daya tambahan.
- Setelan lokasi memiliki cakupan 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 antarpengguna.
Sebagai akibat dari pilihan ini, perlu waktu beberapa detik setelah mengalihkan algoritma saat ini ke lokasi, atau setelah mengalihkan pengguna saat ini, sebelum zona waktu dapat dideteksi. Hal ini juga bergantung pada implementasi LTZP yang digunakan.
Implementasi deteksi zona waktu lokasi AOSP memungkinkan hingga dua LTZP, LTSP primer dan sekunder seperti yang ditentukan di sini:
- LTZP Utama
- Berjalan setiap saat saat pengguna mengizinkan fitur deteksi zona waktu lokasi 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 algoritme telepon atau lokasi. Algoritma lokasi
menerima saran dari LTZP utama 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 untuk 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 berada 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. Menetapkan nilai ke false akan menonaktifkan fitur sepenuhnya untuk
penghematan memori kecil. |
config_enablePrimaryLocationTimeZoneProvider |
false |
Tindakan ini akan mengaktifkan LTZP utama. |
config_primaryLocationTimeZoneProviderPackageName |
Tetapkan ini ke nama paket aplikasi tempat layanan penyedia utama dapat ditemukan. | |
config_enableSecondaryLocationTimeZoneProvider |
false |
Tindakan ini akan mengaktifkan LTZP sekunder. |
config_secondaryLocationTimeZoneProviderPackageName |
Tetapkan string ini ke nama paket aplikasi tempat layanan penyedia sekunder dapat ditemukan. |
Secara default, konfigurasi AOSP memiliki kunci config_enableGeolocationTimeZoneDetection
yang ditetapkan ke true
, yang 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 menggunakan konfigurasi default ini, produsen perangkat dapat mengaktifkan dan
menyimulasikan LTZP dari command line untuk pengujian. (Untuk informasi selengkapnya, lihat
Men-debug dan menguji.)
API status LTZP
Di Android 14, LTZP API mendukung informasi status pelaporan LTZP. Hal ini memungkinkan LTZP untuk melaporkan masalah yang mungkin tidak dapat dideteksi platform itu sendiri, karena komponen deteksi zona waktu platform tidak terlibat langsung dalam deteksi lokasi atau zona waktu dalam algoritme lokasi.
Kemampuan untuk melaporkan bahwa perilaku LTZP telah menurun oleh 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 terdegradasi 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 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 selalu berjalan, seperti server sistem.
Pada perangkat dengan
komponen sistem modular
(modul), pertimbangkan interaksi antara data geografis yang digunakan oleh LTZP dan
aturan zona waktu (tzdb) yang dibawa dalam
modul Data Zona Waktu
(com.android.tzdata
). Update ke salah satunya tanpa update pada modul lainnya kemungkinan
akan menyebabkan masalah distorsi versi. Untuk informasi selengkapnya, lihat
Pertimbangan penggunaan 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 kumpulan 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 LISENSI.
Proses debug dan pengujian
Bagian berikut menjelaskan perintah shell untuk proses debug dan pengujian 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
pada waktu booting.
Untuk membuang status location_time_zone_manager
saat ini, gunakan:
adb shell cmd location_time_zone_manager dump
Untuk melihat berbagai opsi command line guna 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 informasi selengkapnya, lihat
Mengonfigurasi perangkat menggunakan layanan
device_config.
Penerapan LTZP dapat memberikan dukungan proses debug atau pengujiannya sendiri. Misalnya, Anda dapat menggunakan perintah berikut untuk men-debug LTZP referensi AOSP saat terdaftar dalam proses server sistem:
adb shell dumpsys activity service android/com.android.timezone.location.provider.OfflineLocationTimeZoneProviderService