अपने ऐप्लिकेशन के लिए बिजली की खपत ऑप्टिमाइज़ करें

इस दस्तावेज़ में, Navigation SDK का इस्तेमाल करके बनाए गए मोबाइल नेविगेशन ऐप्लिकेशन में बैटरी की खपत को ऑप्टिमाइज़ करने के सबसे सही तरीके बताए गए हैं. साथ ही, इसमें इन तरीकों का इस्तेमाल करते समय ध्यान रखने वाली बातों के बारे में भी बताया गया है. खास तौर पर, इस दस्तावेज़ में इनके बारे में बताया गया है:

  • ज़्यादा बैटरी खर्च करने वाले सोर्स. इन्हें सबसे ज़्यादा से सबसे कम बैटरी खर्च करने के क्रम में दिखाया जाता है.
  • बैटरी की खपत को ऑप्टिमाइज़ करने के लिए, रणनीतियां. इन्हें अहमियत के क्रम में रखा गया है. सबसे पहले फ़्रेम रेट से जुड़ी रणनीति दी गई है.
  • असली उपयोगकर्ताओं के लिए रणनीतियां, ताकि आपके ऐप्लिकेशन के उपयोगकर्ताओं को यह बताया जा सके कि ड्राइविंग के दौरान डिवाइस का इस्तेमाल कैसे मैनेज करें.

नेविगेशन ऐप्लिकेशन को ऑप्टिमाइज़ क्यों करना चाहिए?

उपयोगकर्ता अपनी ज़रूरत के हिसाब से, लंबे समय तक नेविगेशन की सुविधा का इस्तेमाल कर सकते हैं. उदाहरण के लिए, ड्राइवर और डिलीवरी कूरियर लंबे समय तक काम कर सकते हैं. साथ ही, वे अनजान इलाकों में असाइनमेंट पूरे कर सकते हैं. ऐसे मामलों में, वे ऐप्लिकेशन में दिए गए मोड़-दर-मोड़ निर्देशों पर काफ़ी हद तक निर्भर होते हैं. इससे कुछ सामान्य समस्याएं होती हैं:

  • तेज़ी से बैटरी खर्च होना और चार्जर की उपलब्धता. नेविगेशन का ज़्यादा इस्तेमाल करने से, डिवाइस की बैटरी उम्मीद से ज़्यादा तेज़ी से खत्म हो सकती है. कई उपयोगकर्ता, गाड़ी में डिवाइस को चार्ज करके इस समस्या को हल कर सकते हैं. हालांकि, दोपहिया वाहन चलाने वाले लोग ऐसा नहीं कर सकते.
  • गर्म होने की वजह से डिवाइस की परफ़ॉर्मेंस कम हो गई है. डिवाइस को लगातार चार्ज करने वाले लोगों को भी समस्याएं आ सकती हैं. लंबे समय तक ज़्यादा बैटरी खर्च होने से, डिवाइस गर्म हो सकता है. इससे डिवाइस की परफ़ॉर्मेंस कम हो सकती है.

टर्न-बाय-टर्न नेविगेशन वाले ऐप्लिकेशन, स्क्रीन, जीपीएस, और सेल टावर के साथ रेडियो कम्यूनिकेशन जैसी ज़्यादा बैटरी खर्च करने वाली सुविधाओं पर निर्भर होते हैं. इसलिए, अपने मोबाइल ऐप्लिकेशन में बैटरी के इस्तेमाल को ऑप्टिमाइज़ करना सबसे सही तरीका है. इसके अलावा, आपको अपने टारगेट ऑडियंस की बैटरी के इस्तेमाल की ज़रूरतों पर भी ध्यान देना चाहिए, ताकि परफ़ॉर्मेंस और बैटरी के इस्तेमाल को ऑप्टिमाइज़ करने के बीच सही फ़ैसला लिया जा सके.

सबसे ज़्यादा बैटरी कौनसी सुविधा इस्तेमाल करती है?

इस सेक्शन में, ज़्यादा बैटरी खर्च करने वाली ऐप्लिकेशन में की जाने वाली गतिविधियों को दो कैटगरी में बांटा गया है:

  • स्क्रीन रेंडरिंग
  • स्थान अपडेट

स्क्रीन रेंडरिंग

