Ikhtisar Waktu

Halaman ini menjelaskan cara kerja deteksi waktu dan zona waktu di Android. Ini termasuk bagaimana Android secara otomatis mendeteksi waktu dan zona waktu, 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 status terkait tetapi independen:

  • Waktu zaman Unix saat ini
  • Zona waktu saat ini

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

Waktu Epoch Unix saat ini bukanlah nilai tetap. Ini diperbarui secara otomatis untuk mencerminkan berlalunya waktu. Selain berlalunya waktu normal, waktu epoch Unix saat ini dari perangkat akan disesuaikan jika ternyata salah, misalnya, setelah perangkat kehilangan daya.

Zona waktu saat ini menentukan penyesuaian yang akan dilakukan untuk mengubah waktu zaman Unix saat ini menjadi waktu lokal. Misalnya, selama musim panas di Los Angeles, perangkat mengurangi 7 jam dari waktu zaman Unix saat ini, dan di musim dingin 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 epoch 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 epoch 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 untuk mereka melalui mekanisme berikut.

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

Deteksi waktu otomatis

Bagian ini memberikan 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 status: tidak pasti atau tertentu . Status pasti atau tidak pasti layanan ditentukan oleh saran waktu yang diterimanya dari berbagai sumber.

Ketika layanan time_detector pasti, artinya telah menerima saran dengan informasi waktu epoch Unix, itu menimpa waktu epoch Unix saat ini jika saran waktu berbeda dari waktu epoch Unix saat ini.

Ketika time_detector tidak pasti, itu tidak menimpa waktu saat ini. 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 lama bergantung pada jam waktu nyata yang telah berlalu pada perangkat, yang dianggap tidak akurat dalam jangka waktu lama.

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

Layanan time_detector bersifat stateful, yang berarti layanan ini menyimpan catatan saran terbaru yang dibuat oleh masing-masing Origin. Saran baru dibuat untuk time_detector jika Origin memiliki informasi waktu Unix terbaru yang tersedia. Layanan time_detector mengevaluasi ulang saran baru dan yang sudah ada serta memperbarui status perangkat saat saran diterima.

Meskipun waktu UTC disepakati secara internasional, ada berbagai alasan mengapa menetapkan waktu zaman Unix saat ini tidak selalu mudah untuk perangkat Android:

  • Waktu epoch Unix adalah sistem ketepatan waktu yang agak berbeda dari waktu UTC. Konversi antara keduanya membutuhkan pengetahuan tentang kapan detik kabisat terjadi dan bagaimana mereka ditangani oleh asal.
  • Origins mungkin hanya tersedia pada waktu tertentu atau dalam keadaan tertentu. Misalnya, jika asal memerlukan konektivitas jaringan, mungkin hanya tersedia saat perangkat terhubung ke internet.
  • Asal mungkin tidak akurat atau tidak tepat, atau memiliki 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 diperkenalkan saat mendapatkan waktu epoch Unix. Misalnya, penundaan jaringan, buffering, atau penjadwalan proses dapat menyebabkan waktu epoch Unix menjadi tidak akurat.
  • Jam referensi yang digunakan untuk menyesuaikan saran untuk waktu yang telah berlalu sejak saran diterima mungkin tidak akurat.

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

  • Telepon: Menggunakan sinyal telepon Network Identity and Time Zone (NITZ).
  • Jaringan: Menggunakan server waktu Network Time Protocol (NTP).

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

Dimulai dengan Android 12, Android juga mendukung asal berikut, yang tidak dikonfigurasi untuk digunakan secara default:

  • GNSS : Menggunakan penyedia lokasi GPS untuk mendapatkan waktu dari sumber GNSS.
  • Eksternal : Asal generik yang memungkinkan produsen perangkat untuk 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.

*Di Android 11 dan yang lebih rendah, setelan 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 sakelar.

Saat aktif , perangkat bertanggung jawab untuk mendeteksi waktu zaman Unix saat ini. Saat nonaktif , pengguna diberikan kontrol untuk menyetel waktu perangkat secara manual.

Ketika pengguna memasukkan waktu secara manual, mereka memasukkan waktu lokal mereka, bukan waktu epoch Unix. Waktu epoch Unix saat ini dihitung dengan menggunakan zona waktu saat ini untuk mendapatkan waktu epoch Unix.

Konfigurasi

Produsen perangkat dapat mengonfigurasi layanan time_detector dengan berbagai cara, seperti asal mana yang akan digunakan dan cara memprioritaskan sinyal dari mereka.

Prioritas asal

