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

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

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

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

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

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

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

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

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

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

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

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

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

स्थान अपडेट

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

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

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

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

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

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

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

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

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

iOS डिवाइसों पर, iOS के लिए Maps SDK, फ़्रेम रेट को कंट्रोल करने के लिए preferredFrameRate प्रॉपर्टी दिखाता है. नीचे दी गई टेबल में, GMSFrameRate एन्यूमरेटर की उन वैल्यू को दिखाया गया है जिनमें बदलाव किया जा सकता है:

kGMSFrameRatePowerSave

बैटरी की खपत कम करने के लिए, कम से कम फ़्रेम रेट का इस्तेमाल करें.

kGMSFrameRateConservative

स्मूथ रेंडरिंग के लिए, मीडियन फ़्रेम रेट का इस्तेमाल करें. इससे प्रोसेसिंग साइकल को सुरक्षित रखने में मदद मिलती है.

kGMSFrameRateMaximum

किसी डिवाइस के लिए ज़्यादा से ज़्यादा फ़्रेम रेट का इस्तेमाल करें.

कम कॉन्फ़िगरेशन वाले डिवाइसों के लिए यह 30 एफ़पीएस है. वहीं, ज़्यादा कॉन्फ़िगरेशन वाले डिवाइसों के लिए यह 60 एफ़पीएस है.

रेफ़रंस के लिए, iOS के लिए Google Navigation SDK के दस्तावेज़ में GMSFrameRate देखें.

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

GMSMapView को छिपाने के लिए, कोड की एक लाइन जोड़ें:

mapView.isHidden = true

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

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

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

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

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

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

iPhone 15 Pro पर Navigation SDK का स्क्रीनशॉट. इसमें मैप का डार्क स्टाइल दिख रहा है.
तीसरी इमेज.डार्क मैप स्टाइल के साथ कॉन्फ़िगर किया गया Navigation SDK
अपने प्रोजेक्ट में तय की गई क्लाउड पर मैप की स्टाइल के हिसाब से, mapID का इस्तेमाल करके GMSMapView को कॉन्फ़िगर करें.

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

जीपीएस की जगह की जानकारी अपडेट करने की फ़्रीक्वेंसी बदलना

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

इसे सीधे तौर पर Navigation SDK में कंट्रोल नहीं किया जा सकता. जीपीएस के अलावा, जगह की जानकारी के अन्य सोर्स (सेल और वाई-फ़ाई) का इस्तेमाल करने के लिए भी यही सलाह लागू होती है.

अपने उपयोगकर्ताओं को सूचनाएं भेजें

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

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

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

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

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