Ringkasan waktu

Halaman ini menjelaskan cara kerja deteksi waktu dan zona waktu di Android. Ini termasuk cara Android secara otomatis mendeteksi waktu dan zona waktu, konfigurasi pilihan untuk produsen perangkat, dan informasi pengujian.

Ringkasan waktu dan zona waktu

Untuk menentukan waktu lokal pengguna untuk ditampilkan di lokasi seperti status Android melacak dua status yang saling terkait tetapi independen:

  • Waktu Unix epoch saat ini
  • Zona waktu saat ini

Waktu Unix {i>epoch<i} dan zona waktu saat ini adalah status di seluruh perangkat, artinya mereka digunakan bersama oleh semua pengguna perangkat.

Waktu Unix epoch saat ini bukan nilai tetap. IPSG diperbarui secara otomatis menjadi mencerminkan berjalannya waktu. Selain berlalunya waktu yang normal, arus Waktu Unix {i>epoch<i} perangkat disesuaikan jika ditemukan ada kesalahan, untuk misalnya, setelah perangkat kehilangan daya.

Zona waktu saat ini menentukan penyesuaian yang akan dilakukan untuk mengonversi waktu Unix {i>epoch<i} saat ini ke waktu lokal. Misalnya, selama musim panas di Los Angeles Angeles, perangkat mengurangi 7 jam dari waktu Unix {i>epoch<i} saat ini, dan musim dingin, itu mengurangi 8 jam.

Untuk mendukung penghitungan waktu lokal ini, semua perangkat Android memiliki database dari semua aturan zona waktu global. Untuk informasi selengkapnya mengenai aturan zona waktu, lihat Aturan Zona Waktu.

Saat pengguna melakukan perjalanan ke lokasi baru yang menggunakan zona waktu berbeda, waktu Unix epoch saat ini tidak perlu disesuaikan tetapi pengguna biasanya ingin untuk melihat waktu lokal, bukan waktu di lokasi sebelumnya. Mengubah zona waktu saat ini memastikan bahwa offset yang benar diterapkan ke zona waktu saat ini Waktu Unix epoch untuk menampilkan waktu lokal yang benar bagi lokasi baru.

AOSP memungkinkan pengguna mengontrol secara mandiri apakah waktu dan zona waktu diatur secara otomatis untuk mereka melalui mekanisme berikut.

  • Deteksi waktu otomatis: Memastikan perangkat memiliki waktu Unix epoch saat ini.
  • Deteksi zona waktu otomatis: Memastikan perangkat memiliki zona waktu saat ini.

Deteksi waktu otomatis

Bagian ini memberikan ringkasan tentang layanan time_detector yang mengelola deteksi waktu otomatis, kontrol pengguna, opsi konfigurasi, dan pengujian spesifikasi pendukung.

Layanan time_detector

Tujuan time_detector layanan, yang ada di perangkat yang menjalankan Android 10 atau lebih tinggi, mengelola waktu otomatis deteksi. Menyesuaikan waktu Unix epoch perangkat saat ini sesuai kebutuhan ketika deteksi waktu otomatis diaktifkan.

Layanan time_detector selalu berada dalam salah satu dari dua status: tidak pasti atau pasti. Status tertentu atau tidak pasti layanan ditentukan berdasarkan saran waktu yang diterima dari berbagai sumber.

Jika layanan time_detector sudah pasti, artinya layanan tersebut telah menerima dengan informasi waktu Unix {i>epoch<i}, menggantikan {i>epoch<i} Unix saat ini jika saran waktu berbeda dengan waktu Unix epoch saat ini.

Jika time_detector tidak pasti, waktu tidak akan menggantikan waktu saat ini. Tujuan keadaan yang tidak pasti biasanya berarti layanan time_detector belum menerima waktu ejaan atau mendapatkan saran gaya. Layanan time_detector juga menjadi tidak pasti apakah saran yang diterimanya dianggap terlalu tua untuk digunakan. Usia saran adalah karena penyesuaian yang menggunakan saran waktu Unix{i> epoch time<i} lama bergantung pada waktu yang berlalu pada perangkat, yang diasumsikan tidak akurat dalam jangka panjang.

Untuk menetapkan waktu Unix epoch saat ini secara otomatis, perangkat memiliki berbagai sumber yang dapat digunakan. Ini disebut origin dalam dokumen ini. Tujuan Layanan time_detector memperlakukan urutan saran sebagai berbeda berdasarkan asal mereka.

