মোটা অবস্থান পান

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

অ্যান্ড্রয়েড-ভিত্তিক মোবাইল ডিভাইসের তুলনায়, স্বয়ংচালিত অ্যাপ্লিকেশনগুলিতে নেটওয়ার্ক অবস্থান আরও চ্যালেঞ্জিং হতে পারে। আপনি দুটি Android API ব্যবহার করতে পারেন:

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

  • Google Play Services API আপনার ফিউজড লোকেশন প্রোভাইডার (FLP) এর সাথে লোকেশনের সাথে কাজ করার জন্য আরও সরলীকৃত উপায় অফার করে।

অনেক স্বয়ংচালিত অ্যাপ LM এর পরিবর্তে Google Play Services (GPS) API থেকে FLP ব্যবহার করে। FLP অবস্থানের অনুরোধের মানদণ্ড এবং গাড়ির প্রয়োজনীয় নীতি (শক্তি এবং নির্ভুলতা) এর উপর ভিত্তি করে সর্বোত্তম অবস্থান প্রদানকারী নির্বাচন করে।

আপনি এর পরিবর্তে LM-এ NETWORK_PROVIDER পাশাপাশি GPS_PROVIDER এর সুস্পষ্টভাবে অনুরোধ করতে এবং ব্যবহার করতে পারেন, যা android.permission.ACCESS_FINE_LOCATION অনুমতি ব্যবহার করে। API 31-এ, FUSED_PROVIDER , পূর্বে শুধুমাত্র GPS API-এর মাধ্যমে অ্যাক্সেসযোগ্য, এখন LM-এর অবস্থান প্রদানকারী হিসাবে উপলব্ধ। আপনি FusedLocationProvider.java এ FLP-এর আরও সহজ বাস্তবায়ন দেখতে পারেন।

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

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

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

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

অনেক অ্যাপ তাই সরাসরি LM-এর পরিবর্তে Play API থেকে FLP ব্যবহার করে কারণ FLP স্বয়ংক্রিয়ভাবে অবস্থানের অনুরোধের মানদণ্ড/নীতি (যেমন শক্তি এবং নির্ভুলতা) সন্তুষ্ট করতে সক্ষম লোকেশন প্রদানকারী ব্যবহার করে স্মার্ট জিনিসটি করে।

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

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

বেশিরভাগ যানবাহন একটি সেল আইডি (এবং সংকেত শক্তি) সম্পর্কে প্রয়োজনীয় তথ্য পেতে প্রয়োজনীয় টেলিফোনি API প্রয়োগ করে না। ফলস্বরূপ, এবং যেহেতু আমরা ডেটা ব্যবহার কম করি, তাই 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" />

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