সর্বশেষ পরিচিত অবস্থান পান

গুগল প্লে সার্ভিসেস লোকেশন এপিআই ব্যবহার করে, আপনার অ্যাপ ব্যবহারকারীর ডিভাইসের সর্বশেষ জ্ঞাত অবস্থানের জন্য অনুরোধ করতে পারে। বেশিরভাগ ক্ষেত্রে, আপনি ব্যবহারকারীর বর্তমান অবস্থান সম্পর্কে আগ্রহী হন, যা সাধারণত ডিভাইসের সর্বশেষ জ্ঞাত অবস্থানের সমতুল্য।

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

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

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

গুগল প্লে পরিষেবা সেট আপ করুন

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

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

যেসব অ্যাপের বৈশিষ্ট্যগুলি লোকেশন পরিষেবা ব্যবহার করে, তাদের অবশ্যই লোকেশন অনুমতির অনুরোধ করতে হবে, যা সেই বৈশিষ্ট্যগুলির ব্যবহারের ক্ষেত্রে নির্ভর করে।

লোকেশন সার্ভিস ক্লায়েন্ট তৈরি করুন

আপনার অ্যাক্টিভিটির onCreate() পদ্ধতিতে, নিম্নলিখিত কোড স্নিপেটটি যেমন দেখায় তেমন Fused Location Provider Client এর একটি উদাহরণ তৈরি করুন।

কোটলিন

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() পদ্ধতিতে কল করুন। নিম্নলিখিত কোড স্নিপেটটি অনুরোধ এবং প্রতিক্রিয়াটির সহজ পরিচালনা চিত্রিত করে:

কোটলিন

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 পরিষেবাগুলি পুনরায় চালু হয়েছে, এবং পরিষেবাগুলি পুনরায় চালু হওয়ার পরে কোনও সক্রিয় Fused Location Provider ক্লায়েন্ট অবস্থানের জন্য অনুরোধ করেনি। এই পরিস্থিতি এড়াতে আপনি একটি নতুন ক্লায়েন্ট তৈরি করতে পারেন এবং নিজেই অবস্থান আপডেটের জন্য অনুরোধ করতে পারেন। আরও তথ্যের জন্য, অবস্থান আপডেটের অনুরোধ দেখুন।

সেরা অবস্থানের অনুমান বেছে নিন

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

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

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

অতিরিক্ত সম্পদ

অ্যান্ড্রয়েডে বর্তমান অবস্থান কীভাবে বের করা যায় সে সম্পর্কে আরও তথ্যের জন্য, নিম্নলিখিত উপকরণগুলি দেখুন:

নমুনা

  • বর্তমান অবস্থান আনার সময় সর্বোত্তম অনুশীলনগুলি প্রদর্শনের জন্য নমুনা অ্যাপ