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

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

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

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

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

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

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

बैटरी की खपत सबसे ज़्यादा किस वजह से होती है?

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

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

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

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

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

स्थान अपडेट

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

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

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

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

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

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

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

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

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

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

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

मैप व्यू के साथ डेमो ऐप्लिकेशन चल रहा है.
पहली इमेज.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 डिवाइस की बैटरी लाइफ़ बढ़ाने के बारे में उपयोगकर्ताओं के लिए सलाह दी गई है. ध्यान रखें कि इस सलाह में ऐसे काम शामिल हैं जिनसे नेविगेशन ऐप्लिकेशन की परफ़ॉर्मेंस खराब हो सकती है. इनके बारे में इस गाइड में अपने ऐप्लिकेशन की बैटरी खपत को ऑप्टिमाइज़ करना सेक्शन में बताया गया है.

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

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

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