गाड़ियों में इंजन के बंद रहने के दौरान, गैराज मोड सिस्टम को चालू रखता है, ताकि JobScheduler
में इंजन के बंद रहने की वजह से रुकी हुई प्रोसेस को पूरा किया जा सके.
गैराज मोड क्या है?
फ़ोन जैसे कनेक्टेड डिवाइसों पर, उपयोगकर्ता सिस्टम पर भरोसा करते हैं, ताकि यह पक्का किया जा सके कि डिवाइस ठीक से काम कर रहे हैं, अप-टू-डेट हैं, और ऑप्टिमाइज़ किए गए हैं. इस स्थिति को हासिल करने के लिए, Android प्लैटफ़ॉर्म एक इडल टाइम विंडो उपलब्ध कराता है. इस दौरान, ऐप्लिकेशन ऐसे टास्क कर सकते हैं जिनमें उपयोगकर्ता का डिवाइस इस्तेमाल करना ज़रूरी नहीं होता. जब कोई उपयोगकर्ता किसी फ़ोन को 60 मिनट या उससे ज़्यादा समय तक इस्तेमाल नहीं करता और उसकी स्क्रीन बंद हो जाती है, तो उसे इडल माना जाता है. फ़ोन के उलट, जब कार का इस्तेमाल नहीं किया जा रहा होता है, तो उसे बंद कर दिया जाता है. इसका मतलब है कि कार के लिए इडल टाइम वाली विंडो नहीं होती. गैराज मोड की मदद से, यह पक्का किया जा सकता है कि कार में कोई भी डिवाइस इस्तेमाल में न हो.
जब कोई उपयोगकर्ता कार बंद करता है, तो सिस्टम गैराज मोड में चला जाता है. जब कोई कार,
गैराज मोड में होती है, तब सिस्टम चालू रहता है, डिसप्ले बंद रहता है, और
JobScheduler
सूची में मौजूद वे काम पूरे हो जाते हैं जो कुछ समय से किए नहीं जा रहे थे. गैराज मोड लागू करने के लिए, डिवाइस पर लागू करने के दिशा-निर्देश देखें.
डिवाइस पर लागू करने के दिशा-निर्देश
गाड़ी बंद करते समय, गैराज मोड चालू करने के लिए, वाहन के एचएएल (वीएचएएल) को SHUTDOWN_PREPARE
के स्टेटस के साथ AP_POWER_STATE_REQ
भेजना होगा. साथ ही, पैरामीटर को SHUTDOWN_ONLY
या CAN_SLEEP
पर सेट करना होगा.
SHUTDOWN_PREPARE
स्टेटस के लागू होने के लिए, VHAL को AP_POWER_STATE_REQ
कमांड के लिए दो
पैरामीटर (स्टेटस और अतिरिक्त पैरामीटर) तय करने होंगे. इससे डिवाइस, गैरेज मोड में चला जाता है. यह मोड, JobScheduler
में शेड्यूल किए गए टास्क का पता लगाता है. साथ ही, टास्क पूरे होने तक सिस्टम को निलंबित या बंद होने से रोकता है.
डिवाइस को लागू करने की सुविधाएं, Android फ़्रेमवर्क से कैसे कनेक्ट होती हैं?
गैरेज मोड के लिए, फ़्रेमवर्क VHAL से, बंद होने का समय बढ़ाने का अनुरोध करता है. ऐसा तब तक किया जाता है, जब तक ज़रूरी समय खत्म नहीं हो जाता या सभी जॉब पूरे नहीं हो जाते. इसके बाद, सिस्टम बंद हो जाता है. सीडीडी में बताई गई कुछ खास परिस्थितियों में, डिवाइस लागू करने की प्रोसेस, सिस्टम को जल्दी बंद कर सकती है. Android के साथ काम करने की ज़रूरी शर्तों के बारे में जानकारी पाने के लिए, Android का कंपैटबिलिटी डेफ़िनिशन डॉक्यूमेंट (सीडीडी) देखें.
अगर VHAL को गैरेज मोड पूरा होने से पहले सिस्टम बंद करना है, तो VHAL, SHUTDOWN_PREPARE
को जारी कर सकता है. इसके लिए, पैरामीटर को SHUTDOWN_IMMEDIATELY
या SLEEP_IMMEDIATELY
पर सेट किया जाना चाहिए. डिवाइस के सिर्फ़ कुछ खास मामलों में, इस सुविधा का इस्तेमाल किया जा सकता है. आम तौर पर, ऐसा तब किया जाता है, जब सिस्टम को चालू रखने के लिए ज़रूरी संसाधन उपलब्ध न हों. उदाहरण के लिए, जब बैटरी की क्षमता कम हो.
पहली इमेज. गैरेज मोड का फ़्लो
ऐप्लिकेशन डेवलपर, Garage Mode के साथ कैसे काम करते हैं?
ऐप्लिकेशन और सेवाएं, सीधे तौर पर गैरेज मोड के साथ इंटरैक्ट नहीं करती हैं. इसके बजाय, ऐप्लिकेशन JobScheduler
में टास्क शेड्यूल करते हैं.
काम न करने की वजह से रोकी गई प्रोसेस, गैरेज मोड के दौरान पूरी की जाती हैं.
यहां दिए गए कोड में, गैरेज मोड के दौरान चलने वाली कोई जॉब शेड्यूल करने का तरीका बताया गया है:
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());
डीबग गराज मोड
गराज मोड को डीबग करने के लिए:- गैरेज मोड से जुड़ी लॉगिंग कैटगरी चालू करने के लिए:
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
- Garage Mode के चालू होने की जानकारी देने वाले logcat आउटपुट की समीक्षा करने के लिए:
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
- यह पता लगाने के लिए कि गैरेज मोड पूरा हो गया है (रद्द कर दिया गया है या
पूरा हो गया है), logcat आउटपुट देखें:
या[GarageMode]: GarageMode was canceled
[GarageMode]: GarageMode completed normally
गैराज मोड, वाहन की पावर की स्थिति पर निर्भर करता है, जैसा कि ऊपर बताया गया है.
- logcat आउटपुट की समीक्षा करके देखें कि पावर की सही स्थितियां डाली गई हैं या नहीं:
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