Join the social network of Tech Nerds, increase skill rank, get work, manage projects...
 
  • New Location Dialog from Android Settings API

    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 2.91k
    Comment on it

    Enable a system location dialog ,asking user that app needs to find the current location This dialog is from Android Settings API

    public class LocationData implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
    
        Context _context;
        Location latKnowLocation;
        static GoogleApiClient mGoogleApiClient;
        LocationInterface loIn;
        StartAct startAct;
    
        PendingResult result;
    
        //Location requests
        LocationRequest locationRequest = LocationRequest.create()
                .setInterval(10 * 60 * 1000) // every 10 minutes
                .setExpirationDuration(10 * 1000) // After 10 seconds
                .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    
        LocationSettingsRequest.Builder builder;
    
        public LocationData(Context con) {
    
            _context = con;
    
            mGoogleApiClient = new GoogleApiClient.Builder(con.getApplicationContext())
                    .addConnectionCallbacks(this)
                    .addOnConnectionFailedListener(this)
                    .addApi(LocationServices.API)
                    .build();
    
            mGoogleApiClient.connect();
            //initialize the builder and add location request paramenter like HIGH Aurracy
            builder = new LocationSettingsRequest.Builder()
                    .addLocationRequest(locationRequest);
           // set builder to always true (Shows the dialog after never operation too)
            builder.setAlwaysShow(true);
    
    
           // Then check whether current location settings are satisfied:
            result =
                    LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient, builder.build());
    
           }
    
        // call back for other class
        public void callbacksResults()
        {
            // call backs for lcoation status
            result.setResultCallback(new ResultCallback() {
                @Override
                public void onResult(LocationSettingsResult result) {
                    final Status status = result.getStatus();
                    final LocationSettingsStates state = result.getLocationSettingsStates();
                    switch (status.getStatusCode()) {
                        case LocationSettingsStatusCodes.SUCCESS:
                            // All location settings are satisfied. The client can initialize location
                            // requests here.
    
    
                            if(mGoogleApiClient.isConnected())
                            {
                                latKnowLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
    
                            }
    
                            break;
                        case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
                            // Location settings are not satisfied. But could be fixed by showing the user
                            // a dialog.
    
                            try {
    
                                 status.startResolutionForResult((Activity) _context, Constants.REQUEST_CHECK_SETTINGS);
                            } catch (IntentSender.SendIntentException e) {
                                e.printStackTrace();
                            }
    
                            break;
                        case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
                            // Location settings are not satisfied. However, we have no way to fix the
                            // settings so we won't show the dialog.
    
                            break;
                    }
                }
            });
        }
    
    
        // call back for other class
        public void callbacksResultsSplash()
        {
            // call backs for lcoation status
            result.setResultCallback(new ResultCallback() {
                @Override
                public void onResult(LocationSettingsResult result) {
                    final Status status = result.getStatus();
                    final LocationSettingsStates state = result.getLocationSettingsStates();
                    switch (status.getStatusCode()) {
                        case LocationSettingsStatusCodes.SUCCESS:
                            // All location settings are satisfied. The client can initialize location
                            // requests here.
                            // start main Activity
    
    
                            break;
                        case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
                            // Location settings are not satisfied. But could be fixed by showing the user
                            // a dialog.
    
                            try {
    
                                status.startResolutionForResult((Activity) _context, Constants.REQUEST_CHECK_SETTINGS);
                            } catch (IntentSender.SendIntentException e) {
                                e.printStackTrace();
                            }
    
                            break;
                        case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
                            // Location settings are not satisfied. However, we have no way to fix the
                            // settings so we won't show the dialog.
    
                            break;
                    }
                }
            });
        }
    
    
        @Override
        public void onConnected(Bundle bundle) {
    
    
    
        }
    
    
    
        @Override
        public void onConnectionSuspended(int i) {
    
            loIn.onConnectionSuspended();
        }
    
        @Override
        public void onConnectionFailed(ConnectionResult connectionResult) {
    
            loIn.onLocationFailed();
        }
    
    
    
    
    }
    

 0 Comment(s)

Sign In
                           OR                           
                           OR                           
Register

Sign up using

                           OR                           
Forgot Password
Fill out the form below and instructions to reset your password will be emailed to you:
Reset Password
Fill out the form below and reset your password: