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.
Ş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:- 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
- 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
- Garaj Modu'nun tamamlandığını (iptal edildi veya
tamamlandı):
veya[GarageMode]: GarageMode was canceled
[GarageMode]: GarageMode completed normally
Garaj Modu, açıklandığı gibi aracın güç durumuna bağlıdır bakın.
- 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