Deteksi zona waktu lokasi

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.

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