Untuk menyediakan periode waktu idle di kendaraan, Garage Mode membuat sistem tetap terjaga sehingga pekerjaan di JobScheduler yang dibatasi dengan idle dapat dijalankan.
Apa itu Mode Garasi?
Pada perangkat yang terhubung seperti ponsel, pengguna mengandalkan sistem untuk memastikan perangkat stabil, mutakhir, dan dioptimalkan. Untuk mencapai status itu, platform Android menyediakan jendela waktu idle di mana aplikasi dapat melakukan tugas saat pengguna tidak berinteraksi dengan perangkat. Ponsel dianggap menganggur bila pengguna tidak menyentuhnya dalam waktu lama (60 menit atau lebih) dan layar dimatikan. Tidak seperti telepon, ketika mobil tidak digunakan, dimatikan, yang berarti mobil tidak memiliki jendela waktu idle . Mode Garasi memastikan waktu idle di dalam mobil.
Saat mobil dimatikan oleh pengguna, sistem masuk ke Mode Garasi. Saat mobil dalam Mode Garasi, sistem dihidupkan, tampilan dimatikan, dan pekerjaan menganggur dalam antrian JobScheduler dijalankan. Untuk menerapkan Mode Garasi, lihat Panduan penerapan perangkat di bawah.
Pedoman penerapan perangkat
Untuk mengaktifkan Garage Mode, saat mematikan kendaraan, Vehicle HAL (VHAL) harus mengirimkan AP_POWER_STATE_REQ
dengan status SHUTDOWN_PREPARE
dengan parameter disetel ke SHUTDOWN_ONLY
atau CAN_SLEEP
.
Agar status SHUTDOWN_PREPARE
menjadi efektif, VHAL harus menentukan dua parameter (status dan parameter tambahan) untuk perintah AP_POWER_STATE_REQ
. Ini memungkinkan perangkat untuk memasuki Mode Garasi, yang mendeteksi pekerjaan terjadwal di JobScheduler dan mencegah sistem melanjutkan untuk menangguhkan atau mematikan hingga pekerjaan selesai.
Bagaimana implementasi perangkat terhubung ke kerangka kerja Android?
Untuk Mode Garasi, kerangka kerja meminta VHAL untuk memperpanjang waktu pematian hingga durasi yang diperlukan terlampaui atau semua pekerjaan telah dijalankan, pada saat itu sistem akan dimatikan. Dalam keadaan khusus yang ditentukan dalam CDD, implementasi perangkat dapat mematikan sistem lebih cepat. (Untuk detail tentang persyaratan kompatibilitas Android, lihat Dokumen Definisi Kompatibilitas Android (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
. Implementasi perangkat dapat menggunakan ini hanya dalam keadaan tertentu , biasanya ketika sumber daya yang dibutuhkan untuk menjaga sistem tetap berjalan tidak tersedia. Misalnya, ketika kapasitas baterai tidak mencukupi.
Bagaimana cara kerja pengembang aplikasi dengan Mode Garasi?
Aplikasi dan layanan tidak berinteraksi langsung dengan Mode Garasi. Sebagai gantinya, aplikasi menjadwalkan pekerjaan di JobScheduler . Pekerjaan yang dibatasi oleh kemalasan dijalankan selama Mode Garasi.
Kode berikut menunjukkan cara menjadwalkan pekerjaan 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());
Men-debug Mode Garasi
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 keluaran logcat untuk 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 keluaran logcat yang menunjukkan bahwa Mode Garasi telah selesai (dibatalkan atau diselesaikan):
[GarageMode]: GarageMode was canceled
atau,[GarageMode]: GarageMode completed normally
Mode Garasi tergantung pada kondisi daya kendaraan seperti yang dijelaskan di atas.
- Tinjau output logcat untuk menunjukkan status daya yang benar 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