অ্যান্ড্রয়েড অটোমোটিভ ওএসে মোটা অবস্থান

ব্যবহারকারীর গোপনীয়তা রক্ষার জন্য, অ্যাপ ডেভেলপারদের শুধুমাত্র মোটামুটি অবস্থানের অনুমতি চাইতে উৎসাহিত করা হয়। যে অ্যাপগুলির একটি আনুমানিক অবস্থানের প্রয়োজন হয়, তারা সাধারণত ফিউজড নেটওয়ার্ক লোকেশন (FLP) ব্যবহার করে, কারণ এটি দ্রুত এবং কম শক্তি খরচ করে। অ্যান্ড্রয়েড-ভিত্তিক মোবাইল ডিভাইসের তুলনায়, অটোমোটিভ অ্যাপে নেটওয়ার্ক লোকেশন আরও বেশি চ্যালেঞ্জিং হতে পারে। আপনি দুটি অ্যান্ড্রয়েড এপিআই ব্যবহার করতে পারেন:

  • LocationManager API-এর জন্য পছন্দের লোকেশন প্রোভাইডারকে স্পষ্টভাবে চিহ্নিত করতে আপনাকে requestLocationUpdates ব্যবহার করতে হবে।

  • Google Play services API, FusedLocationProviderClient এ লোকেশন নিয়ে কাজ করার একটি আরও সহজ উপায় প্রদান করে।

অনেক অটোমোটিভ অ্যাপ LocationManager এর পরিবর্তে Google Play services API-এর FLP ব্যবহার করে। FLP গাড়ির জন্য প্রয়োজনীয় লোকেশন অনুরোধের মানদণ্ড এবং পলিসি (পাওয়ার ও অ্যাকুরেসি)-র উপর ভিত্তি করে সর্বোত্তম লোকেশন প্রোভাইডার নির্বাচন করে।

এর পরিবর্তে, আপনি ফাইন পজিশনের জন্য NETWORK_PROVIDER এবং GPS_PROVIDER কে স্পষ্টভাবে অনুরোধ করে ব্যবহার করতে পারেন, যার জন্য android.permission.ACCESS_FINE_LOCATION পারমিশন ব্যবহৃত হয়। Android 12 (API লেভেল 31) এবং তার পরবর্তী সংস্করণগুলিতে, FUSED_PROVIDER , যা আগে শুধুমাত্র Google Play services API-এর মাধ্যমে অ্যাক্সেসযোগ্য ছিল, এখন LocationManager এর জন্য একটি লোকেশন প্রোভাইডার হিসেবে উপলব্ধ। আপনি FusedLocationProvider.java তে FLP-এর একটি ইমপ্লিমেন্টেশন দেখতে পারেন।

যদিও শুধুমাত্র স্থূল অনুমতি অধিকার সহ GPS_PROVIDER ব্যবহার করা সম্ভব — ফ্রেমওয়ার্কটি প্রত্যাশার সাথে সামঞ্জস্য রাখতে কৃত্রিমভাবে নির্ভুলতা হ্রাস করে — অ্যান্ড্রয়েড ফোনকে লক্ষ্য করে কাজ করা ডেভেলপারদের জন্য এটি তেমন অর্থবহ নয়, কারণ এর সামগ্রিক প্রাপ্যতা দুর্বল এবং একটি স্থূল অবস্থান পেতে প্রায়শই বেশি সময় লাগে।

স্বয়ংচালিত যানবাহনে নেটওয়ার্কের অবস্থান

অ্যান্ড্রয়েড ফোনে (গুগল মোবাইল সার্ভিসেস সহ) ব্যবহৃত NETWORK_PROVIDER কাছাকাছি থাকা সেল টাওয়ার, ওয়াই-ফাই অ্যাক্সেস পয়েন্ট এবং ব্লুটুথ (BT) বীকনের উপর ভিত্তি করে অবস্থান নির্ধারণ করে। ফলে, NETWORK_PROVIDER একটি ডেটা সংযোগের প্রয়োজন হতে পারে।

অটোমোটিভ অ্যাপের ক্ষেত্রে ডিভাইসের সীমাবদ্ধতা ভিন্ন হয়। যেহেতু গ্লোবাল নেভিগেশন স্যাটেলাইট সিস্টেম (GNSS) সাধারণত চালু থাকে, তাই অতিরিক্ত শক্তি ও ব্যাটারি ব্যবহারের কারণে কোনো সমস্যা হয় না। ফলে, IVI-এর আপটাইম ব্যাহত হয় না। আমরা আমাদের সার্ভারের সাথে ডেটা আদান-প্রদান সর্বনিম্ন রাখতে সচেষ্ট থাকি।

