Ikhtisar Waktu

Halaman ini menjelaskan cara kerja deteksi waktu dan zona waktu di Android. Hal ini mencakup cara Android mendeteksi waktu dan zona waktu secara otomatis, opsi konfigurasi untuk produsen perangkat, dan informasi pengujian.

Ikhtisar waktu dan zona waktu

Untuk menentukan waktu lokal pengguna untuk ditampilkan di lokasi seperti bilah status, Android melacak dua keadaan yang terkait namun independen:

  • Waktu Unix saat ini
  • Zona waktu saat ini

Waktu Unix saat ini dan zona waktu saat ini adalah status seluruh perangkat, yang berarti bahwa keduanya digunakan bersama oleh semua pengguna perangkat.

Waktu zaman Unix saat ini bukanlah nilai tetap. Ini diperbarui secara otomatis untuk mencerminkan berlalunya waktu. Selain perjalanan waktu normal, waktu Unix saat ini pada suatu perangkat juga disesuaikan jika ternyata salah, misalnya, setelah perangkat kehilangan daya.

Zona waktu saat ini menentukan penyesuaian yang harus dilakukan untuk mengubah waktu Unix saat ini menjadi waktu lokal. Misalnya, selama musim panas di Los Angeles, perangkat mengurangi 7 jam dari waktu Unix saat ini, dan di musim dingin perangkat mengurangi 8 jam.

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

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

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

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

Deteksi waktu otomatis

Bagian ini memberikan gambaran umum 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 lebih tinggi, mengelola deteksi waktu otomatis. Ini menyesuaikan waktu zaman Unix perangkat saat ini sesuai kebutuhan ketika deteksi waktu otomatis diaktifkan.

Layanan time_detector selalu dalam salah satu dari dua keadaan: ketidakpastian atau kepastian . Keadaan pasti atau tidak pasti suatu layanan ditentukan oleh saran waktu yang diterimanya dari berbagai sumber.

Ketika layanan time_detector sudah pasti, artinya telah menerima saran dengan informasi waktu epoch Unix, layanan ini akan mengesampingkan waktu epoch Unix saat ini jika saran waktu berbeda dengan waktu epoch Unix saat ini.

Jika time_detector tidak pasti, waktu saat ini tidak akan diganti. Keadaan 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 menggunakan saran waktu zaman Unix yang lama bergantung pada jam waktu nyata yang telah berlalu pada perangkat, yang dianggap tidak akurat dalam jangka waktu lama.

Untuk menetapkan waktu Unix saat ini secara otomatis, perangkat memiliki berbagai sumber yang dapat digunakan. Ini disebut asal-usul dalam dokumen ini. Layanan time_detector memperlakukan rangkaian saran sebagai sesuatu yang berbeda berdasarkan asalnya.

Layanan time_detector bersifat stateful, artinya layanan ini menyimpan catatan saran terbaru yang dibuat oleh setiap asal. Saran baru diberikan kepada time_detector jika suatu asal mempunyai informasi waktu zaman Unix yang lebih baru. Layanan time_detector mengevaluasi kembali 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 saat ini tidak selalu mudah untuk perangkat Android:

  • Waktu Epoch Unix adalah sistem ketepatan waktu yang sedikit berbeda dari waktu UTC. Mengonversi keduanya memerlukan pengetahuan tentang kapan detik kabisat terjadi dan cara penanganannya berdasarkan titik asal.
  • Asal mungkin hanya tersedia pada waktu tertentu atau dalam keadaan tertentu. Misalnya, jika asal memerlukan konektivitas jaringan, maka mungkin hanya tersedia saat perangkat tersambung ke internet.
  • Asal usulnya mungkin tidak akurat atau tidak tepat, atau ada kesalahan. Misalnya, jika menara seluler telepon tidak melacak "waktu universal" dengan benar, asal telepon mungkin memberikan saran waktu yang tidak akurat.
  • Mungkin ada ketidakakuratan yang terjadi saat mendapatkan waktu Unix. Misalnya, penundaan jaringan, buffering, atau penjadwalan proses mungkin menyebabkan waktu Unix menjadi tidak akurat.
  • Jam referensi yang digunakan untuk menyesuaikan saran waktu yang telah berlalu sejak saran diterima mungkin tidak akurat.

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

  • Jaringan : Menggunakan server waktu Network Time Protocol (NTP).
  • Telepon: Menggunakan sinyal telepon Jaringan Identitas dan Zona Waktu (NITZ).

