गैराज मोड

वाहनों में निष्क्रिय समय की अवधि प्रदान करने के लिए, गैराज मोड सिस्टम को जागृत रखता है ताकि आलस्य से विवश जॉब शेड्यूलर में नौकरियों को निष्पादित किया जा सके।

गैराज मोड क्या है?

फोन जैसे कनेक्टेड डिवाइस पर, उपयोगकर्ता यह सुनिश्चित करने के लिए सिस्टम पर भरोसा करते हैं कि डिवाइस स्थिर, अप-टू-डेट और अनुकूलित हैं। उस स्थिति को प्राप्त करने के लिए, एंड्रॉइड प्लेटफॉर्म एक निष्क्रिय समय विंडो प्रदान करता है, जिसके दौरान जब उपयोगकर्ता डिवाइस के साथ इंटरैक्ट नहीं करता है तो एप्लिकेशन कार्य कर सकते हैं। एक फोन को निष्क्रिय माना जाता है जब उपयोगकर्ता इसे विस्तारित अवधि (60 मिनट या अधिक) के लिए नहीं छूता है और स्क्रीन बंद हो जाती है। एक फोन के विपरीत, जब कार का उपयोग नहीं किया जा रहा है, तो इसे बंद कर दिया जाता है, जिसका अर्थ है कि कार में कोई निष्क्रिय समय खिड़की नहीं है। गैराज मोड कार में निष्क्रिय समय सुनिश्चित करता है।

जब उपयोगकर्ता द्वारा कार को बंद कर दिया जाता है, तो सिस्टम गैराज मोड में प्रवेश करता है। जबकि कार गैराज मोड में है, सिस्टम चालू है, डिस्प्ले बंद है, और जॉब शेड्यूलर कतार में निष्क्रिय कार्य निष्पादित किए जाते हैं। गैराज मोड को लागू करने के लिए, नीचे डिवाइस कार्यान्वयन दिशानिर्देश देखें।

डिवाइस कार्यान्वयन दिशानिर्देश

गैराज मोड को सक्रिय करने के लिए, वाहन को बंद करते समय, वाहन HAL (VHAL) को SHUTDOWN_PREPARE राज्य के साथ AP_POWER_STATE_REQ को SHUTDOWN_ONLY या CAN_SLEEP पर सेट पैरामीटर के साथ भेजना होगा।

राज्य SHUTDOWN_PREPARE के प्रभावी होने के लिए, VHAL को AP_POWER_STATE_REQ कमांड के लिए दो पैरामीटर (राज्य और अतिरिक्त पैरामीटर) निर्दिष्ट करना होगा। यह डिवाइस को गैराज मोड में प्रवेश करने में सक्षम बनाता है, जो जॉब शेड्यूलर में अनुसूचित नौकरियों का पता लगाता है और सिस्टम को कार्य पूरा होने तक निलंबित या बंद करने के लिए आगे बढ़ने से रोकता है।

डिवाइस कार्यान्वयन एंड्रॉइड फ्रेमवर्क से कैसे जुड़ते हैं?

गैराज मोड के लिए, ढांचा वीएचएएल से शटडाउन समय को तब तक बढ़ाने का अनुरोध करता है जब तक या तो आवश्यक अवधि पार नहीं हो जाती या सभी कार्य निष्पादित नहीं हो जाते, जिस समय सिस्टम बंद हो जाएगा। सीडीडी में परिभाषित विशिष्ट परिस्थितियों में, डिवाइस कार्यान्वयन सिस्टम को जल्द ही बंद कर सकता है। (एंड्रॉइड संगतता आवश्यकताओं के विवरण के लिए, एंड्रॉइड कम्पैटिबिलिटी डेफिनिशन डॉक्यूमेंट (सीडीडी) देखें ।) अगर वीएचएएल को गैराज मोड के पूरा होने से पहले सिस्टम को बंद करना होगा, तो वीएचएएल SHUTDOWN_PREPARE को SHUTDOWN_IMMEDIATELY या SLEEP_IMMEDIATELY पर सेट पैरामीटर के साथ जारी कर सकता है। डिवाइस कार्यान्वयन इसका उपयोग केवल विशिष्ट परिस्थितियों में ही कर सकते हैं, आमतौर पर जब सिस्टम को चालू रखने के लिए आवश्यक संसाधन अनुपलब्ध होते हैं। उदाहरण के लिए, जब बैटरी की क्षमता अपर्याप्त हो।

गैराज मोड

एप्लिकेशन डेवलपर गैराज मोड के साथ कैसे काम करते हैं?

एप्लिकेशन और सेवाएं गैराज मोड के साथ सीधे इंटरैक्ट नहीं करती हैं। इसके बजाय, ऐप्स 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());

डिबगिंग गैराज मोड

गैराज मोड को डीबग करने के लिए:
  1. गैराज मोड के लिए प्रासंगिक लॉगिंग श्रेणियां सक्षम करने के लिए:
    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. लॉगकैट आउटपुट की समीक्षा करने के लिए यह इंगित करने के लिए कि गैराज मोड शुरू हो रहा है:
    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. यह निर्धारित करने के लिए कि गैराज मोड को इंगित करने के लिए लॉगकैट आउटपुट समाप्त हो गया है (रद्द या पूर्ण):
    [GarageMode]: GarageMode was canceled
    
    या,
    [GarageMode]: GarageMode completed normally
    

    गैराज मोड ऊपर बताए अनुसार वाहन की पावर स्थिति पर निर्भर करता है।

  4. सही बिजली की स्थिति दर्ज करने के लिए लॉगकैट आउटपुट की समीक्षा करें:
    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