এই ডকুমেন্টটিতে নেভিগেশন এসডিকে (Navigation SDK) ব্যবহার করে তৈরি করা একটি মোবাইল নেভিগেশন অ্যাপে বিদ্যুৎ খরচ অপ্টিমাইজ করার সেরা পদ্ধতিগুলো বর্ণনা করা হয়েছে। একই সাথে, এই পদ্ধতিগুলো প্রয়োগ করার সময় যে সুবিধা-অসুবিধাগুলো বিবেচনা করতে হবে, সেগুলোও বর্ণনা করা হয়েছে। বিশেষ করে, এই ডকুমেন্টটিতে নিম্নলিখিত বিষয়গুলো অন্তর্ভুক্ত রয়েছে:
- উচ্চ বিদ্যুৎ খরচের উৎসসমূহ , সর্বোচ্চ থেকে সর্বনিম্ন পর্যন্ত ক্রমানুসারে সাজানো।
- বিদ্যুৎ খরচ অপ্টিমাইজ করার কৌশলসমূহ , গুরুত্ব অনুসারে, ফ্রেম রেট থেকে শুরু করে।
- অ্যাপ ব্যবহারকারীদের নেভিগেট করার সময় তাদের ডিভাইসের ব্যবহার কীভাবে পরিচালনা করতে হয়, সে বিষয়ে শিক্ষিত করার জন্য এন্ড-ইউজার কৌশল ।
আপনার নেভিগেশন অ্যাপটি কেন অপ্টিমাইজ করবেন?
পরিস্থিতির উপর নির্ভর করে, আপনার অ্যাপ ব্যবহারকারীরা দীর্ঘ সময় ধরে নেভিগেশন গাইডেন্স ব্যবহার করতে পারেন। উদাহরণস্বরূপ, ড্রাইভার এবং ডেলিভারি কুরিয়াররা অপরিচিত এলাকায় কাজ সম্পন্ন করার জন্য দীর্ঘ সময় ধরে কাজ করতে পারেন। এই ক্ষেত্রে, তারা অ্যাপের মধ্যে থাকা ধাপে ধাপে নির্দেশনার উপর ব্যাপকভাবে নির্ভর করেন। এর ফলে কিছু সাধারণ সমস্যা দেখা দেয়:
- ব্যাটারির দ্রুত ক্ষয় এবং চার্জারের সহজলভ্যতা । অতিরিক্ত নেভিগেশন ব্যবহারের ফলে ডিভাইসের ব্যাটারি প্রত্যাশার চেয়ে দ্রুত শেষ হয়ে যেতে পারে। যদিও অনেক ব্যবহারকারী গাড়িতে ডিভাইস চার্জ দিয়ে এই সমস্যার সমাধান করতে পারেন, কিন্তু দুই চাকার গাড়ির চালকরা তা পারেন না।
- তাপের কারণে ডিভাইসের গতি কমে যাওয়া । এমনকি যেসব ব্যবহারকারী ক্রমাগত তাদের ডিভাইস চার্জ দেন, তারাও সমস্যার সম্মুখীন হতে পারেন। দীর্ঘ সময় ধরে উচ্চ বিদ্যুৎ খরচের কারণে ডিভাইসটি গরম হয়ে উঠতে পারে, যার ফলে থার্মাল থ্রটলিং হয় এবং পরবর্তীতে কর্মক্ষমতা হ্রাস পায়।
টার্ন-বাই-টার্ন নেভিগেশন অ্যাপগুলো স্ক্রিন, জিপিএস এবং সেল টাওয়ারের সাথে রেডিও যোগাযোগের মতো শক্তি-ব্যয়কারী ফিচারগুলোর উপর নির্ভর করে, তাই আপনার মোবাইল অ্যাপের শক্তি ব্যবহার অপ্টিমাইজ করা একটি উত্তম অভ্যাস। এছাড়াও, আপনার লক্ষ্য ব্যবহারকারীদের শক্তি ব্যবহারের প্রয়োজনীয়তা বিবেচনা করা উচিত, যাতে আপনি পারফরম্যান্স এবং শক্তি খরচ অপ্টিমাইজ করার মধ্যে যথাযথ ভারসাম্য রক্ষা করতে পারেন।
কোনটিতে সবচেয়ে বেশি শক্তি খরচ হয়?
এই বিভাগটি উচ্চ শক্তি খরচের সাথে সম্পর্কিত অ্যাপের ভেতরের কার্যকলাপগুলিকে দুটি শ্রেণীতে বিভক্ত করে:
- স্ক্রিন রেন্ডারিং
- অবস্থান আপডেট
স্ক্রিন রেন্ডারিং
মোবাইল নেভিগেশন অ্যাপে সাধারণত স্ক্রিন রেন্ডারিংয়ের কারণেই সবচেয়ে বেশি বিদ্যুৎ খরচ হয়। প্রতিবার যখন ডিভাইসটি স্ক্রিনে একটি মানচিত্র এবং অন্যান্য UI উপাদান আঁকে, তখন এটি GPU এবং CPU প্রসেসিংয়ের ওপর নির্ভর করে। একইভাবে, যখন ব্যবহারকারী দীর্ঘ সময়ের জন্য স্ক্রিনটি চালু রাখেন, তখনও বেশি বিদ্যুৎ খরচ হয়।
কিছু ক্ষেত্রে, যেসব চালক বা আরোহী পথ খুঁজে নিতে দৃশ্যমান মানচিত্রের ওপর নির্ভর করেন, তাদের দ্বারা উচ্চ বিদ্যুৎ খরচ হতে পারে, বিশেষ করে যদি তারা একটানা অনেক ঘণ্টা ধরে অ্যাপটি ব্যবহার করেন। এই পরিস্থিতিতে, অ্যাপটি স্ক্রিনে আরও দ্রুত গতিতে রেন্ডারিং করে, কারণ মানচিত্রটি তখন রিয়েল টাইমে আপডেট হয়। কিছু ক্ষেত্রে, স্ক্রিনটি প্রায় অবিরামভাবে রিড্র হতে পারে, বিশেষ করে যখন ব্যবহারকারী না থেমে এক জায়গা থেকে অন্য জায়গায় গাড়ি চালান।
অবস্থান আপডেট
স্ক্রিন রেন্ডারিং ছাড়াও, আরও দুটি নেভিগেশন কার্যক্রম ডিভাইসের শক্তি খরচ করে:
- রেডিও সেল টাওয়ার এবং জিপিএস ব্যবহার
- অবস্থান হালনাগাদ ও শেয়ার করা, যেমন পৌঁছানোর আনুমানিক সময় (ETA) জানানো বা গাড়িবহরের কোনো একটি গাড়ির অবস্থান রিপোর্ট করা।
জিপিএস এবং সেল রেডিও যোগাযোগ উভয়ই শক্তি-ব্যয়কারী স্টার্ট-আপ কার্যক্রমের উপর নির্ভর করে: জিপিএসকে স্যাটেলাইট খুঁজে বের করতে হয় এবং সেল রেডিওকে টাওয়ারের সাথে আলোচনা করে একটি সংযোগ স্থাপন করতে হয়। এইসব কারণে, নেভিগেশনের সময় এগুলো মূলত অবিরাম চলতে থাকে, যদিও স্টার্ট-আপ খরচ কমানোর চেষ্টায় সেল রেডিও ২০-৩০ সেকেন্ডের জন্য সক্রিয় থাকে। অপারেটিং সিস্টেম এই সেটিংসগুলো নিয়ন্ত্রণ করে, যা আপনি আপনার অ্যাপে সহজে কনফিগার করতে পারবেন না।
অবস্থান আপডেটের জন্য বিদ্যুৎ খরচ অপ্রত্যাশিত কারণের উপর ভিত্তি করে পরিবর্তিত হয়। উদাহরণস্বরূপ, ডিভাইস এবং সেলুলার বেস স্টেশনের মধ্যে দূরত্ব বিদ্যুৎ খরচ নির্ধারণ করে, কারণ ডিভাইসটি টাওয়ার পরিবর্তন এড়ানোর জন্য নেভিগেশন চালিয়ে যেতে প্রয়োজনীয় সর্বনিম্ন সিগন্যাল ব্যবহার করে। সুতরাং, দুর্বল সংযোগযুক্ত এলাকায় চলাচলকারী একটি ডিভাইস বেস স্টেশনের কাছাকাছি থাকা ডিভাইসের চেয়ে বেশি বিদ্যুৎ ব্যবহার করবে। এছাড়াও, কিছু অ্যাপ একটি কেন্দ্রীয় ফ্লিট ম্যানেজমেন্ট পরিষেবার সাথে অবস্থানের আপডেট শেয়ার করতে পারে, এবং তাই এটি সম্পন্ন করার জন্য একটি সার্ভারের সাথে যোগাযোগ করার প্রয়োজন হয়।
আপনার অ্যাপের বিদ্যুৎ ব্যবহার অপ্টিমাইজ করুন
ন্যাভিগেশন অ্যাপে পাওয়ার ব্যবহার অপ্টিমাইজ করার ক্ষেত্রে চ্যালেঞ্জটি হলো, এই অ্যাপগুলো মূলত বেশি শক্তি খরচকারী রিসোর্সের উপর নির্ভরশীল। এর ফলে, স্ক্রিনের ব্যবহার সীমিত করার মতো আপোস না করে এর প্রভাব কমানোর উপায়গুলো সীমিত হয়ে যায়। এই বিভাগে আপনার অ্যাপ অপ্টিমাইজ করার জন্য সবচেয়ে বেশি প্রভাব থেকে শুরু করে সবচেয়ে কম প্রভাব পর্যন্ত বিভিন্ন পদ্ধতির একটি তালিকা দেওয়া হয়েছে।
ফ্রেম রেট পরিবর্তন করুন
স্ক্রিনে যা দেখানো হয়, তা একটি নির্দিষ্ট হারে আপডেট হয়, যা ফ্রেম রেট নামে পরিচিত। ফ্রেম রেট সাধারণত ফ্রেম পার সেকেন্ড (FPS) এককে পরিমাপ করা হয়। যেহেতু স্ক্রিন রেন্ডারিং-এ প্রচুর সিপিইউ বা জিপিইউ ব্যবহৃত হয়, তাই বিদ্যুৎ সাশ্রয়ের জন্য আপনি ফ্রেম রেট কমাতে পারেন।
ফ্রেম রেট কমানোর অসুবিধা হলো, স্ক্রিন রেন্ডারিং ততটা মসৃণ নাও লাগতে পারে, বিশেষ করে যদি ম্যাপ ঘন ঘন আপডেট হয়। ম্যাপ জুম ইন করা থাকলে, ব্যবহারকারী উচ্চ গতিতে ভ্রমণ করলে, অথবা গতি বা দিক অনেক বেশি পরিবর্তন করলে এটি সবচেয়ে স্পষ্টভাবে বোঝা যেতে পারে।
ফ্রেম রেট পরিবর্তন করার বিষয়ে আরও জানতে অ্যান্ড্রয়েড মিডিয়া ডেভ সেন্টার ডেভেলপার ডকুমেন্টেশনের ফ্রেম রেট বিভাগটি দেখুন।
মানচিত্র ছাড়া পথ খুঁজে নিন
যদিও আপনি নিয়ন্ত্রণ করতে পারবেন না যে ব্যবহারকারী তার ডিভাইসের স্ক্রিনের ব্রাইটনেস কীভাবে সেট করে বা কতক্ষণ স্ক্রিন চালু রাখে, আপনি ম্যাপ ছাড়া নেভিগেশন গাইডেন্সের একটি অপশন দিতে পারেন। এর ফলে ব্যবহারকারী পাওয়ার সাশ্রয়ের জন্য সেই অপশনটি বেছে নিতে পারবে। উদাহরণস্বরূপ, যদি চালকরা নিয়মিত একই এলাকায় কাজ করেন, তাহলে তাদের হয়তো প্রায়শই ম্যাপ-ভিত্তিক গাইডেন্সের প্রয়োজন হবে না। নেভিগেশন SDK-তে একটি গন্তব্য সেট করে এবং গাইডেন্স শুরু করে , কিন্তু ম্যাপ প্রদর্শন না করে, ম্যাপ ছাড়া নেভিগেশন চালু করা যায়।
ন্যাভিগেশন UI লুকানোর জন্য, কোনো NavigationView বা SupportNavigationFragment যোগ করবেন না, অথবা যদি আপনি ইতিমধ্যেই তা করে থাকেন, তবে সেগুলোকে যোগ করার কোডটি মুছে ফেলুন। নিম্নলিখিত কোডটি ন্যাভিগেশন SDK অ্যান্ড্রয়েড ডেমো অ্যাপ থেকে পরিবর্তিত এবং এটি ন্যাভিগেশন UI যোগকারী কোডটি মুছে ফেলার জন্য কমেন্টের ব্যবহার দেখায়:
//Obtain a reference to the NavigationFragment
//setContentView(R.layout.activity_nav_fragment);
//mNavFragment = (SupportNavigationFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);
ন্যাভিগেশন SDK রাস্তার অবস্থান, পৌঁছানোর আনুমানিক সময় (ETA), এবং অবশিষ্ট যাত্রাপথ আপডেট করতে থাকবে, এবং চালক যখন এগিয়ে যাবেন, তখন আপনার অ্যাপ SDK দ্বারা উত্থাপিত সমস্ত ইভেন্টে সাবস্ক্রাইব করতে পারবে। এটি সব ক্ষেত্রে ব্যবহারের জন্য উপযুক্ত নয় এবং অবশ্যই এমন পরিস্থিতিতে এটি ভালো পরামর্শ নয় যেখানে চালককে মানচিত্র দেখতে এবং দৃশ্যমান নির্দেশনা অনুসরণ করতে হয়। নিম্নলিখিত স্ক্রিনশটগুলিতে সক্রিয় ন্যাভিগেশনের সময় ম্যাপ ভিউ টগল করার একটি পাশাপাশি তুলনা দেখানো হয়েছে।
![]() | ![]() |
একটি ডার্ক ম্যাপ স্টাইল ব্যবহার করুন
স্ক্রিনে ম্যাপটি রেন্ডার করতে প্রয়োজনীয় শক্তির পরিমাণ কমাতে, ম্যাপটিকে একটি ডার্ক থিমে স্টাইল করার কথা বিবেচনা করুন।
নেভিগেশন এসডিকে তার ম্যাপগুলো রেন্ডার করার জন্য অ্যান্ড্রয়েডের জন্য গুগল ম্যাপস এসডিকে ব্যবহার করে, যেটিতে আপনার অ্যাপের যেকোনো নন-নেভিগেশন ম্যাপ ভিউকে স্টাইল করার অপশন রয়েছে। নেভিগেশন ভিউ ডার্ক মোড জোর করে চালু করাও সমর্থন করে। স্ক্রিনের ধরনের ভিন্নতার কারণে এটি সব ডিভাইসে একইভাবে কাজ নাও করতে পারে, তবে কিছু ক্ষেত্রে এটি সম্ভাব্য বিদ্যুৎ সাশ্রয়ের সুযোগ করে দেয়। সাম্প্রতিক এক গবেষণায় দেখা গেছে যে, কিছু স্ক্রিনে ডার্ক মোডের মাধ্যমে কী পরিমাণ বিদ্যুৎ সাশ্রয় হবে তা নির্ভর করে স্ক্রিনটি শুরুতে কতটা উজ্জ্বল তার উপর। উদাহরণস্বরূপ, যে স্ক্রিনগুলোর ব্রাইটনেস সর্বোচ্চের ৩০-৫০% এ সেট করা থাকে, তার চেয়ে সম্পূর্ণ ব্রাইটনেসে সেট করা স্ক্রিনে ডার্ক মোড বেশি বিদ্যুৎ সাশ্রয় করে। আপনার অ্যাপের জন্য ডার্ক মোড ব্যবহার করার সময় এই বিষয়টি বিবেচনা করা গুরুত্বপূর্ণ, কারণ বিদ্যুৎ সাশ্রয়ের পরিমাণ নির্ভর করবে ব্যবহারকারী তার স্ক্রিনের ব্রাইটনেস কীভাবে সেট করছেন তার উপর।
নেভিগেশন UI পরিবর্তন করার বিষয়ে আরও জানতে, "নেভিগেশন UI পরিবর্তন করুন" দেখুন। 
আপনার ম্যাপের জন্য একটি ডার্ক স্টাইল তৈরি করতে, একটি MapStyleOptions অবজেক্ট ব্যবহার করুন, যার মধ্যে আপনার পছন্দের ডার্ক ম্যাপ স্টাইলটি উপস্থাপনকারী একটি JSON স্টাইল থাকবে। https://mapstyle.withgoogle.com/ -এ থাকা লিগ্যাসি স্টাইলিং এডিটর ব্যবহার করে লিগ্যাসি JSON স্টাইল তৈরি করা যেতে পারে।
জিপিএস অবস্থান আপডেটের ফ্রিকোয়েন্সি পরিবর্তন করুন
ডিভাইস থেকে পাঠানো লোকেশন আপডেটের জন্য বিদ্যুৎ খরচ বিবেচনা করার সময়, প্রেরণে পাঠানো ডেটার পরিমাণের চেয়ে লোকেশন আপডেটের ফ্রিকোয়েন্সির উপর বেশি মনোযোগ দিন।
এটি এমন কিছু নয় যা আপনি নেভিগেশন এসডিকে (Navigation SDK)-তে সরাসরি নিয়ন্ত্রণ করতে পারবেন, কিন্তু যদি আপনার অ্যান্ড্রয়েড অ্যাপ স্বাধীনভাবে অবস্থানের জন্য অনুরোধ করে, তাহলে অ্যান্ড্রয়েড ডেভেলপার ডকুমেন্টেশনে থাকা 'Optimize Location for Battery' আর্টিকেলের পরামর্শগুলো আপনার বিবেচনা করা উচিত। জিপিএস-বহির্ভূত অবস্থানের উৎস (সেল এবং ওয়াইফাই) ব্যবহারের ক্ষেত্রেও একই পরামর্শ প্রযোজ্য।
আপনার ব্যবহারকারীদের শিক্ষিত করুন
আপনার অ্যাপের ব্যবহারকারীরা জানতে চাইতে পারেন কীভাবে তাদের বিদ্যুৎ খরচ অপ্টিমাইজ করা যায়। তাদের অ্যাপে বিদ্যুৎ খরচ কমাতে সাহায্য করার জন্য, ব্যবহারকারীদের নিম্নলিখিত কাজগুলো করার পরামর্শ দিন:
- ফোনটি লক করুন
- নেভিগেশন অ্যাপটিকে ব্যাকগ্রাউন্ডে রাখুন
- সম্ভব হলে মানচিত্র ছাড়া নেভিগেশন ব্যবহার করুন।
- OLED এবং AMOLED স্ক্রিনের জন্য ডার্ক মোড ব্যবহার করে অথবা অ্যাডাপ্টিভ ব্রাইটনেস চালু করে স্ক্রিনের উজ্জ্বলতা কমান।
- ডিভাইসটি ঠান্ডা রাখুন
- গাড়ির ভেতরের ওয়াই-ফাই উপলব্ধ থাকলে সেটিতে সংযোগ করুন।
বিদ্যুৎ খরচ পরিমাপ করুন
বিদ্যুৎ খরচ পরিমাপ করার জন্য আপনি পেশাদার মানের টুল ব্যবহার করতে পারেন, কিন্তু সেগুলো সংগ্রহ করা প্রায়শই কঠিন বা ব্যয়বহুল হয়। অ্যান্ড্রয়েড স্টুডিও-এর পাওয়ার প্রোফাইলার এবং এক্সকোড অর্গানাইজার-এর ব্যাটারি ইউসেজ প্যানেলের মতো অ্যাপ ও আইডিই প্রোফাইলিং টুলগুলো বিদ্যুৎ খরচ পরিমাপ করে, কিন্তু ব্যাকগ্রাউন্ড প্রসেসের প্রভাব দূর করা বা পরিমাপের জন্য একটি পারফরম্যান্স বেসলাইন নির্ধারণ করা কঠিন হতে পারে। কিছু ক্ষেত্রে ডিভাইসের সীমাবদ্ধতার কারণে প্রয়োজনীয় ডেটা অ্যাক্সেস করা সম্ভব নাও হতে পারে।
আপনি বিশেষ পাওয়ার মনিটরিং হার্ডওয়্যার ব্যবহার করতে এবং ব্যাটারি সংযোগের কনফিগারেশন পরিবর্তন করতে পারেন, এবং এই কাজটি করার জন্য বাণিজ্যিক পণ্য ও পরিষেবাও রয়েছে। মনে রাখবেন যে, এইভাবে ডিভাইস পরিবর্তন করলে সেটির ওয়ারেন্টি বাতিল হয়ে যেতে পারে।