অনেক অ্যাপ সরাসরি LocationManager এর পরিবর্তে Play API-এর FLP ব্যবহার করে, কারণ FLP আপনার অনুরোধের মানদণ্ড বা নীতিমালা, যেমন শক্তি এবং নির্ভুলতা, পূরণের জন্য স্বয়ংক্রিয়ভাবে সেরা লোকেশন প্রদানকারীকে বেছে নেয়।

মোবাইল ডিভাইসের মতো যানবাহন খুব কমই এক জায়গা থেকে অন্য জায়গায় লাফিয়ে যায় । বেশিরভাগ সময়ই গাড়ির অবস্থান ইঞ্জিনের ভেতর থেকে জানা যায়।

নেটওয়ার্ক অবস্থান প্রদানকারী (NLP)

বেশিরভাগ যানবাহনে সেল আইডি (এবং সিগন্যাল শক্তি) সম্পর্কিত প্রয়োজনীয় তথ্য পাওয়ার জন্য প্রয়োজনীয় টেলিফোনি এপিআই প্রয়োগ করা থাকে না। ফলস্বরূপ এবং ডেটা ব্যবহার কমানোর জন্য, এনএলপি-র কোনো অতিরিক্ত কার্যকরী প্রয়োগ প্রদান করা হয় না।

ফিউজড অবস্থান প্রদানকারী

মোবাইল এফএলপি নেটওয়ার্ক এবং জিপিএস প্রোভাইডার ব্যবহারের পাশাপাশি অবস্থানের মান উন্নত করার জন্য অন্যান্য সেন্সর থেকে তথ্য একত্রিত করে। অপরদিকে, অটোমোটিভ এফএলপি তার মূল উৎস হিসেবে GPS_PROVIDER ব্যবহার করে। যখন কোনো ক্লায়েন্ট স্থূল অবস্থানের অনুরোধ করে, তখন এটি জিএনএসএস অবস্থানগুলোকে সমন্বয় করে এবং নির্ভুলতা হ্রাস করার জন্য ইচ্ছাকৃতভাবে ত্রুটি যোগ করে।

এই কারণে, খুব অল্প কিছু ক্ষেত্রে প্রথম অবস্থানটি উপলব্ধ হতে স্বাভাবিকের চেয়ে বেশি সময় লাগতে পারে। উদাহরণস্বরূপ, যখন কোনো যানবাহন বা, আরও সঠিকভাবে বলতে গেলে, তার অবস্থান নির্ণয়কারী সাবসিস্টেমটি প্রথমবারের মতো ব্যবহার করা হয় অথবা সেটিকে টেনে নিয়ে যাওয়ার পর।

মোবাইল এবং যানবাহন ব্যবহারের কথা মাথায় রেখে অ্যাপ ডিজাইন করুন

মোবাইল এবং অটোমোটিভ ডিভাইসগুলির জন্য তৈরি অ্যাপগুলির ক্ষেত্রে, যেগুলির উচ্চতর নির্ভুলতার প্রয়োজন নেই, শুধুমাত্র android.permission.ACCESS_COARSE_LOCATION এর জন্য অনুরোধ করুন এবং উপলব্ধ থাকলে FLP ব্যবহার করুন। বিকল্পভাবে, একই অনুমতি সহ সরাসরি GPS_PROVIDER ব্যবহার করুন। ফ্রেমওয়ার্কটি API-এর প্রত্যাশার সাথে সামঞ্জস্য রাখতে অন্তর্নিহিত GNSS অবস্থানের নির্ভুলতা হ্রাস করে। আরও জানতে, "অবস্থানের অনুমতি অনুরোধ করুন" -এর নির্ভুলতা দেখুন।

এছাড়াও, এই অ্যাপগুলিকে তাদের ম্যানিফেস্টে android.hardware.location.network ফিচারটিকে ঐচ্ছিক হিসেবে স্পষ্টভাবে ঘোষণা করতে হবে। উদাহরণস্বরূপ:

<uses-feature android:name="android.hardware.location.network" android:required="false" />

এই পদ্ধতিটি বিভিন্ন ফর্ম ফ্যাক্টরের ডিভাইসের সাথে অধিকতর সামঞ্জস্য অর্জনে সহায়তা করে এবং ফলস্বরূপ, প্রয়োজনে অবস্থান জানার জন্য কোডে কোনো পরিবর্তন ছাড়াই অ্যাপের সর্বোচ্চ প্রাপ্যতা নিশ্চিত করে।