Layanan time_detector bersifat stateful, yang berarti layanan tersebut menyimpan kumpulan data saran terbaru yang dibuat oleh setiap titik asal. Saran baru dibuat untuk time_detector jika origin memiliki informasi waktu epoch Unix yang lebih baru yang tersedia. Layanan time_detector mengevaluasi kembali saran baru dan yang sudah ada dan memperbarui status perangkat saat saran diterima.

Meskipun waktu UTC secara internasional disepakati, ada berbagai alasan mengapa menetapkan waktu Unix {i>epoch<i} saat ini tidak selalu mudah untuk sebuah Perangkat Android:

  • Waktu Unix {i>epoch<i} adalah sistem pengaturan waktu yang sedikit berbeda dari waktu UTC. Konversi di antara keduanya memerlukan pengetahuan tentang kapan detik lompatan terjadi dan bagaimana mereka ditangani oleh origin.
  • Origin mungkin hanya tersedia pada waktu tertentu atau dalam situasi. Misalnya, jika origin memerlukan konektivitas jaringan, itu mungkin hanya tersedia saat perangkat terhubung ke internet.
  • Asal-usulnya mungkin tidak akurat, tidak akurat, atau memiliki kesalahan. Sebagai contoh, jika menara BTS telepon tidak melacak "waktu universal" dengan benar, asal telepon mungkin memberikan saran waktu yang tidak akurat.
  • Mungkin ada ketidakakuratan saat mendapatkan waktu epoch Unix. Misalnya, penundaan jaringan, {i>buffer<i}, atau penjadwalan proses dapat menyebabkan waktu Unix {i>epoch<i} menjadi tidak akurat.
  • Jam referensi digunakan untuk menyesuaikan saran waktu berlalu karena saran yang diterima mungkin tidak akurat.

Ada dua asal deteksi waktu utama yang dikonfigurasi untuk digunakan secara default di AOSP:

  • Jaringan: Menggunakan Jaringan server waktu Protokol Waktu (NTP).
  • Telepon: Menggunakan telepon Identitas Jaringan dan Zona Waktu (NITZ) sinyal internal.

Sumber telepon dan jaringan memerlukan konektivitas ke jaringan eksternal, yang tidak selalu tersedia.

Mulai Android 12, Android juga mendukung origin berikut, yang tidak dikonfigurasi untuk digunakan secara default:

  • GNSS: Menggunakan GPS penyedia lokasi untuk mendapatkan waktu dari sumber GNSS.
  • Eksternal: Generik yang memungkinkan produsen perangkat mengintegrasikan sumber Waktu Unix {i>epoch<i}.

Setelan waktu

Pengguna dapat mengaktifkan deteksi waktu otomatis di Sistem > Tanggal dan Waktu di Aplikasi Setelan AOSP.

Deteksi waktu otomatis di Setelan

Gambar 1. Deteksi waktu otomatis di Setelan.

Tabel berikut menjelaskan kontrol pengguna untuk deteksi waktu di AOSP Aplikasi Setelan.

*Pada Android 11 dan yang lebih rendah, setelan ini diberi label Gunakan waktu yang disediakan jaringan

Lokasi Setelan AOSP Nama Setelan AOSP Cakupan Perilaku
Sistem > Tanggal dan Waktu Setel waktu secara otomatis* Semua pengguna

Tombol.

Jika aktif, perangkat bertanggung jawab untuk mendeteksi Unix saat ini waktu epoch. Jika dinonaktifkan, pengguna akan diberi kontrol untuk menyetel waktu perangkat secara manual.

Ketika pengguna memasukkan waktu secara manual, mereka memasukkan waktu lokal, bukan epoch Unix baik. Waktu Unix epoch saat ini dihitung menggunakan zona waktu saat ini untuk memperoleh waktu Unix {i>epoch<i}.

Konfigurasi

Produsen perangkat dapat mengonfigurasi layanan time_detector dengan berbagai cara, seperti sumber yang harus digunakan dan cara memprioritaskan sinyal dari sana.

Prioritas origin

Mulai Android 12, produsen perangkat dapat mengubah core/res/res/values/config.xmlfile konfigurasi untuk menentukan waktu untuk disertakan dalam deteksi waktu otomatis, dan prioritas yang time_detector mempertimbangkan origin ini.

Untuk perangkat yang menjalankan Android 11 atau yang lebih rendah, prioritas origin di-hardcode ke ["telephony", "network"], yang berarti saran telepon diprioritaskan di atas saran jaringan.

Konfigurasi AOSP default adalah sebagai berikut:

<!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list
     take precedence over lower ones.
     See com.android.server.timedetector.TimeDetectorStrategy for available sources. -->
