Enable a system location dialog ,asking user that app needs to find the current location This dialog is from Android Settings API. Check the source code below.
- 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:
- .......
No comments:
Post a Comment