आम तौर पर, स्क्रीन रेंडरिंग की वजह से मोबाइल नेविगेशन ऐप्लिकेशन में सबसे ज़्यादा बैटरी खर्च होती है. जब भी डिवाइस, स्क्रीन पर मैप और अन्य यूज़र इंटरफ़ेस (यूआई) एलिमेंट दिखाता है, तो वह जीपीयू और सीपीयू प्रोसेसिंग पर निर्भर करता है. इसी तरह, जब उपयोगकर्ता उस स्क्रीन को लंबे समय तक चालू रखता है, तब भी ज़्यादा बैटरी खर्च होती है.

ड्राइवर या राइडर, नेविगेट करने के लिए मैप पर निर्भर होते हैं. इसलिए, हो सकता है कि वे ज़्यादा बैटरी खर्च करें. खास तौर पर, अगर वे लगातार कई घंटों तक ऐप्लिकेशन का इस्तेमाल करते हैं. इस स्थिति में, ऐप्लिकेशन स्क्रीन पर ज़्यादा तेज़ी से रेंडर करता है, क्योंकि मैप रीयल टाइम में अपडेट होता है. कुछ मामलों में, स्क्रीन पर लगातार बदलाव हो सकता है. ऐसा खास तौर पर तब होता है, जब उपयोगकर्ता बिना रुके एक जगह से दूसरी जगह पर ड्राइव करता है.

स्थान अपडेट

स्क्रीन रेंडरिंग के अलावा, नेविगेशन से जुड़ी दो अन्य गतिविधियों में डिवाइस की बैटरी खर्च होती है:

  • रेडियो सेल टावर और जीपीएस का इस्तेमाल
  • जगह की जानकारी के अपडेट और उसे शेयर करने की सुविधा. जैसे, पहुंचने का अनुमानित समय (ईटीए) बताना या फ्लीट में मौजूद किसी वाहन की जगह की जानकारी देना.

जीपीएस और सेल रेडियो कम्यूनिकेशन, दोनों के लिए बैटरी की खपत करने वाली स्टार्टअप प्रोसेस ज़रूरी होती है: जीपीएस को सैटलाइट ढूंढनी होती हैं और सेल रेडियो को टावर से बातचीत करनी होती है और कनेक्शन बनाना होता है. इन वजहों से, नेविगेशन के दौरान ये लगातार चलते रहते हैं. भले ही, सेल रेडियो को चालू होने में लगने वाले समय को कम करने के लिए, 20 से 30 सेकंड तक चालू रखा जाता हो. ऑपरेटिंग सिस्टम इन सेटिंग को कंट्रोल करता है. इन्हें आपके ऐप्लिकेशन में आसानी से कॉन्फ़िगर नहीं किया जा सकता.

जगह की जानकारी अपडेट करने के लिए, बैटरी की खपत का अनुमान लगाना मुश्किल होता है. ऐसा इसलिए, क्योंकि यह कई अनिश्चितताओं पर निर्भर करती है. उदाहरण के लिए, डिवाइस और सेल्युलर बेस स्टेशन के बीच की दूरी से यह तय होता है कि बैटरी कितनी खर्च होगी. ऐसा इसलिए, क्योंकि डिवाइस नेविगेशन जारी रखने के लिए, ज़रूरी सिग्नल का इस्तेमाल करेगा, ताकि टावर स्विच न करने पड़े. इसलिए, खराब नेटवर्क वाले इलाके में नेविगेट करने वाला डिवाइस, बेस स्टेशन के आस-पास मौजूद डिवाइस की तुलना में ज़्यादा बैटरी खर्च करेगा. इसके अलावा, कुछ ऐप्लिकेशन, फ्लीट मैनेजमेंट की मुख्य सेवा के साथ जगह की जानकारी के अपडेट शेयर कर सकते हैं. इसलिए, उन्हें ऐसा करने के लिए सर्वर से कम्यूनिकेट करना होगा.

अपने ऐप्लिकेशन की बैटरी की खपत को ऑप्टिमाइज़ करना

