সর্বশেষ যে লোকেশন জানা গেছে তা পান

Google Play পরিষেবা লোকেশন API ব্যবহার করে, আপনার অ্যাপ ব্যবহারকারীর ডিভাইসের শেষ জানা লোকেশনের জন্য অনুরোধ করতে পারে। বেশিরভাগ ক্ষেত্রে, আপনি ব্যবহারকারীর বর্তমান লোকেশন জানতে চান, যা সাধারণত ডিভাইসের সর্বশেষ জানা লোকেশনের সমান হয়।

বিশেষ করে, ডিভাইসের শেষ জানা লোকেশন খুঁজে পেতে ফিউজড লোকেশন প্রোভাইডার ব্যবহার করুন। ফিউজড লোকেশন প্রোভাইডার হল Google Play পরিষেবার লোকেশন API-এর মধ্যে একটি। এটি অন্তর্নিহিত লোকেশন প্রযুক্তি ম্যানেজ করে এবং একটি API প্রদান করে যাতে আপনি উচ্চ পর্যায়ের যথার্থতা বা কম পাওয়ারের মতো উচ্চ স্তরে প্রয়োজনীয়তা নির্দিষ্ট করতে পারেন। এছাড়াও, এটি ডিভাইসের ব্যাটারি পাওয়ারের ব্যবহার অপ্টিমাইজ করে।

এই টিউটোরিয়াল থেকে আপনি জানতে পারবেন যে ফিউজড লোকেশন প্রোভাইডারে getLastLocation() পদ্ধতি ব্যবহার করে কোনও ডিভাইসের লোকেশনের জন্য কীভাবে একটি অনুরোধ করতে হয়।

Google Play পরিষেবা সেট-আপ করুন

ফিউজড লোকেশন প্রোভাইডার অ্যাক্সেস করতে, আপনার অ্যাপের ডেভেলপমেন্ট প্রোজেক্টে Google Play পরিষেবা অন্তর্ভুক্ত থাকতে হবে। SDK Manager-এর মাধ্যমে Google Play পরিষেবা কম্পোনেন্ট ডাউনলোড ও ইনস্টল করুন এবং আপনার প্রোজেক্টে লাইব্রেরি যোগ করুন। বিস্তারিত জানতে, Google Play পরিষেবা সেট-আপ করা সংক্রান্ত নির্দেশিকা দেখুন।

অ্যাপকে দেওয়া অনুমতি নির্দিষ্ট করা

যেসব অ্যাপের ফিচার লোকেশন পরিষেবা ব্যবহার করে, সেগুলিকে অবশ্যই লোকেশন সংক্রান্ত অনুমতি চাইতে হবে, যা সেইসব ফিচারের ব্যবহারের উপর নির্ভর করে।

লোকেশন পরিষেবা ক্লায়েন্ট তৈরি করুন

আপনার অ্যাক্টিভিটির onCreate() পদ্ধতিতে, ফিউজড লোকেশন প্রোভাইডার ক্লায়েন্টের একটি ইনস্ট্যান্স তৈরি করুন, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে।

private lateinit var fusedLocationClient: FusedLocationProviderClient

override fun onCreate(savedInstanceState: Bundle?) {
    // ...

    fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
}

সর্বশেষ যে লোকেশন জানা গেছে তা পান

আপনি লোকেশন পরিষেবা ক্লায়েন্ট তৈরি করার পরে, ব্যবহারকারীর ডিভাইসের শেষ জানা লোকেশন পেতে পারবেন। ডিভাইসের লোকেশন পেতে ফিউজড লোকেশন প্রোভাইডারের getLastLocation() পদ্ধতি ব্যবহার করুন। এই কলের মাধ্যমে পাওয়া লোকেশনের নির্ভুলতা আপনার অ্যাপ ম্যানিফেস্টে সেট করা অনুমতির সেটিং দ্বারা নির্ধারিত হয়, যেমনটি লোকেশন সংক্রান্ত অনুমতির অনুরোধ কীভাবে করবেন সেই সংক্রান্ত গাইডে বর্ণনা করা হয়েছে।

শেষ জানা লোকেশনের জন্য অনুরোধ করতে, getLastLocation() পদ্ধতি কল করুন। নিম্নলিখিত কোড স্নিপেট অনুরোধ এবং উত্তর দেওয়ার প্রাথমিক পদ্ধতি ব্যাখ্যা করে:

fusedLocationClient.lastLocation
    .addOnSuccessListener { location: Location? ->
        // Got last known location. In some rare situations this can be null.
    }

getLastLocation() পদ্ধতি একটি Task রিটার্ন করে যা আপনি একটি ভৌগোলিক লোকেশনের অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক সহ একটি Location অবজেক্ট পেতে ব্যবহার করতে পারেন। নিম্নলিখিত পরিস্থিতিতে লোকেশন অবজেক্ট null হতে পারে:

  • ডিভাইস সেটিংসে লোকেশন বন্ধ করা আছে। এমনকি শেষ লোকেশন আগে থেকে পাওয়া গেলেও, ফলাফল null হতে পারে, কারণ লোকেশন বন্ধ করে দিলে ক্যাশেও মুছে যায়।
  • ডিভাইসটি কখনও তার লোকেশন রেকর্ড করেনি, যা নতুন ডিভাইসের ক্ষেত্রে হতে পারে অথবা এমন ডিভাইস যা ফ্যাক্টরি সেটিংসে রিস্টোর করা হয়েছে।
  • ডিভাইসে Google Play পরিষেবা রিস্টার্ট করা হয়েছে এবং পরিষেবা রিস্টার্ট করার পরে লোকেশন অনুরোধ করেছে এমন কোনও অ্যাক্টিভ ফিউজড লোকেশন প্রোভাইডার ক্লায়েন্ট নেই। এই পরিস্থিতি এড়াতে আপনি নতুন ক্লায়েন্ট তৈরি করতে এবং লোকেশন আপডেট করার জন্য নিজেই অনুরোধ করতে পারবেন। আরও তথ্যের জন্য, লোকেশন আপডেট করার অনুরোধ করুন বিকল্প দেখুন।

লোকেশন সংক্রান্ত সেরা অনুমান বেছে নিন

FusedLocationProviderClient ডিভাইসের লোকেশন সংক্রান্ত তথ্য উদ্ধার করার জন্য একাধিক পদ্ধতি প্রদান করে। আপনার অ্যাপের ব্যবহারের উপর নির্ভর করে নিম্নলিখিত বিকল্পগুলির মধ্যে থেকে একটি বেছে নিন:

  • getLastLocation() আরও দ্রুত লোকেশনের অনুমান পায় এবং আপনার অ্যাপের জন্য ব্যাটারির ব্যবহার কম করে। তবে, অন্য কোনও ক্লায়েন্ট সম্প্রতি সক্রিয়ভাবে লোকেশন ব্যবহার না করলে, লোকেশন সংক্রান্ত তথ্য পুরনো হতে পারে।
  • getCurrentLocation() আরও ধারাবাহিকভাবে আরও নতুন, আরও সঠিক লোকেশন পায়। তবে, এই পদ্ধতির ফলে ডিভাইসে অ্যাক্টিভ লোকেশন কম্পিউটেশন হতে পারে।

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

অতিরিক্ত রিসোর্স

Android-এ বর্তমান লোকেশন ফেচ করার ব্যাপারে আরও তথ্যের জন্য, নিম্নলিখিত মেটেরিয়াল দেখুন:

নমুনা