Baik telepon maupun asal jaringan memerlukan konektivitas ke jaringan eksternal, yang tidak selalu tersedia.

Dimulai dengan Android 12, Android juga mendukung asal-usul 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 Unix mereka sendiri.

Pengaturan waktu

Pengguna dapat mengaktifkan deteksi waktu otomatis di Sistem > Tanggal dan Waktu di aplikasi Pengaturan AOSP.

Deteksi waktu otomatis di Pengaturan

Gambar 1. Deteksi waktu otomatis di Pengaturan.

Tabel berikut menjelaskan kontrol pengguna untuk deteksi waktu di aplikasi Pengaturan AOSP.

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

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

Sebuah tombol.

Saat aktif , perangkat bertanggung jawab untuk mendeteksi waktu Unix saat ini. Saat mati , pengguna diberikan kontrol untuk mengatur waktu perangkat secara manual.

Saat pengguna memasukkan waktu secara manual, mereka memasukkan waktu lokalnya, bukan waktu Unix. Waktu zaman Unix saat ini dihitung dengan menggunakan zona waktu saat ini untuk memperoleh waktu zaman Unix.

Konfigurasi

Produsen perangkat dapat mengonfigurasi layanan time_detector dengan berbagai cara, seperti asal mana 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 mana yang akan disertakan dalam deteksi waktu otomatis, dan prioritas time_detector yang mempertimbangkan asal-usul ini.

Untuk perangkat yang menjalankan Android 11 atau lebih rendah, prioritas asal dikodekan secara hardcode ke ["telephony", "network"] , artinya 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 dikonfigurasikan sebagai asal untuk digunakan secara default. Saran waktu jaringan diprioritaskan di atas saran waktu telepon. Produsen perangkat dapat mengubah urutan asal agar kembali ke perilaku di Android 11 atau lebih rendah, yang mana telepon diberi prioritas lebih tinggi.

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

Nilai asal yang diperbolehkan adalah:

Batas waktu yang diperbolehkan

Android 14 memperkenalkan batas waktu atas untuk saran waktu yang diterima oleh layanan time_detector . Jika perangkat mendukung proses 32-bit, kerangka kerja 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 lebih rendah yang digunakan untuk saran otomatis ditetapkan dari stempel waktu build. Ini bekerja berdasarkan prinsip bahwa waktu yang valid tidak boleh ada sebelum citra sistem perangkat dibuat. Jika saran waktu sebelum batas waktu yang lebih rendah, layanan time_detector akan membuang saran tersebut karena tidak valid jika stempel waktu pembuatan benar.

Untuk perangkat yang menjalankan Android 11 atau lebih rendah, layanan time_detector tidak memvalidasi saran waktu Unix yang masuk.

Waktu debugging dan pengujian

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

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 untuk debugging dan pengujian deteksi zona waktu, gunakan:

adb shell cmd time_detector help

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

Untuk memvalidasi deteksi waktu otomatis, penguji harus mengetahui asal mana yang digunakan layanan time_detector . Berikut ini adalah contoh output dari perintah adb shell cmd time_detector dump , dengan informasi tentang asal saat ini dan status layanan 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 diartikan sebagai berikut:

