com.google.android.gms.location.LocationSettingsStatusCodes Java Examples
The following examples show how to use
com.google.android.gms.location.LocationSettingsStatusCodes.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: TimeAttendantFastFragment.java From iBeacon-Android with Apache License 2.0 | 6 votes |
@Override public void onResult(@NonNull LocationSettingsResult locationSettingsResult) { final Status status = locationSettingsResult.getStatus(); switch (status.getStatusCode()) { case LocationSettingsStatusCodes.SUCCESS: Log.i(TAG, "All location settings are satisfied."); break; case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: Log.i(TAG, "Location settings are not satisfied. Show the user a dialog to upgrade location settings "); try { // Show the dialog by calling startResolutionForResult(), and check the result // in onActivityResult(). status.startResolutionForResult(getActivity(), REQUEST_CHECK_SETTINGS); } catch (IntentSender.SendIntentException e) { Log.i(TAG, "PendingIntent unable to execute request."); } break; case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: Log.i(TAG, "Location settings are inadequate, and cannot be fixed here. Dialog not created."); break; } }
Example #2
Source File: LocationSwitch.java From react-native-location-switch with Apache License 2.0 | 6 votes |
@Override public void onResult(LocationSettingsResult result) { final Status status = result.getStatus(); switch (status.getStatusCode()) { case LocationSettingsStatusCodes.SUCCESS: // All location settings are satisfied -> nothing to do callSuccessCallback(); break; case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: // Location settings are not satisfied. Show the user a dialog to upgrade location settings try { // Show the dialog by calling startResolutionForResult(), and check the result status.startResolutionForResult(mActivity, REQUEST_CHECK_SETTINGS); } catch (IntentSender.SendIntentException e) { Log.e(TAG, "PendingIntent unable to execute request.", e); callErrorCallback(); } break; case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: Log.e(TAG, "Location settings are inadequate, and cannot be fixed here. Dialog not created."); callErrorCallback(); break; } }
Example #3
Source File: PlaceSearchFragment.java From Place-Search-Service with MIT License | 5 votes |
private void startLocationUpdates() { mRequestingLocationUpdates = true; mSettingsClient.checkLocationSettings(mLocationSettingsRequest) .addOnSuccessListener((Activity) context, new OnSuccessListener<LocationSettingsResponse>() { @Override public void onSuccess(LocationSettingsResponse locationSettingsResponse) { Log.i(TAG, "All location settings are satisfied."); if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { requestPermissions(); return; } mFusedLocationClient.requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.myLooper()); } }) .addOnFailureListener((Activity) context, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { int statusCode = ((ApiException) e).getStatusCode(); switch (statusCode) { case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: Log.i(TAG, "Location settings are not satisfied. Attempting to upgrade " + "location settings "); try { ResolvableApiException rae = (ResolvableApiException) e; rae.startResolutionForResult((Activity) context, REQUEST_CHECK_SETTINGS); } catch (IntentSender.SendIntentException sie) { Log.i(TAG, "PendingIntent unable to execute request."); } break; case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: String errorMessage = "Location settings are inadequate, and cannot be " + "fixed here. Fix in Settings."; Log.e(TAG, errorMessage); Toast.makeText(context, errorMessage, Toast.LENGTH_LONG).show(); mRequestingLocationUpdates = false; } } }); }
Example #4
Source File: LocationController.java From Telegram with GNU General Public License v2.0 | 5 votes |
@Override public void onConnected(Bundle bundle) { wasConnectedToPlayServices = true; try { if (Build.VERSION.SDK_INT >= 21) { LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder().addLocationRequest(locationRequest); PendingResult<LocationSettingsResult> result = LocationServices.SettingsApi.checkLocationSettings(googleApiClient, builder.build()); result.setResultCallback(locationSettingsResult -> { final Status status = locationSettingsResult.getStatus(); switch (status.getStatusCode()) { case LocationSettingsStatusCodes.SUCCESS: startFusedLocationRequest(true); break; case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: Utilities.stageQueue.postRunnable(() -> { if (lookingForPeopleNearby || !sharingLocations.isEmpty()) { AndroidUtilities.runOnUIThread(() -> getNotificationCenter().postNotificationName(NotificationCenter.needShowPlayServicesAlert, status)); } }); break; case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: Utilities.stageQueue.postRunnable(() -> { playServicesAvailable = false; try { googleApiClient.disconnect(); start(); } catch (Throwable ignore) { } }); break; } }); } else { startFusedLocationRequest(true); } } catch (Throwable e) { FileLog.e(e); } }
Example #5
Source File: MainActivity.java From Android-nRF-BLE-Joiner with BSD 3-Clause "New" or "Revised" License | 5 votes |
private void createLocationRequestForResult(){ mLocationRequestBalancedPowerAccuracy = new LocationRequest(); final LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder() .addLocationRequest(mLocationRequestBalancedPowerAccuracy) .setAlwaysShow(true); PendingResult<LocationSettingsResult> result = LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient, builder.build()); result.setResultCallback(new ResultCallback<LocationSettingsResult>() { @Override public void onResult(LocationSettingsResult locationSettingsResult) { Log.v("BLE", locationSettingsResult.getStatus().getStatusMessage()); LocationSettingsStates states = locationSettingsResult.getLocationSettingsStates(); if(states.isLocationUsable()) { checkForLocationPermissionsAndScan(); return; } final Status status = locationSettingsResult.getStatus(); switch(status.getStatusCode()){ case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: mLocationServicesRequestApproved = false; try { status.startResolutionForResult(MainActivity.this, REQUEST_LOCATION_SERVICES); } catch (IntentSender.SendIntentException e) { e.printStackTrace(); } break; case LocationSettingsStatusCodes.SUCCESS: mLocationServicesRequestApproved = true; checkForLocationPermissionsAndScan(); break; case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: showPermissionRationaleFragment(R.string.rationale_location_cancel_message, 0); break; } } }); }
Example #6
Source File: MainActivity.java From Android-Fused-location-provider-example with Apache License 2.0 | 5 votes |
private void startLocationUpdates() { Log.i(TAG, "startLocationUpdates"); LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder() .addLocationRequest(mLocationRequest); // 現在位置の取得の前に位置情報の設定が有効になっているか確認する PendingResult<LocationSettingsResult> result = LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient, builder.build()); result.setResultCallback(new ResultCallback<LocationSettingsResult>() { @Override public void onResult(@NonNull LocationSettingsResult locationSettingsResult) { final Status status = locationSettingsResult.getStatus(); switch (status.getStatusCode()) { case LocationSettingsStatusCodes.SUCCESS: // 設定が有効になっているので現在位置を取得する if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, MainActivity.this); } break; case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: // 設定が有効になっていないのでダイアログを表示する try { status.startResolutionForResult(MainActivity.this, REQUEST_CHECK_SETTINGS); } catch (IntentSender.SendIntentException e) { // Ignore the error. } 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; } } }); }
Example #7
Source File: AndroidLocationProvider.java From BLE-Indoor-Positioning with Apache License 2.0 | 5 votes |
private void setupLocationService() { Log.v(TAG, "Setting up location service"); LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder() .addLocationRequest(getLocationRequest()); SettingsClient client = LocationServices.getSettingsClient(activity); Task<LocationSettingsResponse> task = client.checkLocationSettings(builder.build()); task.addOnSuccessListener(activity, new OnSuccessListener<LocationSettingsResponse>() { @Override public void onSuccess(LocationSettingsResponse locationSettingsResponse) { Log.v(TAG, "Location settings satisfied"); } }); task.addOnFailureListener(activity, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { int statusCode = ((ApiException) e).getStatusCode(); switch (statusCode) { case CommonStatusCodes.RESOLUTION_REQUIRED: Log.w(TAG, "Location settings not satisfied, attempting resolution intent"); try { ResolvableApiException resolvable = (ResolvableApiException) e; resolvable.startResolutionForResult(activity, REQUEST_CODE_LOCATION_SETTINGS); } catch (IntentSender.SendIntentException sendIntentException) { Log.e(TAG, "Unable to start resolution intent"); } break; case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: Log.w(TAG, "Location settings not satisfied and can't be changed"); break; } } }); }
Example #8
Source File: BasePlatformCreate.java From indigenous-android with GNU General Public License v3.0 | 5 votes |
/** * Initiate location updates. */ private void initiateLocationUpdates() { // Set wrapper and coordinates visible (if it wasn't already). toggleLocationVisibilities(true); mSettingsClient .checkLocationSettings(mLocationSettingsRequest) .addOnSuccessListener(this, new OnSuccessListener<LocationSettingsResponse>() { @SuppressLint("MissingPermission") @Override public void onSuccess(LocationSettingsResponse locationSettingsResponse) { //noinspection MissingPermission mFusedLocationClient.requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.myLooper()); updateLocationUI(); } }) .addOnFailureListener(this, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { int statusCode = ((ApiException) e).getStatusCode(); switch (statusCode) { case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: try { // Show the dialog by calling startResolutionForResult(), // and check the result in onActivityResult(). ResolvableApiException rae = (ResolvableApiException) e; rae.startResolutionForResult(BasePlatformCreate.this, REQUEST_CHECK_LOCATION_SETTINGS); } catch (IntentSender.SendIntentException sie) { Toast.makeText(getApplicationContext(), getString(R.string.location_intent_error), Toast.LENGTH_SHORT).show(); } break; case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: Toast.makeText(getApplicationContext(), getString(R.string.location_settings_error), Toast.LENGTH_LONG).show(); } } }); }
Example #9
Source File: WhereAmIActivity.java From Wrox-ProfessionalAndroid-4E with Apache License 2.0 | 4 votes |
@Override protected void onStart() { super.onStart(); // Check if we have permission to access high accuracy fine location. int permission = ActivityCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION); // If permission is granted, fetch the last location. if (permission == PERMISSION_GRANTED) { getLastLocation(); } else { // If permission has not been granted, request permission. ActivityCompat.requestPermissions(this, new String[]{ACCESS_FINE_LOCATION}, LOCATION_PERMISSION_REQUEST); } // Check of the location settings are compatible with our Location Request. LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder() .addLocationRequest(mLocationRequest); SettingsClient client = LocationServices.getSettingsClient(this); Task<LocationSettingsResponse> task = client.checkLocationSettings(builder.build()); task.addOnSuccessListener(this, new OnSuccessListener<LocationSettingsResponse>() { @Override public void onSuccess(LocationSettingsResponse locationSettingsResponse) { // Location settings satisfy the requirements of the Location Request. // Request location updates. requestLocationUpdates(); } }); task.addOnFailureListener(this, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Extract the status code for the failure from within the Exception. int statusCode = ((ApiException) e).getStatusCode(); switch (statusCode) { case CommonStatusCodes.RESOLUTION_REQUIRED: try { // Display a user dialog to resolve the location settings // issue. ResolvableApiException resolvable = (ResolvableApiException) e; resolvable.startResolutionForResult(WhereAmIActivity.this, REQUEST_CHECK_SETTINGS); } catch (IntentSender.SendIntentException sendEx) { Log.e(TAG, "Location Settings resolution failed.", sendEx); } break; case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: // Location settings issues can't be resolved by user. // Request location updates anyway. Log.d(TAG, "Location Settings can't be resolved."); requestLocationUpdates(); break; } } }); }
Example #10
Source File: WhereAmIActivity.java From Wrox-ProfessionalAndroid-4E with Apache License 2.0 | 4 votes |
@Override protected void onStart() { super.onStart(); // Check if we have permission to access high accuracy fine location. int permission = ActivityCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION); // If permission is granted, fetch the last location. if (permission == PERMISSION_GRANTED) { getLastLocation(); } else { // If permission has not been granted, request permission. ActivityCompat.requestPermissions(this, new String[]{ACCESS_FINE_LOCATION}, LOCATION_PERMISSION_REQUEST); } // Check of the location settings are compatible with our Location Request. LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder() .addLocationRequest(mLocationRequest); SettingsClient client = LocationServices.getSettingsClient(this); Task<LocationSettingsResponse> task = client.checkLocationSettings(builder.build()); task.addOnSuccessListener(this, new OnSuccessListener<LocationSettingsResponse>() { @Override public void onSuccess(LocationSettingsResponse locationSettingsResponse) { // Location settings satisfy the requirements of the Location Request. // Request location updates. requestLocationUpdates(); } }); task.addOnFailureListener(this, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Extract the status code for the failure from within the Exception. int statusCode = ((ApiException) e).getStatusCode(); switch (statusCode) { case CommonStatusCodes.RESOLUTION_REQUIRED: try { // Display a user dialog to resolve the location settings // issue. ResolvableApiException resolvable = (ResolvableApiException) e; resolvable.startResolutionForResult(WhereAmIActivity.this, REQUEST_CHECK_SETTINGS); } catch (IntentSender.SendIntentException sendEx) { Log.e(TAG, "Location Settings resolution failed.", sendEx); } break; case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: // Location settings issues can't be resolved by user. // Request location updates anyway. Log.d(TAG, "Location Settings can't be resolved."); requestLocationUpdates(); break; } } }); }
Example #11
Source File: SettingsCheckHandleSingleOnSubscribe.java From RxGps with Apache License 2.0 | 4 votes |
@Override protected void onGoogleApiClientReady(GoogleApiClient apiClient, SingleEmitter<Boolean> emitter) { emitterWeakRef = new WeakReference<>(emitter); setupLocationPendingResult( LocationServices.SettingsApi.checkLocationSettings(apiClient, locationSettingsRequest), result -> { Status status = result.getStatus(); switch (status.getStatusCode()) { case LocationSettingsStatusCodes.SUCCESS: // All location settings are satisfied. The client can initialize location // requests here. emitter.onSuccess(true); break; case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: // Location settings are not satisfied. But could be fixed by showing the user // a dialog. if (context != null) { String observableId = UUID.randomUUID().toString(); observableMap.put(observableId, new WeakReference<>(SettingsCheckHandleSingleOnSubscribe.this)); Intent intent = new Intent(context, LocationSettingsActivity.class); intent.putExtra(LocationSettingsActivity.ARG_STATUS, status); intent.putExtra(LocationSettingsActivity.ARG_ID, observableId); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } else { emitter.onSuccess(false); } 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. emitter.onSuccess(false); break; default: emitter.onError(new StatusException(result)); break; } } ); }
Example #12
Source File: BaseNiboFragment.java From Nibo with MIT License | 4 votes |
/** * Requests location updates from the FusedLocationApi. Note: we don't call this unless location * runtime permission has been granted. */ private void startLocationUpdates() { // Begin by checking if the device has the necessary location settings. mSettingsClient.checkLocationSettings(mLocationSettingsRequest) .addOnSuccessListener(getAppCompatActivity(), new OnSuccessListener<LocationSettingsResponse>() { @Override public void onSuccess(LocationSettingsResponse locationSettingsResponse) { Log.i(TAG, "All location settings are satisfied."); //noinspection MissingPermission if (checkPermissions()) { mMap.setMyLocationEnabled(true); mFusedLocationClient.requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.myLooper()); } } }) .addOnFailureListener(getAppCompatActivity(), new OnFailureListener() { @Override public void onFailure(@android.support.annotation.NonNull Exception e) { int statusCode = ((ApiException) e).getStatusCode(); switch (statusCode) { case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: Log.i(TAG, "Location settings are not satisfied. Attempting to upgrade " + "location settings "); try { // Show the dialog by calling startResolutionForResult(), and check the // result in onActivityResult(). ResolvableApiException rae = (ResolvableApiException) e; rae.startResolutionForResult(getActivity(), REQUEST_CHECK_SETTINGS); } catch (IntentSender.SendIntentException sie) { Log.i(TAG, "PendingIntent unable to execute request."); } break; case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: String errorMessage = "Location settings are inadequate, and cannot be " + "fixed here. Fix in Settings."; Log.e(TAG, errorMessage); displayError(errorMessage); } } }); }
Example #13
Source File: WhereAmIActivity.java From Wrox-ProfessionalAndroid-4E with Apache License 2.0 | 4 votes |
@Override protected void onStart() { super.onStart(); // Check if we have permission to access high accuracy fine location. int permission = ActivityCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION); // If permission is granted, fetch the last location. if (permission == PERMISSION_GRANTED) { getLastLocation(); } else { // If permission has not been granted, request permission. ActivityCompat.requestPermissions(this, new String[]{ACCESS_FINE_LOCATION}, LOCATION_PERMISSION_REQUEST); } // Check of the location settings are compatible with our Location Request. LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder() .addLocationRequest(mLocationRequest); SettingsClient client = LocationServices.getSettingsClient(this); Task<LocationSettingsResponse> task = client.checkLocationSettings(builder.build()); task.addOnSuccessListener(this, new OnSuccessListener<LocationSettingsResponse>() { @Override public void onSuccess(LocationSettingsResponse locationSettingsResponse) { // Location settings satisfy the requirements of the Location Request. // Request location updates. requestLocationUpdates(); } }); task.addOnFailureListener(this, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Extract the status code for the failure from within the Exception. int statusCode = ((ApiException) e).getStatusCode(); switch (statusCode) { case CommonStatusCodes.RESOLUTION_REQUIRED: try { // Display a user dialog to resolve the location settings // issue. ResolvableApiException resolvable = (ResolvableApiException) e; resolvable.startResolutionForResult(WhereAmIActivity.this, REQUEST_CHECK_SETTINGS); } catch (IntentSender.SendIntentException sendEx) { Log.e(TAG, "Location Settings resolution failed.", sendEx); } break; case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: // Location settings issues can't be resolved by user. // Request location updates anyway. Log.d(TAG, "Location Settings can't be resolved."); requestLocationUpdates(); break; } } }); }
Example #14
Source File: LocationAvailableAsyncEmitter.java From Forage with Mozilla Public License 2.0 | 4 votes |
@Override public void call(AsyncEmitter<Void> locationAsyncEmitter) { GoogleApiClient.OnConnectionFailedListener onConnectionFailedListener = connectionResult -> locationAsyncEmitter.onError(new LocationUnavailableException("Failed to connect to Google Play Services!")); ResultCallback<LocationSettingsResult> pendingResultCallback = locationSettingsResult -> { Status status = locationSettingsResult.getStatus(); if (status.getStatusCode() == LocationSettingsStatusCodes.SUCCESS) { locationAsyncEmitter.onCompleted(); } else { locationAsyncEmitter.onError(new LocationUnavailableException("Location services not enabled!")); } }; GoogleApiClient.ConnectionCallbacks connectionCallbacks = new GoogleApiClient.ConnectionCallbacks() { @Override public void onConnected(@Nullable Bundle bundle) { try { LocationRequest request = LocationRequest.create() .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder() .addLocationRequest(request) .setAlwaysShow(true); PendingResult<LocationSettingsResult> result = LocationServices.SettingsApi.checkLocationSettings(googleApiClient, builder.build()); result.setResultCallback(pendingResultCallback); } catch (SecurityException e) { locationAsyncEmitter.onError(new LocationUnavailableException("Location permission not available?")); } } @Override public void onConnectionSuspended(int i) { locationAsyncEmitter.onError(new LocationUnavailableException("Connection lost to Google Play Services")); } }; googleApiClient.registerConnectionCallbacks(connectionCallbacks); googleApiClient.registerConnectionFailedListener(onConnectionFailedListener); googleApiClient.connect(); locationAsyncEmitter.setCancellation(() -> { googleApiClient.unregisterConnectionCallbacks(connectionCallbacks); googleApiClient.unregisterConnectionFailedListener(onConnectionFailedListener); }); }
Example #15
Source File: SamLocationRequestService.java From SamLocationAndGeocoding with MIT License | 4 votes |
private void setGoogleClient(){ mLocationRequest = LocationRequest.create(); mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); mLocationRequest.setInterval(30 * 1000); mLocationRequest.setFastestInterval(5 * 1000); LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder() .addLocationRequest(mLocationRequest); //************************** builder.setAlwaysShow(true); //this is the key ingredient //************************** Task<LocationSettingsResponse> result = LocationServices.getSettingsClient(context).checkLocationSettings( builder.build()); result.addOnFailureListener((Activity) context, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { int statusCode = ((ApiException) e).getStatusCode(); if (statusCode == LocationSettingsStatusCodes .RESOLUTION_REQUIRED) { // Location settings are not satisfied, but this can // be fixed by showing the user a dialog try { // Show the dialog by calling // startResolutionForResult(), and check the // result in onActivityResult() ResolvableApiException resolvable = (ResolvableApiException) e; resolvable.startResolutionForResult ((Activity) context, REQUEST_CODE); } catch (IntentSender.SendIntentException sendEx) { // Ignore the error } } } }); result.addOnSuccessListener((Activity) context, new OnSuccessListener<LocationSettingsResponse>() { @Override public void onSuccess(LocationSettingsResponse locationSettingsResponse) { startLocationUpdates(); } }); }
Example #16
Source File: LocationActivity.java From Wrox-ProfessionalAndroid-4E with Apache License 2.0 | 4 votes |
private void listing15_10_11_12() { LocationRequest request = new LocationRequest() .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY) .setInterval(5000); // Update every 5 seconds. // Listing 15-10: Check if the current Location Settings satisfy your requirements // Get the settings client. SettingsClient client = LocationServices.getSettingsClient(this); // Create a new Location Settings Request, adding our Location Requests LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder().addLocationRequest(request); // Check if the Location Settings satisfy our requirements. Task<LocationSettingsResponse> task = client.checkLocationSettings(builder.build()); // Listing 15-11: Create a handler for when Location Settings satisfy your requirements task.addOnSuccessListener(this, new OnSuccessListener<LocationSettingsResponse>() { @Override public void onSuccess(LocationSettingsResponse locationSettingsResponse) { // Location settings satisfy the requirements of the Location Request startTrackingLocation(); } }); // Listing 15-12: Request user changes to location settings task.addOnFailureListener(this, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Extract the status code for the failure from within the Exception. int statusCode = ((ApiException) e).getStatusCode(); switch (statusCode) { case CommonStatusCodes.RESOLUTION_REQUIRED: // Location settings don't satisfy the requirements of the // Location Request, but they could be resolved through user // selection within a Dialog. try { // Display a user dialog to resolve the location settings issue. ResolvableApiException resolvable = (ResolvableApiException) e; resolvable.startResolutionForResult(LocationActivity.this, REQUEST_CHECK_SETTINGS); } catch (IntentSender.SendIntentException sendEx) { Log.e(TAG, "Location Settings resolution failed.", sendEx); } break; case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: // Location settings don't satisfy the requirements of the // Location Request, however it can't be resolved with a user // dialog. // TODO Start monitoring location updates anyway, or abort. break; default: break; } } }); }
Example #17
Source File: WhereAmIActivity.java From Wrox-ProfessionalAndroid-4E with Apache License 2.0 | 4 votes |
@Override protected void onStart() { super.onStart(); // Check if we have permission to access high accuracy fine location. int permission = ActivityCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION); // If permission is granted, fetch the last location. if (permission == PERMISSION_GRANTED) { getLastLocation(); } else { // If permission has not been granted, request permission. ActivityCompat.requestPermissions(this, new String[]{ACCESS_FINE_LOCATION}, LOCATION_PERMISSION_REQUEST); } // Check of the location settings are compatible with our Location Request. LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder() .addLocationRequest(mLocationRequest); SettingsClient client = LocationServices.getSettingsClient(this); Task<LocationSettingsResponse> task = client.checkLocationSettings(builder.build()); task.addOnSuccessListener(this, new OnSuccessListener<LocationSettingsResponse>() { @Override public void onSuccess(LocationSettingsResponse locationSettingsResponse) { // Location settings satisfy the requirements of the Location Request. // Request location updates. requestLocationUpdates(); } }); task.addOnFailureListener(this, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Extract the status code for the failure from within the Exception. int statusCode = ((ApiException) e).getStatusCode(); switch (statusCode) { case CommonStatusCodes.RESOLUTION_REQUIRED: try { // Display a user dialog to resolve the location settings // issue. ResolvableApiException resolvable = (ResolvableApiException) e; resolvable.startResolutionForResult(WhereAmIActivity.this, REQUEST_CHECK_SETTINGS); } catch (IntentSender.SendIntentException sendEx) { Log.e(TAG, "Location Settings resolution failed.", sendEx); } break; case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: // Location settings issues can't be resolved by user. // Request location updates anyway. Log.d(TAG, "Location Settings can't be resolved."); requestLocationUpdates(); break; } } }); }
Example #18
Source File: LocationGetLocationActivity.java From coursera-android with MIT License | 4 votes |
private void continueAcquiringLocations() { // Start location services mLocationRequest = new LocationRequest(); mLocationRequest.setInterval(POLLING_FREQ); mLocationRequest.setFastestInterval(FASTEST_UPDATE_FREQ); mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder() .addLocationRequest(mLocationRequest); // Used if needed to turn on settings related to location services SettingsClient client = LocationServices.getSettingsClient(this); Task<LocationSettingsResponse> task = client.checkLocationSettings(builder.build()); task.addOnSuccessListener(this, new OnSuccessListener<LocationSettingsResponse>() { @Override public void onSuccess(LocationSettingsResponse locationSettingsResponse) { // All location settings are satisfied. The client can initialize location requests here. if (checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { mLocationCallback = getLocationCallback(); mLocationClient.requestLocationUpdates(mLocationRequest, mLocationCallback, null); // Schedule a runnable to stop location updates after a period of time Executors.newScheduledThreadPool(1).schedule(new Runnable() { @Override public void run() { mLocationClient.removeLocationUpdates(mLocationCallback); } }, MEASURE_TIME, TimeUnit.MILLISECONDS); } } }); task.addOnFailureListener(this, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { int statusCode = ((ApiException) e).getStatusCode(); switch (statusCode) { case CommonStatusCodes.RESOLUTION_REQUIRED: // Location settings are not satisfied, but this can be fixed // by showing the user a dialog. try { // Show the dialog by calling startResolutionForResult(), // and check the result in onActivityResult(). ResolvableApiException resolvable = (ResolvableApiException) e; resolvable.startResolutionForResult(LocationGetLocationActivity.this, REQUEST_CHECK_SETTINGS); } catch (IntentSender.SendIntentException sendEx) { // Ignore the error. } 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; } } }); }
Example #19
Source File: MainActivity.java From location-samples with Apache License 2.0 | 4 votes |
/** * Requests location updates from the FusedLocationApi. Note: we don't call this unless location * runtime permission has been granted. */ private void startLocationUpdates() { // Begin by checking if the device has the necessary location settings. mSettingsClient.checkLocationSettings(mLocationSettingsRequest) .addOnSuccessListener(this, new OnSuccessListener<LocationSettingsResponse>() { @Override public void onSuccess(LocationSettingsResponse locationSettingsResponse) { Log.i(TAG, "All location settings are satisfied."); //noinspection MissingPermission mFusedLocationClient.requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.myLooper()); updateUI(); } }) .addOnFailureListener(this, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { int statusCode = ((ApiException) e).getStatusCode(); switch (statusCode) { case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: Log.i(TAG, "Location settings are not satisfied. Attempting to upgrade " + "location settings "); try { // Show the dialog by calling startResolutionForResult(), and check the // result in onActivityResult(). ResolvableApiException rae = (ResolvableApiException) e; rae.startResolutionForResult(MainActivity.this, REQUEST_CHECK_SETTINGS); } catch (IntentSender.SendIntentException sie) { Log.i(TAG, "PendingIntent unable to execute request."); } break; case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: String errorMessage = "Location settings are inadequate, and cannot be " + "fixed here. Fix in Settings."; Log.e(TAG, errorMessage); Toast.makeText(MainActivity.this, errorMessage, Toast.LENGTH_LONG).show(); mRequestingLocationUpdates = false; } updateUI(); } }); }