<string-array name="config_autoTimeSourcesPriority">
    <item>network</item>
    <item>telephony</item>
</string-array>

Di Android 12, saran jaringan dan telepon dikonfigurasi sebagai origin untuk digunakan secara default. Saran waktu jaringan adalah diprioritaskan di atas saran waktu telepon. Produsen perangkat dapat mengubah urutan origin untuk kembali ke perilaku di Android 11 atau yang lebih rendah, di mana telepon diberikan prioritas yang lebih tinggi.

Secara default, jika saran valid dengan prioritas tertinggi cocok dengan waktu jam sistem saat ini menjadi dalam beberapa detik, waktu perangkat tidak akan diubah. Hal ini dilakukan untuk menghindari timbulnya pekerjaan bagi aplikasi terinstal yang mendengarkan ACTION_TIME_CHANGED.

Nilai origin yang diizinkan adalah:

Batas waktu yang diizinkan

Android 14 memperkenalkan batas waktu atas untuk waktu saran yang diterima oleh layanan time_detector. Jika perangkat mendukung Proses 32-bit, framework menetapkan batas waktu atas untuk mencegah perangkat dari penggunaan saran waktu yang dapat memicu masalah Y2038.

Android 12 memperkenalkan batas waktu lebih rendah yang digunakan untuk memvalidasi saran waktu yang diterima oleh layanan time_detector. Semakin rendah nilai batas waktu yang digunakan untuk saran otomatis disetel dari stempel waktu build. Fitur ini berfungsi dengan prinsip bahwa waktu yang valid tidak boleh sebelum waktu image sistem telah dibangun. Jika saran waktu berada sebelum batas waktu bawah, Layanan time_detector akan menghapus saran karena tidak dapat valid jika stempel waktu build sudah benar.

Untuk perangkat yang menjalankan Android 11 atau yang lebih rendah, layanan time_detector tidak memvalidasi saran waktu Unix{i> epoch<i} yang masuk.

Proses debug dan pengujian waktu

Bagian ini menyediakan informasi tentang cara men-debug dan menguji perilaku layanan time_detector dan komponen lain yang digunakan bersama oleh semua origin.

Berinteraksi dengan layanan time_detector

Untuk melihat konfigurasi dan status layanan time_detector Layanan time_detector, gunakan:

adb shell cmd time_detector dump

Agar dapat melihat perintah tambahan untuk proses debug dan menguji deteksi zona waktu, gunakan:

adb shell cmd time_detector help

Output bantuan juga menjelaskan properti layanan device_config yang dapat digunakan untuk memengaruhi perilaku time_detector untuk pengujian atau dalam produksi. Untuk mengetahui detailnya, lihat Mengonfigurasi perangkat menggunakan layanan device_config.

Untuk memvalidasi deteksi waktu otomatis, penguji harus mengetahui origin mana Layanan time_detector sedang digunakan. Berikut ini contoh {i>output<i} dari perintah adb shell cmd time_detector dump, dengan informasi tentang asal dan status layanan saat ini dicetak tebal:

$ adb shell cmd time_detector dump

TimeDetectorStrategy:
  mLastAutoSystemClockTimeSet=null
  mEnvironment.isAutoTimeDetectionEnabled()=true
  mEnvironment.elapsedRealtimeMillis()=23717241
  mEnvironment.systemClockMillis()=1626707861336
  mEnvironment.systemClockUpdateThresholdMillis()=2000
  mEnvironment.autoTimeLowerBound()=2021-07-19T07:48:05Z(1626680885000)
  mEnvironment.autoOriginPriorities()=[network,telephony]
  Time change log:
    ...
  Telephony suggestion history:
    ...
  Network suggestion history:
    ...
  Gnss suggestion history:
    ...
  External suggestion history:
    ...

Informasi tersebut dapat ditafsirkan sebagai berikut:

Key Nilai
mEnvironment.isAutoTimeDetectionEnabled() Apakah deteksi waktu otomatis diaktifkan.
mEnvironment.autoTimeLowerBound() Batas bawah saat ini yang digunakan untuk memvalidasi saran waktu.
mEnvironment.autoOriginPriorities() Asal yang digunakan dan urutan prioritasnya.

Log perubahan waktu menunjukkan peristiwa saat layanan time_detector memiliki mengubah waktu Unix {i>epoch<i} saat ini dari perangkat.

Informasi histori saran menunjukkan saran apa yang telah dibuat oleh setiap tempat asal.

Deteksi zona waktu otomatis

