পরবর্তীতে, একটি পদ্ধতি নির্ধারণ করুন যা লোকেশন সার্ভিসের সাথে সংযুক্ত হওয়ার মাধ্যমে রিকোয়েস্ট প্রক্রিয়া শুরু করে। একটি বৈশ্বিক ভেরিয়েবল সেট করার মাধ্যমে একটি জিওফেন্স যোগ করতে এটাকে একটি রিকোয়েস্ট হিসাবে চিহ্নিত করনি। এটা জিওফেন্স যোগ এবং বিয়োজন করতে আপনাকে কলব্যাক ConnectionCallbacks.onConnected()ব্যবহার করতে দেয় , যেভাবে সাকসেডিং অধ্যায়ে আলোচনা করা হয়েছে।
রেস কনডিশন থেকে রক্ষা করা যা হতে পারে যদি আপনার অ্যাপ প্রথমটি শেষ হওয়ার পূর্বেই অন্য রিকোয়েস্ট করার চেষ্টা করে, একটি বুলিয়ান ফ্ল্যাগ (boolean) নির্ধারণ করুন যা বর্তমান রিকোয়েস্টের অবস্থান অনুসরণ করবে:
public class MainActivity extends FragmentActivity implements
ConnectionCallbacks,
OnConnectionFailedListener,
OnAddGeofencesResultListener {
...
// Holds the location client
private LocationClient mLocationClient;
// Stores the PendingIntent used to request geofence monitoring
private PendingIntent mGeofenceRequestIntent;
// Defines the allowable request types.
public enum REQUEST_TYPE = {ADD}
private REQUEST_TYPE mRequestType;
// Flag that indicates if a request is underway.
private boolean mInProgress;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
// Start with the request flag set to false
mInProgress = false;
...
}
...
/**
* Start a request for geofence monitoring by calling
* LocationClient.connect().
*/
public void addGeofences() {
// Start a request to add geofences
mRequestType = ADD;
/*
* Test for Google Play services after setting the request type.
* If Google Play services isn't present, the proper request
* can be restarted.
*/
if (!servicesConnected()) {
return;
}
/*
* Create a new location client object. Since the current
* activity class implements ConnectionCallbacks and
* OnConnectionFailedListener, pass the current activity object
* as the listener for both parameters
*/
mLocationClient = new LocationClient(this, this, this)
// If a request is not already underway
if (!mInProgress) {
// Indicate that a request is underway
mInProgress = true;
// Request a connection from the client to Location Services
mLocationClient.connect();
} else {
/*
* A request is already underway. You can handle
* this situation by disconnecting the client,
* re-setting the flag, and then re-trying the
* request.
*/
}
}
...
}