नेविगेशन ऐप्लिकेशन में बैटरी के इस्तेमाल को ऑप्टिमाइज़ करने की चुनौती यह है कि ये ऐप्लिकेशन, बैटरी की खपत करने वाले रिसॉर्स पर काफ़ी हद तक निर्भर होते हैं. इससे, बैटरी के इस्तेमाल को कम करने के लिए आपके पास सीमित विकल्प होते हैं. जैसे, स्क्रीन के इस्तेमाल को सीमित करना. इस सेक्शन में, ऐप्लिकेशन को ऑप्टिमाइज़ करने के लिए अपनाए जा सकने वाले तरीकों की सूची दी गई है. इस सूची में, सबसे ज़्यादा असरदार तरीके से लेकर सबसे कम असरदार तरीके तक के सुझाव दिए गए हैं.

फ़्रेम रेट बदलना

स्क्रीन पर दिखने वाली चीज़ें, फ़्रेम रेट के हिसाब से अपडेट होती हैं. आम तौर पर, इसे फ़्रेम प्रति सेकंड (एफ़पीएस) में मापा जाता है. स्क्रीन रेंडरिंग में सीपीयू और जीपीयू प्रोसेसिंग का इस्तेमाल होता है. इसलिए, बैटरी बचाने के लिए फ़्रेम रेट को कम किया जा सकता है.

फ़्रेम रेट कम करने पर, मैप रेंडरिंग और इंटरैक्टिव जेस्चर (जैसे कि पैनिंग, ज़ूमिंग या रोटेट करना) कम स्मूद दिख सकते हैं. उपयोगकर्ताओं को बेहतर अनुभव देने के लिए, कम फ़्रेम रेट का इस्तेमाल किया जा सकता है. साथ ही, जब उपयोगकर्ता इंटरैक्ट कर रहे हों, तब फ़्रेम रेट को डाइनैमिक तरीके से बढ़ाया जा सकता है.

फ़्रेम रेट में बदलाव करने के बारे में ज़्यादा जानने के लिए, Android Media Dev Center के डेवलपर दस्तावेज़ में फ़्रेम रेट सेक्शन देखें.

फ़्रेम रेट अपने-आप अडजस्ट होने की सुविधा

Navigation SDK के 7.8.0 वर्शन से, नेविगेशन के दौरान मैप का फ़्रेम रेट अपने-आप अडजस्ट होता है. इससे परफ़ॉर्मेंस बेहतर होती है और बैटरी की खपत कम होती है. डिवाइस के बैटरी सेविंग मोड में जाने पर, मैप का फ़्रेम रेट 10 FPS पर आ जाता है. नेविगेशन बंद होने या बैटरी सेविंग मोड बंद होने पर, यह 60 FPS पर रीसेट हो जाता है.

हालांकि, आपके पास यह कंट्रोल करने का विकल्प नहीं होता कि उपयोगकर्ता अपने डिवाइस की स्क्रीन की रोशनी कितनी सेट करता है या वह स्क्रीन को कितनी देर तक चालू रखता है. हालांकि, आपके पास मैप के बिना नेविगेशन के निर्देश देने का विकल्प होता है. इससे असली उपयोगकर्ता को बैटरी बचाने के लिए, उस विकल्प को चुनने की अनुमति मिलेगी. उदाहरण के लिए, अगर ड्राइवर एक ही इलाके में नियमित रूप से काम करते हैं, तो उन्हें मैप पर आधारित निर्देशों की ज़रूरत बार-बार नहीं पड़ती. Navigation SDK में, मैप दिखाए बिना नेविगेशन की सुविधा चालू की जा सकती है. इसके लिए, मंज़िल सेट करें और रास्ते की जानकारी पाना शुरू करें.

नेविगेशन यूज़र इंटरफ़ेस (यूआई) को छिपाने के लिए, NavigationView या SupportNavigationFragment न जोड़ें. अगर आपने इन्हें पहले ही जोड़ दिया है, तो इन्हें जोड़ने वाला कोड हटाएं. नीचे दिया गया कोड, Navigation SDK के Android डेमो ऐप्लिकेशन से लिया गया है. इसमें नेविगेशन यूज़र इंटरफ़ेस (यूआई) जोड़ने वाले कोड को हटाने के लिए, टिप्पणियों का इस्तेमाल दिखाया गया है:

//Obtain a reference to the NavigationFragment
//setContentView(R.layout.activity_nav_fragment);
//mNavFragment = (SupportNavigationFragment)   getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);

