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 menggunakan data peta lokasi dan zona waktu untuk menentukan zona waktu.

Deteksi zona waktu lokasi merupakan mekanisme alternatif terhadap deteksi zona waktu telepon . Karena fitur ini tidak memerlukan telepon, fitur ini dapat didukung pada perangkat dengan berbagai faktor bentuk selain 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 Pengaturan, diperkenalkan di Android 12, untuk memungkinkan pengguna memilih antara mekanisme deteksi zona waktu telepon dan lokasi.

  • Sistem plug-in untuk komponen yang melakukan deteksi lokasi dan pemetaan zona waktu. Sebuah plugin disebut Penyedia Zona Waktu Lokasi (LTZP) dan bisa ada hingga dua plugin di satu perangkat. Platform ini menyediakan API sistem yang harus digunakan untuk mengimplementasikan LTZP.

  • Referensi implementasi LTZP.

  • Peralatan host untuk menghasilkan kumpulan data referensi dari data OpenStreetMap yang dapat digunakan dengan implementasi referensi.

Privasi pengguna

Deteksi zona waktu lokasi mencakup fitur privasi pengguna berikut:

  • Ketika ada tombol untuk memilih algoritma lokasi, pengguna dapat mematikan algoritma lokasi kapan saja.

  • Saran zona waktu berdasarkan lokasi tidak dibagikan kepada pengguna di perangkat.

  • Pengguna dapat mengontrol deteksi lokasi untuk deteksi zona waktu secara eksplisit melalui layar Pengaturan Tanggal dan Waktu . Pengguna tidak perlu memberikan izin secara eksplisit melalui dialog izin.

  • Informasi lokasi perangkat tidak diteruskan ke layanan platform Android. Hal berikut ini terjadi:

    • Layanan pendeteksi zona waktu dikirimi ID zona waktu hanya berdasarkan LTZP, bukan lokasi perangkat. Ini adalah API minimal yang diperlukan untuk mendukung deteksi zona waktu lokasi.
    • Pengoperasian masing-masing LTZP diserahkan kepada integrator sistem untuk memutuskan. Implementasi LTZP dapat menggunakan data peta zona waktu yang disimpan sepenuhnya di perangkat Android, memanfaatkan server, atau menggunakan pendekatan hibrid.

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 menghasilkan 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 apa pun. Ini bertanggung jawab untuk mengelola siklus hidup satu atau dua plug-in yang disebut Penyedia Zona Waktu Lokasi (LTZP).

Jika deteksi zona waktu lokasi tidak diperlukan, LTZP tidak dimulai. Artinya, sistem deteksi zona waktu lokasi tidak meminta LTZP untuk melacak lokasi perangkat kecuali jika diminta secara eksplisit. Beberapa alasan perilaku ini antara lain sebagai berikut:

  • Berbeda dengan sinyal telepon yang diterima secara pasif sebagai bagian dari pengoperasian telepon normal, lokasi dapat diminta secara aktif dari penyedia lokasi Android dan dapat menggunakan daya tambahan.
  • Setelan lokasi merupakan cakupan pengguna dan Android harus mematuhi setelan pengguna saat ini.
  • Mendapatkan lokasi perangkat sensitif terhadap privasi.

Selain itu, layanan location_time_zone_manager memberikan saran yang tidak pasti (jika diperlukan) ketika pengguna saat ini berubah untuk menghindari berbagi informasi lokasi antar pengguna.

Sebagai hasil dari pilihan ini, biasanya diperlukan waktu beberapa detik setelah mengalihkan algoritma saat ini ke lokasi, atau setelah mengalihkan pengguna saat ini, sebelum zona waktu dapat dideteksi. Hal ini juga tergantung pada implementasi LTZP yang digunakan.

Implementasi deteksi zona waktu lokasi AOSP memungkinkan hingga dua LTZP, LTZP primer dan sekunder seperti yang didefinisikan di sini:

LTZP primer
Berjalan setiap saat ketika pengguna mengizinkan fitur deteksi zona waktu lokasi dijalankan.
LTZP sekunder
Berjalan jika LTZP utama melaporkan bahwa zona waktu tidak pasti , melaporkan kegagalan permanen, atau waktu habis selama inisialisasi. Berhenti jika LTZP utama menyampaikan saran tertentu .

Seperti yang ditunjukkan pada Gambar 1, layanan time_zone_detector menerima saran zona waktu dari algoritma telepon atau lokasi. Algoritme lokasi menerima saran dari LTZP primer atau sekunder.

Aliran informasi deteksi zona waktu lokasi

Gambar 1. Aliran 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 dapat berfungsi dan terlihat oleh pengguna di Pengaturan.

