এই বিভাগে জিওফেন্সিং এবং ফিউজড লোকেশন প্রোভাইডার API-এর সর্বোত্তম ব্যবহারের জন্য সুপারিশ সহ কিছু সাধারণ অবস্থান-সংগ্রহের পরিস্থিতি বর্ণনা করা হয়েছে।
ব্যবহারকারীর দৃশ্যমান বা ফোরগ্রাউন্ড আপডেট
উদাহরণ: একটি ম্যাপিং অ্যাপ যার ঘন ঘন, খুব কম লেটেন্সি সহ সঠিক আপডেটের প্রয়োজন। সমস্ত আপডেট ফোরগ্রাউন্ডে ঘটে: ব্যবহারকারী একটি কার্যকলাপ শুরু করে, অবস্থানের ডেটা ব্যবহার করে এবং তারপর অল্প সময়ের পরে কার্যকলাপ বন্ধ করে দেয়।
PRIORITY_HIGH_ACCURACY
বা PRIORITY_BALANCED_POWER_ACCURACY
মান সহ setPriority()
পদ্ধতি ব্যবহার করুন।
setInterval()
পদ্ধতিতে নির্দিষ্ট ব্যবধানটি ব্যবহারের ক্ষেত্রে নির্ভর করে: বাস্তব সময়ের পরিস্থিতির জন্য, মানটিকে কয়েক সেকেন্ডে সেট করুন; অন্যথায়, কয়েক মিনিটের মধ্যে সীমাবদ্ধ করুন (ব্যাটারি ব্যবহার কমানোর জন্য প্রায় দুই মিনিট বা তার বেশি বাঞ্ছনীয়)।
ডিভাইসের অবস্থান জানুন
উদাহরণ: একটি আবহাওয়া অ্যাপ ডিভাইসের অবস্থান জানতে চায়।
getLastLocation()
পদ্ধতি ব্যবহার করুন, যা অতি সাম্প্রতিক উপলব্ধ অবস্থান ফেরত দেয় (যা বিরল ক্ষেত্রে শূন্য হতে পারে)। এই পদ্ধতিটি অবস্থান পাওয়ার একটি সহজ উপায় প্রদান করে এবং সক্রিয়ভাবে অবস্থান আপডেটের অনুরোধ করার সাথে সম্পর্কিত খরচ বহন করে না। isLocationAvailable()
পদ্ধতির সাথে একত্রে ব্যবহার করুন, যা getLastLocation()
দ্বারা প্রত্যাবর্তিত অবস্থানটি যুক্তিসঙ্গতভাবে আপ-টু-ডেট হলে true
দেখায়।
যখন একজন ব্যবহারকারী একটি নির্দিষ্ট অবস্থানে থাকে তখন আপডেট শুরু করুন
উদাহরণ: একজন ব্যবহারকারী যখন কর্মক্ষেত্র, বাড়ি বা অন্য অবস্থানের একটি নির্দিষ্ট দূরত্বের মধ্যে থাকে তখন আপডেটের অনুরোধ করা।
ফিউজড অবস্থান প্রদানকারী আপডেটের সাথে একত্রে জিওফেন্সিং ব্যবহার করুন। অ্যাপটি একটি জিওফেন্স এন্ট্রান্স ট্রিগার পেলে আপডেটের জন্য অনুরোধ করুন এবং অ্যাপটি একটি জিওফেন্স এক্সিট ট্রিগার পেলে আপডেটগুলি সরিয়ে দিন। এটি নিশ্চিত করে যে অ্যাপটি কেবলমাত্র ব্যবহারকারী একটি সংজ্ঞায়িত এলাকায় প্রবেশ করলেই আরও দানাদার অবস্থান আপডেট পায়।
এই দৃশ্যের জন্য সাধারণ ওয়ার্কফ্লোতে জিওফেন্স এন্টার ট্রানজিশনের উপর একটি বিজ্ঞপ্তি প্রকাশ করা এবং ব্যবহারকারী যখন বিজ্ঞপ্তিটি ট্যাপ করে তখন আপডেটের অনুরোধ করার জন্য কোড ধারণ করে এমন একটি কার্যকলাপ চালু করা জড়িত থাকতে পারে।
ব্যবহারকারীর কার্যকলাপ অবস্থার উপর ভিত্তি করে আপডেট শুরু করুন
উদাহরণ: ব্যবহারকারী যখন গাড়ি চালাচ্ছেন বা বাইক চালাচ্ছেন তখনই আপডেটের অনুরোধ করা।
ফিউজড লোকেশন প্রোভাইডার আপডেটের সাথে অ্যাক্টিভিটি রিকগনিশন API ব্যবহার করুন। লক্ষ্যযুক্ত কার্যকলাপ সনাক্ত করা হলে আপডেটের অনুরোধ করুন, এবং ব্যবহারকারী সেই কার্যকলাপ সম্পাদন করা বন্ধ করে দিলে আপডেটগুলি সরান।
এই ব্যবহারের ক্ষেত্রে সাধারণ কর্মপ্রবাহের মধ্যে সনাক্ত করা কার্যকলাপের জন্য একটি বিজ্ঞপ্তি প্রকাশ করা এবং ব্যবহারকারী যখন বিজ্ঞপ্তিতে ট্যাপ করে তখন আপডেটের অনুরোধ করার জন্য কোড ধারণ করে এমন একটি কার্যকলাপ চালু করা জড়িত থাকতে পারে।
ভৌগলিক এলাকায় আবদ্ধ দীর্ঘ চলমান পটভূমি অবস্থান আপডেট
উদাহরণ: ডিভাইসটি একজন খুচরা বিক্রেতার সান্নিধ্যের মধ্যে থাকলে ব্যবহারকারী বিজ্ঞপ্তি পেতে চায়।
এটি জিওফেন্সিংয়ের জন্য একটি চমৎকার ব্যবহারের ক্ষেত্রে। যেহেতু ব্যবহারের ক্ষেত্রে প্রায় অবশ্যই পটভূমির অবস্থান জড়িত, addGeofences(GeofencingRequest, PendingIntent)
পদ্ধতি ব্যবহার করুন।
আপনার নিম্নলিখিত কনফিগারেশন বিকল্পগুলি সেট করা উচিত:
আপনি যদি dwell ট্রানজিশন ট্র্যাক করছেন,
setLoiteringDelay()
পদ্ধতিটি ব্যবহার করুন যা প্রায় পাঁচ মিনিট বা তার কম মান অতিক্রম করে।setNotificationResponsiveness()
ব্যবহার করুন, প্রায় পাঁচ মিনিটের মান অতিক্রম করে। যাইহোক, যদি আপনার অ্যাপ প্রতিক্রিয়াশীলতার অতিরিক্ত বিলম্ব পরিচালনা করতে পারে তবে আনুমানিক দশ মিনিটের মান ব্যবহার করার কথা বিবেচনা করুন।
একটি অ্যাপ একবারে সর্বাধিক 100টি জিওফেন্স নিবন্ধন করতে পারে। একটি ব্যবহারের ক্ষেত্রে যেখানে একটি অ্যাপ প্রচুর সংখ্যক খুচরা বিক্রেতার বিকল্পগুলিকে ট্র্যাক করতে চায়, অ্যাপটি বড় জিওফেন্স (শহরের স্তরে) নিবন্ধন করতে এবং বড় জিওফেন্সের মধ্যে স্টোরগুলির জন্য গতিশীলভাবে ছোট জিওফেন্স (শহরের অবস্থানের জন্য) নিবন্ধন করতে চাইতে পারে। যখন একজন ব্যবহারকারী একটি বড় জিওফেন্সে প্রবেশ করে, তখন ছোট জিওফেন্স যোগ করুন; যখন ব্যবহারকারী বৃহত্তর জিওফেন্স থেকে প্রস্থান করে, তখন ছোট জিওফেন্সগুলি সরান এবং একটি নতুন এলাকার জন্য জিওফেন্সগুলি পুনরায় নিবন্ধন করুন৷
দৃশ্যমান অ্যাপ কম্পোনেন্ট ছাড়াই ব্যাকগ্রাউন্ডের লোকেশন আপডেট দীর্ঘক্ষণ চলছে
উদাহরণ: একটি অ্যাপ যা প্যাসিভভাবে অবস্থান ট্র্যাক করে
যদি সম্ভব হয় তাহলে PRIORITY_NO_POWER
বিকল্পের সাথে setPriority()
পদ্ধতি ব্যবহার করুন কারণ এতে প্রায় কোনো ব্যাটারি ড্রেন হয় না। PRIORITY_NO_POWER
ব্যবহার করা সম্ভব না হলে, PRIORITY_BALANCED_POWER_ACCURACY
বা PRIORITY_LOW_POWER
ব্যবহার করুন, কিন্তু টেকসই ব্যাকগ্রাউন্ড কাজের জন্য PRIORITY_HIGH_ACCURACY
ব্যবহার করা এড়িয়ে চলুন কারণ এই বিকল্পটি যথেষ্ট পরিমাণে ব্যাটারি নিষ্কাশন করে৷
আপনার যদি আরও লোকেশন ডেটার প্রয়োজন হয়, তাহলে setFastestInterval()
পদ্ধতিতে কল করে প্যাসিভ লোকেশন ব্যবহার করুন এবং আপনি setInterval()
এ যা পাস করেন তার থেকে একটি ছোট মান পাস করুন। PRIORITY_NO_POWER
বিকল্পের সাথে একত্রিত হলে, প্যাসিভ অবস্থান সুবিধাবাদীভাবে কোনো অতিরিক্ত খরচ ছাড়াই অন্যান্য অ্যাপের দ্বারা গণনা করা অবস্থান সরবরাহ করতে পারে।
setMaxWaitTime()
পদ্ধতি ব্যবহার করে কিছু লেটেন্সি যোগ করে মাঝারি ফ্রিকোয়েন্সি। উদাহরণ স্বরূপ, আপনি যদি প্রায় 10 মিনিটের মান সহ setinterval()
পদ্ধতি ব্যবহার করেন, তাহলে আপনার 30 থেকে 60 মিনিটের মান সহ setMaxWaitTime()
কল করার কথা বিবেচনা করা উচিত। এই বিকল্পগুলি ব্যবহার করে, আপনার অ্যাপের জন্য প্রায় প্রতি 10 মিনিটে অবস্থান গণনা করা হয়, কিন্তু অ্যাপটি শুধুমাত্র প্রতি 30 থেকে 60 মিনিটে জাগ্রত হয় এবং একটি ব্যাচ আপডেট হিসাবে কিছু অবস্থানের ডেটা পাওয়া যায়। এই পদ্ধতিটি আরও ডেটা উপলব্ধ এবং আরও ভাল ব্যাটারির কার্যকারিতার জন্য লেটেন্সি ট্রেড করে।
ব্যবহারকারী অন্যান্য অ্যাপের সাথে ইন্টারঅ্যাক্ট করার সময় ঘন ঘন উচ্চ নির্ভুলতা আপডেট
উদাহরণ: একটি নেভিগেশন বা ফিটনেস অ্যাপ যেটি কাজ করতে থাকে যখন ব্যবহারকারী হয় স্ক্রীন বন্ধ করে দেয় বা একটি ভিন্ন অ্যাপ খোলে।
একটি ফোরগ্রাউন্ড পরিষেবা ব্যবহার করুন। যদি ব্যবহারকারীর পক্ষে আপনার অ্যাপ দ্বারা ব্যয়বহুল কাজ করা সম্ভব হয়, তাহলে ব্যবহারকারীকে সেই কাজ সম্পর্কে সচেতন করা একটি প্রস্তাবিত সেরা অনুশীলন। একটি ফোরগ্রাউন্ড পরিষেবার জন্য একটি অবিরাম বিজ্ঞপ্তি প্রয়োজন। আরও তথ্যের জন্য, বিজ্ঞপ্তি ওভারভিউ দেখুন।