ব্যবহারকারীর গোপনীয়তার প্রতি সম্মান জানাতে, অ্যাপ ডেভেলপারদের শুধুমাত্র মোটামুটি অবস্থানের অনুমতি চাইতে উৎসাহিত করা হয়। যেসব অ্যাপের একটি আনুমানিক অবস্থানের প্রয়োজন হয়, তারা সাধারণত নেটওয়ার্ক লোকেশন (FLP) ব্যবহার করে, কারণ এটি দ্রুত এবং কম শক্তি খরচ করে।
অ্যান্ড্রয়েড-ভিত্তিক মোবাইল ডিভাইসের তুলনায়, অটোমোটিভ অ্যাপে নেটওয়ার্ক লোকেশন আরও বেশি চ্যালেঞ্জিং হতে পারে। আপনি দুটি অ্যান্ড্রয়েড এপিআই ব্যবহার করতে পারেন:
লোকেশনম্যানেজার এপিআই বা এলএম ব্যবহার করতে হলে আপনাকে পছন্দের লোকেশন প্রোভাইডারকে স্পষ্টভাবে চিহ্নিত করতে হবে।
ফিউজড লোকেশন প্রোভাইডার (FLP) চালুর মাধ্যমে গুগল প্লে সার্ভিসেস এপিআই আপনার জন্য লোকেশন নিয়ে কাজ করার একটি আরও সরলীকৃত উপায় নিয়ে এসেছে।
অনেক অটোমোটিভ অ্যাপ এলএম (LM)-এর পরিবর্তে গুগল প্লে সার্ভিসেস (GPS) এপিআই (API)-এর এফএলপি (FLP) ব্যবহার করে। এফএলপি গাড়ির জন্য প্রয়োজনীয় লোকেশন অনুরোধের মানদণ্ড এবং পলিসি (পাওয়ার ও অ্যাকুরেসি)-র উপর ভিত্তি করে সর্বোত্তম লোকেশন প্রোভাইডার নির্বাচন করে।
এর পরিবর্তে আপনি LM-এ স্পষ্টভাবে NETWORK_PROVIDER অনুরোধ করে ব্যবহার করতে পারেন, সেইসাথে সূক্ষ্ম অবস্থানের জন্য GPS_PROVIDER ও ব্যবহার করতে পারেন, যা android.permission.ACCESS_FINE_LOCATION পারমিশন ব্যবহার করে। API 31-এ, FUSED_PROVIDER , যা আগে শুধুমাত্র GPS API-এর মাধ্যমে অ্যাক্সেসযোগ্য ছিল, এখন LM-এর জন্য একটি লোকেশন প্রোভাইডার হিসেবে উপলব্ধ। আপনি FusedLocationProvider.java তে FLP-এর একটি আরও সরল ইমপ্লিমেন্টেশন দেখতে পারেন।
যদিও শুধুমাত্র স্থূল অনুমতি অধিকার সহ GPS_PROVIDER ব্যবহার করা সম্ভব, ফ্রেমওয়ার্কটি প্রত্যাশার সাথে সামঞ্জস্য রাখতে কৃত্রিমভাবে নির্ভুলতা হ্রাস করে, অ্যান্ড্রয়েড ফোনকে লক্ষ্য করে কাজ করা ডেভেলপারদের জন্য এটি তেমন অর্থবহ নয়, কারণ এর সামগ্রিক প্রাপ্যতা দুর্বল এবং একটি স্থূল অবস্থান পেতে প্রায়শই বেশি সময় লাগে।
স্বয়ংচালিত যানবাহনে নেটওয়ার্কের অবস্থান
অ্যান্ড্রয়েড ফোনে (গুগল মোবাইল সার্ভিসেস সহ) ব্যবহৃত NETWORK_PROVIDER ) এখন শুধুমাত্র কাছাকাছি সেল টাওয়ারের উপর ভিত্তি করে অবস্থান নির্ধারণ করার পরিবর্তে ওয়াই-ফাই অ্যাক্সেস পয়েন্ট বা এমনকি ব্লুটুথ (BT) বীকনও ব্যবহার করে। NETWORK_PROVIDER ব্যবহারের জন্য ডেটা সংযোগের প্রয়োজন হতে পারে।
অটোমোটিভ অ্যাপের ক্ষেত্রে ডিভাইসের সীমাবদ্ধতা ভিন্ন। যেহেতু GNSS সাধারণত চালু থাকে, তাই অতিরিক্ত শক্তি ও ব্যাটারি ব্যবহারের কারণে কোনো সমস্যা হয় না। ফলে, IVI-এর আপটাইম ব্যাহত হয় না। আমরা আমাদের সার্ভারের সাথে ডেটা আদান-প্রদান সর্বনিম্ন রাখতে সচেষ্ট থাকি।
এই কারণে অনেক অ্যাপ সরাসরি এলএম (LM)-এর পরিবর্তে প্লে এপিআই (Play API) থেকে এফএলপি (FLP) ব্যবহার করে, কারণ এফএলপি অভ্যন্তরীণভাবে এমন একটি লোকেশন প্রোভাইডার ব্যবহার করে যা লোকেশন অনুরোধের মানদণ্ড/নীতিমালা (বিশেষত পাওয়ার এবং অ্যাকুরেসি) পূরণে সবচেয়ে বেশি সক্ষম।
মোবাইল ডিভাইসের মতো যানবাহন খুব কমই এক জায়গা থেকে অন্য জায়গায় লাফিয়ে যায় । বেশিরভাগ সময়ই গাড়ির অবস্থান ইঞ্জিনের ভেতর থেকে জানা যায়।
নেটওয়ার্ক অবস্থান প্রদানকারী
বেশিরভাগ যানবাহনে সেল আইডি (এবং সিগন্যাল শক্তি) সম্পর্কিত প্রয়োজনীয় তথ্য পাওয়ার জন্য প্রয়োজনীয় টেলিফোনি এপিআই প্রয়োগ করা থাকে না। ফলস্বরূপ, এবং ডেটা ব্যবহার কমানোর জন্য, এনএলপি-র কোনো অতিরিক্ত কার্যকরী প্রয়োগ প্রদান করা হয় না।
ফিউজড অবস্থান প্রদানকারী
মোবাইল এফএলপি, প্রয়োজন অনুযায়ী নেটওয়ার্ক এবং জিপিএস প্রোভাইডারদের দক্ষতার সাথে ব্যবহার করার পাশাপাশি, অবস্থানের মান আরও উন্নত করার জন্য অন্যান্য সেন্সর থেকে প্রাপ্ত তথ্যও একত্রিত করে। অন্যদিকে, অটোমোটিভের এফএলপি-র বর্তমান বাস্তবায়নটি পূর্বোক্ত অনুমানগুলোর সুবিধা নেয় এবং সব সময় GPS_PROVIDER একটি অন্তর্নিহিত উৎস হিসেবে ব্যবহার করে। এটি জিএনএসএস থেকে প্রাপ্ত অবস্থানগুলোকে বিকৃত করে, প্রয়োজনে আরও বেশি ভুল তথ্য দেওয়ার জন্য কিছু ত্রুটি যোগ করে। উদাহরণস্বরূপ, যখন কোনো ক্লায়েন্টকে স্থূল অবস্থান সরবরাহ করা হয়।
সেই হিসেবে, খুব অল্প কিছু ক্ষেত্রে প্রথম অবস্থানটি উপলব্ধ হতে স্বাভাবিকের চেয়ে বেশি সময় লাগতে পারে। উদাহরণস্বরূপ, যখন কোনো যানবাহন বা, আরও সঠিকভাবে বলতে গেলে, তার অবস্থান নির্ণয়কারী সাবসিস্টেমটি প্রথমবারের মতো ব্যবহার করা হয় অথবা সেটিকে টেনে নিয়ে যাওয়ার পর।
মোবাইল এবং যানবাহন ব্যবহারের কথা মাথায় রেখে অ্যাপ ডিজাইন করুন
আমরা সুপারিশ করি যে, মোবাইল এবং অটোমোটিভ ডিভাইসগুলির জন্য তৈরি অ্যাপ, যেগুলির উচ্চতর নির্ভুলতার প্রয়োজন নেই, তারা যেন শুধুমাত্র android.permission.ACCESS_COARSE_LOCATION এর জন্য অনুরোধ করে এবং উপলব্ধ থাকলে FLP ব্যবহার করে। বিকল্পভাবে, শেষ উপায় হিসেবে, একই অনুমতি সহ সরাসরি GPS_PROVIDER ব্যবহার করুন। ফ্রেমওয়ার্কটি API-এর প্রত্যাশার সাথে সামঞ্জস্য রাখতে অন্তর্নিহিত GNSS অবস্থানের নির্ভুলতা হ্রাস করে। আরও জানতে, Accuracy দেখুন।
এছাড়াও, এই অ্যাপগুলিকে তাদের ম্যানিফেস্টে android.hardware.location.network ফিচারটিকে ঐচ্ছিক হিসেবে স্পষ্টভাবে ঘোষণা করতে হবে। উদাহরণস্বরূপ:
<uses-feature android:name="android.hardware.location.network" android:required="false" />
এই পদ্ধতিটি বিভিন্ন ক্ষেত্রের ডিভাইসগুলির সাথে সর্বোচ্চ সামঞ্জস্য নিশ্চিত করে এবং ফলস্বরূপ, প্রয়োজনের সময় অবস্থান জানার জন্য কোডে কোনো পরিবর্তন ছাড়াই অ্যাপের সর্বোচ্চ প্রাপ্যতা নিশ্চিত করে।