Kunci Nilai
mEnvironment.isAutoTimeDetectionEnabled() Apakah deteksi waktu otomatis diaktifkan.
mEnvironment.autoTimeLowerBound() Batas bawah saat ini digunakan untuk memvalidasi saran waktu.
mEnvironment.autoOriginPriorities() Asal usul penggunaan dan urutan prioritas.

Log perubahan waktu menunjukkan kejadian ketika layanan time_detector telah mengubah waktu Unix saat ini pada perangkat.

Informasi riwayat saran menunjukkan saran apa yang telah dibuat oleh masing-masing asal.

Deteksi zona waktu otomatis

Bagian ini memberikan ikhtisar layanan time_zone_detector yang mengelola deteksi zona waktu otomatis, kontrol pengguna dalam pengaturan, 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 lebih tinggi, mengelola deteksi zona waktu otomatis. Ini menyesuaikan zona waktu perangkat saat ini sesuai kebutuhan ketika deteksi zona waktu otomatis diaktifkan.

Jika deteksi zona waktu otomatis diaktifkan, time_zone_detector dapat berada dalam salah satu dari dua status: ketidakpastian dan kepastian .

Ketika layanan time_zone_detector berada dalam keadaan tertentu, ini berarti layanan time_zone_detector telah menerima informasi zona waktu yang kuat, yang dapat menyebabkannya menimpa zona waktu saat ini. Jika tidak pasti, ini berarti tidak menerima informasi atau hanya informasi dengan tingkat keyakinan rendah, yang berarti tidak akan mengesampingkan zona waktu saat ini.

Status tertentu layanan time_zone_detector dapat mencakup status di mana time_zone_detector tidak memiliki informasi zona waktu untuk digunakan, atau di mana ia memiliki beberapa zona waktu untuk dipilih. Negara-negara tersebut adalah sebagai berikut:

  • Negara tertentu dengan zona waktu nol dimasukkan ketika perangkat berada di suatu tempat tanpa zona waktu, misalnya di perairan internasional atau di wilayah sengketa. Keadaan ini mirip dengan keadaan tidak pasti, namun menunjukkan bahwa time_zone_detector tidak perlu mengambil tindakan lebih lanjut untuk mencoba menentukan zona waktu.
  • Negara bagian tertentu dengan beberapa zona waktu dimasukkan jika terdapat ambiguitas atau kondisi perbatasan. Dalam keadaan ini, jika zona waktu saat ini adalah salah satu zona waktu yang pasti time_zone_detector , maka zona waktu saat ini akan dibiarkan apa adanya. Jika tidak, salah satu zona waktu yang tersedia akan digunakan. Hal ini memberikan time_zone_detector elemen kelekatan jika pengguna telah memilih zona waktu secara manual sebelumnya atau saat perangkat mendekati batas.

Keadaan pasti atau tidak pasti layanan time_zone_detector ditentukan oleh saran zona waktu yang dikirimkan oleh suatu algoritma .

