इस दस्तावेज़ में, Navigation SDK का इस्तेमाल करके बनाए गए मोबाइल नेविगेशन ऐप्लिकेशन में, बैटरी की खपत को ऑप्टिमाइज़ करने के सबसे सही तरीकों के बारे में बताया गया है. साथ ही, इसमें इन तरीकों को इस्तेमाल करते समय, किन बातों का ध्यान रखना चाहिए, यह भी बताया गया है. खास तौर पर, इस दस्तावेज़ में ये बातें शामिल हैं:
- बैटरी की ज़्यादा खपत करने वाले सोर्स की जानकारी. इन्हें सबसे ज़्यादा से लेकर सबसे कम खपत के क्रम में रैंक किया गया है.
- बैटरी की खपत को ऑप्टिमाइज़ करने के लिए रणनीतियों की जानकारी. इन्हें अहमियत के क्रम में दिखाया गया है. सबसे पहले, फ़्रेम रेट के बारे में बताया गया है.
- एंड-यूज़र के लिए रणनीतियां. इनकी मदद से, आपके ऐप्लिकेशन के उपयोगकर्ताओं को यह जानकारी दी जा सकती है कि नेविगेट करते समय, वे अपने डिवाइस के इस्तेमाल को कैसे मैनेज करें.
नेविगेशन ऐप्लिकेशन को ऑप्टिमाइज़ क्यों करें?
आपके ऐप्लिकेशन के उपयोगकर्ता, अपनी ज़रूरत के हिसाब से नेविगेशन की सुविधा का इस्तेमाल लंबे समय तक कर सकते हैं. उदाहरण के लिए, ड्राइवर और डिलीवरी कूरियर, अनजान इलाकों में असाइनमेंट पूरा करने के लिए, लंबे समय तक काम कर सकते हैं. ऐसे में, वे ऐप्लिकेशन में मौजूद, मोड़-दर-मोड़ निर्देशों पर ज़्यादा भरोसा करते हैं. इससे कुछ आम समस्याएं हो सकती हैं:
- बैटरी खत्म होना और चार्जर की उपलब्धता. नेविगेशन का ज़्यादा इस्तेमाल करने से, डिवाइस की बैटरी उम्मीद से ज़्यादा तेज़ी से खत्म हो सकती है. कई उपयोगकर्ता, गाड़ी में अपने डिवाइस को चार्ज करके इस समस्या को हल कर सकते हैं. हालांकि, दोपहिया वाहन चलाने वाले लोग ऐसा नहीं कर सकते.
- डिवाइस के गर्म होने की वजह से थ्रॉटलिंग. लगातार अपने डिवाइस को चार्ज करने वाले उपयोगकर्ताओं को भी समस्याएं आ सकती हैं. लंबे समय तक बैटरी की ज़्यादा खपत होने से, डिवाइस गर्म हो सकता है. इससे थर्मल थ्रॉटलिंग हो सकती है और परफ़ॉर्मेंस में कमी आ सकती है.
मोड़-दर-मोड़ नेविगेशन वाले ऐप्लिकेशन, बैटरी की ज़्यादा खपत करने वाली सुविधाओं पर निर्भर करते हैं. जैसे, स्क्रीन, जीपीएस, और सेल टावर के साथ रेडियो कम्यूनिकेशन. इसलिए, अपने मोबाइल ऐप्लिकेशन में बैटरी की खपत को ऑप्टिमाइज़ करना सबसे सही तरीका है. इसके अलावा, आपको अपने टारगेट ऑडियंस की बैटरी की खपत से जुड़ी ज़रूरतों को भी ध्यान में रखना चाहिए. इससे, परफ़ॉर्मेंस और बैटरी की खपत को ऑप्टिमाइज़ करने के बीच सही तालमेल बिठाया जा सकता है.
सबसे ज़्यादा बैटरी की खपत किस वजह से होती है?
इस सेक्शन में, ऐप्लिकेशन में होने वाली उन गतिविधियों को दो कैटगरी में बांटा गया है जिनकी वजह से बैटरी की ज़्यादा खपत होती है:
- स्क्रीन रेंडरिंग
- जगह की जानकारी के अपडेट
स्क्रीन रेंडरिंग
मोबाइल नेविगेशन ऐप्लिकेशन में, आम तौर पर स्क्रीन रेंडरिंग की वजह से बैटरी की सबसे ज़्यादा खपत होती है. हर बार जब डिवाइस, स्क्रीन पर मैप और यूज़र इंटरफ़ेस (यूआई) के अन्य एलिमेंट दिखाता है, तो वह जीपीयू और सीपीयू प्रोसेसिंग पर निर्भर करता है. इसी तरह, जब उपयोगकर्ता उस स्क्रीन को लंबे समय तक चालू रखता है, तब भी बैटरी की ज़्यादा खपत होती है.
कुछ हद तक, आपको उन ड्राइवरों या राइडर से बैटरी की ज़्यादा खपत की उम्मीद हो सकती है जो नेविगेट करने के लिए, दिखने वाले मैप पर निर्भर करते हैं. खास तौर पर, अगर वे ऐप्लिकेशन का इस्तेमाल कई घंटों तक लगातार करते हैं. इस स्थिति में, ऐप्लिकेशन स्क्रीन पर रेंडरिंग की दर भी ज़्यादा होती है, क्योंकि मैप रीयल टाइम में अपडेट होता है. कुछ मामलों में, स्क्रीन लगभग लगातार फिर से ड्रॉ हो सकती है. खास तौर पर, जब उपयोगकर्ता बिना रुके एक जगह से दूसरी जगह ड्राइव करता है.
जगह की जानकारी के अपडेट
स्क्रीन रेंडरिंग के अलावा, नेविगेशन की दो अन्य गतिविधियों में डिवाइस की बैटरी की खपत होती है:
- रेडियो सेल टावर और जीपीएस का इस्तेमाल
- जगह की जानकारी के अपडेट और शेयर करना. जैसे, ईटीए देना या बेड़े में मौजूद किसी वाहन की जगह की जानकारी देना.
जीपीएस और सेल रेडियो कम्यूनिकेशन, दोनों ही बैटरी की ज़्यादा खपत करने वाली स्टार्ट-अप कार्रवाइयों पर निर्भर करते हैं: जीपीएस को सैटेलाइट ढूंढनी होती हैं और सेल रेडियो को टावर के साथ बातचीत करके कनेक्शन बनाना होता है. इन वजहों से, नेविगेशन के दौरान ये दोनों लगातार काम करते हैं. भले ही, सेल रेडियो, स्टार्ट अप की लागत को कम करने के लिए 20 से 30 सेकंड तक ही चालू रहते हों. ऑपरेटिंग सिस्टम इन सेटिंग को कंट्रोल करता है. इन्हें आपके ऐप्लिकेशन में आसानी से कॉन्फ़िगर नहीं किया जा सकता.
जगह की जानकारी के अपडेट के लिए, बैटरी की खपत का अनुमान नहीं लगाया जा सकता, क्योंकि यह कई अनचाहे फ़ैक्टर पर निर्भर करती है. उदाहरण के लिए, डिवाइस और सेल्युलर बेस स्टेशन के बीच की दूरी से बैटरी की खपत तय होती है. ऐसा इसलिए, क्योंकि डिवाइस, टावर बदलने से बचने के लिए, नेविगेशन जारी रखने के लिए ज़रूरी कम से कम सिग्नल का इस्तेमाल करेगा. इसलिए, खराब कनेक्टिविटी वाले इलाके में नेविगेट करने वाला डिवाइस, बेस स्टेशन के पास मौजूद डिवाइस की तुलना में ज़्यादा बैटरी की खपत करेगा. इसके अलावा, कुछ ऐप्लिकेशन, जगह की जानकारी के अपडेट को बेड़े के मैनेजमेंट की मुख्य सेवा के साथ शेयर कर सकते हैं. इसलिए, उन्हें ऐसा करने के लिए किसी सर्वर के साथ कम्यूनिकेट करना होगा.
अपने ऐप्लिकेशन में बैटरी की खपत को ऑप्टिमाइज़ करना
नेविगेशन ऐप्लिकेशन में बैटरी की खपत को ऑप्टिमाइज़ करने की चुनौती यह है कि ये ऐप्लिकेशन, बैटरी की ज़्यादा खपत करने वाले संसाधनों पर निर्भर करते हैं. इससे, स्क्रीन के इस्तेमाल पर पाबंदी लगाने जैसे तालमेल बिठाए बिना, असर को कम करने के आपके विकल्प सीमित हो जाते हैं. इस सेक्शन में, अपने ऐप्लिकेशन को ऑप्टिमाइज़ करते समय अपनाए जा सकने वाले तरीकों की सूची दी गई है. इन्हें सबसे ज़्यादा से लेकर सबसे कम असरदार क्रम में दिखाया गया है.
फ़्रेम रेट बदलना
स्क्रीन पर दिखने वाली चीज़ें, फ़्रेम रेट के तौर पर जानी जाने वाली फ़्रीक्वेंसी पर अपडेट होती हैं. फ़्रेम रेट को आम तौर पर, फ़्रेम प्रति सेकंड (एफ़पीएस) में मापा जाता है. स्क्रीन रेंडरिंग में सीपीयू या जीपीयू का ज़्यादा इस्तेमाल होता है. इसलिए, बैटरी की खपत को कम करने के लिए, फ़्रेम रेट को कम किया जा सकता है.
फ़्रेम रेट कम करने पर, स्क्रीन रेंडरिंग कम स्मूद दिख सकती है. खास तौर पर, अगर मैप बार-बार अपडेट होता है. यह तब ज़्यादा साफ़ तौर पर दिख सकता है, जब मैप ज़ूम इन किया गया हो, जब उपयोगकर्ता तेज़ रफ़्तार से यात्रा कर रहा हो या जब रफ़्तार या दिशा में बड़ा बदलाव किया गया हो.
iOS डिवाइसों पर, iOS के लिए Maps SDK, फ़्रेम रेट को कंट्रोल करने के लिए preferredFrameRate प्रॉपर्टी दिखाता है. नीचे दी गई टेबल में,GMSFrameRate एन्यूमरेटर की वे वैल्यू दिखाई गई हैं जिन्हें अडजस्ट किया जा सकता है:
|
बैटरी की खपत को कम करने के लिए, सबसे कम फ़्रेम रेट का इस्तेमाल करें. |
|
स्मूद रेंडरिंग देने और प्रोसेसिंग साइकल को कम करने के लिए, मीडियन फ़्रेम रेट का इस्तेमाल करें. |
|
किसी डिवाइस के लिए, ज़्यादा से ज़्यादा फ़्रेम रेट का इस्तेमाल करें. कम एंड वाले डिवाइसों के लिए यह 30 एफ़पीएस है. वहीं, हाई एंड वाले डिवाइसों के लिए यह 60 एफ़पीएस है. |
ज़्यादा जानकारी के लिए, iOS के लिए Google Navigation SDK के दस्तावेज़ में GMSFrameRate देखें.
मैप के बिना नेविगेट करना
आपके पास यह कंट्रोल करने का विकल्प नहीं होता कि एंड यूज़र, अपने डिवाइस की स्क्रीन की चमक कैसे सेट करता है या वह अपनी स्क्रीन को कितनी देर तक चालू रखता है. हालांकि, आपके पास मैप के बिना नेविगेशन की सुविधा देने का विकल्प होता है. इससे एंड यूज़र को बैटरी की खपत को कम करने के लिए, उस विकल्प को चुनने की अनुमति मिलेगी. उदाहरण के लिए, अगर ड्राइवर नियमित तौर पर एक ही इलाके में काम करते हैं, तो उन्हें मैप पर आधारित निर्देशों की ज़रूरत बार-बार नहीं पड़ सकती. मैप के बिना नेविगेशन की सुविधा चालू करने के लिए, Navigation SDK में कोई डेस्टिनेशन सेट किया जा सकता है और निर्देश शुरू किए जा सकते हैं. हालांकि, मैप नहीं दिखाया जा सकता.
GMSMapView को छिपाने के लिए, कोड की एक लाइन जोड़ें:
mapView.isHidden = true
Navigation SDK, सड़क पर मौजूद जगहों, ईटीए, और यात्रा की बची हुई दूरी की जानकारी को अपडेट करता रहेगा. साथ ही, ड्राइवर के आगे बढ़ने पर, आपका ऐप्लिकेशन अब भी एसडीके से जनरेट होने वाले सभी इवेंट की सदस्यता ले सकता है. यह हर इस्तेमाल के उदाहरण के लिए सही नहीं है. साथ ही, उन मामलों में यह सही सलाह नहीं है जहां ड्राइवर को मैप देखना हो और विज़ुअल निर्देशों को फ़ॉलो करना हो. नीचे दिए गए स्क्रीनशॉट में, चालू नेविगेशन के दौरान मैप व्यू को टॉगल करने की तुलना अगल-बगल में की गई है.
|
|
गहरे रंग वाली मैप स्टाइल का इस्तेमाल करना
स्क्रीन पर मैप को रेंडर करने के लिए ज़रूरी ऊर्जा की मात्रा को कम करने के लिए, मैप को गहरे रंग वाली थीम का इस्तेमाल करके स्टाइल करने पर विचार करें.
Navigation SDK, अपने मैप को iOS के लिए Google Maps SDK का इस्तेमाल करके रेंडर करता है. इसमें आपके ऐप्लिकेशन में, नेविगेशन के अलावा अन्य मैप व्यू को स्टाइल करने के विकल्प शामिल होते हैं. नेविगेशन व्यू, गहरे रंग वाले मोड को भी फ़ोर्स करने की सुविधा देता है. स्क्रीन के टाइप में अंतर होने की वजह से, हो सकता है कि इसका असर हर डिवाइस पर एक जैसा न हो. हालांकि, कुछ मामलों में इससे बैटरी की बचत हो सकती है. हाल ही में किए गए एक अध्ययन में पाया गया है कि कुछ स्क्रीन पर गहरे रंग वाले मोड से बैटरी की कितनी बचत होती है , यह इस बात पर निर्भर करता है कि स्क्रीन की चमक कितनी है. उदाहरण के लिए, गहरे रंग वाला मोड, पूरी चमक पर सेट की गई स्क्रीन पर, उन स्क्रीन की तुलना में ज़्यादा बैटरी की बचत करता है जिनकी चमक पहले से ही ज़्यादा से ज़्यादा 30 से 50% पर अडजस्ट की गई है. अपने ऐप्लिकेशन के लिए गहरे रंग वाले मोड का इस्तेमाल करते समय, इस बात का ध्यान रखना ज़रूरी है, क्योंकि बैटरी की बचत इस बात पर निर्भर करेगी कि एंड यूज़र, अपनी स्क्रीन की चमक कैसे सेट करता है.
नेविगेशन यूज़र इंटरफ़ेस (यूआई) में बदलाव करने के बारे में ज़्यादा जानने के लिए, नेविगेशन यूज़र इंटरफ़ेस (यूआई) में बदलाव करना लेख पढ़ें.
क्लाउड पर आधारित मैप स्टाइलिंग के लिए, mapID की ज़रूरत होती है. यह सर्वर-साइड मैप कॉन्फ़िगरेशन को दिखाता है, जिसे आपके Google Console प्रोजेक्ट में बनाया गया है. mapID बनाने के बारे में ज़्यादा जानकारी के लिए, mapID के डेवलपर दस्तावेज़ देखें. क्लाउड पर आधारित मैप स्टाइल को डिज़ाइन और डिप्लॉय करने के बारे में ज़्यादा जानकारी के लिए, क्लाउड पर आधारित मैप स्टाइल बनाने और मैनेज करने के बारे में डेवलपर दस्तावेज़ देखें.
जीपीएस की जगह की जानकारी के अपडेट की फ़्रीक्वेंसी बदलना
डिवाइस से भेजे गए जगह की जानकारी के अपडेट की वजह से होने वाली बैटरी की खपत पर विचार करते समय, ट्रांसमिशन में भेजे गए डेटा की मात्रा के बजाय, जगह की जानकारी के अपडेट की फ़्रीक्वेंसी पर ज़्यादा ध्यान दें.
इसे Navigation SDK में सीधे तौर पर कंट्रोल नहीं किया जा सकता. जीपीएस के अलावा, जगह की जानकारी के अन्य सोर्स (सेल और वाई-फ़ाई) का इस्तेमाल करने के लिए भी यही सलाह लागू होती है.
अपने उपयोगकर्ताओं को जानकारी देना
आपके ऐप्लिकेशन के उपयोगकर्ता, बैटरी की खपत को ऑप्टिमाइज़ करने का तरीका जानना चाहेंगे. अपने ऐप्लिकेशन में बैटरी की खपत को कम करने में उनकी मदद करने के लिए, अपने उपयोगकर्ताओं को ये काम करने की सलाह दें:
- फ़ोन लॉक करना
- नेविगेशन ऐप्लिकेशन को बैकग्राउंड में रखना
- अगर मुमकिन हो, तो मैप के बिना नेविगेशन का इस्तेमाल करना
- स्क्रीन की चमक कम करना. इसके लिए, OLED और AMOLED स्क्रीन के लिए गहरे रंग वाले मोड का इस्तेमाल करें या अडैप्टिव ब्राइटनेस चालू करें
- डिवाइस को ठंडा रखना
- अगर गाड़ी में वाई-फ़ाई उपलब्ध है, तो उससे कनेक्ट करना
बैटरी की खपत मेज़र करना
बैटरी की खपत मेज़र करने के लिए, पेशेवर ग्रेड वाले टूल का इस्तेमाल किया जा सकता है. हालांकि, इन्हें हासिल करना अक्सर मुश्किल या महंगा होता है. ऐप्लिकेशन और आईडीई प्रोफ़ाइलिंग टूल, जैसे कि Android Studio में Power Profiler और XCode Organizer में Battery Usage पैन, बैटरी की खपत मेज़र करते हैं. हालांकि, बैकग्राउंड में चल रही प्रोसेस के असर को हटाना या मेज़र करने के लिए परफ़ॉर्मेंस बेसलाइन सेट करना मुश्किल हो सकता है. कुछ मामलों में, डिवाइस पर लगी पाबंदियों की वजह से, ज़रूरी डेटा का ऐक्सेस नहीं मिल पाता.
बैटरी की खपत की निगरानी करने वाले खास हार्डवेयर का इस्तेमाल किया जा सकता है. साथ ही, बैटरी कनेक्शन के कॉन्फ़िगरेशन में बदलाव किया जा सकता है. ऐसा करने में आपकी मदद करने के लिए, कमर्शियल प्रॉडक्ट और सेवाएं मौजूद हैं. ध्यान दें कि इस तरह से डिवाइसों में बदलाव करने से, डिवाइस की वारंटी खत्म हो सकती है.