Bagian ini memberikan ringkasan tentang layanan time_zone_detector yang mengelola deteksi zona waktu otomatis, kontrol pengguna di setelan, telepon, dan deteksi zona waktu lokasi, dan detail pengujian.

Layanan time_zone_detector

Tujuan time_zone_detector layanan, yang ada di perangkat yang menjalankan Android 11 atau yang lebih tinggi, mengelola waktu otomatis deteksi zona. Menyesuaikan zona waktu perangkat saat ini sesuai kebutuhan ketika deteksi zona waktu otomatis diaktifkan.

Ketika deteksi zona waktu otomatis diaktifkan, time_zone_detector dapat aktif salah satu dari dua status: tidak pasti dan pasti.

Saat layanan time_zone_detector berada dalam status tertentu, ini berarti Layanan time_zone_detector telah menerima informasi zona waktu yang kuat, yang dapat menyebabkannya mengganti zona waktu saat ini. Ketika merasa tidak pasti, berarti ia belum menerima informasi atau hanya informasi dengan tingkat keyakinan rendah, yang berarti itu tidak akan mengganti zona waktu saat ini.

Status tertentu layanan time_zone_detector dapat menyertakan status yang time_zone_detector tidak memiliki informasi zona waktu untuk digunakan, atau yang memilikinya beberapa zona waktu untuk dipilih. Status tersebut adalah sebagai berikut:

  • Status tertentu dengan nol zona waktu dimasukkan saat perangkat di suatu tempat tanpa zona waktu, seperti di perairan internasional atau di wilayah yang disengketakan. Keadaan ini mirip dengan keadaan yang tidak pasti, tetapi menunjukkan bahwa time_zone_detector tidak perlu melakukan tindakan lebih lanjut untuk mencoba menentukan zona waktu.
  • Negara bagian tertentu dengan beberapa zona waktu dimasukkan di mana ada ambiguitas atau kondisi pembatas. Dalam status ini, jika zona waktu saat ini adalah salah satu zona waktu yang sudah diketahui time_zone_detector, zona waktu saat ini dibiarkan apa adanya. Jika tidak, salah satu waktu yang tersedia zona yang digunakan. Hal ini memberi time_zone_detector elemen loyalitas jika pengguna telah memilih zona waktu mereka secara manual sebelumnya atau sebagai perangkat mendekati batas.

Status tertentu atau tidak pasti layanan time_zone_detector ditentukan oleh saran zona waktu yang dikirim oleh algoritma.

