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 Unix epoch 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 Unix epoch saat ini menjadi waktu lokal. Misalnya, selama musim panas di Los Angeles, perangkat mengurangi 7 jam dari waktu Unix epoch saat ini, dan di 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 melakukan perjalanan ke lokasi baru yang menggunakan zona waktu berbeda, waktu Unix epoch saat ini tidak perlu disesuaikan, tetapi biasanya pengguna 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 yang benar saat ini.
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
tidak pasti biasanya berarti layanan time_detector
belum menerima saran
waktu. Layanan time_detector
juga menjadi tidak pasti jika saran yang diterima dianggap terlalu lama untuk digunakan. Usia saran
dipertimbangkan karena penyesuaian 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 hal yang berbeda berdasarkan
asalnya.
Layanan time_detector
bersifat stateful, yang berarti layanan tersebut menyimpan catatan
saran terbaru yang dibuat oleh setiap origin. Saran baru dibuat untuk
time_detector
jika origin memiliki informasi waktu epoch Unix
terbaru. 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 Unix epoch saat ini tidak selalu mudah untuk perangkat Android:
- Waktu Unix {i>epoch<i} adalah sistem pengaturan waktu yang sedikit berbeda dari waktu UTC. Konversi antara keduanya memerlukan pengetahuan tentang kapan detik kabisat terjadi dan cara ditangani 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, origin telephony mungkin memberikan saran waktu yang tidak akurat.
- Mungkin ada ketidakakuratan 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 waktu yang telah berlalu karena 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 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: Origin 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 origin mana yang akan digunakan dan cara memprioritaskan sinyal darinya.
Prioritas origin
Mulai Android 12, produsen perangkat dapat mengubah
core/res/res/values/config.xml
file konfigurasi untuk menentukan asal waktu
yang akan disertakan dalam deteksi waktu otomatis, dan prioritas yang
akan time_detector
mempertimbangkan origin 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 telepon dikonfigurasi sebagai origin untuk digunakan secara default. Saran waktu jaringan diprioritaskan di atas saran waktu telefoni. Produsen perangkat dapat mengubah urutan origin agar kembali ke perilaku di Android 11 atau yang lebih rendah, dengan telepon 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 dilakukan untuk menghindari timbulnya 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 saran
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 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 sesuai dengan prinsip bahwa waktu yang valid tidak boleh sebelum image sistem
perangkat dibuat. Jika saran waktu jatuh sebelum batas waktu bawah, layanan
time_detector
akan menghapus saran ini 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 epoch yang masuk.
Proses debug dan pengujian waktu
Bagian ini memberikan informasi tentang cara men-debug dan menguji perilaku
layanan time_detector
serta komponen lain yang digunakan bersama 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
Guna 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 produksi.
Untuk mengetahui detailnya, lihat
Mengonfigurasi perangkat menggunakan layanan device_config.
Untuk memvalidasi deteksi waktu otomatis, penguji harus mengetahui origin mana
yang digunakan layanan time_detector
. Berikut adalah contoh output 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 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 yang
time_zone_detector
tidak memiliki informasi zona waktu untuk digunakan, atau yang 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
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 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 time_zone_detector
: pasti dan tidak pasti. Berikut adalah
contoh jenis saran:
type =
uncertain
,zoneIds = []
- Algoritma tidak mengetahui zona waktu.
jenis =
certain
,zoneIds = ["Europe/London"]
- Algoritme yakin zonanya adalah Eropa/London.
jenis =
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 hal yang berbeda
berdasarkan algoritmanya. Bergantung pada algoritma, saran mungkin juga berisi metadata yang menunjukkan seberapa yakin 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 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 dalam memori oleh
time_zone_detector
, tetapi tidak akan 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 ketika 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 telepon 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 telepon.
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 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 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. Saat dinonaktifkan, 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 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. Nilainya relevan jika deteksi zona waktu lokasi didukung pada perangkat. |
Berikut ringkasan perilaku perangkat untuk deteksi zona waktu berdasarkan setelan yang dipilih pengguna:
[Tanggal dan Waktu] Setel zona waktu otomatis: NONAKTIF
- Pengguna harus memilih zona waktu secara manual.
[Date and Time] Setel zona waktu secara 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 dibatasi untuk pengguna saat ini, perilaku deteksi zona waktu perangkat dapat berubah ketika pengguna saat ini berubah pada perangkat Android multi-pengguna.
Tombol Use location to set time zone dicakup untuk pengguna saat ini dan tidak dibatasi oleh kebijakan perangkat, yang berarti pengguna dapat selalu mengubah nilainya, bahkan saat tombol Set time zone automatically nonaktif atau jika kontrol zona waktu atau waktu lain 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 terhadap 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 otomatis mendeteksi zona waktu.
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, jika pengguna membuat perubahan di Setelan yang menyebabkan perubahan pada
algoritma layanan time_zone_detector
saat ini, time_zone_detector
mungkin
telah menerima saran untuk algoritme baru, sehingga waktu perangkat
dapat diubah agar segera cocok dengan opini 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 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 atau tidak.
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:
|
Kapasitas Update | Deteksi telepon bergantung pada file yang terdapat dalam modul Data Zona Waktu yang dapat diperbarui (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 tentang pengetahuan lokasi mereka yang dibagikan sebagai bagian dari deteksi zona waktu. Tidak terkait dengan deteksi zona waktu, semua aplikasi yang berjalan di perangkat dapat membaca zona waktu perangkat saat ini tanpa memerlukan izin Android, dan aplikasi dapat menyimpulkan ide 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 memperhitungkan zona waktu untuk perangkat itu sendiri dan bergantung pada setelan privasi pengguna dan persetujuan mereka, mendapatkan lokasi perangkat untuk melakukannya. Kemudian, perangkat dapat berbagi lokasinya dengan layanan eksternal. Lihat diskusi di bawah untuk mengetahui detail tentang privasi dan izin pengguna.
Deteksi pasif, seperti dengan algoritma 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 satu per satu algoritma yang diharapkan aktif. Selain itu, kode platform AOSP tidak berurusan langsung dengan lokasi itu sendiri: deteksi lokasi dan memetakan lokasi ke ID zona waktu diserahkan ke komponen plugin yang dikonfigurasi oleh produsen perangkat.
Untuk detail lebih lanjut 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 terkait
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 mode penggantian telepon. Fitur ini tersedia untuk Android 13
dan yang lebih tinggi.
|
Mengubah perilaku default perangkat
Pada 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 dalam
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
serta 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 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
Guna 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 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 saat ini
dan status layanan dicetak tebal:
$ adb shell cmd time_zone_detector dump
TimeZoneDetectorStrategy:
mEnvironment.getCurrentUserId()=0
mEnvironment.getConfiguration(currentUserId)=ConfigurationInternal{mUserId=0, mUserConfigAllowed=true, mTelephonyDetectionSupported=true, mGeoDetectionSupported=true, mAutoDetectionEnabled=true, mLocationEnabled=true, mGeoDetectionEnabled=true}
[Capabilities=TimeZoneCapabilitiesAndConfig{mCapabilities=TimeZoneDetectorCapabilities{mUserHandle=UserHandle{0}, mConfigureAutoDetectionEnabledCapability=40, mConfigureGeoDetectionEnabledCapability=40, mSuggestManualTimeZoneCapability=30}, mConfiguration=TimeZoneConfiguration{mBundle=Bundle[{geoDetectionEnabled=true, autoDetectionEnabled=true}]}}]
mEnvironment.isDeviceTimeZoneInitialized()=true
mEnvironment.getDeviceTimeZone()=Europe/London
Time zone change log:
Manual suggestion history:
...
Geolocation suggestion history:
...
Telephony suggestion history:
...
Informasi 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 telepon. |
mGeoDetectionSupported |
Apakah perangkat mendukung deteksi zona waktu lokasi atau tidak. Ini adalah status efektif berdasarkan konfigurasi dan keberadaan 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 algoritma telepon dan lokasi.