Deteksi waktu otomatis menerima saran waktu dari berbagai sumber, memilih opsi terbaik, lalu menyetel jam sistem di Android agar sesuai. Rilis Android yang disediakan sebelumnya dua cara untuk menyetel tanggal dan waktu, baik disetel secara manual per pengguna atau dengan deteksi waktu otomatis, dan dengan salah satu opsi berikut:
telephony
menggunakan sinyal telepon Identitas Jaringan dan Zona Waktu (NITZ).network
menggunakan server waktu Protokol Waktu Jaringan (NTP).
Setiap opsi memerlukan koneksi ke jaringan eksternal, yang tidak selalu tersedia di Android Otomotif. Misalnya, di beberapa negara, beberapa mobil mungkin tidak memiliki telepon bawaan. Oleh karena itu, Waktu Sistem Navigasi Satelit Global (GNSS) disediakan sebagai sumber sistem untuk digunakan saat konektivitas jaringan tidak tersedia.
Rilis Android mendatang ini menyediakan dua opsi lagi untuk mendeteksi dan menyetel waktu secara otomatis:
gnss
menggunakan Satelit Global Sistem Navigasi (GNSS).external
penggunaan properti VHAL atau System API.
Aktifkan deteksi waktu otomatis
Untuk mengaktifkan deteksi waktu otomatis, pastikan untuk memilih Setelan > Tanggal & Waktu > Tanggal Otomatis & Waktu:
Gambar 1. Pilih Tanggal Otomatis & Waktu
Konfigurasi sumber waktu
Untuk menentukan sumber waktu yang akan disertakan dalam deteksi waktu otomatis dan prioritasnya
yang harus dipertimbangkan untuk sumber waktu ini, Anda harus memodifikasi sumber daya
file konfigurasi, core/res/res/values/config.xml
:
<!-- 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>telephony</item> <item>network</item> </string-array>
Dalam contoh ini, telephony
dan network
dipertimbangkan dalam
deteksi waktu otomatis dan saran waktu telephony
akan diprioritaskan
lebih awal dari network
saran waktu.
Secara umum, saran dari sumber dengan prioritas lebih tinggi akan diabaikan jika saran tersebut tidak valid atau jika saran sudah terlalu lama. Selain itu, jika saran yang valid dengan prioritas tertinggi mencocokkan waktu jam sistem perangkat saat ini dalam beberapa detik (nilai default adalah dua (2) detik), waktu tidak akan diubah.
Batas waktu bawah
Android 12 menyediakan batas waktu lebih rendah baru untuk digunakan saat memvalidasi saran waktu. Sebelum fitur ini, deteksi waktu otomatis tidak akan memvalidasi waktu UTC masuk yang disarankan. Dengan fitur ini, waktu yang berlalu sebelum batas bawah akan dihapus.
Nilai batas bawah ditentukan dari tanggal yang berasal dari stempel waktu build. Ini berfungsi di prinsip bahwa waktu yang valid tidak bisa terjadi sebelum {i>image<i} sistem dibangun. Android tidak memberlakukan batas atas.
Saran waktu GNSS
Sumber waktu gnss
baru di Android 12 dan disediakan oleh sinyal GPS. Ini adalah
sumber yang andal untuk waktu saat telephony
dan network
tidak tersedia.
Opsi ini ditambahkan ke GnssTimeUpdateService
baru di
SystemServer yang secara pasif memproses pembaruan lokasi. Saat menerima lokasi yang valid,
GnssTimeUpdateService
memberikan saran ke TimeDetectorService
, yang
kemudian menentukan apakah
jam sistem harus diperbarui.
Secara default, sumber waktu gnss
tidak diaktifkan di AOSP sehingga,
harus diaktifkan oleh partner:
<!-- 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>telephony</item> <item>network</item> <item>gnss</item> </string-array> <!-- Enables the GnssTimeUpdate service. This is the global switch for enabling Gnss time based suggestions to TimeDetector service. See also config_autoTimeSourcesPriority. --> <bool name="config_enableGnssTimeUpdateService">true</bool>
Untuk mengaktifkan fitur ini:
- Perbarui
config_enableGnssTimeUpdateService
. Nilai untukconfig_enableGnssTimeUpdateService
harus ditetapkan ketrue
. - Perbarui
config_autoTimeSourcesPriority
.gnss
harus ditambahkan ke daftar item untukconfig_autoTimeSourcesPriority
. Posisignss
di daftar prioritas menentukan prioritas yang diberikan untuk saran GNSS, sehubungan dengan nilai dari sumber lain.
Dampak terhadap daya
GnssTimeUpdateService
secara pasif memproses pembaruan lokasi, yang artinya
tidak mengaktifkan GPS secara aktif untuk mengonsumsi daya tambahan. Akibatnya, daya yang
dikonsumsi saat
sumber GNSS diaktifkan
dapat diabaikan. Ini juga berarti bahwa kecuali aplikasi atau layanan lain di
sistem secara aktif meminta pembaruan lokasi, GnssTimeUpdateService
tidak mendapatkan lokasi
memperbarui dan menyarankan waktu GNSS.
Pengujian
Paket uji kompatibilitas (CTS)
Tes CTS diberikan untuk memverifikasi bahwa waktu yang disediakan GNSS tersedia. Untuk mengetahui detailnya, lihat
LocationShellCommand.java
.
Pengujian unit
Lihat pengujian unit dasar dalam file berikut:
atest frameworks/base/services/tests/servicestests/src/com/android/server/timedetector/GnssTimeUpdateServiceTest.java
Pengujian manual
Untuk menguji fitur ini, perintah baru telah ditambahkan ke
LocationShellCommand.java
. Gunakan perintah berikut untuk menambahkan pengujian
penyedia layanan yang dapat Anda gunakan untuk menentukan lokasi dan waktu GNSS terkait.
GnssTimeUpdateService
memproses pembaruan lokasi ini, dan secara berkala
memberikan saran.
Catatan: Antarmuka untuk perintah ini dapat berubah antar rilis.
# Enable Master Location Switch in the foreground user (usually user 10 on automotive). # If you just flashed, this can be done through Setup Wizard. adb shell cmd location set-location-enabled true --user 10 # Add GPS test provider (this usually fails the first time and will throw a SecurityException # with "android from <some-uid> not allowed to perform MOCK_LOCATION".) adb shell cmd location providers add-test-provider gps # Enable mock location permissions for previous UID adb shell appops set <uid printed in previous error> android:mock_location allow # Add GPS test provider (Should work with no errors.) adb shell cmd location providers add-test-provider gps # Enable GPS test provider adb shell cmd location providers set-test-provider-enabled gps true # Set location with time (time can't be earlier than the limit set by the lower bound.) adb shell cmd location providers set-test-provider-location gps --location <LATITUDE>,<LONGITUDE> --time <TIME>
Saran waktu eksternal
Saran waktu eksternal adalah cara lain untuk memberikan saran waktu otomatis untuk Android. Opsi baru ini memungkinkan Anda memberikan saran waktu yang sepenuhnya disesuaikan untuk Android, yang dapat berasal dari berbagai ECU yang pada gilirannya dapat menggunakan kombinasi jam real-time, GNSS, NITZ, atau sumber waktu lainnya.
Saran berikut tersedia di Android 12 untuk dipertimbangkan sebagai external
saran waktu:
- Properti VHAL. Fitur baru
Properti VHAL
yang bernama
EPOCH_TIME
disediakan. Properti ini menunjukkan jumlah dalam milidetik yang telah berlalu sejak 1/1/1970 UTC. Nilainya bisa diteruskan keTimeManager
Android untuk menyarankan waktu sistem baru. Contoh VHAL penerapan yang memperbarui properti ini disediakan dalam penerapan referensi di bawah ini. - System API. Metode baru yang disebut
suggestExternalTime()
tersedia di TimeManager untuk memberikan saran waktu eksternal kepada sistem. Jika sistem dikonfigurasi untuk mempertimbangkan saran waktu eksternal (menggunakanconfig_autoTimeSourcesPriority
di file konfigurasi), stempel waktu yang diteruskan ke metode ini digunakan untuk menyetel waktu sistem, jika tidak ada saran waktu prioritas yang tersedia.
Anda dapat menerapkan solusi waktu eksternal seperti yang dijelaskan di bawah:
- Mengupdate file konfigurasi resource (
core/res/res/values/config.xml
) lalu tambahkan nilaiexternal
keconfig_autoTimeSourcesPriority
:<string-array name="config_autoTimeSourcesPriority> <item>external</item> <item>gnss</item> </string-array>
Tindakan tersebut akan memerintahkan Android untuk memberikan saran waktu eksternal prioritas tertinggi saat menyetel jam sistem. Hardware pada kendaraan menulis saran stempel waktu ke perangkat yang baru
EPOCH_TIME
Properti VHAL. - Aplikasi yang disediakan vendor membaca properti ini dan memanggil
TimeManager.suggestExternal()
. Android kemudian dapat menggunakan stempel waktu yang disediakan sebagai nilai jam sistem baru.