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

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

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

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

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

Google Play পরিষেবাগুলি সেট আপ করুন৷

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

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

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

অবস্থান সেবা ক্লায়েন্ট তৈরি করুন

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

কোটলিন

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

সেরা অবস্থান অনুমান চয়ন করুন

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

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

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

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

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

নমুনা

,

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

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

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

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

Google Play পরিষেবাগুলি সেট আপ করুন৷

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

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

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

অবস্থান সেবা ক্লায়েন্ট তৈরি করুন

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

কোটলিন

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

সেরা অবস্থান অনুমান চয়ন করুন

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

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

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

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

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

নমুনা