Umumnya, saran tersedia dalam dua jenis yang hampir sama dengan kemungkinan status dari time_zone_detector: pasti dan tidak pasti. Berikut ini adalah contoh jenis saran:

  • jenis = uncertain, zoneIds = []

    • Algoritma tidak mengetahui zona waktu.
  • jenis = certain, zoneIds = ["Europe/London"]

    • Algoritma memastikan bahwa zona tersebut berada di Eropa/London.
  • jenis = certain, zoneIds = []`

    • Algoritma sudah pasti, tetapi tidak ada ID zona yang terkait dengan lokasi saat ini.
  • jenis = certain, zoneIds = ["America/Denver", "America/Phoenix"]

    • Algoritma yakin bahwa jawabannya adalah salah satu dari dua zona, tetapi tidak dapat memilih antara "Amerika/Denver" dan "America/Phoenix".

Layanan time_zone_detector memperlakukan urutan saran sebagai hal yang berbeda berdasarkan algoritma mereka. Bergantung pada algoritma, saran juga dapat berisi metadata yang menunjukkan seberapa yakin algoritma tersebut.

Layanan time_zone_detector bersifat stateful, yang berarti layanan tersebut menyimpan kumpulan data saran terbaru yang dibuat oleh setiap algoritma. Saran baru dikirim ke layanan time_zone_detector jika saran sebelumnya tidak lagi benar; yaitu, jika algoritma sekarang memiliki saran yang berbeda, atau jika memiliki kehilangan kemampuan untuk mendeteksi zona waktu. Layanan time_zone_detector mengevaluasi kembali saran baru dan yang sudah ada serta memperbarui status perangkat saat saran diterima.

Android mendukung dua algoritma untuk deteksi zona waktu:

  • Telepon
  • Lokasi

Layanan time_zone_detector biasanya menggunakan satu algoritma untuk menentukan zona waktu. Saat algoritma lokasi didukung di perangkat, algoritma yang digunakan perangkat ditentukan berdasarkan Setelan zona waktu dikonfigurasi oleh pengguna. Jika penggunaan algoritma menjadi tidak pasti dengan zona waktu, time_zone_detector biasanya tidak menggunakan saran dari algoritma yang berbeda. Saran yang terkait dengan algoritma yang tidak digunakan dapat disimpan di memori oleh time_zone_detector, tetapi tidak digunakan kecuali algoritma perubahan. Saat pengguna mengubah setelan untuk deteksi zona waktu otomatis dan algoritmanya berubah, saran terbaru yang tersedia untuk algoritma baru digunakan.

Untuk detail tentang situasi di mana beberapa algoritma digunakan untuk menentukan zona waktu, lihat Mode penggantian telepon.

Mode penggantian telepon

Pada perangkat yang menjalankan Android 13 dan yang lebih tinggi, Layanan time_zone_detector mendukung mode penggantian telepon. Mode ini memungkinkan Android menggunakan saran deteksi telepon untuk sementara dalam situasi deteksi lokasi tidak dapat mendeteksi zona waktu atau tempat deteksi lokasi memakan waktu lebih lama untuk mendeteksi zona waktu dibandingkan deteksi telepon.

Mode penggantian telepon berlaku untuk perangkat yang lokasi, baik telepon maupun lokasi, deteksi didukung, dan jika pengguna telah mengaktifkan Gunakan lokasi untuk menyetel zona waktu di Setelan zona waktu. Mode ini diaktifkan secara otomatis saat perangkat dimulai ulang, dan saat mode pesawat dinonaktifkan.

Di Android 14 dan yang lebih tinggi, penggantian telepon dapat dipicu melalui API pelaporan status LTZP, yaitu, jika LTZP melaporkan informasinya tidak pasti dan kemampuannya untuk mendeteksi lokasi atau zona waktu berkurang karena lingkungannya, mode fallback telepon dipicu.

Saat dalam mode penggantian telepon, layanan time_zone_detector menggunakan telepon saran seolah-olah deteksi lokasi dinonaktifkan hingga algoritme lokasi memberikan saran tertentu. Setelah menerima saran tertentu, telepon mode penggantian dinonaktifkan dan saran lokasi digunakan secara eksklusif.

Untuk detail konfigurasi mode penggantian telepon, lihat Konfigurasi deteksi zona waktu.

Setelan zona waktu

Pengguna dapat mengaktifkan dan mengonfigurasi setelan untuk deteksi zona waktu otomatis di aplikasi Setelan AOSP.

Deteksi zona waktu otomatis di Setelan

Gambar 2. Deteksi zona waktu otomatis di Setelan.

Tabel berikut menjelaskan kontrol pengguna untuk deteksi zona waktu di Aplikasi Setelan AOSP.

*Di Android 11 dan yang lebih lama, setelan ini diberi label Gunakan zona waktu yang disediakan jaringan

Lokasi Setelan AOSP Nama Setelan AOSP Cakupan Perilaku
Sistem > Tanggal dan Waktu Setel zona waktu secara otomatis* Semua pengguna

Tombol.

Jika aktif, perangkat bertanggung jawab untuk mendeteksi waktu saat ini zona waktu. Jika dinonaktifkan, pengguna akan diberi kontrol untuk menyetel zona waktu secara manual.

Sistem > Tanggal dan Waktu Gunakan lokasi untuk menyetel zona waktu Pengguna saat ini

Tombol.

Tersedia dari Android 12. Tombol ini adalah hanya ditampilkan jika deteksi zona waktu lokasi didukung pada perangkat.

Untuk perubahan yang diperkenalkan di Android 14, lihat Perangkat yang hanya mendukung deteksi zona waktu lokasi.

Lokasi Gunakan lokasi Pengguna saat ini

Tombol.

Mengizinkan atau mencegah penggunaan lokasi perangkat secara umum. Nilainya adalah relevan jika deteksi zona waktu lokasi didukung pada perangkat.

Berikut ringkasan perilaku perangkat untuk zona waktu berdasarkan setelan yang dipilih oleh pengguna:

  • [Date and Time] Setel zona waktu secara otomatis: NONAKTIF

    • Pengguna harus memilih zona waktu secara manual.
  • [Date and Time] Setel zona waktu secara otomatis: AKTIF

    • [Lokasi] Gunakan lokasi: NONAKTIF

      • Sinyal telepon digunakan untuk mendeteksi zona waktu.
    • [Lokasi] Gunakan lokasi: AKTIF

      • [Tanggal dan Waktu] Gunakan lokasi untuk menyetel zona waktu: AKTIF

        • Lokasi digunakan untuk mendeteksi zona waktu.
      • [Tanggal dan Waktu] Gunakan lokasi untuk menyetel zona waktu: NONAKTIF

        • Sinyal telepon digunakan untuk mendeteksi waktu zona waktu.

Perangkat multi-pengguna

Karena beberapa setelan yang terlibat tercakup dalam pengguna saat ini, perilaku deteksi zona waktu perangkat dapat berubah saat pengguna saat ini perubahan pada perangkat Android multi-pengguna.

Tombol Gunakan lokasi untuk menyetel zona waktu dicakup untuk pengguna saat ini dan tidak dibatasi oleh kebijakan perangkat, yang berarti pengguna selalu dapat mengubah nilai, meskipun tombol Setel zona waktu otomatis nonaktif atau jika setelan kontrol waktu atau zona waktu dibatasi oleh Pengontrol Kebijakan Perangkat.

Perangkat yang hanya mendukung algoritma deteksi zona waktu lokasi

Bagian ini menjelaskan perilaku untuk perangkat yang hanya mendukung lokasi algoritme.

  • Android 14 dan yang lebih baru

    • Opsi Gunakan lokasi tidak ditampilkan kepada pengguna di Setelan AOSP aplikasi dan perangkat berperilaku seolah-olah opsi Gunakan lokasi diaktifkan.
    • Nilai setelan SettingsProvider cakupan pengguna location_time_zone_detection_enabled diabaikan. Nilai ini mencatat preferensi pengguna pada jenis perangkat lain.
  • Android 12 atau Android 13

    • Opsi Gunakan lokasi dapat dilihat oleh pengguna di aplikasi Setelan AOSP dan pengguna dapat menonaktifkan opsi tersebut. Jika opsi ini dinonaktifkan, perangkat tidak akan mendeteksi zona waktu secara otomatis.

Perilaku saat beralih ke dan dari deteksi otomatis

Ketika pengguna mengganti deteksi zona waktu dari manual ke otomatis, time_zone_detector mungkin sudah tahu tentang zona waktu saat ini. Jika demikian, saat pengguna mengaktifkan deteksi otomatis, zona waktu perangkat mungkin diubah pada saat yang sama agar sesuai dengan opini layanan time_zone_detector.

Demikian pula, jika pengguna membuat perubahan pada Setelan yang menyebabkan perubahan algoritme saat ini layanan time_zone_detector, time_zone_detector mungkin telah menerima saran untuk algoritma baru, sehingga waktu yang diperlukan perangkat mungkin diubah agar sesuai dengan opini layanan time_zone_detector segera.

Deteksi zona waktu telepon

Deteksi zona waktu telepon menggunakan sinyal telepon untuk menentukan kondisi saat ini serta region dan zona waktu lainnya. Untuk mengetahui informasi selengkapnya, lihat Zona Waktu Telepon Deteksi.

Deteksi zona waktu lokasi

Deteksi zona waktu lokasi tersedia di Android 12 atau yang lebih tinggi. Ini adalah fitur deteksi zona waktu otomatis opsional yang memungkinkan perangkat untuk menggunakan lokasinya untuk menentukan zona waktu saat ini.

Layanan location_time_zone_manager, diperkenalkan di Android 12, berjalan di server sistem dan berisi kode yang bertanggung jawab untuk mengirimkan lokasi saran algoritma ke layanan time_zone_detector. Untuk informasi selengkapnya, lihat Deteksi Zona Waktu Lokasi.

Pertimbangan adopsi fitur

Bagian ini menjelaskan aspek fitur deteksi zona waktu lokasi untuk membantu produsen perangkat menentukan apakah akan mengadopsi fitur tersebut pada perangkat.

Membandingkan deteksi lokasi dan telepon

Tabel berikut memberikan perbandingan antara kelebihan dan kekurangan menggunakan sinyal lokasi daripada sinyal telepon untuk deteksi zona waktu.

Deteksi telepon Deteksi lokasi
Ketepatan Bervariasi menurut negara.

Bergantung pada MCC, ketepatan dan ketersediaan NITZ.
Bergantung pada konfigurasi fitur atau komponen plugin.

Tingkat ketepatan biasanya bervariasi menurut:
  • Akurasi dan keteraturan penyedia lokasi.
  • Kualitas data peta zona waktu.
Kapasitas Update Deteksi telepon bergantung pada file yang terdapat dalam Waktu yang dapat diperbarui Modul Data Zona (com.android.tzdata APEX). Bergantung pada konfigurasi fitur atau komponen plugin.

Kapasitas update biasanya bergantung pada apakah perangkat menggunakan server atau klien data peta zona waktu.

Perhatikan: Data peta zona waktu tidak terdapat dalam kolom Waktu Modul Data Zona digunakan untuk memperbarui salinan TZDB Android dan pada waktu lainnya informasi zona.

Produsen perangkat juga harus mempertimbangkan konsistensi versi antara aturan zona waktu dan data peta zona waktu.
Penggunaan daya Tidak ada atau penggunaan daya rendah Bergantung pada setelan lokasi pengguna, plugin yang digunakan, dan biasanya apa yang diminta aplikasi lain untuk lokasi.
Ketersediaan Khusus perangkat telepon. Biasanya memerlukan SIM yang berfungsi. Deteksi lokasi bergantung pada penyedia lokasi yang tersedia.
Privasi pengguna

Zona waktu pilihan pengguna biasanya ditentukan oleh lokasi geografisnya lokasi HTTP/HTTPS. Lokasi adalah data sensitif. Pengguna mungkin khawatir tentang mengetahui lokasi mereka dibagikan sebagai bagian dari deteksi zona waktu. Tidak terkait dengan deteksi zona waktu, semua aplikasi yang berjalan di perangkat dapat membaca zona waktu perangkat saat ini tanpa memerlukan izin Android, dan aplikasi dapat menyimpulkan ide lokasi perangkat yang tidak akurat dari informasi ini.

Lebih spesifiknya, deteksi zona waktu dapat dilakukan dengan mode pasif atau aktif berarti:

  • Pasif: Sesuatu di lingkungan perangkat memberi tahu perangkat tentang zona waktu yang digunakan di lingkungan tersebut.
  • Aktif: Perangkat harus menentukan zona waktu untuk dirinya sendiri dan tergantung pada pengaturan privasi dan persetujuan mereka, memperoleh di lokasi perangkat untuk melakukannya. Kemudian perangkat dapat membagikan lokasinya dengan pihak eksternal layanan IT perusahaan mereka. Lihat diskusi di bawah untuk mengetahui detail tentang privasi dan izin pengguna.

Deteksi pasif, seperti pada algoritma telepon, tidak memiliki implikasi privasi bagi pengguna.

Deteksi aktif, seperti pada algoritme lokasi, melibatkan penentuan lokasi perangkat, yang mungkin tidak disetujui pengguna, dan lokasi dapat dikirim melalui jaringan untuk menentukan ID zona waktu.

Pendekatan Android terhadap privasi pengguna untuk deteksi zona waktu memberi pengguna kemampuan untuk secara individual menonaktifkan algoritma yang diharapkan aktif. Selain itu, kode platform AOSP tidak menangani lokasi itu sendiri secara langsung: deteksi lokasi dan pemetaan lokasi ke ID zona waktu diserahkan kepada plugin komponen yang dikonfigurasi oleh produsen perangkat.

Untuk detail selengkapnya tentang fitur privasi pengguna, lihat Zona Waktu Lokasi Deteksi.

Konfigurasi

Produsen perangkat dapat mengonfigurasi layanan time_zone_detector agar dapat diubah perilakunya. Bagian ini menjelaskan opsi konfigurasi untuk konfigurasi perilaku layanan time_zone_detector. Untuk detail konfigurasi untuk algoritma deteksi telepon dan zona waktu, lihat Deteksi Zona Waktu Telepon dan Deteksi Zona Waktu Lokasi.

Konfigurasi AOSP dasar berada di frameworks/base/core/res/res/values/config.xml

Kunci konfigurasi Nilai AOSP Deskripsi
config_supportTelephonyTimeZoneFallback true Saat true, time_zone_detector menggunakan telepon mode penggantian. Fitur ini tersedia untuk Android 13 dan lebih tinggi.

Mengubah perilaku default perangkat

Dalam AOSP, deteksi zona waktu otomatis diaktifkan secara default dengan Setelan auto_time_zone ditetapkan ke true. Untuk menonaktifkan deteksi waktu otomatis secara default, tetapkan nilai def_auto_time_zone yang ditentukan di frameworks/base/packages/SettingsProvider/res/values/defaults.xml ke false.

Saat memulihkan cadangan dari perangkat lain, framework akan memperbarui nilai setelan auto_time_zone secara default. Jika ingin memastikan bahwa setelan tidak dipulihkan dari cadangan, sertakan auto_time_zone dalam Array restore_blocked_global_settings yang ditentukan di frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml.

Proses debug dan pengujian zona waktu

Bagian ini menyediakan informasi tentang cara men-debug dan menguji perilaku layanan time_zone_detector dan komponen lain yang digunakan bersama oleh semua algoritme.

Mengonfigurasi perangkat menggunakan layanan device_config

Layanan device_config adalah mekanisme yang digunakan di Android untuk mengonfigurasi perilaku yang dapat dimodifikasi menggunakan nilai yang biasanya diambil dari server jarak jauh berdasarkan kode eksklusif (non-AOSP). Saat menggunakan nilai device_config untuk pengujian, terutama selama pengujian manual yang berjalan lama, perangkat mungkin menyinkronkan yang akan mereset flag dan menghapus nilai yang ditetapkan untuk pengujian.

Di Android 12 atau yang lebih tinggi, untuk mencegah tanda sementara sinkronisasi, gunakan:

adb shell cmd device_config set_sync_disabled_for_tests persistent

Untuk memulihkan sinkronisasi tanda setelah pengujian, gunakan:

adb shell cmd device_config set_sync_disabled_for_tests none

Setelah memulihkan sinkronisasi tanda, mulai ulang perangkat.

Untuk informasi selengkapnya, gunakan $ adb shell cmd device_config help.

Berinteraksi dengan layanan time_zone_detector

Untuk melihat konfigurasi time_zone_detector dan status Layanan time_zone_detector, gunakan:

adb shell cmd time_zone_detector dump

Agar dapat melihat perintah tambahan untuk proses debug dan menguji deteksi zona waktu, gunakan:

adb shell cmd time_zone_detector help

Output bantuan juga menjelaskan properti layanan device_config yang dapat digunakan untuk memengaruhi perilaku layanan time_zone_detector untuk pengujian atau dalam tahap produksi. Untuk mengetahui detailnya, lihat Mengonfigurasi perangkat menggunakan layanan device_config.

Untuk memvalidasi deteksi zona waktu, penguji harus mengetahui algoritma mana time_zone_detector sedang digunakan. Untuk memahami dan memengaruhi algoritma saat ini dari time_zone_detector, gunakan salah satu opsi berikut:

  • Periksa secara visual melalui UI Setelan. Untuk informasi selengkapnya, lihat Setelan zona waktu.
  • Gunakan command line melalui adb:

    • Untuk membuang status time_zone_detector, gunakan adb shell cmd time_zone_detector dump
    • Untuk mengubah setelan perangkat, gunakan perintah time_zone_detector lainnya. Untuk informasi selengkapnya, gunakan adb shell cmd time_zone_detector help.

Berikut adalah contoh output dari perintah adb shell cmd time_zone_detector dump, dengan informasi tentang dan status layanan dalam cetak tebal:

$ adb shell cmd time_zone_detector dump
TimeZoneDetectorStrategy:
  mEnvironment.getCurrentUserId()=0
  mEnvironment.getConfiguration(currentUserId)=ConfigurationInternal{mUserId=0, mUserConfigAllowed=true, mTelephonyDetectionSupported=true, mGeoDetectionSupported=true, mAutoDetectionEnabled=true, mLocationEnabled=true, mGeoDetectionEnabled=true}
  [Capabilities=TimeZoneCapabilitiesAndConfig{mCapabilities=TimeZoneDetectorCapabilities{mUserHandle=UserHandle{0}, mConfigureAutoDetectionEnabledCapability=40, mConfigureGeoDetectionEnabledCapability=40, mSuggestManualTimeZoneCapability=30}, mConfiguration=TimeZoneConfiguration{mBundle=Bundle[{geoDetectionEnabled=true, autoDetectionEnabled=true}]}}]
  mEnvironment.isDeviceTimeZoneInitialized()=true
  mEnvironment.getDeviceTimeZone()=Europe/London
  Time zone change log:
  Manual suggestion history:
...
  Geolocation suggestion history:
...
  Telephony suggestion history:
...

Informasi tersebut dapat ditafsirkan sebagai berikut:

Key Nilai
mUserConfigAllowed Apakah pengguna dicegah mengontrol setelan tanggal dan waktu oleh Pengontrol Kebijakan Perangkat.
mTelephonyDetectionSupported Apakah perangkat memiliki deteksi zona waktu telepon.
mGeoDetectionSupported Apakah perangkat mendukung deteksi zona waktu lokasi atau tidak. Ini adalah efektif berdasarkan konfigurasi dan kehadiran setidaknya satu LTZP.
mAutoDetectionEnabled Apakah deteksi zona waktu otomatis diaktifkan atau tidak.
mLocationEnabled Tombol lokasi utama.
mGeoDetectionEnabled Tombol algoritma: false menunjukkan algoritma telepon, dan true menunjukkan algoritme lokasi.

Informasi histori saran menunjukkan saran yang telah dibuat melalui Setelan (manual), serta oleh algoritme telepon dan lokasi.