Halaman ini menjelaskan cara kerja deteksi waktu dan zona waktu di Android. Ini termasuk cara Android secara otomatis mendeteksi waktu dan zona waktu, konfigurasi pilihan untuk produsen perangkat, dan informasi pengujian.
Ringkasan waktu dan zona waktu
Untuk menentukan waktu lokal pengguna untuk ditampilkan di lokasi seperti status Android melacak dua status yang saling terkait tetapi independen:
- Waktu Unix epoch saat ini
- Zona waktu saat ini
Waktu Unix {i>epoch<i} dan zona waktu saat ini adalah status di seluruh perangkat, artinya mereka digunakan bersama oleh semua pengguna perangkat.
Waktu Unix epoch saat ini bukan nilai tetap. IPSG diperbarui secara otomatis menjadi mencerminkan berlalunya waktu. Selain berlalunya waktu yang normal, arus Waktu Unix {i>epoch<i} perangkat disesuaikan jika ditemukan ada kesalahan, untuk misalnya, setelah perangkat kehilangan daya.
Zona waktu saat ini menentukan penyesuaian yang akan dilakukan untuk mengonversi waktu Unix {i>epoch<i} saat ini ke waktu lokal. Misalnya, selama musim panas di Los Angeles Angeles, perangkat mengurangi 7 jam dari waktu Unix {i>epoch<i} saat ini, dan musim dingin, itu mengurangi 8 jam.
Untuk mendukung penghitungan waktu lokal ini, semua perangkat Android memiliki database dari semua aturan zona waktu global. Untuk informasi selengkapnya mengenai aturan zona waktu, lihat Aturan Zona Waktu.
Saat pengguna bepergian ke lokasi baru yang menggunakan zona waktu berbeda, waktu Unix epoch saat ini tidak perlu disesuaikan tetapi pengguna biasanya ingin untuk melihat waktu lokal, bukan waktu di lokasi sebelumnya. Mengubah zona waktu saat ini memastikan bahwa offset yang benar diterapkan ke zona waktu saat ini Waktu Unix epoch untuk menampilkan waktu lokal yang benar bagi lokasi baru.
AOSP memungkinkan pengguna mengontrol secara mandiri apakah waktu dan zona waktu diatur secara otomatis untuk mereka melalui mekanisme berikut.
- Deteksi waktu otomatis: Memastikan perangkat memiliki waktu Unix epoch saat ini.
- Deteksi zona waktu otomatis: Memastikan perangkat memiliki zona waktu saat ini.
Deteksi waktu otomatis
Bagian ini memberikan ringkasan tentang layanan time_detector
yang mengelola
deteksi waktu otomatis, kontrol pengguna, opsi konfigurasi, dan pengujian
spesifikasi
pendukung.
Layanan time_detector
Tujuan
time_detector
layanan, yang ada di perangkat yang menjalankan Android 10 atau lebih tinggi, mengelola waktu otomatis
deteksi. Menyesuaikan waktu Unix epoch perangkat saat ini sesuai kebutuhan ketika
deteksi waktu otomatis diaktifkan.
Layanan time_detector
selalu berada dalam salah satu dari dua status: tidak pasti atau
pasti. Status tertentu atau tidak pasti layanan ditentukan
berdasarkan saran waktu yang diterima dari berbagai sumber.
Jika layanan time_detector
sudah pasti, artinya layanan tersebut telah menerima
dengan informasi waktu Unix {i>epoch<i}, menggantikan {i>epoch<i} Unix saat ini
jika saran waktu berbeda dengan waktu Unix epoch saat ini.
Jika time_detector
tidak pasti, ini tidak menggantikan waktu saat ini. Tujuan
keadaan yang tidak pasti biasanya berarti layanan time_detector
belum menerima waktu
ejaan atau mendapatkan saran gaya. Layanan time_detector
juga menjadi tidak pasti apakah saran
yang diterimanya dianggap terlalu tua untuk digunakan. Usia saran adalah
karena penyesuaian yang menggunakan saran waktu
Unix{i> epoch<i} lama bergantung pada
waktu yang berlalu pada perangkat, yang diasumsikan tidak akurat
dalam jangka panjang.
Untuk menetapkan waktu Unix epoch saat ini secara otomatis, perangkat memiliki berbagai
sumber yang dapat digunakan. Ini disebut origin dalam dokumen ini. Tujuan
Layanan time_detector
memperlakukan urutan saran sebagai berbeda berdasarkan
asal mereka.
Layanan time_detector
bersifat stateful, yang berarti layanan tersebut menyimpan kumpulan data
saran terbaru yang
dibuat oleh setiap titik asal. Saran baru dibuat untuk
time_detector
jika origin memiliki informasi waktu epoch Unix yang lebih baru
yang tersedia. Layanan time_detector
mengevaluasi kembali saran baru dan yang sudah ada
dan memperbarui status perangkat saat saran diterima.
Meskipun waktu UTC secara internasional disepakati, ada berbagai alasan mengapa menetapkan waktu Unix {i>epoch<i} saat ini tidak selalu mudah untuk sebuah Perangkat Android:
- Waktu Unix {i>epoch<i} adalah sistem pengaturan waktu yang sedikit berbeda dari waktu UTC. Konversi di antara keduanya memerlukan pengetahuan tentang kapan detik lompatan terjadi dan bagaimana mereka ditangani oleh origin.
- Origin mungkin hanya tersedia pada waktu tertentu atau dalam situasi. Misalnya, jika origin memerlukan konektivitas jaringan, itu mungkin hanya tersedia saat perangkat terhubung ke internet.
- Asal-usulnya mungkin tidak akurat, tidak akurat, atau memiliki kesalahan. Sebagai contoh, jika menara BTS telepon tidak melacak "waktu universal" dengan benar, asal telepon mungkin memberikan saran waktu yang tidak akurat.
- Mungkin ada ketidakakuratan saat mendapatkan waktu epoch Unix. Misalnya, penundaan jaringan, {i>buffer<i}, atau penjadwalan proses dapat menyebabkan waktu Unix {i>epoch<i} menjadi tidak akurat.
- Jam referensi digunakan untuk menyesuaikan saran waktu berlalu karena saran yang diterima mungkin tidak akurat.
Ada dua asal deteksi waktu utama yang dikonfigurasi untuk digunakan secara default di AOSP:
- Jaringan: Menggunakan Jaringan server waktu Protokol Waktu (NTP).
- Telepon: Menggunakan telepon Identitas Jaringan dan Zona Waktu (NITZ) sinyal internal.
Baik asal telepon maupun jaringan memerlukan konektivitas ke jaringan eksternal, yang tidak selalu tersedia.
Mulai Android 12, Android juga mendukung origin berikut, yang tidak dikonfigurasi untuk digunakan secara default:
- GNSS: Menggunakan GPS penyedia lokasi untuk mendapatkan waktu dari sumber GNSS.
- Eksternal: Generik yang memungkinkan produsen perangkat mengintegrasikan sumber Waktu Unix {i>epoch<i}.
Setelan waktu
Pengguna dapat mengaktifkan deteksi waktu otomatis di Sistem > Tanggal dan Waktu di Aplikasi Setelan AOSP.
Gambar 1. Deteksi waktu otomatis di Setelan.
Tabel berikut menjelaskan kontrol pengguna untuk deteksi waktu di AOSP Aplikasi Setelan.
*Pada Android 11 dan yang lebih rendah, setelan ini diberi label Gunakan waktu yang disediakan jaringan |
|||
Lokasi Setelan AOSP | Nama Setelan AOSP | Cakupan | Perilaku |
---|---|---|---|
Sistem > Tanggal dan Waktu | Setel waktu secara otomatis* | Semua pengguna | Tombol. Jika aktif, perangkat bertanggung jawab untuk mendeteksi Unix saat ini waktu epoch. Jika dinonaktifkan, pengguna akan diberi kontrol untuk menyetel waktu perangkat secara manual. |
Ketika pengguna memasukkan waktu secara manual, mereka memasukkan waktu lokal, bukan epoch Unix baik. Waktu Unix epoch saat ini dihitung menggunakan zona waktu saat ini untuk memperoleh waktu Unix {i>epoch<i}.
Konfigurasi
Produsen perangkat dapat mengonfigurasi layanan time_detector
dengan berbagai cara,
seperti sumber yang harus digunakan dan
cara memprioritaskan sinyal dari sana.
Prioritas origin
Mulai Android 12, produsen perangkat dapat mengubah
core/res/res/values/config.xml
file konfigurasi untuk menentukan waktu
untuk disertakan dalam deteksi waktu
otomatis, dan prioritas yang
time_detector
mempertimbangkan origin ini.
Untuk perangkat yang menjalankan Android 11 atau yang lebih rendah, prioritas origin di-hardcode ke ["telephony", "network"]
, yang berarti 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 origin untuk digunakan secara default. Saran waktu jaringan adalah diprioritaskan di atas saran waktu telepon. Produsen perangkat dapat mengubah urutan origin untuk kembali ke perilaku di Android 11 atau yang lebih rendah, di mana telepon diberikan prioritas yang lebih tinggi.
Secara default, jika saran valid dengan prioritas tertinggi cocok dengan
waktu jam sistem saat ini menjadi dalam beberapa detik, waktu perangkat tidak akan
diubah. Hal ini dilakukan untuk menghindari timbulnya pekerjaan bagi aplikasi terinstal yang mendengarkan
ACTION_TIME_CHANGED
.
Nilai origin yang diizinkan adalah:
Batas waktu yang diizinkan
Android 14 memperkenalkan batas waktu atas untuk waktu
saran yang diterima oleh layanan time_detector
. Jika perangkat mendukung
Proses 32-bit, framework menetapkan batas waktu atas untuk mencegah perangkat
dari penggunaan saran waktu yang dapat memicu masalah Y2038.
Android 12 memperkenalkan batas
waktu lebih rendah yang digunakan untuk
memvalidasi saran waktu yang diterima oleh layanan time_detector
. Semakin rendah
nilai batas waktu yang digunakan untuk saran otomatis disetel dari stempel waktu build.
Fitur ini berfungsi dengan prinsip bahwa waktu yang valid tidak boleh sebelum waktu
image sistem telah dibangun. Jika saran waktu berada sebelum batas waktu bawah,
Layanan time_detector
akan menghapus saran karena tidak dapat valid jika
stempel waktu build sudah benar.
Untuk perangkat yang menjalankan Android 11 atau yang lebih rendah, layanan time_detector
tidak
memvalidasi saran waktu
Unix{i> epoch<i} yang masuk.
Proses debug dan pengujian waktu
Bagian ini menyediakan informasi tentang cara men-debug dan menguji perilaku
layanan time_detector
dan komponen lain yang digunakan bersama oleh semua origin.
Berinteraksi dengan layanan time_detector
Untuk melihat konfigurasi dan status layanan time_detector
Layanan time_detector
, gunakan:
adb shell cmd time_detector dump
Agar dapat melihat perintah tambahan untuk proses debug dan menguji 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 dalam produksi.
Untuk mengetahui detailnya, lihat
Mengonfigurasi perangkat menggunakan layanan device_config.
Untuk memvalidasi deteksi waktu otomatis, penguji harus mengetahui origin mana
Layanan time_detector
sedang digunakan. Berikut ini contoh {i>output<i} dari
perintah adb shell cmd time_detector dump
, dengan informasi tentang
asal dan status layanan saat ini 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 ditafsirkan sebagai berikut:
Key | Nilai |
---|---|
mEnvironment.isAutoTimeDetectionEnabled() |
Apakah deteksi waktu otomatis diaktifkan. |
mEnvironment.autoTimeLowerBound() |
Batas bawah saat ini yang digunakan untuk memvalidasi saran waktu. |
mEnvironment.autoOriginPriorities() |
Asal yang digunakan dan urutan prioritasnya. |
Log perubahan waktu menunjukkan peristiwa saat layanan time_detector
memiliki
mengubah waktu
Unix {i>epoch<i} saat ini dari perangkat.
Informasi histori saran menunjukkan saran apa yang telah dibuat oleh setiap tempat asal.
Deteksi zona waktu otomatis
Bagian ini memberikan ringkasan tentang layanan time_zone_detector
yang
mengelola deteksi zona waktu otomatis, kontrol pengguna di setelan, telepon, dan
deteksi zona waktu lokasi, dan detail pengujian.
Layanan time_zone_detector
Tujuan
time_zone_detector
layanan, yang ada di perangkat yang menjalankan Android 11 atau yang lebih baru, mengelola waktu otomatis
deteksi zona. Menyesuaikan zona waktu perangkat saat ini sesuai kebutuhan ketika
deteksi zona waktu otomatis diaktifkan.
Ketika deteksi zona waktu otomatis diaktifkan, time_zone_detector
dapat aktif
salah satu dari dua status: tidak pasti dan pasti.
Saat layanan time_zone_detector
berada dalam status tertentu, ini berarti
Layanan time_zone_detector
telah menerima informasi zona waktu yang kuat, yang
dapat menyebabkannya mengganti zona waktu saat ini. Ketika merasa tidak pasti,
berarti ia belum menerima informasi atau hanya
informasi dengan tingkat keyakinan rendah, yang
berarti itu tidak akan mengganti zona waktu saat ini.
Status tertentu layanan time_zone_detector
dapat menyertakan status yang
time_zone_detector
tidak memiliki informasi zona waktu untuk digunakan, atau yang memilikinya
beberapa zona waktu untuk dipilih. Status tersebut adalah sebagai berikut:
- Status tertentu dengan nol zona waktu dimasukkan saat perangkat
di suatu tempat tanpa zona waktu, seperti di perairan internasional atau di
wilayah yang disengketakan. Keadaan ini mirip dengan keadaan yang tidak pasti, tetapi menunjukkan
bahwa
time_zone_detector
tidak perlu melakukan tindakan lebih lanjut untuk mencoba menentukan zona waktu. - Negara bagian tertentu dengan beberapa zona waktu
dimasukkan di mana ada
ambiguitas atau kondisi pembatas. Dalam status ini, jika zona waktu saat ini adalah
salah satu zona waktu yang sudah diketahui
time_zone_detector
, zona waktu saat ini dibiarkan apa adanya. Jika tidak, salah satu waktu yang tersedia zona yang digunakan. Hal ini memberitime_zone_detector
elemen loyalitas jika pengguna telah memilih zona waktu mereka secara manual sebelumnya atau sebagai perangkat mendekati batas.
Status tertentu atau tidak pasti layanan time_zone_detector
ditentukan oleh
saran zona waktu yang dikirim oleh algoritma.
Umumnya, saran tersedia dalam dua jenis yang hampir sama dengan kemungkinan status
dari time_zone_detector
: pasti dan tidak pasti. Berikut ini adalah
contoh jenis saran:
jenis =
uncertain
,zoneIds = []
- Algoritma tidak mengetahui zona waktu.
jenis =
certain
,zoneIds = ["Europe/London"]
- Algoritma memastikan bahwa zona tersebut berada di Eropa/London.
jenis =
certain
,zoneIds = []
`- Algoritma sudah pasti, tetapi tidak ada ID zona yang terkait dengan lokasi saat ini.
jenis =
certain
,zoneIds = ["America/Denver", "America/Phoenix"]
- Algoritma yakin bahwa jawabannya adalah salah satu dari dua zona, tetapi tidak dapat memilih antara "Amerika/Denver" dan "America/Phoenix".
Layanan time_zone_detector
memperlakukan urutan saran sebagai hal yang berbeda
berdasarkan algoritma mereka. Bergantung pada algoritma, saran juga dapat
berisi metadata yang menunjukkan
seberapa yakin algoritma tersebut.
Layanan time_zone_detector
bersifat stateful, yang berarti layanan tersebut menyimpan kumpulan data
saran terbaru yang
dibuat oleh setiap algoritma. Saran baru dikirim
ke layanan time_zone_detector
jika saran sebelumnya tidak lagi
benar; yaitu, jika algoritma sekarang memiliki saran
yang berbeda, atau jika memiliki
kehilangan kemampuan untuk mendeteksi zona waktu. Layanan time_zone_detector
mengevaluasi kembali saran baru dan yang sudah ada serta memperbarui status perangkat saat
saran diterima.
Android mendukung dua algoritma untuk deteksi zona waktu:
- Telepon
- Lokasi
Layanan time_zone_detector
biasanya menggunakan
satu algoritma untuk
menentukan zona waktu. Saat algoritma lokasi didukung pada perangkat,
algoritma yang digunakan perangkat ditentukan berdasarkan
Setelan zona waktu dikonfigurasi oleh pengguna. Jika
penggunaan algoritma menjadi tidak pasti dengan zona waktu, time_zone_detector
biasanya tidak menggunakan saran
dari algoritma yang berbeda. Saran
yang terkait dengan algoritma yang tidak
digunakan dapat disimpan di memori oleh
time_zone_detector
, tetapi tidak digunakan kecuali algoritma
perubahan. Saat pengguna mengubah setelan untuk deteksi zona waktu otomatis
dan algoritmanya berubah, saran terbaru yang tersedia untuk
algoritma baru digunakan.
Untuk detail tentang situasi di mana beberapa algoritma digunakan untuk menentukan zona waktu, lihat Mode penggantian telepon.
Mode penggantian telepon
Pada perangkat yang menjalankan Android 13 dan yang lebih tinggi,
Layanan time_zone_detector
mendukung mode penggantian telepon. Mode ini
memungkinkan Android menggunakan saran deteksi telepon untuk sementara dalam situasi
deteksi lokasi tidak dapat mendeteksi zona waktu atau tempat deteksi lokasi
memakan waktu lebih lama untuk mendeteksi zona waktu
dibandingkan deteksi telepon.
Mode penggantian telepon berlaku untuk perangkat yang lokasi, baik telepon maupun lokasi, deteksi didukung, dan jika pengguna telah mengaktifkan Gunakan lokasi untuk menyetel zona waktu di Setelan zona waktu. Mode ini diaktifkan secara otomatis saat perangkat dimulai ulang, dan saat mode pesawat dinonaktifkan.
Di Android 14 dan yang lebih tinggi, penggantian telepon dapat dipicu melalui API pelaporan status LTZP, yaitu, jika LTZP melaporkan informasinya tidak pasti dan kemampuannya untuk mendeteksi lokasi atau zona waktu berkurang karena lingkungannya, mode fallback telepon dipicu.
Saat dalam mode penggantian telepon, layanan time_zone_detector
menggunakan telepon
saran seolah-olah deteksi lokasi dinonaktifkan hingga algoritme lokasi
memberikan saran tertentu. Setelah menerima saran tertentu, telepon
mode penggantian dinonaktifkan dan saran lokasi digunakan secara eksklusif.
Untuk detail konfigurasi mode penggantian telepon, lihat Konfigurasi deteksi zona waktu.
Setelan zona waktu
Pengguna dapat mengaktifkan dan mengonfigurasi setelan untuk deteksi zona waktu otomatis di aplikasi Setelan AOSP.
Gambar 2. Deteksi zona waktu otomatis di Setelan.
Tabel berikut menjelaskan kontrol pengguna untuk deteksi zona waktu di Aplikasi Setelan AOSP.
*Di Android 11 dan yang lebih lama, setelan ini diberi label Gunakan zona waktu yang disediakan jaringan |
|||
Lokasi Setelan AOSP | Nama Setelan AOSP | Cakupan | Perilaku |
---|---|---|---|
Sistem > Tanggal dan Waktu | Setel zona waktu secara otomatis* | Semua pengguna | Tombol. Jika aktif, perangkat bertanggung jawab untuk mendeteksi waktu saat ini zona waktu. Jika dinonaktifkan, pengguna akan diberi kontrol untuk menyetel zona waktu secara manual. |
Sistem > Tanggal dan Waktu | Gunakan lokasi untuk menyetel zona waktu | Pengguna saat ini | Tombol. Tersedia dari Android 12. Tombol ini adalah hanya ditampilkan jika deteksi zona waktu lokasi didukung pada perangkat. Untuk perubahan yang diperkenalkan di Android 14, lihat Perangkat yang hanya mendukung deteksi zona waktu lokasi. |
Lokasi | Gunakan lokasi | Pengguna saat ini | Tombol. Mengizinkan atau mencegah penggunaan lokasi perangkat secara umum. Nilainya adalah relevan jika deteksi zona waktu lokasi didukung pada perangkat. |
Berikut ringkasan perilaku perangkat untuk zona waktu berdasarkan setelan yang dipilih oleh pengguna:
[Date and Time] Setel zona waktu secara otomatis: NONAKTIF
- Pengguna harus memilih zona waktu secara manual.
[Date and Time] Setel zona waktu secara otomatis: AKTIF
[Lokasi] Gunakan lokasi: NONAKTIF
- Sinyal telepon digunakan untuk mendeteksi zona waktu.
[Lokasi] Gunakan lokasi: AKTIF
[Tanggal dan Waktu] Gunakan lokasi untuk menyetel zona waktu: AKTIF
- Lokasi digunakan untuk mendeteksi zona waktu.
[Tanggal dan Waktu] Gunakan lokasi untuk menyetel zona waktu: NONAKTIF
- Sinyal telepon digunakan untuk mendeteksi waktu zona waktu.
Perangkat multi-pengguna
Karena beberapa setelan yang terlibat tercakup dalam pengguna saat ini, perilaku deteksi zona waktu perangkat dapat berubah saat pengguna saat ini perubahan pada perangkat Android multi-pengguna.
Tombol Gunakan lokasi untuk menyetel zona waktu dicakup untuk pengguna saat ini dan tidak dibatasi oleh kebijakan perangkat, yang berarti pengguna selalu dapat mengubah nilai, meskipun tombol Setel zona waktu otomatis nonaktif atau jika setelan kontrol waktu atau zona waktu dibatasi oleh Pengontrol Kebijakan Perangkat.
Perangkat yang hanya mendukung algoritma deteksi zona waktu lokasi
Bagian ini menjelaskan perilaku untuk perangkat yang hanya mendukung lokasi algoritme.
Android 14 dan yang lebih baru
- Opsi Gunakan lokasi tidak ditampilkan kepada pengguna di Setelan AOSP aplikasi dan perangkat berperilaku seolah-olah opsi Gunakan lokasi diaktifkan.
- Nilai setelan
SettingsProvider
cakupan penggunalocation_time_zone_detection_enabled
diabaikan. Nilai ini mencatat preferensi pengguna pada jenis perangkat lain.
Android 12 atau Android 13
- Opsi Gunakan lokasi dapat dilihat oleh pengguna di aplikasi Setelan AOSP dan pengguna dapat menonaktifkan opsi tersebut. Jika opsi ini dinonaktifkan, perangkat tidak akan mendeteksi zona waktu secara otomatis.
Perilaku saat beralih ke dan dari deteksi otomatis
Ketika pengguna mengganti deteksi zona waktu dari manual ke otomatis,
time_zone_detector
mungkin sudah tahu tentang zona waktu saat ini. Jika demikian,
saat pengguna mengaktifkan deteksi otomatis, zona waktu perangkat mungkin diubah
pada saat yang sama agar sesuai dengan opini layanan time_zone_detector
.
Demikian pula, jika pengguna membuat perubahan pada Setelan yang menyebabkan perubahan
algoritme saat ini layanan time_zone_detector
, time_zone_detector
mungkin
telah menerima saran untuk algoritma baru, sehingga waktu yang diperlukan perangkat
mungkin diubah agar sesuai dengan opini layanan time_zone_detector
segera.
Deteksi zona waktu telepon
Deteksi zona waktu telepon menggunakan sinyal telepon untuk menentukan kondisi saat ini serta region dan zona waktu lainnya. Untuk mengetahui informasi selengkapnya, lihat Zona Waktu Telepon Deteksi.
Deteksi zona waktu lokasi
Deteksi zona waktu lokasi tersedia di Android 12 atau yang lebih tinggi. Ini adalah fitur deteksi zona waktu otomatis opsional yang memungkinkan perangkat untuk menggunakan lokasinya untuk menentukan zona waktu saat ini.
Layanan location_time_zone_manager
, diperkenalkan di
Android 12, berjalan di
server sistem dan berisi kode yang
bertanggung jawab untuk mengirimkan lokasi
saran algoritma 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 mengadopsi fitur tersebut pada perangkat.
Membandingkan deteksi lokasi dan telepon
Tabel berikut memberikan perbandingan antara kelebihan dan kekurangan menggunakan sinyal lokasi daripada sinyal telepon untuk deteksi zona waktu.
Deteksi telepon | Deteksi lokasi | |
---|---|---|
Ketepatan | Bervariasi menurut negara. Bergantung pada MCC, ketepatan dan ketersediaan NITZ. |
Bergantung pada konfigurasi fitur atau komponen plugin. Tingkat ketepatan biasanya bervariasi berdasarkan:
|
Kapasitas Update | Deteksi telepon bergantung pada file yang terdapat dalam Waktu yang dapat diperbarui Modul Data Zona (com.android.tzdata APEX). | Bergantung pada konfigurasi fitur atau komponen plugin. Kapasitas update biasanya bergantung pada apakah perangkat menggunakan server atau klien data peta zona waktu. Perhatikan: Data peta zona waktu tidak terdapat dalam kolom Waktu Modul Data Zona digunakan untuk memperbarui salinan TZDB Android dan pada waktu lainnya informasi zona. 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 setelan lokasi pengguna, plugin yang digunakan, dan biasanya aplikasi lain apa yang meminta lokasi. |
Ketersediaan | Khusus perangkat telepon. Biasanya memerlukan SIM yang berfungsi. | Deteksi lokasi bergantung pada penyedia lokasi yang tersedia. |
Privasi pengguna
Zona waktu pilihan pengguna biasanya ditentukan oleh lokasi geografisnya lokasi HTTP/HTTPS. Lokasi adalah data sensitif. Pengguna mungkin khawatir tentang mengetahui lokasi mereka 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 spesifiknya, deteksi zona waktu dapat dilakukan dengan mode pasif atau aktif berarti:
- Pasif: Sesuatu di lingkungan perangkat memberi tahu perangkat tentang zona waktu yang digunakan di lingkungan tersebut.
- Aktif: Perangkat harus menentukan zona waktu untuk dirinya sendiri dan tergantung pada pengaturan privasi dan persetujuan mereka, memperoleh di lokasi perangkat untuk melakukannya. Kemudian perangkat dapat membagikan lokasinya dengan pihak eksternal layanan IT perusahaan mereka. Lihat diskusi di bawah untuk mengetahui detail tentang privasi dan izin pengguna.
Deteksi pasif, seperti pada algoritma telepon, tidak memiliki implikasi privasi bagi pengguna.
Deteksi aktif, seperti pada algoritme 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 masing-masing algoritma yang diharapkan aktif. Selain itu, kode platform AOSP tidak menangani lokasi itu sendiri secara langsung: deteksi lokasi dan pemetaan lokasi ke ID zona waktu diserahkan kepada plugin komponen yang dikonfigurasi oleh produsen perangkat.
Untuk detail selengkapnya tentang fitur privasi pengguna, lihat Zona Waktu Lokasi Deteksi.
Konfigurasi
Produsen perangkat dapat mengonfigurasi layanan time_zone_detector
agar dapat diubah
perilakunya. Bagian ini menjelaskan opsi konfigurasi untuk konfigurasi
perilaku layanan time_zone_detector
. Untuk detail konfigurasi untuk
algoritma deteksi telepon dan zona waktu, lihat
Deteksi Zona Waktu Telepon
dan
Deteksi Zona Waktu Lokasi.
Konfigurasi AOSP dasar berada di
frameworks/base/core/res/res/values/config.xml
Kunci konfigurasi | Nilai AOSP | Deskripsi |
---|---|---|
config_supportTelephonyTimeZoneFallback |
true |
Saat true , time_zone_detector menggunakan telepon
mode penggantian. Fitur ini tersedia untuk Android 13
dan lebih tinggi.
|
Mengubah perilaku default perangkat
Dalam AOSP, deteksi zona waktu otomatis diaktifkan secara default dengan
Setelan auto_time_zone
ditetapkan ke true
. Untuk menonaktifkan deteksi waktu otomatis
secara default, tetapkan nilai def_auto_time_zone
yang ditentukan di
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
ke false
.
Saat memulihkan cadangan dari perangkat lain, framework akan memperbarui nilai
setelan auto_time_zone
secara default. Jika ingin memastikan bahwa
setelan tidak dipulihkan dari cadangan, sertakan auto_time_zone
dalam
Array restore_blocked_global_settings
yang ditentukan di
frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml
.
Proses debug dan pengujian zona waktu
Bagian ini menyediakan informasi tentang cara men-debug dan menguji perilaku
layanan time_zone_detector
dan komponen lain yang digunakan bersama oleh semua
algoritme.
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 diambil dari server jarak jauh
berdasarkan kode eksklusif (non-AOSP). Saat menggunakan nilai device_config
untuk pengujian,
terutama selama pengujian manual yang berjalan lama, perangkat mungkin menyinkronkan
yang akan mereset flag dan menghapus nilai yang ditetapkan untuk pengujian.
Di Android 12 atau yang lebih baru, untuk mencegah tanda sementara sinkronisasi, gunakan:
adb shell cmd device_config set_sync_disabled_for_tests persistent
Untuk memulihkan sinkronisasi tanda setelah pengujian, gunakan:
adb shell cmd device_config set_sync_disabled_for_tests none
Setelah memulihkan sinkronisasi tanda, mulai ulang perangkat.
Untuk informasi selengkapnya, 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
Agar dapat melihat perintah tambahan untuk proses debug dan menguji deteksi zona waktu, gunakan:
adb shell cmd time_zone_detector help
Output bantuan juga menjelaskan properti layanan device_config
yang dapat
digunakan untuk memengaruhi perilaku layanan time_zone_detector
untuk pengujian
atau dalam tahap produksi. Untuk mengetahui detailnya, lihat
Mengonfigurasi perangkat menggunakan layanan device_config.
Untuk memvalidasi deteksi zona waktu, penguji harus mengetahui algoritma mana
time_zone_detector
sedang digunakan. Untuk memahami dan memengaruhi algoritma saat ini
dari time_zone_detector
, gunakan salah satu opsi berikut:
- Periksa secara visual melalui UI Setelan. Untuk informasi selengkapnya, lihat Setelan zona waktu.
Gunakan command line melalui adb:
- Untuk membuang status
time_zone_detector
, gunakanadb shell cmd time_zone_detector dump
- Untuk mengubah setelan 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
dan status layanan dalam cetak 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 ditafsirkan sebagai berikut:
Key | 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 mendukung deteksi zona waktu lokasi atau tidak. Ini adalah efektif berdasarkan konfigurasi dan kehadiran setidaknya satu LTZP. |
mAutoDetectionEnabled |
Apakah deteksi zona waktu otomatis diaktifkan atau tidak. |
mLocationEnabled |
Tombol lokasi utama. |
mGeoDetectionEnabled |
Tombol algoritma: false menunjukkan algoritma telepon,
dan true menunjukkan algoritme lokasi. |
Informasi histori saran menunjukkan saran yang telah dibuat melalui Setelan (manual), serta oleh algoritme telepon dan lokasi.