Deteksi zona waktu lokasi, tersedia di Android 12 atau lebih tinggi, adalah fitur deteksi zona waktu otomatis opsional yang memungkinkan perangkat ini untuk menggunakan data peta lokasi dan zona waktu untuk menentukan zona waktu.
Deteksi zona waktu lokasi adalah mekanisme alternatif untuk zona waktu telepon deteksi. Karena ini tidak memerlukan telepon, fitur ini dapat didukung pada perangkat berbagai faktor bentuk di samping 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 Setelan, diperkenalkan di Android 12, untuk memungkinkan pengguna memilih antara mekanisme deteksi zona waktu telepon dan lokasi.
Sistem{i> plug-in<i} untuk komponen yang melakukan deteksi lokasi dan pemetaan zona waktu. Plugin disebut Penyedia Zona Waktu Lokasi (LTZP) dan dapat memiliki hingga dua di antaranya di perangkat. Platform menyediakan API sistem yang harus digunakan untuk menerapkan LTZP.
Penerapan LTZP referensi.
Alat host untuk menghasilkan set data referensi dari Data OpenStreetMap yang dapat digunakan bersama implementasi referensi.
Privasi pengguna
Deteksi zona waktu lokasi mencakup fitur privasi pengguna berikut:
Saat ada tombol untuk memilih algoritma lokasi, pengguna dapat menonaktifkannya algoritma lokasi kapan saja.
Saran zona waktu berdasarkan lokasi tidak dibagikan antarpengguna di perangkat seluler.
Pengguna dapat mengontrol deteksi lokasi untuk deteksi zona waktu secara eksplisit melalui layar Setelan Tanggal dan Waktu. Pengguna tidak memiliki untuk memberikan izin secara eksplisit melalui dialog izin.
Informasi lokasi perangkat tidak diteruskan ke layanan platform Android. Hal berikut akan terjadi sebagai gantinya:
- Layanan pendeteksi zona waktu hanya dikirim ID zona waktu oleh LTZP, bukan lokasi perangkat. Ini adalah API minimal yang diperlukan untuk mendukung deteksi zona waktu lokasi.
- Pengoperasian LTZP satu per satu diserahkan kepada integrator sistem untuk membuat keputusan. Penerapan LTZP dapat menggunakan data peta zona waktu yang disimpan sepenuhnya di perangkat Android, memanfaatkan server, atau menggunakan pendekatan.
Perilaku fitur
Layanan time_zone_detector
menentukan waktu untuk mengubah data perangkat saat ini
zona waktu berdasarkan saran yang diterima dari algoritma deteksi.
Layanan location_time_zone_manager
bertanggung
jawab untuk membuat
saran untuk algoritme lokasi time_zone_detector
. Tujuan
Layanan location_time_zone_manager
berjalan dalam proses server sistem.
Layanan location_time_zone_manager
tidak berisi deteksi zona waktu apa pun
logika. Yang bertanggung jawab untuk mengelola
siklus hidup satu atau dua {i>plug-in<i} yang disebut
Penyedia Zona Waktu Lokasi (LTZP).
Jika deteksi zona waktu lokasi tidak diperlukan, LTZP tidak dimulai. Ini berarti sistem deteksi zona waktu lokasi tidak meminta LTZP untuk melacak lokasi perangkat kecuali jika dibutuhkan secara eksplisit. Beberapa alasan untuk perilaku ini termasuk hal berikut:
- Tidak seperti sinyal telepon yang diterima secara pasif sebagai bagian dari telepon normal, lokasi dapat secara aktif diminta dari Penyedia lokasi Android dan dapat menghabiskan daya tambahan.
- Setelan lokasi memiliki cakupan pengguna dan Android harus mematuhi setelan saat ini setelan pengguna.
- Mendapatkan lokasi perangkat bersifat sensitif terhadap privasi.
Selain itu, layanan location_time_zone_manager
memberikan saran yang tidak pasti (jika
satu diperlukan) ketika pengguna saat ini berubah untuk menghindari berbagi lokasi
informasi antarpengguna.
Sebagai hasil dari pilihan ini, biasanya diperlukan waktu beberapa detik setelah algoritme saat ini ke lokasi, atau setelah mengalihkan pengguna saat ini, sebelum zona waktu tertentu dapat dideteksi. Hal ini juga bergantung pada implementasi LTZP digunakan.
Implementasi deteksi zona waktu lokasi AOSP memungkinkan hingga dua LTZP, LTZP primer dan sekunder seperti yang dijelaskan di sini:
- LTZP Utama
- Berjalan setiap saat jika pengguna telah mengizinkan deteksi zona waktu lokasi fitur ini untuk dijalankan.
- LTZP Sekunder
- Berjalan jika LTZP utama melaporkan bahwa zona waktu tersebut tidak pasti, melaporkan kegagalan permanen, atau waktu tunggu habis selama inisialisasi. Berhenti jika metode LTZP mengirimkan saran tertentu.
Seperti yang ditunjukkan pada Gambar 1, layanan time_zone_detector
menerima zona waktu
saran dari algoritma 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 dikonfigurasikan untuk deteksi zona waktu lokasi agar 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 tersebut tersedia bagi pengguna. Menyetel nilai ke false akan menonaktifkan fitur sepenuhnya untuk memori berukuran kecil menyimpan. |
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 ini ke nama paket aplikasi tempat penyedia sekunder ditemukan. |
Secara default, konfigurasi AOSP memiliki
Kunci config_enableGeolocationTimeZoneDetection
disetel ke true
, mengaktifkan dukungan
untuk fitur deteksi zona waktu lokasi. Fitur ini tidak dapat dilihat oleh
pengguna pada awalnya karena AOSP tidak menyertakan konfigurasi LTZP secara default.
Namun, dengan menggunakan konfigurasi {i>default<i} ini, produsen perangkat dapat mengaktifkan dan
melakukan simulasi LTZP dari
baris perintah untuk pengujian. (Untuk informasi selengkapnya, lihat
Proses debug dan pengujian.)
API status LTZP
Di Android 14, LTZP API mendukung LTZP informasi status pelaporan. Hal ini memungkinkan LTZP melaporkan masalah yang mungkin tidak dapat dideteksi platform itu sendiri, komponen deteksi zona waktu tidak terlibat langsung dalam lokasi atau waktu deteksi zona dalam algoritma lokasi.
Kemampuan untuk melaporkan bahwa perilaku LTZP telah menurun karena
tertentu berguna ketika
mode penggantian telepon
didukung. Misalnya, jika LTZP pihak ketiga yang mengandalkan setelan kustom
oor izin agar deteksi lokasi dapat berfungsi sedang berjalan dalam mode menurun
atau dinonaktifkan oleh setelan perangkat saat ini, perangkat dapat melaporkan status ini
informasi ke komponen platform internal seperti aplikasi Setelan melalui
reportSuggestion
. Aplikasi Setelan kemudian dapat memberi tahu
pengguna melalui {i>string<i} yang dapat disesuaikan atau
bahwa ada setelan yang harus diubah untuk lokasi
algoritma data bekerja dengan
baik atau sama sekali.
Untuk mengetahui informasi selengkapnya tentang status yang dapat dilaporkan 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 menyediakan detail
tentang layanan, izin akses yang diperlukan dan
konfigurasi lainnya.
Untuk mengonfigurasi LTZP, produsen perangkat harus memilih aplikasi Anda untuk menghosting layanan LTZP. Memiliki proses khusus untuk LTZP memiliki {i>overhead<i} yang tinggi; idealnya, proses aplikasi yang dipilih adalah proses yang berjalan di setiap saat seperti server sistem.
Pada perangkat dengan
komponen sistem modular
(modul), pertimbangkan interaksi antara data geografis yang digunakan LTZP dan
aturan zona waktu (tzdb) yang diterapkan di
Modul Data Zona Waktu
(com.android.tzdata
). Pembaruan pada salah satu platform tanpa pembaruan terhadap yang lain kemungkinan
yang dapat menyebabkan masalah distorsi versi. Untuk informasi selengkapnya, lihat
Pertimbangan penggunaan fitur.
Referensi AOSP LTZP
AOSP berisi implementasi LTZP referensi dalam
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 proyek {i>open source<i} lainnya disertakan dengan kode sumbernya. Untuk detail selengkapnya, lihat README.md dan berbagai file LISENSI.
Men-debug dan menguji
Bagian berikut menjelaskan perintah shell untuk proses debug dan pengujian fitur deteksi zona waktu lokasi.
Berinteraksi dengan layanan location_time_zone_manager
Saat algoritma lokasi didukung pada perangkat yang berjalan
Android 12 atau yang lebih baru,
Android membuat instance layanan location_time_zone_manager
pada saat 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
produksi. Untuk informasi selengkapnya, lihat
Mengonfigurasi perangkat menggunakan layanan device_config.
Implementasi LTZP juga dapat memberikan dukungan pengujian atau proses debug 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