বাংলায় অ্যান্ড্রয়েড সহায়িকা - Bangla Android Guide

লোকেশন আপডেট শুরু করুন

লোকেশন আপডেটের জন্য রিকোয়েস্ট সেন্ড করতে, onCreate()এ একটি লোকেশন ক্লায়েন্ট তৈরী করুন, তারপর এটা সংযোগ করুন এবং requestLocationUpdates()কল করার মাধ্যমে রিকোয়েস্ট করুন। যেহেতু আপডেট গ্রহণ করতে আপনার ক্লায়েন্টকে অবশ্যই আপনার সংযুক্ত হতে হবে, আপনার উচিত onStart()এ ক্লায়েন্টকে যুক্ত করা। এটা নিশ্চিত করে যে আপনার সবসময়ই একটি বৈধ গ্রহনযোগ্য এবং সংযুক্ত ক্লায়েন্ট থাকে যখন আপনার অ্যাপ দৃশ্যমান হয়। যেহেতু আপনার আপডেট রিকোয়েস্ট করতে পারার আগে আপনার একটি সংযোগের প্রয়োজন, ConnectionCallbacks.onConnected() এ আপডেট রিকোয়েস্ট করুন।

মনে রাখবেন যে ইউজার নানবিধ কারনে লোকেশন আপডেট বন্ধ করে (টার্ন অফ) দিতে চাইতে পারে। আপনার উচিত ইউজারের জন্য এটা করার একটি উপায় করে দেয়া, এবং আপনার নিশ্চিত করা উচিত যে আপনার onStart() এ আপডেট শুরু করবেন না যদি আপডেট পূর্বেই বন্ধ করা থাকে (টার্ন অফ) ইউজারের প্রিফারেন্স (পছন্দ) অনুসরণ করতে, এটাকে আপনার অ্যাপের onPause()এর SharedPreferences এ স্টোর করুন এবং এটাকে onResume()এ পুনরূদ্ধার করুন।

নিচের কোড চিত্রটি দেখায় কীভাবে onCreate() এ ক্লায়েন্টটিকে সেট করা যায়, এবং কীভাবে এটাকে সংযুক্ত করা যায় এবং onStart()এ আপডেট রিকোয়েস্ট করা যায়:

public class MainActivity extends FragmentActivity implements
        GooglePlayServicesClient.ConnectionCallbacks,
        GooglePlayServicesClient.OnConnectionFailedListener,
        LocationListener {
    ...
    // Global variables
    ...
    LocationClient mLocationClient;
    boolean mUpdatesRequested;
    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        // Open the shared preferences
        mPrefs = getSharedPreferences("SharedPreferences",
                Context.MODE_PRIVATE);
        // Get a SharedPreferences editor
        mEditor = mPrefs.edit();
        /*
         * Create a new location client, using the enclosing class to
         * handle callbacks.
         */
        mLocationClient = new LocationClient(this, this, this);
        // Start with updates turned off
        mUpdatesRequested = false;
        ...
    }
    ...
    @Override
    protected void onPause() {
        // Save the current setting for updates
        mEditor.putBoolean("KEY_UPDATES_ON", mUpdatesRequested);
        mEditor.commit();
        super.onPause();
    }
    ...
    @Override
    protected void onStart() {
        ...
        mLocationClient.connect();
    }
    ...
    @Override
    protected void onResume() {
        /*
         * Get any previous setting for location updates
         * Gets "false" if an error occurs
         */
        if (mPrefs.contains("KEY_UPDATES_ON")) {
            mUpdatesRequested =
                    mPrefs.getBoolean("KEY_UPDATES_ON", false);

        // Otherwise, turn off location updates
        } else {
            mEditor.putBoolean("KEY_UPDATES_ON", false);
            mEditor.commit();
        }
    }
    ...
    /*
     * Called by Location Services when the request to connect the
     * client finishes successfully. At this point, you can
     * request the current location or start periodic updates
     */
    @Override
    public void onConnected(Bundle dataBundle) {
        // Display the connection status
        Toast.makeText(this, "Connected", Toast.LENGTH_SHORT).show();
        // If already requested, start periodic updates
        if (mUpdatesRequested) {
            mLocationClient.requestLocationUpdates(mLocationRequest, this);
        }
    }
    ...
}

প্রিফারেন্স (পছন্দ) সেভ করার বিষয়ে আরও তথ্যের জন্য, Saving Key-Value Sets পড়ুন।