Google Play পরিষেবা লোকেশন API ব্যবহার করে, আপনার অ্যাপ ব্যবহারকারীর ডিভাইসের শেষ পরিচিত লোকেশন সম্পর্কে অনুরোধ করতে পারে। বেশিরভাগ ক্ষেত্রে, আপনি ব্যবহারকারীর বর্তমান লোকেশন জানতে আগ্রহী হন, যা সাধারণত ডিভাইসের শেষ জানা লোকেশনের সমতুল্য।
বিশেষ করে, ডিভাইসের শেষ জানা লোকেশন খুঁজে পেতে ফিউজড লোকেশন প্রোভাইডার ব্যবহার করুন। ফিউজড লোকেশন প্রোভাইডার হল Google Play পরিষেবার লোকেশন API-এর মধ্যে একটি। এটি লোকেশন সংক্রান্ত প্রযুক্তি ম্যানেজ করে এবং একটি সহজ API প্রদান করে যাতে আপনি উচ্চ পর্যায়ের যথার্থতা বা কম পাওয়ারের মতো উচ্চ স্তরে প্রয়োজনীয়তা নির্দিষ্ট করতে পারেন। এছাড়াও, এটি ডিভাইসের ব্যাটারি পাওয়ারের ব্যবহার অপ্টিমাইজ করে।
মনে রাখবেন: আপনার অ্যাপ ব্যাকগ্রাউন্ডে রান করার সময়, লোকেশন অ্যাক্সেস অ্যাপের মূল কার্যকারিতার জন্য গুরুত্বপূর্ণ হতে হবে এবং ব্যবহারকারীদের কাছে এই বিষয়ে যথাযথ ডিসক্লোজার দিতে হবে।
এই টিউটোরিয়াল থেকে আপনি জানতে পারবেন যে ফিউজড লোকেশন প্রোভাইডারে
getLastLocation()
পদ্ধতি ব্যবহার করে
কোনও ডিভাইসের লোকেশনের জন্য কীভাবে একটি অনুরোধ করতে হয়।
Google Play পরিষেবা সেট-আপ করুন
ফিউজড লোকেশন প্রোভাইডার অ্যাক্সেস করতে, আপনার অ্যাপের ডেভেলপমেন্ট প্রোজেক্টে অবশ্যই Google Play পরিষেবা অন্তর্ভুক্ত থাকতে হবে। SDK Manager-এর মাধ্যমে Google Play পরিষেবা কম্পোনেন্ট ডাউনলোড ও ইনস্টল করুন এবং আপনার প্রোজেক্টে লাইব্রেরি যোগ করুন। বিস্তারিত জানতে, Google Play পরিষেবা সেট-আপ করা সংক্রান্ত নির্দেশিকা দেখুন।
অ্যাপকে দেওয়া অনুমতি নির্দিষ্ট করা
যেসব অ্যাপের ফিচার লোকেশন পরিষেবা ব্যবহার করে, সেগুলিকে অবশ্যই লোকেশন সংক্রান্ত অনুমতি চাইতে হবে, যা সেইসব ফিচারের ব্যবহারের উপর নির্ভর করে।
লোকেশন পরিষেবা ক্লায়েন্ট তৈরি করুন
আপনার অ্যাক্টিভিটির onCreate() পদ্ধতিতে,
ফিউজড লোকেশন প্রোভাইডার ক্লায়েন্টের একটি ইনস্ট্যান্স তৈরি করুন, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে।
Kotlin
private lateinit var fusedLocationClient: FusedLocationProviderClient override fun onCreate(savedInstanceState: Bundle?) { // ... fusedLocationClient = LocationServices.getFusedLocationProviderClient(this) }
জাভা
private FusedLocationProviderClient fusedLocationClient; // .. @Override protected void onCreate(Bundle savedInstanceState) { // ... fusedLocationClient = LocationServices.getFusedLocationProviderClient(this); }
সর্বশেষ যে লোকেশন জানা গেছে তা পান
আপনি লোকেশন পরিষেবা ক্লায়েন্ট তৈরি করার পরে
ব্যবহারকারীর ডিভাইসের শেষ জানা লোকেশন পেতে পারবেন। আপনার অ্যাপ এগুলির সাথে
কানেক্ট করা থাকলে, ডিভাইসের লোকেশন খুঁজে পেতে আপনি ফিউজড লোকেশন প্রোভাইডারের
getLastLocation()
পদ্ধতি ব্যবহার করতে পারবেন। এই কলের মাধ্যমে পাওয়া লোকেশনের নির্ভুলতা
আপনার অ্যাপ ম্যানিফেস্টে সেট করা অনুমতি সেটিংসের মাধ্যমে নির্ধারিত হয়, যেমনটি
লোকেশন সংক্রান্ত অনুমতির অনুরোধ করার নির্দেশিকায়
বর্ণনা করা হয়েছে।
শেষ জানা লোকেশনের জন্য অনুরোধ করতে, getLastLocation()
মেথড কল করুন। নিম্নলিখিত কোড স্নিপেট অনুরোধ এবং উত্তর ম্যানেজ করার সহজ উপায়
ব্যাখ্যা করে:
Kotlin
fusedLocationClient.lastLocation .addOnSuccessListener { location : Location? -> // Got last known location. In some rare situations this can be null. }
জাভা
fusedLocationClient.getLastLocation() .addOnSuccessListener(this, new OnSuccessListener<Location>() { @Override public void onSuccess(Location location) { // Got last known location. In some rare situations this can be null. if (location != null) { // Logic to handle location object } } });
getLastLocation()
পদ্ধতিটি একটি Task
রিটার্ন করে যা আপনি
Location
অবজেক্ট পেতে ব্যবহার করতে পারেন, যেখানে একটি ভৌগোলিক অবস্থানের অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক
থাকে। নিম্নলিখিত পরিস্থিতিতে লোকেশন অবজেক্ট null
হতে পারে:
- ডিভাইস সেটিংসে লোকেশন বন্ধ করা আছে। শেষ লোকেশন আগে থেকে ফিরিয়ে আনা হলেও
ফলাফল
nullহতে পারে কারণ লোকেশন বন্ধ করে দিলে ক্যাশেও মুছে যায়। - ডিভাইসটি কখনও তার লোকেশন রেকর্ড করেনি, যা নতুন ডিভাইসের ক্ষেত্রে হতে পারে অথবা এমন একটি ডিভাইস যা ফ্যাক্টরি সেটিংসে রিস্টোর করা হয়েছে।
- ডিভাইসে Google Play পরিষেবা রিস্টার্ট হয়েছে এবং পরিষেবা রিস্টার্ট হওয়ার পরে লোকেশনের জন্য অনুরোধ করেছে এমন কোনও অ্যাক্টিভ ফিউজড লোকেশন প্রোভাইডার ক্লায়েন্ট নেই। এই পরিস্থিতি এড়াতে আপনি নতুন ক্লায়েন্ট তৈরি করতে এবং লোকেশন আপডেট করার অনুরোধ করতে পারেন। আরও তথ্যের জন্য, লোকেশন আপডেট অনুরোধ করুন বিকল্প দেখুন।
সবচেয়ে সঠিক লোকেশন অনুমান বেছে নিন
FusedLocationProviderClient ডিভাইসের লোকেশন সংক্রান্ত তথ্য
উদ্ধার করার জন্য একাধিক পদ্ধতি প্রদান করে। আপনার অ্যাপের ব্যবহারের উপর নির্ভর করে, নিম্নলিখিতগুলির মধ্যে থেকে একটি বেছে নিন:
getLastLocation()আরও দ্রুত লোকেশনের অনুমান পায় এবং ব্যাটারির ব্যবহার কম করে যা আপনার অ্যাপের জন্য হতে পারে। তবে, লোকেশন সংক্রান্ত তথ্য পুরনো হতে পারে, যদি অন্য কোনও ক্লায়েন্ট সম্প্রতি সক্রিয়ভাবে লোকেশন ব্যবহার না করে থাকে।getCurrentLocation()আরও ধারাবাহিকভাবে আরও নতুন, আরও সঠিক লোকেশন পায়। তবে, এই পদ্ধতি ডিভাইসে অ্যাক্টিভ লোকেশন কম্পিউটেশন ঘটাতে পারেযখনই সম্ভব, নতুন লোকেশন পাওয়ার জন্য এটিই হল সাজেস্ট করা পদ্ধতি এবং
requestLocationUpdates()ব্যবহার করে লোকেশন আপডেট শুরু ও ম্যানেজ করার মতো বিকল্পের চেয়ে এটি বেশি নিরাপদ। আপনার অ্যাপrequestLocationUpdates()কল করলে, লোকেশন উপলভ্য না থাকলে অথবা নতুন লোকেশন পাওয়ার পরে অনুরোধ সঠিকভাবে বন্ধ না করা হলে, আপনার অ্যাপ কখনও কখনও প্রচুর পরিমাণে পাওয়ার খরচ করতে পারে।
অতিরিক্ত রিসোর্স
Android-এ বর্তমান লোকেশন ফেচ করা সম্পর্কে আরও তথ্যের জন্য, নিম্নলিখিত মেটেরিয়াল দেখুন:
নমুনা
- বর্তমান লোকেশন ফেচ করার সময় পেশাদার পদ্ধতি দেখানোর জন্য স্যাম্পেল অ্যাপ।