Halaman ini menjelaskan cara kerja deteksi zona waktu dan waktu di Android. Ini termasuk cara Android mendeteksi waktu dan zona waktu secara otomatis, opsi konfigurasi untuk produsen perangkat, dan informasi pengujian.
Tinjauan tentang waktu dan zona waktu
Untuk menentukan waktu lokal pengguna untuk ditampilkan di lokasi seperti bilah status, Android melacak dua status terkait namun independen:
- Waktu zaman Unix saat ini
- Zona waktu saat ini
Waktu zaman Unix saat ini dan zona waktu saat ini adalah status seluruh perangkat, yang berarti bahwa keduanya digunakan bersama oleh semua pengguna perangkat.
Waktu zaman Unix saat ini bukanlah nilai tetap. Itu diperbarui secara otomatis untuk mencerminkan berlalunya waktu. Selain berlalunya waktu normal, waktu zaman Unix perangkat saat ini disesuaikan jika ternyata salah, misalnya, setelah perangkat kehilangan daya.
Zona waktu saat ini menentukan penyesuaian yang akan dilakukan untuk mengubah waktu zaman Unix saat ini menjadi waktu lokal. Misalnya, selama musim panas di Los Angeles, perangkat mengurangi 7 jam dari waktu Unix saat ini, dan di musim dingin mengurangi 8 jam.
Untuk mendukung penghitungan waktu lokal ini, semua perangkat Android memiliki database semua aturan zona waktu global . Untuk informasi selengkapnya tentang aturan zona waktu, lihat Aturan Zona Waktu .
Saat pengguna melakukan perjalanan ke lokasi baru yang menggunakan zona waktu berbeda, waktu zaman Unix saat ini tidak perlu disesuaikan tetapi pengguna biasanya ingin melihat waktu lokal daripada waktu di lokasi sebelumnya. Mengubah zona waktu saat ini memastikan bahwa offset yang benar diterapkan ke waktu zaman Unix saat ini untuk menampilkan waktu lokal yang benar untuk lokasi baru.
AOSP memungkinkan pengguna untuk mengontrol secara mandiri apakah waktu dan zona waktu diatur secara otomatis untuk mereka melalui mekanisme berikut.
- Deteksi waktu otomatis: Memastikan bahwa perangkat memiliki waktu epoch Unix saat ini yang benar.
- Deteksi zona waktu otomatis: Memastikan perangkat memiliki zona waktu saat ini yang benar.
Deteksi waktu otomatis
Bagian ini memberikan ikhtisar tentang layanan time_detector
yang mengelola deteksi waktu otomatis, kontrol pengguna, opsi konfigurasi, dan detail pengujian.
Layanan time_detector
Layanan time_detector
, hadir di perangkat yang menjalankan Android 10 atau lebih tinggi, mengelola deteksi waktu otomatis. Ini menyesuaikan waktu zaman Unix perangkat saat ini sesuai kebutuhan saat deteksi waktu otomatis diaktifkan.
Layanan time_detector
selalu dalam salah satu dari dua status: tidak pasti atau pasti . Keadaan tertentu atau tidak pasti suatu layanan ditentukan oleh saran waktu yang diterimanya dari berbagai sumber.
Ketika layanan time_detector
tertentu, artinya telah menerima saran dengan informasi waktu zaman Unix, itu menimpa waktu zaman Unix saat ini jika saran waktu berbeda dari waktu zaman Unix saat ini.
Ketika time_detector
tidak pasti, itu tidak menimpa waktu saat ini. Status tidak pasti biasanya berarti layanan time_detector
belum menerima saran waktu. Layanan time_detector
juga menjadi tidak pasti jika saran yang diterima dianggap terlalu lama untuk digunakan. Usia saran dipertimbangkan karena penyesuaian menggunakan saran waktu zaman Unix lama bergantung pada jam waktu nyata yang telah berlalu pada perangkat, yang dianggap tidak akurat dalam jangka waktu lama.
Untuk menetapkan waktu zaman Unix saat ini secara otomatis, perangkat memiliki berbagai sumber yang dapat digunakannya. Ini disebut asal dalam dokumen ini. Layanan time_detector
memperlakukan urutan saran sebagai berbeda berdasarkan asalnya.
Layanan time_detector
adalah stateful, yang artinya menyimpan catatan saran terbaru yang dibuat oleh masing-masing asal. Saran baru dibuat untuk time_detector
jika asal memiliki informasi waktu zaman Unix yang lebih baru tersedia. Layanan time_detector
mengevaluasi kembali saran baru dan yang sudah ada serta memperbarui status perangkat saat saran diterima.
Meskipun waktu UTC disepakati secara internasional, ada berbagai alasan mengapa menetapkan waktu zaman Unix saat ini tidak selalu mudah untuk perangkat Android:
- Waktu zaman Unix adalah sistem ketepatan waktu yang agak berbeda dari waktu UTC. Konversi antara keduanya membutuhkan pengetahuan tentang kapan detik kabisat terjadi dan bagaimana mereka ditangani oleh asal.
- Asal mungkin hanya tersedia pada waktu tertentu atau dalam keadaan tertentu. Misalnya, jika asal memerlukan konektivitas jaringan, mungkin hanya tersedia saat perangkat tersambung ke internet.
- Asal mungkin tidak akurat atau tidak tepat, atau memiliki kesalahan. Misalnya, jika menara seluler telepon tidak melacak "waktu universal" dengan benar, asal telepon mungkin memberikan saran waktu yang tidak akurat.
- Mungkin ada ketidakakuratan yang diperkenalkan saat memperoleh waktu zaman Unix. Misalnya, penundaan jaringan, buffering, atau penjadwalan proses dapat menyebabkan waktu zaman Unix menjadi tidak akurat.
- Jam referensi yang digunakan untuk menyesuaikan saran untuk waktu yang berlalu sejak saran diterima mungkin tidak akurat.
Ada dua asal deteksi waktu utama yang dikonfigurasi untuk digunakan secara default di AOSP:
- Telephony: Menggunakan sinyal telepon Network Identity and Time Zone (NITZ).
- Jaringan: Menggunakan server waktu Network Time Protocol (NTP).
Asal telepon dan jaringan memerlukan konektivitas ke jaringan eksternal, yang tidak selalu tersedia.
Dimulai dengan Android 12, Android juga mendukung origin berikut, yang tidak dikonfigurasi untuk digunakan secara default:
- GNSS : Menggunakan penyedia lokasi GPS untuk mendapatkan waktu dari sumber GNSS.
- Eksternal : Generik asal yang memungkinkan produsen perangkat untuk mengintegrasikan sumber waktu zaman Unix mereka sendiri.
Pengaturan waktu
Pengguna dapat mengaktifkan deteksi waktu otomatis di Sistem > Tanggal dan Waktu di aplikasi Pengaturan AOSP.
Gambar 1. Deteksi waktu otomatis di Pengaturan.
Tabel berikut menjelaskan kontrol pengguna untuk deteksi waktu di aplikasi Pengaturan AOSP.
*Di Android 11 dan yang lebih rendah, setelan ini diberi label Gunakan waktu yang disediakan jaringan | |||
Lokasi Pengaturan AOSP | Nama Pengaturan AOSP | Cakupan | Perilaku |
---|---|---|---|
Sistem > Tanggal dan Waktu | Atur waktu secara otomatis* | Semua pengguna | Beralih. Saat aktif , perangkat bertanggung jawab untuk mendeteksi waktu zaman Unix saat ini. Saat mati , pengguna diberikan kontrol untuk menyetel waktu perangkat secara manual. |
Ketika pengguna memasukkan waktu secara manual, mereka memasukkan waktu lokal mereka, bukan waktu zaman Unix. Waktu zaman Unix saat ini dihitung dengan menggunakan zona waktu saat ini untuk memperoleh waktu zaman Unix.
Konfigurasi
Produsen perangkat dapat mengonfigurasi layanan time_detector
dengan berbagai cara, seperti origin mana yang akan digunakan dan cara memprioritaskan sinyal dari perangkat tersebut.
Prioritas asal
Dari Android 12, produsen perangkat dapat mengubah file konfigurasi core/res/res/values/config.xml
untuk menentukan asal waktu mana yang akan disertakan dalam deteksi waktu otomatis, dan prioritas di mana time_detector
mempertimbangkan asal-usul ini.
Untuk perangkat yang menjalankan Android 11 atau lebih rendah, prioritas asal di-hardcode ke ["telephony", "network"]
, artinya saran telepon diprioritaskan di atas saran jaringan.
Konfigurasi AOSP default adalah sebagai berikut:
<!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list
take precedence over lower ones.
See com.android.server.timedetector.TimeDetectorStrategy for available sources. -->
<string-array name="config_autoTimeSourcesPriority">
<item>network</item>
<item>telephony</item>
</string-array>
Di Android 12, saran jaringan dan telepon dikonfigurasi sebagai asal untuk digunakan secara default. Saran waktu jaringan diprioritaskan di atas saran waktu telepon. Produsen perangkat dapat mengubah urutan asal untuk kembali ke perilaku di Android 11 atau lebih rendah, dengan telepon diberi prioritas lebih tinggi.
Secara default, jika saran valid dengan prioritas tertinggi cocok dengan waktu jam sistem perangkat saat ini dalam beberapa detik, waktu perangkat tidak akan diubah. Ini untuk menghindari pembuatan pekerjaan untuk aplikasi terinstal yang mendengarkan maksud ACTION_TIME_CHANGED
.
Nilai asal yang diizinkan adalah:
Batas waktu yang lebih rendah
Android 12 memperkenalkan batas waktu yang lebih rendah yang digunakan untuk memvalidasi saran waktu yang diterima oleh layanan time_detector
. Nilai batas waktu yang lebih rendah diatur dari stempel waktu build. Ini bekerja berdasarkan prinsip bahwa waktu yang valid tidak boleh sebelum citra sistem perangkat dibuat. Jika saran waktu sebelum batas waktu yang lebih rendah, layanan time_detector
membuang saran karena tidak valid jika stempel waktu build benar.
Untuk perangkat yang menjalankan Android 11 atau lebih rendah, layanan time_detector
tidak memvalidasi saran waktu epoch Unix yang masuk.
Android tidak menerapkan batas waktu atas.
Waktu debugging dan pengujian
Bagian ini memberikan informasi tentang cara men-debug dan menguji perilaku layanan time_detector
dan komponen lain yang digunakan bersama oleh semua asal.
Berinteraksi dengan layanan time_detector
Untuk melihat konfigurasi layanan time_detector
dan status layanan time_detector
, gunakan:
adb shell cmd time_detector dump
Untuk melihat perintah tambahan untuk debugging dan pengujian deteksi zona waktu, gunakan:
adb shell cmd time_detector help
Output bantuan juga menjelaskan properti layanan device_config yang dapat digunakan untuk memengaruhi perilaku time_detector
untuk pengujian atau produksi. Untuk detailnya, lihat Mengonfigurasi perangkat menggunakan layanan device_config .
Untuk memvalidasi deteksi waktu otomatis, penguji harus mengetahui asal layanan time_detector
mana yang digunakan. Berikut adalah contoh output dari perintah adb shell cmd time_zone_detector dump
, dengan informasi tentang asal saat ini dan status layanan dicetak tebal:
$ adb shell cmd time_detector dump
TimeDetectorStrategy:
mLastAutoSystemClockTimeSet=null
mEnvironment.isAutoTimeDetectionEnabled()=true
mEnvironment.elapsedRealtimeMillis()=23717241
mEnvironment.systemClockMillis()=1626707861336
mEnvironment.systemClockUpdateThresholdMillis()=2000
mEnvironment.autoTimeLowerBound()=2021-07-19T07:48:05Z(1626680885000)
mEnvironment.autoOriginPriorities()=[network,telephony]
Time change log:
...
Telephony suggestion history:
...
Network suggestion history:
...
Gnss suggestion history:
...
External suggestion history:
...
Informasi tersebut dapat diartikan sebagai berikut:
Kunci | Nilai |
---|---|
mEnvironment.isAutoTimeDetectionEnabled() | Apakah deteksi waktu otomatis diaktifkan. |
mEnvironment.autoTimeLowerBound() | Batas bawah saat ini digunakan untuk memvalidasi saran waktu. |
mEnvironment.autoOriginPriorities() | Asal-usul yang digunakan dan urutan prioritas. |
Log perubahan waktu menunjukkan kejadian ketika layanan time_detector
telah mengubah waktu zaman perangkat Unix saat ini.
Informasi sejarah saran menunjukkan saran apa yang telah dibuat oleh masing-masing asal.
Deteksi zona waktu otomatis
Bagian ini memberikan ikhtisar tentang layanan time_zone_detector
yang mengelola deteksi zona waktu otomatis, kontrol pengguna di setelan, deteksi zona waktu telepon dan lokasi, serta detail pengujian.
Layanan time_zone_detector
Layanan time_zone_detector
, hadir di perangkat yang menjalankan Android 11 atau lebih tinggi, mengelola deteksi zona waktu otomatis. Ini menyesuaikan zona waktu perangkat saat ini sesuai kebutuhan saat deteksi zona waktu otomatis diaktifkan.
Saat deteksi zona waktu otomatis diaktifkan, time_zone_detector
dapat berada dalam salah satu dari dua status: tidak pasti dan pasti .
Ketika layanan time_zone_detector
dalam keadaan tertentu, ini berarti layanan time_zone_detector
telah menerima informasi zona waktu yang kuat, yang dapat menyebabkannya menimpa zona waktu saat ini. Jika tidak pasti, ini berarti tidak ada informasi yang diterima atau hanya informasi dengan tingkat kepercayaan rendah, yang berarti tidak akan mengesampingkan zona waktu saat ini.
Status tertentu layanan time_zone_detector
dapat mencakup status di mana time_zone_detector
tidak memiliki informasi zona waktu untuk digunakan, atau di mana ia memiliki beberapa zona waktu untuk dipilih. Negara bagian ini adalah sebagai berikut:
- Negara bagian tertentu dengan zona waktu nol dimasukkan saat perangkat berada di suatu tempat tanpa zona waktu, seperti di perairan internasional atau di area yang disengketakan. Keadaan ini mirip dengan keadaan tidak pasti, tetapi menunjukkan bahwa
time_zone_detector
tidak perlu mengambil tindakan lebih lanjut untuk mencoba menentukan zona waktu. - Keadaan tertentu dengan beberapa zona waktu dimasukkan di mana ada kondisi ambiguitas atau perbatasan. Dalam keadaan ini, jika zona waktu saat ini adalah salah satu zona waktu
time_zone_detector
yang pasti, zona waktu saat ini dibiarkan apa adanya. Jika tidak, salah satu zona waktu yang tersedia akan digunakan. Ini memberikantime_zone_detector
sebuah elemen lengket jika pengguna telah memilih zona waktu mereka secara manual sebelumnya atau saat perangkat mendekati perbatasan.
Status tertentu atau tidak pasti layanan time_zone_detector
ditentukan oleh saran zona waktu yang dikirim oleh origin .
Umumnya, saran datang dalam dua jenis yang sangat cocok dengan kemungkinan status time_zone_detector
: pasti dan tidak pasti . Berikut ini adalah contoh jenis saran:
type = "tidak pasti", zoneIds = []
- Asal tidak tahu apa itu zona waktu.
type = "tertentu", zoneIds = ["Eropa/London"]
- Asal pasti zonanya adalah "Eropa/London".
type = "tertentu", zoneIds = []
- Asal pasti, tetapi tidak ada ID zona yang terkait dengan lokasi saat ini.
type = "tertentu", zoneIds = ["Amerika/Denver", "Amerika/Phoenix"]
- Asal pasti jawabannya adalah salah satu dari dua zona, tetapi tidak dapat memilih antara "Amerika/Denver" dan "Amerika/Phoenix".
Layanan time_zone_detector
memperlakukan urutan saran sebagai berbeda berdasarkan asalnya. Bergantung pada asalnya, saran mungkin juga berisi metadata yang menunjukkan seberapa pasti asalnya.
Layanan time_zone_detector
bersifat stateful, yang artinya layanan ini mencatat saran terbaru yang dibuat oleh masing-masing asal. Saran baru dikirim ke layanan time_zone_detector
jika saran sebelumnya tidak lagi benar; yaitu, jika asal sekarang memiliki saran yang berbeda, atau jika telah kehilangan kemampuan untuk mendeteksi zona waktu. Layanan time_zone_detector
mengevaluasi ulang saran baru dan yang sudah ada serta memperbarui status perangkat saat saran diterima.
Android mendukung dua asal untuk deteksi zona waktu:
- Telepon
- Lokasi
Layanan time_zone_detector
hanya menggunakan asal tunggal untuk menentukan zona waktu. Ketika asal lokasi didukung pada perangkat, asal saat ini untuk digunakan ditentukan berdasarkan pengaturan Zona waktu yang dikonfigurasi oleh pengguna. Saat asal saat ini menjadi tidak pasti tentang zona waktu, time_zone_detector
tidak menggunakan saran dari asal yang berbeda. Saran yang terkait dengan asal selain asal saat ini dapat disimpan di memori oleh time_zone_detector
, tetapi tidak digunakan kecuali asal saat ini berubah. Saat pengguna mengubah setelan untuk deteksi zona waktu otomatis dan asal saat ini berubah, saran terbaru yang tersedia untuk asal baru akan digunakan.
Pada perangkat yang menjalankan Android 13 dan lebih tinggi, layanan time_zone_detector
mendukung mode fallback telepon . Mode ini memungkinkan Android menggunakan saran deteksi telepon untuk sementara dalam situasi ketika deteksi lokasi tidak dapat mendeteksi zona waktu atau ketika deteksi lokasi memerlukan waktu lebih lama untuk mendeteksi zona waktu daripada deteksi telepon.
Mode fallback telepon berlaku untuk perangkat yang mendukung deteksi lokasi dan telepon, dan pengguna telah mengaktifkan Gunakan lokasi untuk menyetel zona waktu di Setelan zona waktu . Mode diaktifkan secara otomatis saat perangkat dinyalakan ulang, dan saat mode pesawat dinonaktifkan. Saat dalam mode fallback telepon, layanan time_zone_detector
menggunakan saran telepon seolah-olah deteksi lokasi dinonaktifkan hingga asal lokasi memberikan saran tertentu. Setelah menerima saran tertentu, mode fallback telepon dinonaktifkan dan saran lokasi digunakan secara eksklusif.
Untuk detail konfigurasi untuk mode fallback telepon, lihat Konfigurasi deteksi zona waktu .
Pengaturan zona waktu
Pengguna dapat mengaktifkan dan mengonfigurasi pengaturan untuk deteksi zona waktu otomatis di aplikasi Pengaturan AOSP.
Gambar 2. Deteksi zona waktu otomatis di Pengaturan.
Tabel berikut menjelaskan kontrol pengguna untuk deteksi zona waktu di aplikasi Pengaturan AOSP.
*Di Android 11 dan yang lebih rendah, setelan ini diberi label Gunakan zona waktu yang disediakan jaringan | |||
Lokasi Pengaturan AOSP | Nama Pengaturan AOSP | Cakupan | Perilaku |
---|---|---|---|
Sistem > Tanggal dan Waktu | Atur zona waktu secara otomatis* | Semua pengguna | Beralih. Saat aktif , perangkat bertanggung jawab untuk mendeteksi zona waktu saat ini. Saat mati , pengguna diberikan kontrol untuk menyetel zona waktu perangkat secara manual. |
Sistem > Tanggal dan Waktu | Gunakan lokasi untuk mengatur zona waktu | Pengguna saat ini | Beralih. Tersedia dari Android 12. Tombol alih ini hanya ditampilkan saat deteksi zona waktu lokasi didukung di perangkat. |
Lokasi | Gunakan lokasi | Pengguna saat ini | Beralih. Mengizinkan atau mencegah penggunaan lokasi perangkat secara umum. Nilai relevan jika deteksi zona waktu lokasi didukung di perangkat. |
Berikut ini adalah ikhtisar perilaku perangkat untuk deteksi zona waktu berdasarkan setelan yang dipilih oleh pengguna:
[Tanggal dan Waktu] Atur zona waktu secara otomatis: MATI
- Pengguna harus memilih zona waktu secara manual.
[Tanggal dan Waktu] Atur zona waktu secara otomatis: AKTIF
[Lokasi] Gunakan lokasi: MATI
- Sinyal telepon digunakan untuk mendeteksi zona waktu. (Lihat Catatan di bawah.)
[Lokasi] Gunakan lokasi: AKTIF
[Tanggal dan Waktu] Gunakan lokasi untuk mengatur zona waktu: AKTIF
- Lokasi digunakan untuk mendeteksi zona waktu.
[Tanggal dan Waktu] Gunakan lokasi untuk mengatur zona waktu: NONAKTIF
- Sinyal telepon digunakan untuk mendeteksi zona waktu. (Lihat Catatan di bawah.)
Beberapa perangkat pengguna
Karena beberapa setelan yang terlibat dicakup untuk pengguna saat ini, perilaku deteksi zona waktu suatu perangkat dapat berubah saat pengguna saat ini berubah pada perangkat Android multi-pengguna.
Sakelar Gunakan lokasi untuk menyetel zona waktu dicakup untuk pengguna saat ini dan tidak dibatasi oleh kebijakan perangkat, yang berarti bahwa pengguna selalu dapat mengubah nilainya, meskipun sakelar Setel zona waktu secara otomatis tidak aktif atau jika kontrol waktu atau zona waktu lainnya dibatasi oleh Device Policy Controller.
Perilaku saat mengubah ke dan dari deteksi otomatis
Saat pengguna mengalihkan deteksi zona waktu dari manual ke otomatis , time_zone_detector
mungkin sudah yakin dengan zona waktu saat ini. Jika demikian, karena pengguna mengaktifkan deteksi otomatis, zona waktu perangkat mungkin diubah pada saat yang sama agar sesuai dengan opini layanan time_zone_detector
.
Demikian pula, saat pengguna membuat perubahan di Pengaturan yang mengakibatkan perubahan pada asal layanan time_zone_detector
saat ini, time_zone_detector
mungkin sudah menerima saran untuk asal baru sehingga waktu perangkat mungkin segera diubah agar sesuai dengan pendapat layanan time_zone_detector
.
Deteksi zona waktu telepon
Deteksi zona waktu telepon menggunakan sinyal telepon untuk menentukan zona waktu saat ini. Untuk informasi selengkapnya, lihat Deteksi Zona Waktu Telepon .
Deteksi zona waktu lokasi
Deteksi zona waktu lokasi tersedia di Android 12 atau lebih tinggi. Ini adalah fitur deteksi zona waktu otomatis opsional yang memungkinkan perangkat menggunakan lokasinya untuk menentukan zona waktu saat ini.
Layanan location_time_zone_manager
, yang diperkenalkan di Android 12, berjalan di server sistem dan berisi kode yang bertanggung jawab untuk mengirimkan saran asal lokasi ke layanan time_zone_detector
. Untuk informasi selengkapnya, lihat Deteksi Zona Waktu Lokasi .
Pertimbangan adopsi fitur
Bagian ini menjelaskan aspek fitur deteksi zona waktu lokasi untuk membantu produsen perangkat menentukan apakah akan menerapkan fitur tersebut pada perangkat.
Membandingkan telepon dan deteksi lokasi
Tabel berikut memberikan perbandingan keuntungan dan kerugian menggunakan lokasi daripada sinyal telepon untuk deteksi zona waktu.
Deteksi telepon | Deteksi lokasi | |
---|---|---|
Ketepatan | Bervariasi menurut negara. Tergantung pada PKS, kebenaran dan ketersediaan NITZ. | Tergantung pada konfigurasi fitur atau komponen plug-in. Kebenaran biasanya bervariasi berdasarkan:
|
Pembaruan | Deteksi telepon bergantung pada file yang terdapat dalam modul Data Zona Waktu yang dapat diperbarui (com.android.tzdata APEX). | Tergantung pada konfigurasi fitur atau komponen plug-in. Kemampuan pembaruan biasanya bergantung pada apakah perangkat menggunakan data peta zona waktu server atau klien. Catatan: Data peta zona waktu tidak terdapat dalam modul Data Zona Waktu yang digunakan untuk memperbarui salinan TZDB Android dan informasi zona waktu lainnya. Produsen perangkat juga harus mempertimbangkan konsistensi versi antara aturan zona waktu dan data peta zona waktu. |
Penggunaan daya | Tidak ada atau penggunaan daya rendah | Bergantung pada pengaturan lokasi pengguna, plug-in yang digunakan, dan biasanya aplikasi lain meminta lokasi. |
Ketersediaan | Perangkat telepon saja. Biasanya membutuhkan SIM yang berfungsi. | Deteksi lokasi bergantung pada penyedia lokasi yang tersedia. |
Privasi pengguna
Zona waktu pilihan pengguna biasanya ditentukan oleh lokasi geografisnya. Lokasi adalah data sensitif. Pengguna mungkin khawatir tentang pengetahuan tentang lokasi mereka yang dibagikan sebagai bagian dari deteksi zona waktu. Tidak terkait dengan deteksi zona waktu, semua aplikasi yang berjalan di perangkat dapat membaca zona waktu perangkat saat ini tanpa memerlukan izin Android, dan aplikasi dapat menyimpulkan ide lokasi perangkat yang tidak akurat dari informasi ini.
Lebih khusus lagi, deteksi zona waktu dapat bekerja melalui cara pasif atau aktif:
- Pasif: Sesuatu di lingkungan perangkat memberi tahu perangkat zona waktu untuk digunakan di lingkungan itu.
- Aktif: Perangkat harus bekerja di luar zona waktu untuk dirinya sendiri dan bergantung pada pengaturan privasi pengguna dan persetujuan mereka, memperoleh lokasi perangkat untuk melakukannya. Itu kemudian dapat membagikan lokasinya dengan layanan eksternal. Lihat diskusi di bawah untuk detail tentang privasi dan persetujuan pengguna.
Deteksi pasif, seperti asal telepon, tidak memiliki implikasi privasi tambahan bagi pengguna.
Deteksi aktif, seperti asal lokasi, melibatkan penentuan lokasi perangkat, yang mungkin tidak disetujui pengguna, dan lokasi dapat dikirim melalui jaringan untuk menentukan ID zona waktu.
Pendekatan Android terhadap privasi pengguna untuk deteksi zona waktu memberi pengguna kemampuan untuk menonaktifkan satu per satu asal yang diharapkan aktif. Selain itu, kode platform AOSP tidak berhubungan langsung dengan lokasi itu sendiri: deteksi lokasi dan pemetaan lokasi ke ID zona waktu diserahkan ke komponen plug-in yang dikonfigurasi oleh produsen perangkat.
Untuk detail selengkapnya tentang fitur privasi pengguna, lihat Deteksi Zona Waktu Lokasi .
Konfigurasi
Produsen perangkat dapat mengonfigurasi layanan time_zone_detector
untuk mengubah perilakunya. Bagian ini menjelaskan opsi konfigurasi untuk perilaku umum layanan time_zone_detector
. Untuk detail konfigurasi telepon dan asal deteksi zona waktu, lihat Deteksi Zona Waktu Telepon dan Deteksi Zona Waktu Lokasi .
Konfigurasi AOSP dasar ada di frameworks/base/core/res/res/values/config.xml
.
Kunci konfigurasi | nilai AOSP | Keterangan |
---|---|---|
config_supportTelephonyTimeZoneFallback | true | Jika true , `time_zone_detector` akan menggunakan mode fallback telepon. Ini hadir di Android 13 dan seterusnya. |
Mengubah perilaku default perangkat
Di AOSP, deteksi zona waktu otomatis diaktifkan secara default dengan setelan auto_time_zone
disetel ke true
. Untuk menonaktifkan deteksi waktu otomatis secara default, setel nilai def_auto_time_zone
yang ditentukan dalam frameworks/base/packages/SettingsProvider/res/values/defaults.xml
ke false
.
Saat memulihkan cadangan dari perangkat lain, kerangka kerja memperbarui nilai pengaturan auto_time_zone
secara default. Jika Anda ingin memastikan bahwa setelan ini tidak dipulihkan dari cadangan, sertakan auto_time_zone
dalam array restore_blocked_global_settings
yang ditentukan dalam frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml
.
Debugging dan pengujian zona waktu
Bagian ini memberikan informasi tentang cara men-debug dan menguji perilaku layanan time_zone_detector
dan komponen lain yang digunakan bersama oleh semua asal.
Mengonfigurasi perangkat menggunakan layanan device_config
Layanan device_config
adalah mekanisme yang digunakan di Android untuk mengonfigurasi perilaku yang dapat dimodifikasi menggunakan nilai yang biasanya ditarik dari server jarak jauh dengan kode kepemilikan (non-AOSP). Saat menggunakan nilai device_config
untuk pengujian, terutama selama pengujian manual yang berjalan lama, perangkat mungkin menyinkronkan flag, yang akan menyetel ulang flag dan menghapus nilai yang ditetapkan untuk pengujian.
Di Android 12 atau lebih tinggi, untuk sementara mencegah sinkronisasi flag, gunakan:
adb shell cmd device_config set_sync_disabled_for_tests persistent
Untuk memulihkan sinkronisasi bendera setelah pengujian, gunakan:
adb shell cmd device_config set_sync_disabled_for_tests none
Setelah memulihkan sinkronisasi bendera, reboot perangkat.
Untuk informasi lebih lanjut, gunakan $ adb shell cmd device_config help
.
Berinteraksi dengan layanan time_zone_detector
Untuk melihat konfigurasi time_zone_detector
dan status layanan time_zone_detector
, gunakan:
adb shell cmd time_zone_detector dump
Untuk melihat perintah tambahan untuk debugging dan pengujian deteksi zona waktu, gunakan:
adb shell cmd time_zone_detector help
Keluaran bantuan juga menjelaskan properti layanan device_config
yang dapat digunakan untuk memengaruhi perilaku layanan time_zone_detector
untuk pengujian atau produksi. Untuk detailnya, lihat Mengonfigurasi perangkat menggunakan layanan device_config .
Untuk memvalidasi deteksi zona waktu, penguji harus mengetahui asal yang digunakan oleh time_zone_detector
. Untuk memahami dan memengaruhi asal time_zone_detector
saat ini, gunakan salah satu opsi berikut:
- Periksa secara visual melalui UI Pengaturan. Untuk informasi selengkapnya, lihat Setelan zona waktu .
Gunakan baris perintah melalui adb:
- Untuk membuang status
time_zone_detector
, gunakanadb shell cmd time_zone_detector dump
- Untuk mengubah pengaturan perangkat, gunakan perintah
time_zone_detector
lainnya. Untuk informasi selengkapnya, gunakanadb shell cmd time_zone_detector help
.
- Untuk membuang status
Berikut adalah contoh output dari perintah adb shell cmd time_zone_detector dump
, dengan informasi tentang asal saat ini dan status layanan dicetak tebal:
$ adb shell cmd time_zone_detector dump
TimeZoneDetectorStrategy:
mEnvironment.getCurrentUserId()=0
mEnvironment.getConfiguration(currentUserId)=ConfigurationInternal{mUserId=0, mUserConfigAllowed=true, mTelephonyDetectionSupported=true, mGeoDetectionSupported=true, mAutoDetectionEnabled=true, mLocationEnabled=true, mGeoDetectionEnabled=true}
[Capabilities=TimeZoneCapabilitiesAndConfig{mCapabilities=TimeZoneDetectorCapabilities{mUserHandle=UserHandle{0}, mConfigureAutoDetectionEnabledCapability=40, mConfigureGeoDetectionEnabledCapability=40, mSuggestManualTimeZoneCapability=30}, mConfiguration=TimeZoneConfiguration{mBundle=Bundle[{geoDetectionEnabled=true, autoDetectionEnabled=true}]}}]
mEnvironment.isDeviceTimeZoneInitialized()=true
mEnvironment.getDeviceTimeZone()=Europe/London
Time zone change log:
Manual suggestion history:
...
Geolocation suggestion history:
...
Telephony suggestion history:
...
Informasi tersebut dapat diartikan sebagai berikut:
Kunci | Nilai |
---|---|
mUserConfigAllowed | Apakah pengguna dicegah mengontrol setelan tanggal dan waktu oleh Pengontrol Kebijakan Perangkat . |
mTelephonyDetectionSupported | Apakah perangkat memiliki deteksi zona waktu telepon. |
mGeoDetectionSupported | Apakah perangkat memiliki deteksi zona waktu lokasi. Ini adalah status efektif berdasarkan konfigurasi dan keberadaan setidaknya satu LTZP. |
mAutoDetectionEnabled | Apakah deteksi zona waktu otomatis diaktifkan. |
mLocationEnabled | Beralih lokasi utama. |
mGeoDetectionEnabled | Sakelar asal: `false` menunjukkan asal telepon, dan `true` menunjukkan asal lokasi. |
Informasi histori saran menunjukkan saran apa yang telah dibuat melalui Pengaturan (manual), dan berdasarkan telepon dan asal lokasi.