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

সকল জিওফেন্স অপসারন

যেহেতু জিওফেন্স অপসারন করতে কিছু পদ্ধতি ব্যবহার করা হয়েছে যা জিওফেন্স যুক্ত করতে ব্যবহৃত হয়, অন্য রিকোয়েস্ট টাইপ নির্ধারণ করার মাধ্যমে শুরু করুন:

public class MainActivity extends FragmentActivity implements
        ConnectionCallbacks,
        OnConnectionFailedListener,
        OnAddGeofencesResultListener {
    ...
    // Enum type for controlling the type of removal requested
    public enum REQUEST_TYPE = {ADD, REMOVE_INTENT}
    ...
}

লোকেশন সার্ভিসে একটি কানেকশন (সংযোগ) পাওয়ার মাধ্যমে অপসারন রিকোয়েস্ট শুরু করুন। যদি সংযোগ ব্যর্থ হয়, onConnected() কে কল করা হবে না, এবং রিকোয়েস্ট বন্ধ হয়ে যাবে। নিচের চিত্রটি দেখায় কীভাবে রিকোয়েস্ট শুরু করতে হয়:

public class MainActivity extends FragmentActivity implements
        ConnectionCallbacks,
        OnConnectionFailedListener,
        OnAddGeofencesResultListener {
    ...
    /**
     * Start a request to remove geofences by calling
     * LocationClient.connect()
     */
    public void removeGeofences(PendingIntent requestIntent) {
        // Record the type of removal request
        mRequestType = REMOVE_INTENT;
        /*
         * Test for Google Play services after setting the request type.
         * If Google Play services isn't present, the request can be
         * restarted.
         */
        if (!servicesConnected()) {
            return;
        }
        // Store the PendingIntent
        mGeofenceRequestIntent = requestIntent;
        /*
         * 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.
             */
        }
    }
    ...
}

যখন লোকেশন সার্ভিস কলব্যাক পদ্ধতি আহবান করে সেটা নির্দেশ করে যে কানেকশন (সংযোগ) ওপেন আছে, সকল জিওফেন্স অপসারণ করতে রিকোয়েস্ট করুন। রিকোয়েস্ট করার পর ক্লায়েন্টকে বিচ্ছিন্ন করুন। উদাহরণ:

public class MainActivity extends FragmentActivity implements
        ConnectionCallbacks,
        OnConnectionFailedListener,
        OnAddGeofencesResultListener {
    ...
    /**
     * Once the connection is available, send a request to remove the
     * Geofences. The method signature used depends on which type of
     * remove request was originally received.
     */
    private void onConnected(Bundle dataBundle) {
        /*
         * Choose what to do based on the request type set in
         * removeGeofences
         */
        switch (mRequestType) {
            ...
            case REMOVE_INTENT :
                mLocationClient.removeGeofences(
                        mGeofenceRequestIntent, this);
                break;
            ...
        }
    }
    ...
}

যদিও removeGeofences(PendingIntent, LocationClient.OnRemoveGeofencesResultListener) সার্ভিসে কল তাৎক্ষনিকভাবে কল ফেরত দেয়, অপসারিত রিকোয়েস্টের রেজাল্ট অনির্ধারিত থাকে যতক্ষণ না লোকেশন সার্ভিস onRemoveGeofencesByPendingIntentResult() কল করে। নিচের চিত্রটি দেখায় কীভাবে এই পদ্ধতি নির্ধারণ করতে হয়:

public class MainActivity extends FragmentActivity implements
        ConnectionCallbacks,
        OnConnectionFailedListener,
        OnAddGeofencesResultListener {
    ...
    /**
     * When the request to remove geofences by PendingIntent returns,
     * handle the result.
     *
     *@param statusCode the code returned by Location Services
     *@param requestIntent The Intent used to request the removal.
     */
    @Override
    public void onRemoveGeofencesByPendingIntentResult(int statusCode,
            PendingIntent requestIntent) {
        // If removing the geofences was successful
        if (statusCode == LocationStatusCodes.SUCCESS) {
            /*
             * Handle successful removal of geofences here.
             * You can send out a broadcast intent or update the UI.
             * geofences into the Intent's extended data.
             */
        } else {
        // If adding the geocodes failed
            /*
             * Report errors here.
             * You can log the error using Log.e() or update
             * the UI.
             */
        }
        /*
         * Disconnect the location client regardless of the
         * request status, and indicate that a request is no
         * longer in progress
         */
        mInProgress = false;
        mLocationClient.disconnect();
    }
    ...
}