ব্যাকগ্রাউন্ড লোকেশন ব্যবহার করলে ব্যাটারির আয়ু উল্লেখযোগ্যভাবে কমে যেতে পারে। Android ব্যাকগ্রাউন্ড লোকেশন ডেটা সংগ্রহ করার ক্ষেত্রে সীমা আরোপ করে, যার ফলে ডেভেলপাররা ব্যাটারির কার্যকারিতা আরও উন্নত করার জন্য তাদের অ্যাপ্লিকেশন অপ্টিমাইজ করতে পারেন। এই অপ্টিমাইজেশনগুলি সব ডিভাইসের জন্য উপকারী, সেগুলি যে Android ভার্সনেই চলুক না কেন।
ব্যাকগ্রাউন্ড লোকেশন সংক্রান্ত সীমা সহ:
- ব্যাকগ্রাউন্ড লোকেশন সংগ্রহ করার প্রসেস থ্রটল করা হয় এবং লোকেশন গণনা করা হয়, এবং ঘণ্টায় মাত্র কয়েকবার ডেলিভার করা হয়।
- ওয়াই-ফাই স্ক্যান আরও রক্ষণশীল এবং ডিভাইস একই স্ট্যাটিক অ্যাক্সেস পয়েন্টে কানেক্টেড থাকলে লোকেশন আপডেট গণনা করা হয় না।
- জিওফেন্সিং রেসপন্সিভনেস দশ সেকেন্ড থেকে প্রায় দুই মিনিটে পরিবর্তিত হয়। এই পরিবর্তন ব্যাটারির পারফর্ম্যান্স উন্নত করে—কিছু ডিভাইসে ১০ গুণ পর্যন্ত উন্নত।
প্রয়োজনীয় জ্ঞান
এই ডকুমেন্টটি নিম্নলিখিত API-এর সাথে পরিচিতি অনুমান করে:
- Google লোকেশন সার্ভিস। এইসব API আরও বেশি নির্ভুলতা প্রদান করে এবং ফ্রেমওয়ার্ক লোকেশন API-এর তুলনায় ব্যাটারির উপর কম চাপ সৃষ্টি করে।
- ফিউজড লোকেশন প্রোভাইডার। এই API জিপিএস, ওয়াই-ফাই ও মোবাইল নেটওয়ার্কের পাশাপাশি অ্যাকসিলরোমিটার, জাইরোস্কোপ, ম্যাগনেটোমিটার ও অন্যান্য সেন্সর থেকে সিগন্যাল একত্রিত করে।
- জিওফেন্সিং, এই API, Fused Location Provider API-এর উপরে তৈরি করা হয়েছে এবং ব্যাটারির পারফর্ম্যান্সের জন্য অপ্টিমাইজ করা হয়েছে।
ব্যাটারির চার্জ দ্রুত শেষ হয়ে যাওয়া সম্পর্কে বোঝা
লোকেশন সংক্রান্ত তথ্য সংগ্রহ করা এবং ব্যাটারির চার্জ দ্রুত শেষ হয়ে যাওয়ার মধ্যে সম্পর্ক নিচে উল্লেখ করা হল:
- সঠিকতা: লোকেশন ডেটার নির্ভুলতা। সাধারণত, যত বেশি নির্ভুলতা, তত বেশি ব্যাটারি খরচ।
- ফ্রিকোয়েন্সি: কত ঘন ঘন লোকেশন গণনা করা হয়। যত ঘন ঘন লোকেশন গণনা করা হয়, তত বেশি ব্যাটারি খরচ হয়।
- লেটেন্সি: লোকেশন ডেটা কত দ্রুত ডেলিভার করা হয়। কম লেটেন্সির জন্য সাধারণত আরও বেশি ব্যাটারি প্রয়োজন হয়।
যথার্থতা
আপনি setPriority() পদ্ধতি ব্যবহার করে লোকেশন অ্যাকুরেসি নির্দিষ্ট করতে পারেন, আর্গুমেন্ট হিসেবে
নিম্নলিখিত ভ্যালুর মধ্যে একটি পাস করতে পারেন:
PRIORITY_HIGH_ACCURACYসবচেয়ে সঠিক লোকেশন প্রদান করে, যা প্রয়োজনীয় ইনপুট ব্যবহার করে গণনা করা হয় (এটি জিপিএস, ওয়াই-ফাই ও সেল চালু করে এবং বিভিন্ন ধরনের সেন্সর ব্যবহার করে) এবং এর ফলে ব্যাটারি দ্রুত শেষ হয়ে যেতে পারে।PRIORITY_BALANCED_POWER_ACCURACYব্যাটারি অপ্টিমাইজ করার সময় সঠিক লোকেশন প্রদান করে। খুব কম জিপিএস ব্যবহার করে। সাধারণত ডিভাইসের লোকেশন গণনা করতে ওয়াই-ফাই ও সেল সম্পর্কিত তথ্যের কম্বিনেশন ব্যবহার করে।PRIORITY_LOW_POWERমূলত সেল টাওয়ারের উপর নির্ভর করে এবং জিপিএস ও ওয়াই-ফাই ইনপুট এড়িয়ে যায়, যার ফলে ব্যাটারি খুব কম খরচ করে আনুমানিক (শহর-লেভেল) সঠিক লোকেশন প্রদান করে।PRIORITY_PASSIVEঅন্যান্য অ্যাপ থেকে প্যাসিভভাবে লোকেশন পায়, যার জন্য লোকেশন আগেই গণনা করা হয়েছে।
বেশিরভাগ অ্যাপের লোকেশন সংক্রান্ত প্রয়োজনীয়তা পূরণ করতে, ব্যালেন্সড পাওয়ার বা কম পাওয়ারের বিকল্প ব্যবহার করুন। যেসব অ্যাপ ফোরগ্রাউন্ডে চলে এবং যেগুলির জন্য রিয়েল-টাইম লোকেশন আপডেট প্রয়োজন (যেমন, ম্যাপিং অ্যাপ), সেগুলির জন্য উচ্চ পর্যায়ের যথার্থতা রিজার্ভ করুন।
ফ্রিকোয়েন্সি
আপনি দুটি পদ্ধতি ব্যবহার করে লোকেশন ফ্রিকোয়েন্সি নির্দিষ্ট করতে পারবেন:
- আপনার অ্যাপের লোকেশন গণনা করার জন্য ব্যবধান নির্দিষ্ট করতে
setIntervalMillis()পদ্ধতি ব্যবহার করুন। - অন্যান্য অ্যাপের লোকেশন পাওয়ার জন্য ইন্টারভ্যাল নির্দিষ্ট করতে
setMinUpdateIntervalMillis()পদ্ধতি ব্যবহার করুন।
setIntervalMillis() ব্যবহার করার সময় সবচেয়ে বড় সম্ভাব্য ভ্যালু পাস করুন। এটি বিশেষ করে ব্যাকগ্রাউন্ড লোকেশন ডেটা সংগ্রহের ক্ষেত্রে প্রযোজ্য, যা প্রায়শই ব্যাটারি শেষ করে দেয়। ফোরগ্রাউন্ড ব্যবহারের ক্ষেত্রে কয়েক সেকেন্ডের ব্যবধান রাখুন।
Android 8.0 (API লেভেল ২৬)-এ ব্যাকগ্রাউন্ড লোকেশন সংক্রান্ত যে সীমাবদ্ধতা চালু করা হয়েছে, তা এইসব স্ট্র্যাটেজি প্রয়োগ করে, তবে আপনার অ্যাপের উচিত Android 7.0 (API লেভেল ২৪) এবং তার আগের ভার্সনে চলা ডিভাইসে এগুলি প্রয়োগ করার চেষ্টা করা।
লেটেন্সি
আপনি setMaxUpdateDelayMillis() পদ্ধতি ব্যবহার করে লেটেন্সি নির্দিষ্ট করতে পারেন,
সাধারণত এমন একটি মান পাস করা হয় যা setIntervalMillis() পদ্ধতিতে
নির্দিষ্ট করা ইন্টারভ্যালের চেয়ে কয়েক গুণ বড়। এই সেটিং লোকেশন ডেলিভারি
দেরি করে এবং একাধিক লোকেশন আপডেট ব্যাচে ডেলিভার করা হতে পারে।
এই দুটি পরিবর্তন ব্যাটারির খরচ কমাতে সাহায্য করে।
আপনার অ্যাপের যদি অবিলম্বে লোকেশন আপডেট করার প্রয়োজন না হয়, তাহলে আপনার উচিত
setMaxUpdateDelayMillis() পদ্ধতিতে সবচেয়ে বড় সম্ভাব্য মান পাস করা, কার্যকরভাবে
আরও ডেটা এবং ব্যাটারির দক্ষতার জন্য লেটেন্সি ট্রেড করা।
জিওফেন্স ব্যবহার করার সময়, ব্যাটারি সাশ্রয় করতে অ্যাপকে
setNotificationResponsiveness() পদ্ধতিতে বড় ভ্যালু পাস করতে হবে। পাঁচ মিনিট বা তার বেশি সময়
সাজেস্ট করা হয়।
আরও পড়ুন
আরও তথ্যের জন্য, নিচে দেওয়া ডকুমেন্ট দেখুন:
- সাজেশন: এই গাইডে কিছু নির্দিষ্ট সাজেস্ট করা অ্যাকশন উল্লেখ করা আছে যা আপনি ব্যাটারির আয়ুর উপর আপনার অ্যাপের প্রভাব উন্নত করতে ব্যবহার করতে পারেন।
- ব্যবহারের উদাহরণ: এই গাইডে এমন কিছু সাধারণ ব্যবহারের উদাহরণ দেওয়া হয়েছে যেখানে আপনি লোকেশন পরিষেবা ব্যবহার করতে পারেন এবং সেইসব ক্ষেত্রে ব্যাটারির আয়ুর উপর প্রভাব কীভাবে অপ্টিমাইজ করতে পারেন।