Dari 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 di-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 dikonfigurasi sebagai asal untuk digunakan secara default. Saran waktu jaringan diprioritaskan di atas saran waktu telepon. Produsen perangkat dapat mengubah urutan asal untuk kembali ke perilaku di Android 11 atau lebih rendah, di mana telepon diberikan prioritas yang 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. Ini untuk menghindari pembuatan pekerjaan untuk aplikasi terpasang yang mendengarkan maksud ACTION_TIME_CHANGED .

Nilai asal yang diizinkan adalah:

Batas waktu yang lebih rendah

Android 12 memperkenalkan batas waktu yang lebih rendah yang digunakan untuk memvalidasi saran waktu yang diterima oleh layanan time_detector . Nilai batas waktu yang lebih rendah diatur dari stempel waktu pembuatan. Ini bekerja berdasarkan prinsip bahwa waktu yang valid tidak boleh sebelum citra sistem perangkat dibangun. Jika saran waktu sebelum batas waktu yang lebih rendah, layanan time_detector membuang saran karena tidak valid jika stempel waktu build benar.

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

Android tidak memberlakukan batas waktu atas.

Waktu debugging dan pengujian

Bagian ini menyediakan informasi tentang cara men-debug dan menguji perilaku layanan time_detector dan komponen lain yang dibagikan 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

Output bantuan juga menjelaskan properti layanan device_config yang dapat digunakan untuk mempengaruhi 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 keluaran dari perintah adb shell cmd time_zone_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 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 yang digunakan dan urutan prioritas.

Log perubahan waktu menunjukkan saat-saat ketika layanan time_detector telah mengubah waktu epoch Unix saat ini dari perangkat.

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

Deteksi zona waktu otomatis

Bagian ini memberikan gambaran umum tentang 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.

Saat deteksi zona waktu otomatis diaktifkan, time_zone_detector dapat berada di salah satu dari dua status: tidak pasti dan tertentu .

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

Status tertentu layanan time_zone_detector dapat menyertakan status di mana time_zone_detector tidak memiliki informasi zona waktu untuk digunakan, atau jika 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, seperti di perairan internasional atau di wilayah yang disengketakan. Status ini mirip dengan status tidak pasti, tetapi menunjukkan bahwa time_zone_detector tidak perlu mengambil tindakan lebih lanjut untuk mencoba menentukan zona waktu.
  • Negara tertentu dengan beberapa zona waktu dimasukkan di mana ada ambiguitas atau kondisi perbatasan. Dalam keadaan ini, jika zona waktu saat ini adalah salah satu dari zona waktu yang dipastikan oleh time_zone_detector , zona waktu saat ini dibiarkan apa adanya. Jika tidak, salah satu zona waktu yang tersedia akan digunakan. Ini memberikan time_zone_detector elemen kelengketan jika pengguna telah memilih zona waktu mereka sebelumnya secara manual atau saat perangkat mendekati perbatasan.

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

Umumnya, saran datang dalam dua jenis yang sangat cocok dengan kemungkinan status time_zone_detector : tertentu dan tidak pasti . Berikut ini adalah contoh jenis saran:

  • type = "tidak pasti", zoneIds = []

    • Asal tidak tahu apa itu zona waktu.
  • type = "tertentu", zoneIds = ["Eropa/London"]

    • Asal pasti zonanya adalah "Eropa/London".
  • type = "tertentu", zoneIds = []

    • Asal pasti, tetapi tidak ada ID zona yang terkait dengan lokasi saat ini.
  • type = "tertentu", zoneIds = ["Amerika/Denver", "Amerika/Phoenix"]

    • Asal yakin bahwa 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 berbeda berdasarkan asalnya. Bergantung pada asalnya, saran mungkin juga berisi metadata yang menunjukkan seberapa pasti asalnya.

Layanan time_zone_detector bersifat stateful, yang berarti layanan ini menyimpan catatan saran terbaru yang dibuat oleh masing-masing Origin. Saran baru dikirim ke layanan time_zone_detector jika saran sebelumnya tidak lagi benar; yaitu, jika Origin sekarang memiliki saran yang berbeda, atau jika 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 asal untuk deteksi zona waktu:

  • Telepon
  • Lokasi

