ব্যবহারকারীর গোপনীয়তাকে সম্মান করার জন্য, অ্যাপ ডেভেলপারদের শুধুমাত্র মোটা অবস্থানের অনুমতির অনুরোধ করতে উৎসাহিত করা হয়। যে অ্যাপগুলির একটি আনুমানিক মোটা অবস্থানের প্রয়োজন সেগুলি সাধারণত ফিউজড নেটওয়ার্ক অবস্থান (এফএলপি) ব্যবহার করে কারণ এটি দ্রুত এবং কম শক্তি খরচ করে৷ অ্যান্ড্রয়েড-ভিত্তিক মোবাইল ডিভাইসের তুলনায়, স্বয়ংচালিত অ্যাপ্লিকেশনগুলিতে নেটওয়ার্ক অবস্থান আরও চ্যালেঞ্জিং হতে পারে। আপনি দুটি Android API ব্যবহার করতে পারেন:
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
ব্যবহার করা সম্ভব — ফ্রেমওয়ার্কটি কৃত্রিমভাবে প্রত্যাশার সাথে সারিবদ্ধ করার জন্য নির্ভুলতাকে হ্রাস করে — এটি অ্যান্ড্রয়েড ফোনকে লক্ষ্য করে ডেভেলপারদের জন্য খুব কমই বোঝায় কারণ সামগ্রিক প্রাপ্যতা দুর্বল এবং প্রায়শই একটি মোটা অবস্থান পাওয়ার জন্য ধীর।
স্বয়ংচালিত নেটওয়ার্ক অবস্থান
অ্যান্ড্রয়েড ফোনে (Google মোবাইল পরিষেবাগুলির সাথে) ব্যবহৃত NETWORK_PROVIDER
কাছাকাছি সেল টাওয়ার, Wi-Fi অ্যাক্সেস পয়েন্ট এবং ব্লুটুথ (BT) বীকনের উপর ভিত্তি করে অবস্থান নির্ধারণ করে৷ ফলস্বরূপ, NETWORK_PROVIDER
একটি ডেটা সংযোগের প্রয়োজন হতে পারে৷
স্বয়ংচালিত অ্যাপের জন্য, ডিভাইসের সীমাবদ্ধতা আলাদা। যেহেতু Gthe গ্লোবাল নেভিগেশন স্যাটেলাইট সিস্টেম (GNSS) সাধারণত চালু থাকে, বর্ধিত শক্তি এবং ব্যাটারি ব্যবহারের কারণে কোনো জরিমানা করা হয় না। ফলস্বরূপ, IVI আপটাইম আপস করা হয় না। আমরা আমাদের সার্ভারের সাথে ডেটা আদান-প্রদান কম করার চেষ্টা করি।
অনেক অ্যাপ তাই LocationManager
পরিবর্তে প্লে এপিআই থেকে সরাসরি FLP ব্যবহার করে কারণ FLP স্বয়ংক্রিয়ভাবে অবস্থানের অনুরোধের মানদণ্ড/নীতিগুলি (যেমন শক্তি এবং নির্ভুলতা) পূরণ করতে সক্ষম লোকেশন প্রদানকারী ব্যবহার করে স্মার্ট জিনিসটি করে।
মোবাইল ডিভাইসের বিপরীতে, যানবাহনগুলি খুব কমই এক জায়গা থেকে অন্য জায়গায় লাফ দিতে দেখা যায়। বেশিরভাগ সময় হুডের নিচে গাড়ির অবস্থান জানা যায়।
নেটওয়ার্ক অবস্থান প্রদানকারী (NLP)
বেশিরভাগ যানবাহন একটি সেল আইডি (এবং সংকেত শক্তি) সম্পর্কে প্রয়োজনীয় তথ্য পেতে প্রয়োজনীয় টেলিফোনি 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" />
এই পদ্ধতিটি উল্লম্ব জুড়ে ডিভাইসগুলির সাথে সর্বাধিক সামঞ্জস্যতা নিশ্চিত করে এবং তাই, প্রয়োজনের সময় অবস্থান পাওয়ার জন্য কোনও কোড পার্থক্য ছাড়াই সর্বাধিক অ্যাপ উপলব্ধতা।