Navigation SDK, सड़क के हिसाब से तय की गई जगहों, पहुंचने का अनुमानित समय (ETA), और यात्रा की बची हुई दूरी की जानकारी को अपडेट करता रहेगा. साथ ही, ड्राइवर के आगे बढ़ने पर आपका ऐप्लिकेशन, एसडीके से जनरेट होने वाले सभी इवेंट को अब भी सब्सक्राइब कर सकता है. यह हर इस्तेमाल के उदाहरण के लिए सही नहीं है. साथ ही, उन मामलों में यह अच्छी सलाह नहीं है जहां ड्राइवर को मैप देखने और विज़ुअल गाइडेंस को फ़ॉलो करने की ज़रूरत होती है. इन स्क्रीनशॉट में, नेविगेशन के दौरान मैप व्यू को टॉगल करने की तुलना अगल-बगल दिखाई गई है.

मैप व्यू के साथ चल रहा डेमो ऐप्लिकेशन.
पहली इमेज.Navigation SDK iOS डेमो ऐप्लिकेशन में डेटा बैक डेमो दिखाया गया है
डेमो ऐप्लिकेशन चल रहा है, लेकिन मैप व्यू नहीं दिख रहा है.
दूसरी इमेज.डेमो ऐप्लिकेशन चल रहा है, लेकिन इसमें मैप व्यू नहीं दिख रहा है. ध्यान दें कि बची हुई दूरी और समय के साथ-साथ, सड़क के हिसाब से तय की गई जगह की जानकारी अब भी अपडेट हो रही है.

गहरे रंग वाली मैप स्टाइल का इस्तेमाल करना

मैप को स्टाइल करें, ताकि गहरे रंग वाली थीम का इस्तेमाल किया जा सके. इससे स्क्रीन पर मैप को रेंडर करने के लिए, कम ऊर्जा की ज़रूरत होगी.

Navigation SDK, अपने मैप को रेंडर करने के लिए Android के लिए Google Maps SDK का इस्तेमाल करता है. इसमें आपके ऐप्लिकेशन में, नेविगेशन के अलावा किसी भी मैप व्यू को स्टाइल करने के विकल्प होते हैं. नेविगेशन व्यू में, डार्क मोड को चालू करने की सुविधा भी होती है. स्क्रीन टाइप में अंतर होने की वजह से, इसका असर हर डिवाइस पर एक जैसा नहीं हो सकता. हालांकि, कुछ मामलों में इससे बैटरी की बचत हो सकती है. हाल ही में हुई एक स्टडी में यह पता चला है कि कुछ स्क्रीन पर डार्क मोड चालू करने से कितनी बैटरी बचेगी. यह इस बात पर निर्भर करता है कि स्क्रीन की चमक कितनी है. उदाहरण के लिए, डार्क मोड में, फ़ुल ब्राइटनेस पर सेट की गई स्क्रीन पर ज़्यादा बैटरी बचती है. वहीं, जिन स्क्रीन की ब्राइटनेस पहले से ही ज़्यादा से ज़्यादा ब्राइटनेस के 30 से 50% पर सेट है उन पर कम बैटरी बचती है. ऐप्लिकेशन के लिए डार्क मोड का इस्तेमाल करते समय, इस बात का ध्यान रखना ज़रूरी है. ऐसा इसलिए, क्योंकि बैटरी की बचत इस बात पर निर्भर करेगी कि उपयोगकर्ता ने स्क्रीन की रोशनी कितनी सेट की है.

नेविगेशन यूज़र इंटरफ़ेस (यूआई) में बदलाव करने के बारे में ज़्यादा जानने के लिए, यह लेख पढ़ें: नेविगेशन यूज़र इंटरफ़ेस (यूआई) में बदलाव करना.

iPhone 15 Pro पर Navigation SDK चल रहा है. इसमें मैप का डार्क स्टाइल इस्तेमाल किया गया है.
तीसरी इमेज.डार्क मैप स्टाइल के साथ कॉन्फ़िगर किया गया Navigation SDK

अपने मैप के लिए डार्क स्टाइल बनाने के लिए, MapStyleOptions ऑब्जेक्ट का इस्तेमाल करें. इसमें JSON स्टाइल शामिल हो, जो डार्क मैप स्टाइल के लिए आपकी पसंद को दिखाता हो. लेगसी स्टाइलिंग एडिटर का इस्तेमाल करके, लेगसी JSON स्टाइल बनाई जा सकती हैं. यह एडिटर, https://mapstyle.withgoogle.com/ पर उपलब्ध है.