Layanan time_zone_detector hanya menggunakan satu origin untuk menentukan zona waktu. Saat asal lokasi didukung pada perangkat, asal saat ini yang akan digunakan ditentukan berdasarkan pengaturan zona waktu yang dikonfigurasi oleh pengguna. Ketika asal saat ini menjadi tidak pasti dari zona waktu, time_zone_detector tidak beralih ke asal yang berbeda. Saran yang terkait dengan Origin selain Origin saat ini dapat disimpan di memori oleh time_zone_detector , tetapi tidak digunakan kecuali Origin saat ini berubah. Ketika pengguna mengubah pengaturan untuk deteksi zona waktu otomatis dan asal saat ini berubah, saran terbaru yang tersedia untuk asal baru akan digunakan.

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.

*Di Android 11 dan yang lebih rendah, setelan 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 sakelar.

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

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

Sebuah sakelar.

Tersedia dari Android 12. Pengalih ini hanya ditampilkan saat deteksi zona waktu lokasi didukung pada perangkat.

Lokasi Gunakan lokasi Pengguna saat ini

Sebuah sakelar.

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

Berikut ini memberikan gambaran umum tentang 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: ON

    • [Lokasi] Gunakan lokasi: OFF

      • Sinyal telepon digunakan untuk mendeteksi zona waktu. (Lihat Catatan di bawah.)
    • [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. (Lihat Catatan di bawah.)

Beberapa perangkat pengguna

Karena beberapa pengaturan yang terlibat dicakupkan ke pengguna saat ini, perilaku deteksi zona waktu perangkat dapat berubah saat pengguna saat ini berubah pada perangkat Android multi-pengguna.

Pengalihan Gunakan lokasi untuk menyetel zona waktu dicakup untuk pengguna saat ini dan tidak dibatasi oleh kebijakan perangkat, artinya pengguna selalu dapat mengubah nilainya, bahkan saat sakelar Setel zona waktu secara otomatis mati atau jika waktu atau zona waktu lain mengontrol dibatasi oleh Device Policy Controller.

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 berubah pada saat yang sama agar sesuai dengan opini layanan time_zone_detector .

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

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 Telepon .

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 asal 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 lokasi daripada 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 menurut:
  • Keakuratan dan keteraturan penyedia lokasi.
  • Kualitas data peta zona waktu.
Keterbaruan 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.

Keterbaruan 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 Bergantung pada pengaturan lokasi pengguna, plugin yang digunakan, dan biasanya aplikasi lain yang meminta lokasi.
Ketersediaan Perangkat telepon saja. Biasanya membutuhkan SIM yang berfungsi. Deteksi lokasi tergantung 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 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 gagasan 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 itu.
  • Aktif: Perangkat harus bekerja di luar zona waktu untuk dirinya sendiri dan bergantung pada pengaturan privasi pengguna dan persetujuan mereka, memperoleh lokasi perangkat untuk melakukannya. Kemudian dapat membagikan lokasinya dengan layanan eksternal. Lihat diskusi di bawah untuk detail tentang privasi dan persetujuan pengguna.

Deteksi pasif, seperti dengan asal telepon, tidak memiliki implikasi privasi tambahan bagi pengguna.

Deteksi aktif, seperti dengan asal lokasi, melibatkan penentuan lokasi perangkat, yang mungkin tidak ingin disetujui oleh 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 asal 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 .

Debug dan pengujian zona waktu

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

Mengonfigurasi perangkat menggunakan layanan device_config

Layanan device_config adalah mekanisme yang digunakan pada 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 flag, yang akan menyetel ulang flag dan menghapus nilai yang ditetapkan untuk pengujian.

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

adb shell cmd device_config set_sync_disabled_for_tests persistent

Untuk memulihkan sinkronisasi bendera 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 mempengaruhi 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 asal mana yang digunakan oleh time_zone_detector . Untuk memahami dan memengaruhi asal time_zone_detector saat ini, gunakan salah satu opsi berikut:

  • Periksa secara visual melalui Pengaturan UI. 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 keluaran dari perintah adb shell cmd time_zone_detector dump , dengan informasi tentang asal dan status layanan saat ini 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 dicegah untuk mengontrol pengaturan tanggal dan waktu oleh Device Policy Controller .
mTelephonyDetectionSupported Apakah perangkat memiliki deteksi zona waktu telepon.
mGeoDetectionSupported Apakah perangkat memiliki deteksi zona waktu lokasi. Ini adalah status efektif berdasarkan konfigurasi dan keberadaan setidaknya satu LTZP.
mAutoDetectionEnabled Apakah deteksi zona waktu otomatis diaktifkan.
mLocationEnabled Tombol lokasi utama.
mGeoDetectionEnabled Sakelar asal: `false` menunjukkan asal telepon, dan `true` menunjukkan asal lokasi.

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