Untuk memberikan periode waktu tidak ada aktivitas di kendaraan, Mode Garasi membuat sistem tetap aktif sehingga tugas di JobScheduler
yang dibatasi dengan tidak ada aktivitas dapat dijalankan.
Apa yang dimaksud dengan Mode Garasi?
Di perangkat terhubung seperti ponsel, pengguna mengandalkan sistem untuk memastikan perangkat stabil, terbaru, dan dioptimalkan. Untuk mencapai status tersebut, platform Android menyediakan periode waktu tidak ada aktivitas selama aplikasi dapat melakukan tugas saat pengguna tidak berinteraksi dengan perangkat. Ponsel dianggap tidak ada aktivitas saat pengguna tidak menyentuhnya selama durasi yang lama (60 menit atau lebih) dan layar dinonaktifkan. Tidak seperti ponsel, saat tidak digunakan, mobil akan dinonaktifkan, yang berarti mobil tidak memiliki periode waktu tidak ada aktivitas. Mode Garasi memastikan waktu tidak ada aktivitas di mobil.
Saat mobil dimatikan oleh pengguna, sistem akan memasuki Mode Garasi. Saat
mobil dalam Mode Garasi, sistem diaktifkan, layar dinonaktifkan, dan
tugas yang tidak ada aktivitasnya di antrean JobScheduler
akan dieksekusi. Untuk menerapkan Mode Garasi, lihat
Panduan penerapan perangkat.
Panduan penerapan perangkat
Untuk mengaktifkan Mode Garasi, saat menonaktifkan kendaraan, Vehicle HAL (VHAL)
harus mengirim
AP_POWER_STATE_REQ
dengan status SHUTDOWN_PREPARE
dengan parameter yang ditetapkan ke SHUTDOWN_ONLY
atau CAN_SLEEP
.
Agar status SHUTDOWN_PREPARE
efektif, VHAL harus menentukan dua parameter (status dan parameter tambahan) untuk perintah AP_POWER_STATE_REQ
. Tindakan ini memungkinkan perangkat memasuki Mode Garasi,
yang mendeteksi tugas terjadwal di
JobScheduler
dan mencegah sistem melanjutkan untuk menangguhkan atau menonaktifkan hingga tugas
selesai.
Bagaimana implementasi perangkat terhubung ke framework Android?
Untuk Mode Garasi, framework meminta VHAL untuk memperpanjang waktu penonaktifan hingga durasi yang diperlukan terlampaui atau semua tugas telah dijalankan, saat sistem dinonaktifkan. Dalam situasi tertentu yang ditentukan dalam CDD, implementasi perangkat dapat mematikan sistem lebih cepat. Untuk mengetahui detail persyaratan kompatibilitas Android, lihat Dokumen Definisi Kompatibilitas (CDD) Android.
Jika VHAL harus mematikan sistem sebelum Mode Garasi selesai, VHAL dapat mengeluarkan
SHUTDOWN_PREPARE
dengan parameter yang ditetapkan ke
SHUTDOWN_IMMEDIATELY
atau SLEEP_IMMEDIATELY
. Implementasi
perangkat dapat menggunakannya hanya dalam keadaan tertentu, biasanya
saat resource yang diperlukan untuk menjaga sistem tetap berjalan tidak tersedia. Misalnya, saat kapasitas baterai tidak mencukupi.
Gambar 1. Alur Mode Garasi
Bagaimana cara kerja developer aplikasi dengan Mode Garasi?
Aplikasi dan layanan tidak berinteraksi langsung dengan Mode Garasi. Sebagai gantinya,
aplikasi menjadwalkan tugas di
JobScheduler
.
Tugas yang dibatasi oleh
tidak ada aktivitas dijalankan selama Mode Garasi.
Kode berikut menunjukkan cara menjadwalkan tugas untuk dijalankan selama Mode Garasi:
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());
Mode Garasi Debug
Untuk men-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 bahwa output logcat untuk menunjukkan Mode Garasi telah 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