Garaj Modu

Garaj Modu araçlarda boşta kalma süresini sağlamak için sistemin yeni beceriler edinip JobScheduler şununla sınırlı: boşta kalma çalıştırılabilir.

Garaj Modu nedir?

Telefonlar gibi bağlı cihazlarda kullanıcılar, cihazların güncel ve optimize edilmiş olması gerekir. Bu duruma ulaşabilmek için Android platformu sağlar boşta zaman kullanıcı gerçekleştirmediğinde uygulamaların görevleri gerçekleştirebileceği pencere etkileşimde bulunabilirsiniz. Kullanıcı dokunmadığında telefonun boşta olduğu kabul edilir uzun süre (60 dakika veya daha uzun) sürebildiğinde ve ekran kapatılır. Telefondan farklı olarak, araba kullanılmadığında kapatılır. Yani araba, yok boşta kalma süresi penceresini kapatın. Garaj Modu, arabada boşta kalma süresi sağlar.

Bir araba kullanıcı tarafından kapatıldığında sistem, Garaj Modu'na girer. araba Garaj Modu'nda, sistem açık, ekran kapalı ve JobScheduler sırasındaki boşta kalan işler yürütülür. Garaj Modu'nu uygulamak için şuraya bakın: Cihaz uygulama yönergeleri.

Cihaz uygulama yönergeleri

Garaj modunu etkinleştirmek için aracı kapatırken araç HAL (VHAL) göndermelidir SHUTDOWN_PREPARE durumundaki AP_POWER_STATE_REQ SHUTDOWN_ONLY veya CAN_SLEEP olarak ayarlanmış parametre ile.

SHUTDOWN_PREPARE durumunun geçerli olması için VHAL, iki durumu da belirtmelidir parametrelerini (durum ve ek parametre) içerir.AP_POWER_STATE_REQ Bu, cihazın Garaj Modu'na girmesini sağlar. ve JobScheduler ve işler tamamlanana kadar sistemin askıya alma veya kapatma işlemine devam etmesini gerekir.

Cihaz uygulamaları, Android çerçevesine nasıl bağlanır?

Çerçeve, Garaj Modu için VHAL'dan kapatma süresini uzatmasını ister. süre dolana veya tüm işler yürütülene kadar, saatin kapanacağı zamanı gösterir. Tanımlanan belirli durumlarda sistem daha erken kapatılabilir. Ayrıntılı bilgi daha fazla bilgi için Android Uyumluluk Tanımlama Belgesi (CDD)

Garaj Modu tamamlanmadan önce VHAL'nin sistemi kapatması gerekiyorsa VHAL hata verebilir. Parametre şu şekilde ayarlanmış SHUTDOWN_PREPARE: SHUTDOWN_IMMEDIATELY veya SLEEP_IMMEDIATELY. Cihaz uygulamalar bunu yalnızca belirli durumlarda kullanabilir. sistemi etkin durumda tutmak için gereken kaynaklar mevcut olmadığında. Örneğin, Örneğin, pil kapasitesi yetersiz olduğunda.

Garaj modu

Şekil 1. Garaj Modu akışı

Uygulama geliştiriciler Garaj Modu ile nasıl çalışır?

Uygulamalar ve hizmetler doğrudan Garaj Modu ile etkileşime girmez. Bunun yerine uygulamalar iş ilanlarını şurada planlar: JobScheduler. Kısıtlama uygulanan işler: boşta kalma modu Garaj Modu sırasında yürütülür.

Aşağıdaki kodda, bir işin Garaj Modu sırasında nasıl çalıştırılacağı gösterilmektedir:

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());

Garaj Modunda Hata Ayıklama

Garaj Modu'nda hata ayıklamak için:
  1. Garaj Modu ile ilgili günlük kaydı kategorilerini etkinleştirmek için:
    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. Garaj Modu'nun başlatıldığını belirtmek amacıyla logcat çıkışını incelemek için:
    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. Garaj Modu'nun tamamlandığını (iptal edildi veya tamamlandı):
    [GarageMode]: GarageMode was canceled
    
    veya
    [GarageMode]: GarageMode completed normally
    

    Garaj Modu, açıklandığı gibi aracın güç durumuna bağlıdır bakın.

  4. Doğru güç durumlarının girildiğini göstermek için logcat çıkışını inceleyin:
    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