লোকেশন আপডেটের জন্য রিকোয়েস্ট সেন্ড করতে, 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 পড়ুন।