Halaman ini menjelaskan cara kerja deteksi waktu dan zona waktu di Android. Hal ini termasuk 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 yang akan ditampilkan di lokasi seperti status bar, Android melacak dua status yang terkait tetapi independen:
- Waktu epoch Unix saat ini
- Zona waktu saat ini
Waktu epoch Unix saat ini dan zona waktu saat ini adalah status seluruh perangkat, yang berarti bahwa keduanya dibagikan oleh semua pengguna perangkat.
Waktu epoch Unix saat ini bukan nilai tetap. Status ini diperbarui secara otomatis untuk mencerminkan berlalunya waktu. Selain berlalunya waktu normal, waktu epoch Unix saat ini dari perangkat akan disesuaikan jika ditemukan salah, misalnya, setelah perangkat kehabisan daya.
Zona waktu saat ini menentukan penyesuaian yang akan dilakukan untuk mengonversi waktu epoch Unix saat ini menjadi waktu lokal. Misalnya, selama musim panas di Los Angeles, perangkat akan mengurangi 7 jam dari waktu epoch Unix saat ini, dan pada musim dingin, perangkat akan 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 yang berbeda, waktu epoch Unix saat ini tidak perlu disesuaikan, tetapi pengguna biasanya ingin melihat waktu lokal, bukan waktu di lokasi sebelumnya. Mengubah zona waktu saat ini 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 ditetapkan 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 tentang 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. Fungsi ini menyesuaikan waktu epoch Unix perangkat saat ini sesuai kebutuhan saat
deteksi waktu otomatis diaktifkan.
Layanan time_detector
selalu berada dalam salah satu dari dua status: tidak pasti atau
pasti. Status layanan yang pasti atau tidak pasti ditentukan
oleh saran waktu yang diterima dari berbagai sumber.
Jika layanan time_detector
sudah pasti, yang berarti telah menerima sugesti dengan informasi waktu epoch Unix, layanan tersebut akan mengganti waktu epoch Unix saat ini jika sugesti waktu berbeda dengan waktu epoch Unix saat ini.
Jika tidak pasti, time_detector
tidak akan mengganti waktu saat ini. Status
yang tidak pasti biasanya berarti layanan time_detector
belum menerima sugesti
waktu. Layanan time_detector
juga menjadi tidak pasti jika saran
yang diterima dianggap terlalu lama untuk digunakan. Usia saran
dipertimbangkan karena penyesuaian yang menggunakan saran waktu epoch Unix lama bergantung pada
jam real-time yang telah berlalu di perangkat, yang diasumsikan tidak akurat selama
jangka waktu yang lama.
Untuk menetapkan waktu epoch Unix saat ini secara otomatis, perangkat memiliki berbagai
sumber yang dapat digunakan. Hal ini disebut origin 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 origin. Saran baru dibuat untuk
time_detector
jika origin memiliki informasi waktu epoch Unix terbaru
yang tersedia. 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 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.
- Origin mungkin hanya tersedia pada waktu tertentu atau dalam keadaan tertentu. Misalnya, jika origin memerlukan konektivitas jaringan, origin tersebut mungkin hanya tersedia saat perangkat terhubung ke internet.
- Asalnya mungkin tidak akurat atau tidak tepat, atau memiliki error. Misalnya, jika menara seluler telephony tidak melacak "waktu universal" dengan benar, asal telephony 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.
- 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:
- Jaringan: Menggunakan server waktu Protokol Waktu Jaringan (NTP).
- Telepon: Menggunakan sinyal telepon Identitas Jaringan dan Zona Waktu (NITZ).
Asal telepon dan jaringan memerlukan konektivitas ke jaringan eksternal, yang tidak selalu tersedia.
Mulai Android 12, Android juga mendukung asal 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 System > Date and Time 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 lama, 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 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 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 darinya.
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 tempat
time_detector
mempertimbangkan asal ini.
Untuk perangkat yang menjalankan Android 11 atau yang lebih rendah, prioritas asal di-hardcode ke["telephony", "network"]
, yang berarti bahwa saran telefoni 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 telefoni dikonfigurasi sebagai origin yang akan digunakan secara default. Saran waktu jaringan diprioritaskan di atas saran waktu telefoni. Produsen perangkat dapat mengubah urutan asal untuk kembali ke perilaku di Android 11 atau yang lebih rendah, dengan telephony diberi prioritas yang lebih tinggi.
Secara default, jika saran valid dengan prioritas tertinggi cocok dengan waktu clock sistem
perangkat saat ini dalam beberapa detik, waktu perangkat tidak akan
berubah. Hal ini untuk menghindari pembuatan pekerjaan bagi aplikasi terinstal yang memproses
intent ACTION_TIME_CHANGED
.
Nilai origin yang diizinkan adalah:
Batas waktu yang diizinkan
Android 14 memperkenalkan batas waktu atas untuk sugesti
waktu yang diterima oleh layanan time_detector
. Jika perangkat mendukung
proses 32-bit, framework akan menetapkan batas waktu atas untuk mencegah perangkat
menggunakan saran waktu yang dapat memicu masalah Y2038.
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 yang digunakan untuk saran otomatis ditetapkan dari stempel waktu build.
Hal ini berfungsi berdasarkan prinsip bahwa waktu yang valid tidak boleh sebelum image sistem
perangkat dibuat. Jika saran waktu berada 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 layanan time_detector
dan status layanan time_detector
, gunakan:
adb shell cmd time_detector dump
Untuk melihat perintah tambahan guna men-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 asal
layanan time_detector
yang digunakan. Berikut adalah contoh output dari
perintah adb shell cmd time_detector dump
, dengan informasi tentang
asal dan status layanan saat ini dalam cetak 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 ini 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 dari perangkat.
Informasi histori saran menunjukkan saran yang telah dibuat oleh setiap asal.
Deteksi zona waktu otomatis
Bagian ini memberikan ringkasan 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
yang ada di perangkat yang menjalankan Android 11 atau yang lebih tinggi, mengelola deteksi zona
waktu otomatis. Fitur ini menyesuaikan zona waktu saat ini di 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: tidak pasti dan pasti.
Jika 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. Jika tidak pasti, ini
berarti tidak menerima informasi atau hanya informasi dengan tingkat keyakinan rendah, yang
berarti 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 memiliki
beberapa zona waktu untuk dipilih. Status tersebut adalah sebagai berikut:
- Status tertentu dengan zona waktu nol dimasukkan saat perangkat berada
di suatu tempat tanpa zona waktu, seperti di perairan internasional atau di
wilayah yang disengketakan. 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 perbatasan. Dalam status ini, jika zona waktu saat ini
adalah salah satu zona waktu yang diketahui
time_zone_detector
, zona waktu saat ini akan dibiarkan apa adanya. Jika tidak, salah satu zona waktu yang tersedia akan digunakan. Hal ini memberitime_zone_detector
elemen melekat jika pengguna telah memilih zona waktu 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.
Secara umum, saran terdiri dari dua jenis yang sangat cocok dengan kemungkinan status
time_zone_detector
: pasti dan tidak pasti. Berikut adalah
contoh jenis saran:
type =
uncertain
,zoneIds = []
- Algoritma tidak mengetahui zona waktu.
type =
certain
,zoneIds = ["Europe/London"]
- Algoritme yakin zonanya adalah Eropa/London.
type =
certain
,zoneIds = []
`- Algoritmenya 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 berbeda
berdasarkan algoritmanya. Bergantung pada algoritma, saran mungkin juga
berisi metadata yang menunjukkan seberapa pasti algoritma tersebut.
Layanan time_zone_detector
bersifat stateful, yang berarti layanan ini menyimpan catatan
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 algoritma tersebut
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 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 yang berbeda. 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 telepon.
Mode penggantian telepon
Di perangkat yang menjalankan Android 13 dan yang lebih tinggi, layanan time_zone_detector
mendukung mode penggantian telepon. Mode ini
memungkinkan Android menggunakan saran deteksi telefoni untuk sementara dalam situasi saat
deteksi lokasi tidak dapat mendeteksi zona waktu atau saat deteksi lokasi
memerlukan waktu lebih lama untuk mendeteksi zona waktu daripada deteksi telefoni.
Mode penggantian telefoni berlaku untuk perangkat yang mendukung deteksi lokasi dan telepon, serta jika pengguna telah mengaktifkan Gunakan lokasi untuk menetapkan 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 bahwa statusnya tidak pasti dan kemampuannya untuk mendeteksi lokasi atau zona waktu menurun karena lingkungannya, mode penggantian telepon akan dipicu.
Saat dalam mode penggantian telefoni, layanan time_zone_detector
menggunakan saran
telepon seolah-olah deteksi lokasi dinonaktifkan hingga algoritma lokasi
memberikan saran tertentu. Setelah menerima saran tertentu, mode penggantian
telepon akan dinonaktifkan dan saran lokasi akan digunakan secara eksklusif.
Untuk mengetahui detail konfigurasi mode penggantian telephony, 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 berlabel 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 zona waktu saat ini. Jika nonaktif, pengguna akan diberi kontrol untuk menetapkan zona waktu perangkat secara manual. |
Sistem > Tanggal dan Waktu | Gunakan lokasi untuk menyetel zona waktu | Pengguna saat ini | Tombol. Tersedia 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 memberikan ringkasan perilaku perangkat untuk deteksi zona waktu dengan 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
[Location] Use location: 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 multi-pengguna
Karena beberapa setelan yang terlibat dicakup untuk pengguna saat ini, perilaku deteksi zona waktu perangkat dapat berubah saat pengguna saat ini berubah di perangkat Android multi-pengguna.
Tombol Gunakan lokasi untuk menetapkan zona waktu dicakup untuk pengguna saat ini dan tidak dibatasi oleh kebijakan perangkat, yang berarti pengguna selalu dapat mengubah nilainya, meskipun tombol Tetapkan 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
cakupan penggunalocation_time_zone_detection_enabled
diabaikan. Nilai ini mencatat preferensi pengguna pada jenis perangkat lainnya.
Android 12 atau Android 13
- Opsi Gunakan lokasi terlihat 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 mengetahui zona waktu saat ini. Jika demikian,
saat pengguna mengaktifkan deteksi otomatis, zona waktu perangkat mungkin diubah
secara bersamaan agar sesuai dengan pendapat layanan time_zone_detector
.
Demikian pula, saat pengguna membuat perubahan di Setelan yang menghasilkan perubahan pada
algoritma layanan time_zone_detector
saat ini, time_zone_detector
mungkin
telah menerima saran untuk algoritma baru sehingga waktu perangkat
mungkin segera diubah agar cocok dengan pendapat layanan
time_zone_detector
.
Deteksi zona waktu telepon
Deteksi zona waktu telefoni menggunakan sinyal telefoni 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. 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 sugesti 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 mengadopsi fitur tersebut di perangkat.
Membandingkan deteksi lokasi dan telepon
Tabel berikut memberikan perbandingan kelebihan dan kekurangan penggunaan lokasi, bukan sinyal telepon, untuk deteksi zona waktu.
Deteksi telepon | Deteksi lokasi | |
---|---|---|
Ketepatan | Bervariasi menurut negara. Bergantung pada MCC, kebenaran, dan ketersediaan NITZ. |
Bergantung pada konfigurasi fitur atau komponen plugin. Keakuratan biasanya bervariasi menurut:
|
Kemampuan update | Deteksi telefoni mengandalkan file yang terdapat dalam modul Data Zona Waktu yang dapat diupdate (com.android.tzdata APEX). | Bergantung pada konfigurasi fitur atau komponen plugin. Kemampuan update 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 mengupdate 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, plugin 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 geografis mereka. Lokasi adalah data sensitif. Pengguna mungkin khawatir bahwa pengetahuan tentang 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 yang tidak akurat 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 waktunya sendiri dan bergantung pada setelan privasi pengguna serta izin mereka, mendapatkan lokasi perangkat untuk melakukannya. Perangkat kemudian dapat membagikan lokasinya dengan layanan eksternal. Lihat diskusi di bawah untuk mengetahui detail tentang privasi dan izin pengguna.
Deteksi pasif, seperti dengan algoritme telefoni, tidak memiliki implikasi privasi tambahan bagi pengguna.
Deteksi aktif, seperti dengan algoritma lokasi, melibatkan penentuan lokasi perangkat, yang mungkin tidak ingin 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 secara terpisah yang diharapkan akan aktif. Selain itu, kode platform AOSP tidak menangani lokasi itu sendiri secara langsung: deteksi lokasi dan pemetaan lokasi ke ID zona waktu diserahkan ke komponen plugin 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 telepon, 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 |
Jika true , time_zone_detector akan menggunakan mode penggantian
telepon. Fitur ini tersedia untuk Android 13
dan yang lebih tinggi.
|
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 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 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 dibagikan 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 diambil 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 tanda 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 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 guna men-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 produksi. Untuk mengetahui detailnya, lihat
Mengonfigurasi perangkat menggunakan layanan device_config.
Untuk memvalidasi deteksi zona waktu, penguji harus mengetahui algoritma yang
digunakan 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 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 algoritma dan status layanan saat ini 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 ini 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 telefoni. |
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 |
Tombol algoritma: false menunjukkan algoritma telefoni,
dan true menunjukkan algoritma lokasi. |
Informasi histori rekomendasi menunjukkan rekomendasi yang telah dibuat melalui Setelan (manual), dan oleh algoritma telepon dan lokasi.