जीपीएस डिवाइस की जगह की जानकारी का अपडेट का अंतराल बदलना

डिवाइस से भेजी गई जगह की जानकारी के अपडेट से बैटरी की खपत का आकलन करते समय, ट्रांसमिशन में भेजे गए डेटा की मात्रा के बजाय, जगह की जानकारी के अपडेट की फ़्रीक्वेंसी पर ज़्यादा ध्यान दें.

इसे सीधे तौर पर Navigation SDK में कंट्रोल नहीं किया जा सकता. हालांकि, अगर आपका Android ऐप्लिकेशन जगह की जानकारी का अनुरोध अलग से करता है, तो आपको Android डेवलपर के दस्तावेज़ में दिए गए बैटरी के लिए जगह की जानकारी को ऑप्टिमाइज़ करें लेख में दी गई सलाह पर ध्यान देना चाहिए. जीपीएस के अलावा, जगह की जानकारी के अन्य सोर्स (सेल और वाई-फ़ाई) का इस्तेमाल करने के लिए भी यही सलाह लागू होती है.

अपने उपयोगकर्ताओं को जानकारी देना

आपके ऐप्लिकेशन के उपयोगकर्ता यह जानना चाहें कि वे बैटरी की खपत को कैसे ऑप्टिमाइज़ करें. अपने ऐप्लिकेशन पर बैटरी की खपत कम करने के लिए, अपने उपयोगकर्ताओं को यह सलाह दें:

  • फ़ोन लॉक करो
  • नेविगेशन ऐप्लिकेशन को बैकग्राउंड में चलाएं
  • अगर हो सके, तो मैप के बिना नेविगेशन की सुविधा का इस्तेमाल करें
  • ओएलईडी और एमोलेड स्क्रीन के लिए डार्क मोड का इस्तेमाल करके या आस-पास की रोशनी के हिसाब से स्क्रीन की चमक को अडजस्ट करने की सुविधा चालू करके, स्क्रीन की चमक कम करें
  • डिवाइस को ठंडा रखें
  • अगर गाड़ी में वाई-फ़ाई की सुविधा उपलब्ध है, तो उससे कनेक्ट करें
Android डिवाइस की बैटरी लाइफ़ बढ़ाने के बारे में सलाह पाने के लिए, अपने Android डिवाइस की बैटरी का ज़्यादा से ज़्यादा इस्तेमाल करना लेख पढ़ें. ध्यान रखें कि इस सलाह में ऐसे काम शामिल हैं जिनसे नेविगेशन ऐप्लिकेशन की परफ़ॉर्मेंस खराब हो सकती है. इस बारे में, इस गाइड में अपने ऐप्लिकेशन की बैटरी खपत को ऑप्टिमाइज़ करना सेक्शन में बताया गया है.

ऊर्जा की खपत का आकलन करना

बिजली की खपत का पता लगाने के लिए, प्रोफ़ेशनल टूल का इस्तेमाल किया जा सकता है. हालांकि, इन्हें हासिल करना अक्सर मुश्किल होता है या ये महंगे होते हैं. ऐप्लिकेशन और आईडीई के प्रोफ़ाइलिंग टूल, जैसे कि Android Studio में Power Profiler और XCode Organizer में बैटरी के इस्तेमाल का पैनल, बैटरी की खपत को मापते हैं. हालांकि, बैकग्राउंड प्रोसेस के असर को हटाना या परफ़ॉर्मेंस का बेसलाइन सेट करना मुश्किल हो सकता है, ताकि उसकी तुलना की जा सके. कुछ मामलों में, डिवाइस पर लगी पाबंदियों की वजह से ज़रूरी डेटा का ऐक्सेस नहीं मिल पाता.

खास मकसद के लिए, बिजली की खपत की निगरानी करने वाले हार्डवेयर का इस्तेमाल किया जा सकता है. साथ ही, बैटरी कनेक्शन के कॉन्फ़िगरेशन में बदलाव किया जा सकता है. इसके लिए, कमर्शियल प्रॉडक्ट और सेवाएं उपलब्ध हैं. ध्यान दें कि इस तरह से डिवाइसों में बदलाव करने पर, डिवाइस की वारंटी रद्द हो सकती है.