Halaman ini menjelaskan cara kerja deteksi waktu dan zona waktu di Android. Hal ini mencakup cara Android mendeteksi waktu dan zona waktu secara otomatis, opsi konfigurasi untuk produsen perangkat, dan informasi pengujian.
Ringkasan waktu dan zona waktu
Untuk menentukan waktu lokal pengguna untuk ditampilkan di lokasi seperti status bar, Android melacak dua status terkait tetapi independen:
- Waktu epoch Unix saat ini
- Zona waktu saat ini
Waktu epoch Unix saat ini dan zona waktu saat ini adalah status di seluruh perangkat, yang berarti bahwa keduanya digunakan bersama oleh semua pengguna perangkat.
Waktu epoch Unix saat ini bukan nilai tetap. Widget ini otomatis diperbarui untuk mencerminkan berjalannya waktu. Selain berlalunya waktu seperti biasa, waktu epoch Unix saat ini dari perangkat disesuaikan jika terbukti salah, misalnya, setelah perangkat kehilangan daya.
Zona waktu saat ini menentukan penyesuaian yang harus dilakukan untuk mengonversi waktu epoch Unix saat ini menjadi waktu lokal. Misalnya, selama musim panas di Los Angeles, perangkat mengurangi 7 jam dari waktu epoch Unix saat ini, dan pada musim dingin, perangkat mengurangi 8 jam.
Untuk mendukung penghitungan waktu lokal ini, semua perangkat Android memiliki database semua aturan zona waktu global. Untuk mengetahui informasi selengkapnya tentang aturan zona waktu, lihat Aturan zona waktu.
Saat pengguna bepergian ke lokasi baru yang menggunakan zona waktu berbeda, waktu epoch Unix saat ini tidak perlu disesuaikan, tetapi pengguna biasanya ingin melihat waktu setempat, bukan waktu di lokasi sebelumnya. Mengubah zona waktu saat ini akan memastikan bahwa offset yang benar diterapkan ke waktu epoch Unix saat ini untuk menampilkan waktu lokal yang benar untuk lokasi baru.
AOSP memungkinkan pengguna mengontrol secara independen apakah waktu dan zona waktu disetel secara otomatis untuk mereka melalui mekanisme berikut.
- Deteksi waktu otomatis: Memastikan 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 ringkasan layanan time_detector
yang mengelola
deteksi waktu otomatis, kontrol pengguna, opsi konfigurasi, dan detail
pengujian.
Layanan time_detector
Layanan time_detector
, yang ada di perangkat yang menjalankan Android 10 atau yang lebih tinggi, mengelola deteksi waktu otomatis. Menyesuaikan waktu epoch Unix saat ini di perangkat sesuai kebutuhan saat deteksi waktu otomatis diaktifkan.
Layanan time_detector
selalu berada dalam salah satu dari dua status: certain
atau
uncertain
. Status layanan yang pasti atau tidak pasti ditentukan oleh saran
waktu yang diterima dari berbagai sumber.
Jika layanan time_detector
sudah pasti, artinya layanan tersebut telah menerima saran dengan informasi waktu epoch Unix, layanan tersebut akan menggantikan waktu epoch Unix saat ini jika saran waktu berbeda dengan waktu epoch Unix saat ini.
Jika time_detector
tidak pasti, time_detector
tidak akan menggantikan 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 diterimanya dianggap terlalu lama untuk digunakan. Usia saran dipertimbangkan karena penyesuaian menggunakan saran waktu epoch Unix lama bergantung pada jam real-time yang telah berlalu di perangkat, yang diasumsikan tidak akurat dalam jangka waktu yang lama.
Untuk menetapkan waktu epoch Unix saat ini secara otomatis, perangkat memiliki berbagai
sumber yang dapat digunakan. Hal ini disebut asal dalam dokumen ini. Layanan
time_detector
memperlakukan urutan saran sebagai berbeda berdasarkan
asalnya.
Layanan time_detector
bersifat stateful, yang berarti layanan ini menyimpan catatan saran terbaru yang dibuat oleh setiap asal. Saran baru dibuat untuk
time_detector
jika suatu asal memiliki informasi waktu epoch Unix yang lebih baru. Layanan time_detector
mengevaluasi ulang 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 epoch Unix saat ini tidak selalu mudah bagi perangkat berbasis Android:
- Waktu epoch Unix adalah sistem pencatatan waktu yang sedikit berbeda dari waktu UTC. Konversi antara keduanya memerlukan pengetahuan tentang kapan detik kabisat terjadi dan cara penanganannya oleh origin.
- Asal mungkin hanya tersedia pada waktu tertentu atau dalam keadaan tertentu. Misalnya, jika asal memerlukan konektivitas jaringan, asal tersebut mungkin hanya tersedia saat perangkat terhubung ke internet.
- Asal mungkin tidak akurat atau tidak presisi, atau memiliki kesalahan. Misalnya, jika menara BTS telepon tidak melacak waktu UTC dengan benar, asal telepon mungkin memberikan saran waktu yang tidak akurat.
- Mungkin ada ketidakakuratan yang terjadi saat mendapatkan waktu epoch Unix. Misalnya, penundaan jaringan, buffering, atau penjadwalan proses dapat menyebabkan waktu epoch Unix menjadi tidak akurat.
- Waktu referensi yang digunakan untuk menyesuaikan saran waktu yang telah berlalu sejak saran diterima mungkin tidak akurat.
Ada dua asal deteksi waktu utama yang dikonfigurasi untuk digunakan secara default di AOSP:
- Jaringan: Menggunakan server waktu Network Time Protocol (NTP).
- Telepon: Menggunakan sinyal telepon Network Identity and Time Zone (NITZ).
Telefoni dan asal 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 penyedia lokasi GPS untuk mendapatkan waktu dari sumber GNSS.
- Eksternal: Asal generik yang memungkinkan produsen perangkat mengintegrasikan sumber waktu epoch Unix mereka sendiri.
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 aplikasi Setelan AOSP.
*Di 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 otomatis* | Semua pengguna | Tombol. Jika aktif, perangkat bertanggung jawab untuk mendeteksi waktu epoch Unix saat ini. Jika nonaktif, pengguna akan diberi kontrol untuk menyetel waktu perangkat secara manual. |
Saat pengguna memasukkan waktu secara manual, mereka memasukkan waktu lokal, bukan waktu epoch Unix. Waktu epoch Unix saat ini dihitung dengan menggunakan zona waktu saat ini untuk mendapatkan waktu epoch Unix.
Konfigurasi
Produsen perangkat dapat mengonfigurasi layanan time_detector
dengan berbagai cara, seperti asal yang akan digunakan dan cara memprioritaskan sinyal dari asal tersebut.
Prioritas asal
Mulai Android 12, produsen perangkat dapat mengubah file konfigurasi core/res/res/values/config.xml
untuk menentukan asal waktu yang akan disertakan dalam deteksi waktu otomatis, dan prioritas yang digunakan time_detector
untuk mempertimbangkan asal waktu ini.
Untuk perangkat yang menjalankan Android 11 atau yang lebih rendah, prioritas asal dikodekan secara permanen 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 asal yang akan digunakan secara default. Saran waktu jaringan diprioritaskan di atas saran waktu telepon. Produsen perangkat dapat mengubah urutan asal untuk mengembalikan perilaku di Android 11 atau yang lebih rendah, dengan memberikan prioritas yang lebih tinggi pada teleponi.
Secara default, jika saran valid dengan prioritas tertinggi cocok dengan waktu jam sistem saat ini di perangkat dalam beberapa detik, waktu perangkat tidak akan diubah. Hal ini dilakukan untuk menghindari pembuatan tugas bagi aplikasi terinstal yang memproses intent
ACTION_TIME_CHANGED
.
Nilai asal yang diizinkan adalah:
Batas waktu yang diizinkan
Android 14 memperkenalkan batas waktu atas untuk saran waktu yang diterima oleh layanan
time_detector
. Jika perangkat mendukung proses 32-bit, framework
menetapkan batas waktu atas untuk mencegah perangkat menggunakan saran waktu yang
dapat memicu masalah Y2038.
Android 12 memperkenalkan batas waktu bawah yang digunakan untuk memvalidasi saran waktu yang diterima oleh layanan time_detector
. Nilai batas waktu yang lebih rendah
yang digunakan untuk saran otomatis ditetapkan dari stempel waktu build. Hal ini berfungsi berdasarkan prinsip bahwa waktu yang valid tidak mungkin terjadi sebelum image sistem perangkat dibuat. Jika saran waktu sebelum batas waktu yang lebih rendah, 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 epoch Unix yang masuk.
Proses debug dan pengujian waktu
Bagian ini memberikan informasi tentang cara men-debug dan menguji perilaku
layanan time_detector
dan komponen lain yang dibagikan oleh semua origin.
Berinteraksi dengan layanan time_detector
Untuk melihat konfigurasi dan status layanan time_detector
, gunakan:time_detector
adb shell cmd time_detector dump
Untuk melihat perintah tambahan untuk proses debug 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 dalam produksi.
Untuk mengetahui detailnya, lihat Mengonfigurasi perangkat menggunakan layanan device_config.
Untuk memvalidasi deteksi waktu otomatis, penguji harus mengetahui asal yang digunakan oleh layanan time_detector
. Berikut adalah contoh output dari perintah adb shell cmd time_detector dump
, dengan informasi tentang asal dan status layanan saat ini dalam huruf 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() |
Origin yang digunakan dan urutan prioritas. |
Log perubahan waktu menunjukkan saat layanan time_detector
telah mengubah waktu epoch Unix saat ini di perangkat.
Informasi histori saran menunjukkan saran apa yang telah dibuat oleh setiap asal.
Deteksi zona waktu otomatis
Bagian ini memberikan ringkasan layanan time_zone_detector
yang mengelola deteksi zona waktu otomatis, kontrol pengguna di setelan, deteksi zona waktu lokasi dan telepon, serta detail pengujian.
Layanan time_zone_detector
Layanan time_zone_detector
, yang ada di perangkat yang menjalankan Android 11 atau
yang lebih tinggi, mengelola deteksi zona waktu otomatis. Aplikasi ini menyesuaikan zona waktu saat ini perangkat sesuai kebutuhan saat deteksi zona waktu otomatis diaktifkan.
Jika deteksi zona waktu otomatis diaktifkan, time_zone_detector
dapat berada dalam
salah satu dari dua status: certain
dan uncertain
.
Saat layanan time_zone_detector
berada dalam status tertentu, ini berarti layanan
time_zone_detector
telah menerima informasi zona waktu yang kuat, yang dapat menyebabkan
layanan tersebut menggantikan zona waktu saat ini. Jika tidak pasti, artinya
API tidak menerima informasi atau hanya menerima informasi dengan tingkat keyakinan rendah, yang berarti
API tidak akan mengganti zona waktu saat ini.
Status tertentu layanan time_zone_detector
dapat mencakup status saat time_zone_detector
tidak memiliki informasi zona waktu untuk digunakan, atau saat time_zone_detector
memiliki beberapa zona waktu untuk dipilih. Status tersebut adalah sebagai berikut:
- Status tertentu dengan nol zona waktu dimasukkan saat perangkat berada di suatu tempat tanpa zona waktu, seperti di perairan internasional atau di area sengketa.
Status ini mirip dengan status tidak pasti, tetapi menunjukkan bahwa
time_zone_detector
tidak perlu melakukan tindakan lebih lanjut untuk mencoba menentukan zona waktu. - Status tertentu dengan beberapa zona waktu dimasukkan jika ada ambiguitas atau kondisi batas. Dalam status ini, jika zona waktu saat ini adalah salah satu zona waktu yang
diyakini
time_zone_detector
, zona waktu saat ini akan tetap seperti apa adanya. Jika tidak, salah satu zona waktu yang tersedia akan digunakan. Hal ini memberitime_zone_detector
elemen kelekatan jika pengguna telah memilih zona waktunya secara manual sebelumnya atau saat perangkat mendekati perbatasan.
Status pasti atau tidak pasti layanan time_zone_detector
ditentukan oleh
saran zona waktu yang dikirim oleh algoritma.
Umumnya, saran terdiri dari dua jenis yang sangat cocok dengan kemungkinan status
time_zone_detector
: certain
dan uncertain
. Berikut adalah contoh jenis saran:
type =
uncertain
,zoneIds = []
- Algoritma tidak mengetahui zona waktu.
type =
certain
,zoneIds = ["Europe/London"]
- Algoritma yakin bahwa zona tersebut adalah Eropa/London.
type =
certain
,zoneIds = []
`- Algoritma sudah pasti, tetapi tidak ada ID zona yang terkait dengan lokasi saat ini.
type =
certain
,zoneIds = ["America/Denver", "America/Phoenix"]
- Algoritma yakin bahwa jawabannya adalah salah satu dari dua zona, tetapi tidak dapat memilih antara America/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 tingkat kepastian algoritma.
Layanan time_zone_detector
memiliki status, yang berarti layanan ini menyimpan catatan
saran terbaru yang dibuat oleh setiap algoritma. Saran baru dikirimkan
ke layanan time_zone_detector
jika saran sebelumnya tidak lagi
benar; yaitu, jika algoritma kini memiliki saran yang berbeda, atau jika algoritma
tidak dapat lagi 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 algoritma untuk deteksi zona waktu:
- Telepon
- Lokasi
Layanan time_zone_detector
biasanya menggunakan satu algoritma untuk menentukan zona waktu. Jika algoritma lokasi didukung di perangkat, algoritma yang digunakan perangkat ditentukan berdasarkan Setelan zona waktu yang dikonfigurasi oleh pengguna. Jika algoritma yang digunakan menjadi tidak yakin dengan zona waktu, time_zone_detector
biasanya tidak menggunakan saran dari algoritma lain. Saran yang terkait dengan algoritma yang tidak digunakan dapat disimpan
dalam memori oleh time_zone_detector
, tetapi tidak digunakan kecuali jika algoritma
berubah. Saat pengguna mengubah setelan untuk deteksi zona waktu otomatis
dan algoritma berubah, saran terbaru yang tersedia untuk algoritma
baru akan digunakan.
Untuk mengetahui detail tentang situasi saat beberapa algoritma digunakan untuk menentukan zona waktu, lihat Mode penggantian Teleponi.
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 saat deteksi lokasi tidak dapat mendeteksi zona waktu atau saat deteksi lokasi membutuhkan waktu lebih lama untuk mendeteksi zona waktu daripada deteksi telepon.
Mode penggantian telepon diterapkan ke perangkat yang mendukung deteksi lokasi dan telepon, serta 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 status LTZP, yaitu, jika LTZP melaporkan bahwa dan kemampuannya untuk mendeteksi lokasi atau zona waktu terganggu oleh lingkungannya, mode penggantian telepon akan dipicu.
Saat dalam mode penggantian telepon, layanan time_zone_detector
menggunakan saran telepon seolah-olah deteksi lokasi dinonaktifkan hingga algoritma lokasi membuat saran tertentu. Setelah menerima saran tertentu, mode penggantian telepon dinonaktifkan dan saran lokasi digunakan secara eksklusif.
Untuk mengetahui 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 rendah, setelan ini diberi label Gunakan zona waktu yang disediakan jaringan |
|||
Lokasi Setelan AOSP | Nama Setelan AOSP | Cakupan | Perilaku |
---|---|---|---|
Sistem > Tanggal dan Waktu | Menyetel zona waktu secara otomatis* | Semua pengguna | Tombol. Jika aktif, perangkat bertanggung jawab untuk mendeteksi zona waktu saat ini. Jika nonaktif, pengguna akan diberi kontrol untuk menyetel zona waktu perangkat secara manual. |
Sistem > Tanggal dan Waktu | Gunakan lokasi untuk menyetel zona waktu | Pengguna saat ini | Tombol. Tersedia mulai dari Android 12. Tombol ini hanya ditampilkan jika deteksi zona waktu lokasi didukung di 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. Nilai ini relevan jika deteksi zona waktu lokasi didukung di perangkat. |
Berikut ini ringkasan perilaku perangkat untuk deteksi zona waktu berdasarkan setelan yang dipilih oleh pengguna:
[Tanggal dan Waktu] Setel zona waktu otomatis: NONAKTIF
- Pengguna harus memilih zona waktu secara manual.
[Tanggal dan Waktu] Setel zona waktu 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 zona waktu.
Perangkat beberapa pengguna
Karena beberapa setelan yang terlibat dicakup ke pengguna saat ini, perilaku deteksi zona waktu perangkat dapat berubah saat pengguna saat ini berubah di perangkat multi-pengguna yang didukung Android.
Tombol Gunakan lokasi untuk menyetel zona waktu dicakup ke pengguna saat ini dan tidak dibatasi oleh kebijakan perangkat, yang berarti pengguna selalu dapat mengubah nilainya, meskipun tombol Setel zona waktu secara otomatis nonaktif atau jika kontrol waktu atau zona waktu lainnya dibatasi oleh Pengontrol Kebijakan Perangkat.
Perangkat yang hanya mendukung algoritma deteksi zona waktu lokasi
Bagian ini menjelaskan perilaku untuk perangkat yang hanya mendukung algoritma lokasi.
Android 14 dan yang lebih baru
- Opsi Gunakan lokasi tidak ditampilkan kepada pengguna di aplikasi Setelan AOSP dan perangkat berperilaku seolah-olah opsi Gunakan lokasi diaktifkan.
- Nilai setelan
SettingsProvider
location_time_zone_detection_enabled
cakupan pengguna diabaikan. Nilai ini mencatat preferensi pengguna di 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 dinonaktifkan, perangkat tidak akan mendeteksi zona waktu secara otomatis.
Perilaku saat beralih 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,
saat pengguna mengaktifkan deteksi otomatis, zona waktu perangkat mungkin diubah
pada saat yang sama agar sesuai dengan pendapat layanan time_zone_detector
.
Demikian pula, saat pengguna melakukan perubahan di Setelan yang mengakibatkan perubahan pada algoritma layanan time_zone_detector
saat ini, time_zone_detector
mungkin telah menerima saran untuk algoritma baru, sehingga waktu perangkat mungkin diubah agar sesuai dengan pendapat layanan time_zone_detector
secara langsung.
Deteksi zona waktu telepon
Deteksi zona waktu telepon menggunakan sinyal telepon untuk menentukan zona waktu saat ini. Untuk mengetahui informasi selengkapnya, lihat Deteksi zona waktu telepon.
Deteksi zona waktu lokasi
Deteksi zona waktu lokasi tersedia di Android 12 atau yang lebih baru. Fitur ini adalah fitur deteksi zona waktu otomatis opsional yang memungkinkan perangkat menggunakan lokasi 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
algoritma lokasi ke layanan time_zone_detector
. Untuk mengetahui 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 di perangkat atau tidak.
Membandingkan deteksi lokasi dan teleponi
Tabel berikut memberikan perbandingan kelebihan dan kekurangan penggunaan sinyal lokasi, bukan sinyal teleponi, untuk deteksi zona waktu.
Kategori | Deteksi telepon | Deteksi lokasi |
---|---|---|
Ketepatan | Bervariasi menurut negara. Bergantung pada MCC, kebenaran, dan ketersediaan NITZ. |
Bergantung pada konfigurasi fitur atau komponen plug-in. Kebenaran biasanya bervariasi menurut:
|
Kemampuan untuk diupdate | Deteksi teleponi mengandalkan file yang ada dalam modul Data Zona Waktu yang dapat diupdate
(APEX com.android.tzdata ). |
Bergantung pada konfigurasi fitur atau komponen plug-in. Kemampuan update biasanya bergantung pada apakah perangkat menggunakan data peta zona waktu server atau klien. 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 setelan lokasi pengguna, plug-in yang digunakan, dan biasanya aplikasi lain 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 adalah data sensitif. Pengguna mungkin khawatir jika lokasi mereka dibagikan sebagai bagian dari deteksi zona waktu. Terlepas dari 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 yang tidak tepat tentang lokasi perangkat dari informasi ini.
Lebih khusus lagi, deteksi zona waktu dapat berfungsi melalui cara pasif atau aktif:
- Pasif: Sesuatu di lingkungan perangkat memberi tahu perangkat zona waktu yang akan digunakan di lingkungan tersebut.
- Aktif: Perangkat harus menentukan zona waktu untuk dirinya sendiri dan bergantung pada setelan privasi pengguna dan izin mereka, perangkat akan mendapatkan lokasi perangkat untuk melakukannya. Kemudian, perangkat dapat membagikan lokasinya ke layanan eksternal. Lihat diskusi di bawah untuk mengetahui detail tentang privasi dan izin pengguna.
Deteksi pasif, seperti dengan algoritma telepon, tidak memiliki implikasi privasi tambahan bagi pengguna.
Deteksi aktif, seperti dengan algoritma 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 algoritma yang diperkirakan aktif secara individual. Selain itu, kode platform AOSP tidak berurusan langsung dengan lokasi itu sendiri: deteksi lokasi dan pemetaan lokasi ke ID zona waktu diserahkan kepada komponen plug-in yang dikonfigurasi oleh produsen perangkat.
Untuk mengetahui 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 mengetahui detail konfigurasi algoritma deteksi zona waktu dan teleponi, lihat Deteksi zona waktu teleponi dan Deteksi zona waktu lokasi.
Konfigurasi AOSP dasar ada di
frameworks/base/core/res/res/values/config.xml
.
Kunci konfigurasi | Nilai AOSP | Deskripsi |
---|---|---|
config_supportTelephonyTimeZoneFallback |
true |
Saat true , time_zone_detector menggunakan mode penggantian telepon. Fitur ini tersedia untuk Android 13 dan yang lebih baru.
|
Mengubah perilaku default perangkat
Di 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 dalam 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 Anda ingin memastikan bahwa setelan ini 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 memberikan informasi tentang cara men-debug dan menguji perilaku
layanan time_zone_detector
dan komponen lain yang digunakan bersama oleh semua
algoritma.
Mengonfigurasi perangkat menggunakan layanan device_config
Layanan device_config
adalah mekanisme yang digunakan di Android untuk mengonfigurasi perilaku yang dapat diubah menggunakan nilai yang biasanya ditarik dari server jarak jauh oleh kode eksklusif (non-AOSP). Saat menggunakan nilai device_config
untuk pengujian,
terutama selama pengujian manual yang berjalan lama, perangkat mungkin menyinkronkan
flag, yang akan mereset flag dan menghapus nilai yang ditetapkan untuk pengujian.
Di Android 12 atau yang lebih baru, untuk mencegah sinkronisasi flag sementara, 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 mengetahui 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
Untuk melihat perintah tambahan untuk proses debug dan pengujian 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 produksi. Untuk mengetahui detailnya, lihat Mengonfigurasi perangkat menggunakan layanan device_config.
Untuk memvalidasi deteksi zona waktu, penguji harus mengetahui algoritma yang digunakan oleh
time_zone_detector
. Untuk memahami dan memengaruhi algoritma time_zone_detector
saat ini, gunakan salah satu opsi berikut:
- Periksa secara visual melalui UI Setelan. Untuk mengetahui informasi selengkapnya, lihat Setelan zona waktu.
Gunakan command line melalui adb:
- Untuk membuat dump status
time_zone_detector
, gunakanadb shell cmd time_zone_detector dump
- Untuk mengubah setelan perangkat, gunakan perintah
time_zone_detector
lainnya. Untuk mengetahui informasi selengkapnya, gunakanadb shell cmd time_zone_detector help
.
- Untuk membuat dump status
Berikut adalah contoh output dari perintah adb shell cmd
time_zone_detector dump
, dengan informasi tentang algoritma dan status layanan saat ini dalam huruf 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. Ini adalah status efektif berdasarkan konfigurasi dan keberadaan setidaknya satu LTZP. |
mAutoDetectionEnabled |
Apakah deteksi zona waktu otomatis diaktifkan. |
mLocationEnabled |
Tombol lokasi utama. |
mGeoDetectionEnabled |
Pengalihan algoritma: false menunjukkan algoritma teleponi,
dan true menunjukkan algoritma lokasi. |
Informasi histori saran menunjukkan saran yang telah dibuat melalui Setelan (manual), dan oleh algoritma telepon dan lokasi.