Untuk memberikan periode waktu tidak ada aktivitas dalam kendaraan, Mode Garasi menjaga sistem
terjaga sehingga pekerjaan di
JobScheduler
dibatasi dengan
tidak ada aktivitas dapat dijalankan.
Apa itu Mode Garasi?
Pada perangkat terhubung seperti ponsel, pengguna mengandalkan sistem untuk memastikan perangkat stabil, terbaru, dan optimal. Untuk mencapai status tersebut, platform Android menyediakan tidak ada aktivitas waktu periode saat aplikasi dapat melakukan tugas saat pengguna tidak berinteraksi dengan perangkat. Ponsel dianggap tidak ada aktivitas jika pengguna tidak menyentuh untuk durasi yang diperpanjang (60 menit atau lebih) dan layar akan dimatikan. Tidak seperti ponsel, saat mobil tidak digunakan, ponsel akan dimatikan, yang berarti mobil tersebut tidak memiliki waktu tidak ada aktivitas jendela. Mode Garasi memastikan waktu tidak ada aktivitas di dalam mobil.
Saat mobil dimatikan oleh pengguna, sistem akan memasuki Mode Garasi. Meskipun
mobil dalam Mode Garasi, sistem menyala, layar dimatikan, dan
tugas yang tidak ada aktivitas dalam antrean JobScheduler
akan dieksekusi. Untuk menerapkan Mode Garasi, lihat
Panduan penerapan perangkat.
Panduan penerapan perangkat
Untuk mengaktifkan Mode Garasi, saat mematikan kendaraan, Vehicle HAL (VHAL)
harus mengirim
AP_POWER_STATE_REQ
dengan status SHUTDOWN_PREPARE
dengan parameter yang disetel ke SHUTDOWN_ONLY
atau CAN_SLEEP
.
Agar SHUTDOWN_PREPARE
status efektif, VHAL harus menentukan dua hal
parameter (status dan parameter tambahan) untuk perintah AP_POWER_STATE_REQ
. Hal ini memungkinkan perangkat
masuk ke Mode Garasi,
yang mendeteksi tugas terjadwal di
JobScheduler
dan mencegah sistem melanjutkan untuk ditangguhkan atau dimatikan hingga tugas
diselesaikan.
Bagaimana implementasi perangkat terhubung ke framework Android?
Untuk Mode Garasi, framework meminta VHAL untuk memperpanjang waktu penonaktifan hingga durasi yang disyaratkan terlampaui atau semua tugas telah dijalankan, saat sistem dimatikan. Dalam keadaan tertentu yang ditentukan di CDD, implementasi perangkat dapat mematikan sistem lebih cepat. Untuk detailnya tentang persyaratan kompatibilitas Android, lihat Compatibility Definition Document (CDD).
Jika VHAL harus mematikan sistem sebelum Mode Garasi selesai, VHAL dapat mengeluarkan
SHUTDOWN_PREPARE
dengan parameter yang disetel ke
SHUTDOWN_IMMEDIATELY
atau SLEEP_IMMEDIATELY
. Perangkat
penerapan dapat menggunakannya hanya dalam keadaan tertentu, biasanya
ketika sumber daya yang dibutuhkan untuk menjaga
sistem tetap berjalan tidak tersedia. Sebagai
misalnya, saat kapasitas baterai tidak mencukupi.
Gambar 1. Alur Mode Garasi
Bagaimana cara developer aplikasi bekerja dengan Mode Garasi?
Aplikasi dan layanan tidak berinteraksi langsung dengan Mode Garasi. Sebagai gantinya,
aplikasi menjadwalkan tugas di
JobScheduler
Tugas-tugas tersebut dibatasi oleh
idleness dijalankan selama Mode Garasi.
Kode berikut menunjukkan cara menjadwalkan tugas untuk dijalankan selama Mode Garage:
public class MyGarageModeJob extends JobService { ... } Context context = ...; int jobId = ...; ComponentName myGarageModeJobName = new componentName(context, MyGarageModeJob.class); JobInfo.Builder infoBuilder = new JobInfo.Builder(jobId, myGarageModeJobName) .setRequiresDeviceIdle(true); // Example of an optional constraint: infoBuilder.setRequiredNetworkType(NetworkType.NETWORK_TYPE_UNMETERED); JobScheduler jobScheduler = (JobScheduler) context .getSystemService(Context.JOB_SCHEDULER_SERVICE); jobScheduler.schedule(infoBuilder.build());
Men-debug Mode Garasi
Untuk melakukan debug Mode Garasi:- Untuk mengaktifkan kategori logging yang relevan dengan Mode Garasi:
adb shell stop adb shell setprop log.tag.GarageMode VERBOSE adb shell setprop log.tag.Finsky VERBOSE adb shell setprop log.tag.CAR.POWER VERBOSE adb shell setprop log.tag.JobScheduler.Connectivity VERBOSE adb shell start
- Untuk meninjau output logcat guna menunjukkan bahwa Mode Garasi dimulai:
GarageMode: [Controller]: CPM state changed to SHUTDOWN_PREPARE GarageMode: [GarageMode]: Entering GarageMode GarageMode: [Controller]: Sending broadcast with action: com.android.server.jobscheduler.GARAGE_MODE_ON
- Untuk menentukan output logcat agar Mode Garasi selesai (dibatalkan atau
selesai):
atau[GarageMode]: GarageMode was canceled
[GarageMode]: GarageMode completed normally
Mode Garasi bergantung pada status daya kendaraan seperti yang dijelaskan di atas.
- Tinjau output logcat untuk menunjukkan status daya yang benar telah dimasukkan:
CAR.POWER: starting shutdown prepare without Garage Mode GarageMode: [Controller]: CPM state changed to SHUTDOWN_PREPARE GarageMode: [GarageMode]: Entering GarageMode CAR.POWER: send shutdown prepare CAR.POWER: setPowerState=SHUTDOWN_PREPARE(7) param=0