Secara umum, saran tersedia dalam dua jenis yang paling cocok dengan kemungkinan status time_zone_detector : sure dan sure . Berikut ini adalah contoh jenis saran:

  • type = uncertain , zoneIds = []

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

    • Algoritmanya pasti zonanya adalah Eropa/London.
  • ketik = certain , zoneIds = [] `

    • Algoritmenya pasti, tapi tidak ada ID zona yang terkait dengan lokasi saat ini.
  • type = certain , zoneIds = ["America/Denver", "America/Phoenix"]

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

Layanan time_zone_detector memperlakukan urutan saran sebagai sesuatu yang berbeda berdasarkan algoritmanya. Bergantung pada algoritme, saran mungkin juga berisi metadata yang menunjukkan seberapa yakin algoritme tersebut.

Layanan time_zone_detector bersifat stateful, artinya layanan ini menyimpan catatan saran terbaru yang dibuat oleh setiap algoritme. Saran baru dikirim ke layanan time_zone_detector jika saran sebelumnya tidak lagi benar; yaitu, jika suatu algoritme sekarang memiliki saran yang berbeda, atau jika algoritme tersebut 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 algoritma tunggal untuk menentukan zona waktu. Jika algoritme lokasi didukung pada perangkat, algoritme yang digunakan perangkat ditentukan berdasarkan pengaturan Zona waktu yang dikonfigurasi oleh pengguna. Ketika algoritme yang digunakan menjadi tidak pasti terhadap zona waktu, time_zone_detector biasanya tidak menggunakan saran dari algoritme lain. Saran yang terkait dengan algoritme yang tidak digunakan dapat disimpan di memori pada time_zone_detector , namun saran tersebut tidak akan digunakan kecuali algoritme berubah. Saat pengguna mengubah pengaturan untuk deteksi zona waktu otomatis dan algoritme berubah, saran terbaru yang tersedia untuk algoritme baru akan digunakan.

Untuk detail tentang situasi ketika beberapa algoritme digunakan untuk menentukan zona waktu, lihat Mode fallback telepon .

Mode penggantian telepon

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

Mode penggantian telepon berlaku untuk perangkat yang mendukung telepon dan deteksi lokasi, dan pengguna telah mengaktifkan Gunakan lokasi untuk mengatur zona waktu di Pengaturan zona waktu . Mode ini diaktifkan secara otomatis ketika perangkat di-boot ulang, dan ketika mode pesawat dinonaktifkan.

Di Android 14 dan yang lebih tinggi, penggantian telepon dapat dipicu melalui API pelaporan status LTZP , yaitu, jika LTZP melaporkan ketidakpastian dan kemampuannya untuk mendeteksi lokasi atau zona waktu terdegradasi oleh lingkungannya, mode penggantian telepon akan dipicu.

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

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

Pengaturan zona waktu

Pengguna dapat mengaktifkan dan mengonfigurasi pengaturan untuk deteksi zona waktu otomatis di aplikasi Pengaturan AOSP.

Deteksi zona waktu otomatis di Pengaturan

Gambar 2. Deteksi zona waktu otomatis di Pengaturan.

Tabel berikut menjelaskan kontrol pengguna untuk deteksi zona waktu di aplikasi Pengaturan AOSP.

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

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

Sebuah tombol.

Saat aktif , perangkat bertanggung jawab untuk mendeteksi zona waktu saat ini. Saat nonaktif , pengguna diberikan kontrol untuk mengatur zona waktu perangkat secara manual.

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

Sebuah tombol.

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

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

Lokasi Gunakan lokasi Pengguna saat ini

Sebuah tombol.

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

Berikut ini adalah ikhtisar perilaku perangkat untuk deteksi zona waktu berdasarkan pengaturan yang dipilih oleh pengguna:

  • [Tanggal dan Waktu] Atur zona waktu secara otomatis: OFF

    • Pengguna harus memilih zona waktu secara manual.
  • [Tanggal dan Waktu] Atur zona waktu secara otomatis: AKTIF

    • [Lokasi] Gunakan lokasi: MATI

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

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

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

        • Sinyal telepon digunakan untuk mendeteksi zona waktu.

Beberapa perangkat pengguna

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

Pengalih Gunakan lokasi untuk menyetel zona waktu tercakup dalam pengguna saat ini dan tidak dibatasi oleh kebijakan perangkat, yang berarti bahwa pengguna selalu dapat mengubah nilainya, bahkan saat pengalih Tetapkan zona waktu secara otomatis tidak aktif atau jika waktu atau zona waktu lain mengontrol dibatasi oleh Pengontrol Kebijakan Perangkat.

Perangkat yang hanya mendukung algoritma deteksi zona waktu lokasi

Bagian ini menjelaskan perilaku perangkat yang hanya mendukung algoritma lokasi.

  • Android 14 dan lebih tinggi

    • Opsi Gunakan lokasi tidak ditampilkan kepada pengguna di aplikasi Pengaturan AOSP dan perangkat berperilaku seolah-olah opsi Gunakan lokasi diaktifkan.
    • Nilai pengaturan 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 terlihat oleh pengguna di aplikasi Pengaturan AOSP dan pengguna dapat menonaktifkan opsi tersebut. Jika opsi ini dinonaktifkan, perangkat tidak akan mendeteksi zona waktu secara otomatis.

Perilaku saat mengubah ke dan dari deteksi otomatis

Saat pengguna mengalihkan deteksi zona waktu dari manual ke otomatis , time_zone_detector mungkin sudah yakin dengan zona waktu saat ini. Jika demikian, saat pengguna mengaktifkan deteksi otomatis, zona waktu perangkat mungkin diubah pada saat yang sama agar sesuai dengan pendapat layanan time_zone_detector .

Demikian pula, ketika pengguna membuat perubahan di Pengaturan yang mengakibatkan perubahan pada algoritme layanan time_zone_detector saat ini, time_zone_detector mungkin sudah menerima saran untuk algoritme baru sehingga waktu perangkat mungkin segera diubah agar sesuai dengan opini layanan time_zone_detector .

Deteksi zona waktu telepon

Deteksi zona waktu telepon menggunakan sinyal telepon untuk menentukan zona waktu saat ini. Untuk informasi lebih lanjut, lihat Deteksi Zona Waktu Teleponi .

Deteksi zona waktu lokasi

Deteksi zona waktu lokasi tersedia di Android 12 atau lebih tinggi. 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 saran algoritme lokasi ke layanan time_zone_detector . Untuk informasi lebih lanjut, 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 telepon dan deteksi lokasi

Tabel berikut memberikan perbandingan keuntungan dan kerugian menggunakan sinyal lokasi dibandingkan sinyal telepon untuk deteksi zona waktu.

Deteksi telepon Deteksi lokasi
Ketepatan Bervariasi menurut negara.

Tergantung pada MCC, kebenaran dan ketersediaan NITZ.
Tergantung pada konfigurasi fitur atau komponen plug-in.

Kebenaran biasanya bervariasi berdasarkan:
  • Akurasi dan keteraturan penyedia lokasi.
  • Kualitas data peta zona waktu.
Kemampuan untuk diperbarui Deteksi telepon bergantung pada file yang terdapat dalam modul Data Zona Waktu yang dapat diperbarui (com.android.tzdata APEX). Tergantung pada konfigurasi fitur atau komponen plug-in.

Kemampuan pembaruan 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 memperbarui salinan TZDB Android dan informasi zona waktu lainnya.

Produsen perangkat juga harus mempertimbangkan konsistensi versi antara aturan zona waktu dan data peta zona waktu.
Penggunaan daya Tidak ada atau penggunaan daya rendah Tergantung pada pengaturan lokasi pengguna, plugin yang digunakan, dan biasanya aplikasi lain meminta lokasi.
Ketersediaan Hanya perangkat telepon saja. Biasanya memerlukan SIM yang berfungsi. Deteksi lokasi bergantung pada penyedia lokasi yang tersedia.
Privasi pengguna

Zona waktu pilihan pengguna biasanya ditentukan oleh lokasi geografisnya. Lokasi adalah data sensitif. Pengguna mungkin khawatir tentang pengetahuan tentang 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 gambaran yang tidak tepat tentang lokasi perangkat dari informasi ini.

Lebih khusus lagi, deteksi zona waktu dapat bekerja 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 pengaturan privasi pengguna dan persetujuan mereka, perangkat memperoleh lokasi perangkat untuk melakukannya. Ia kemudian dapat membagikan lokasinya dengan layanan eksternal. Lihat diskusi di bawah untuk detail tentang privasi dan persetujuan pengguna.

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

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

Pendekatan Android terhadap privasi pengguna untuk deteksi zona waktu memberi pengguna kemampuan untuk menonaktifkan algoritma yang diharapkan aktif satu per satu. Selain itu, kode platform AOSP tidak berhubungan langsung dengan lokasi itu sendiri: deteksi lokasi dan pemetaan lokasi ke ID zona waktu diserahkan kepada komponen plug-in yang dikonfigurasi oleh produsen perangkat.

Untuk 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 detail konfigurasi algoritma deteksi telepon dan zona waktu, lihat Deteksi Zona Waktu Telepon dan Deteksi Zona Waktu Lokasi .

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

Kunci konfigurasi nilai AOSP Keterangan
config_supportTelephonyTimeZoneFallback true Jika true , time_zone_detector menggunakan mode fallback telepon. Ini tersedia untuk Android 13 dan lebih tinggi.

Mengubah perilaku default perangkat

Di AOSP, deteksi zona waktu otomatis diaktifkan secara default dengan pengaturan auto_time_zone diatur ke true . Untuk menonaktifkan deteksi waktu otomatis secara default, setel nilai def_auto_time_zone yang ditentukan dalam frameworks/base/packages/SettingsProvider/res/values/defaults.xml ke false .

Saat memulihkan cadangan dari perangkat lain, kerangka kerja memperbarui nilai pengaturan auto_time_zone secara default. Jika Anda ingin memastikan bahwa pengaturan 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 .

Debugging dan pengujian zona waktu

Bagian ini memberikan informasi tentang cara men-debug dan menguji perilaku layanan time_zone_detector dan komponen lain yang digunakan bersama oleh semua 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 dengan kode kepemilikan (non-AOSP). Saat menggunakan nilai device_config untuk pengujian, terutama selama pengujian manual yang berjalan lama, perangkat mungkin menyinkronkan tanda, yang akan menyetel ulang tanda dan menghapus nilai yang ditetapkan untuk pengujian.

Di Android 12 atau lebih tinggi, 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 bendera, reboot perangkat.

Untuk informasi lebih lanjut, gunakan $ adb shell cmd device_config help .

Berinteraksi dengan layanan time_zone_detector

Untuk melihat konfigurasi time_zone_detector dan status layanan time_zone_detector , gunakan:

adb shell cmd time_zone_detector dump

Untuk melihat perintah tambahan untuk debugging dan pengujian deteksi zona waktu, gunakan:

adb shell cmd time_zone_detector help

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

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

  • Periksa secara visual melalui UI Pengaturan. Untuk informasi lebih lanjut, lihat Pengaturan zona waktu .
  • Gunakan baris perintah melalui adb:

    • Untuk membuang status time_zone_detector , gunakan adb shell cmd time_zone_detector dump
    • Untuk mengubah pengaturan perangkat, gunakan perintah time_zone_detector lainnya. Untuk informasi lebih lanjut, gunakan adb shell cmd time_zone_detector help .

Berikut ini adalah contoh output dari perintah adb shell cmd time_zone_detector dump , dengan informasi tentang algoritme saat ini dan status layanan yang 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 tersebut dapat diartikan sebagai berikut:

Kunci Nilai
mUserConfigAllowed Apakah pengguna dilarang mengontrol setelan tanggal dan waktu oleh Pengontrol Kebijakan Perangkat .
mTelephonyDetectionSupported Apakah perangkat memiliki deteksi zona waktu telepon.
mGeoDetectionSupported Apakah perangkat mendukung deteksi zona waktu lokasi. Ini adalah keadaan efektif berdasarkan konfigurasi dan keberadaan setidaknya satu LTZP.
mAutoDetectionEnabled Apakah deteksi zona waktu otomatis diaktifkan.
mLocationEnabled Pengalih lokasi utama.
mGeoDetectionEnabled Peralihan algoritma: false menunjukkan algoritma telepon, dan true menunjukkan algoritma lokasi.

Informasi riwayat saran menunjukkan saran apa yang telah dibuat melalui Pengaturan (manual), dan melalui algoritma telepon dan lokasi.