Deteksi zona waktu lokasi

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.

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 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