Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Mode Garasi

Untuk memberikan periode waktu idle di kendaraan, Garasi Modus membuat sistem terjaga sehingga pekerjaan di JobScheduler terkendala dengan kemalasan dapat dieksekusi.

Apa itu Mode Garasi?

Pada perangkat yang terhubung seperti ponsel, pengguna mengandalkan sistem untuk memastikan perangkat stabil, mutakhir, dan dioptimalkan. Untuk mencapai keadaan itu, platform Android menyediakan menganggur waktu jendela di mana aplikasi dapat melakukan tugas-tugas ketika pengguna tidak berinteraksi dengan perangkat. Sebuah ponsel dianggap menganggur ketika pengguna tidak menyentuhnya untuk durasi diperpanjang (60 menit atau lebih) dan layar dimatikan. Tidak seperti telepon, ketika sebuah mobil tidak digunakan, itu dimatikan, yang berarti mobil tidak memiliki waktu idle jendela. Garage Mode memastikan waktu idle di dalam mobil.

Saat mobil dimatikan oleh pengguna, sistem masuk ke Mode Garasi. Saat mobil berada dalam Mode Garasi, sistem dihidupkan, tampilan dimatikan, dan pekerjaan menganggur dalam antrean JobScheduler dijalankan. Untuk melaksanakan Garage Mode, lihat petunjuk pelaksanaan Perangkat bawah.

Pedoman penerapan perangkat

Untuk mengaktifkan Garage Mode, ketika mematikan kendaraan, Kendaraan HAL (VHAL) harus mengirimkan AP_POWER_STATE_REQ dengan negara SHUTDOWN_PREPARE dengan parameter set ke SHUTDOWN_ONLY atau CAN_SLEEP .

Untuk negara SHUTDOWN_PREPARE efektif, VHAL harus menentukan dua parameter (negara dan parameter tambahan) untuk AP_POWER_STATE_REQ perintah. Hal ini memungkinkan perangkat untuk masuk Garage Mode, yang mendeteksi dijadwalkan pekerjaan di JobScheduler dan mencegah sistem dari melanjutkan baik menangguhkan atau menutup sampai 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 rincian tentang persyaratan kompatibilitas Android, melihat Android Definisi Dokumen Kompatibilitas (CDD) .) Jika VHAL harus mematikan sistem sebelum Rampungkan Garage Mode, VHAL dapat mengeluarkan SHUTDOWN_PREPARE dengan parameter set ke SHUTDOWN_IMMEDIATELY atau SLEEP_IMMEDIATELY . Implementasi perangkat dapat menggunakan ini dalam keadaan tertentu, biasanya ketika sumber daya yang dibutuhkan untuk menjaga sistem berjalan tidak tersedia. Misalnya, ketika kapasitas baterai tidak mencukupi.

Modus garasi

Bagaimana cara kerja pengembang aplikasi dengan Mode Garasi?

Aplikasi dan layanan tidak berinteraksi langsung dengan Mode Garasi. Sebaliknya, aplikasi jadwal pekerjaan di JobScheduler . Pekerjaan-pekerjaan dibatasi oleh kemalasan dijalankan selama Garage Mode.

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:
  1. Untuk mengaktifkan logging kategori yang relevan dengan Garage Mode:
    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
    
  2. Untuk meninjau output logcat untuk menunjukkan bahwa Garage Mode mulai:
    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
    
  3. Untuk menentukan bahwa output logcat untuk menunjukkan Garage Mode selesai (dibatalkan atau selesai):
    [GarageMode]: GarageMode was canceled
    
    atau,
    [GarageMode]: GarageMode completed normally
    

    Garasi Modus tergantung pada keadaan kekuatan kendaraan seperti yang dijelaskan di atas.

  4. Tinjau output logcat untuk menunjukkan kekuatan yang benar-negara yang 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