Konfigurasi perangkat

Bagian ini menjelaskan bagaimana produsen perangkat dapat mengonfigurasi perangkat untuk mendukung deteksi zona waktu lokasi.

Konfigurasi dasar AOSP ada di frameworks/base/core/res/res/values/config.xml :

Kunci konfigurasi nilai AOSP Keterangan
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.

Menetapkan nilai ke false akan menonaktifkan fitur sepenuhnya untuk menghemat sedikit memori.
config_enablePrimaryLocationTimeZoneProvider false Ini mengaktifkan LTZP utama.
config_primaryLocationTimeZoneProviderPackageName Setel ini ke nama paket aplikasi tempat layanan penyedia utama dapat ditemukan.
config_enableSecondaryLocationTimeZoneProvider false Ini mengaktifkan LTZP sekunder.
config_secondaryLocationTimeZoneProviderPackageName Setel ini ke nama paket aplikasi tempat layanan penyedia sekunder dapat ditemukan.

Secara default, konfigurasi AOSP memiliki kunci config_enableGeolocationTimeZoneDetection yang disetel ke true , sehingga memungkinkan dukungan untuk fitur deteksi zona waktu lokasi. Fitur ini awalnya tidak terlihat oleh pengguna karena AOSP tidak menyertakan konfigurasi LTZP secara default. Namun, dengan menggunakan konfigurasi default ini, produsen perangkat dapat mengaktifkan dan mensimulasikan LTZP dari baris perintah untuk pengujian. (Untuk informasi lebih lanjut, lihat Proses debug dan pengujian .)

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 sendiri oleh platform, 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 terdegradasi oleh lingkungan perangkat berguna ketika mode fallback telepon didukung. Misalnya, jika LTZP pihak ketiga yang mengandalkan pengaturan khusus atau izin agar deteksi lokasinya berfungsi berjalan dalam mode terdegradasi atau dinonaktifkan oleh pengaturan perangkat saat ini, ia dapat melaporkan informasi status ini ke komponen platform internal seperti aplikasi Pengaturan melalui metode reportSuggestion . Aplikasi Pengaturan kemudian dapat memberi tahu pengguna melalui string yang dapat disesuaikan atau penyesuaian bahwa ada pengaturan yang harus diubah agar algoritme lokasi berfungsi dengan baik atau tidak sama sekali.

Untuk informasi selengkapnya tentang status yang dapat dilaporkan LTZP, lihat TimeZoneProviderStatus .

Konfigurasi dan penerapan Penyedia Zona Waktu Lokasi

Saat mengonfigurasi LTZP, baca instruksi dalam kode sumber untuk frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java . Komentar Javadoc memberikan rincian tentang layanan, izin yang diperlukan, dan konfigurasi lainnya.

Untuk mengonfigurasi Penyedia Zona Waktu Lokasi, produsen perangkat harus memilih proses aplikasi untuk menghosting layanan LTZP. Memiliki proses khusus untuk LTZP membutuhkan biaya overhead yang tinggi; idealnya, proses aplikasi yang dipilih adalah proses yang berjalan sepanjang waktu 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 ). Pembaruan pada satu versi tanpa pembaruan pada versi lainnya cenderung menyebabkan masalah versi yang miring. Untuk informasi lebih lanjut, lihat Pertimbangan adopsi fitur .

Referensi AOSP LTZP

AOSP berisi referensi implementasi LTZP di bawah packages/modules/GeoTZ . Implementasi referensi ini menggunakan API AOSP untuk menentukan lokasi perangkat dan menggunakan file data pada perangkat untuk memetakan lokasi ke serangkaian ID zona waktu.

Kumpulan data referensi yang berasal dari proyek sumber terbuka lainnya disertakan dengan kode sumber. Untuk lebih jelasnya, lihat README.md dan berbagai file LICENSE.

Debug dan uji

Bagian berikut menjelaskan perintah shell untuk debugging dan menguji fitur deteksi zona waktu lokasi.

Berinteraksi dengan layanan location_time_zone_manager

Jika algoritme lokasi didukung pada perangkat yang menjalankan Android 12 atau lebih tinggi, Android akan membuat instance layanan location_time_zone_manager pada waktu boot.

Untuk membuang status location_time_zone_manager saat ini, gunakan:

adb shell cmd location_time_zone_manager dump

Untuk melihat serangkaian opsi baris perintah 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 produksi. Untuk informasi lebih lanjut, lihat Mengonfigurasi perangkat menggunakan layanan device_config .

Implementasi LTZP juga dapat menyediakan dukungan debugging atau pengujiannya 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