El punto de entrada principal para interactuar con las API de habilitación de configuración de ubicación.
Esta API facilita que una aplicación se asegure de que la configuración del sistema del dispositivo esté configurada correctamente para las necesidades de ubicación de la aplicación.
Al realizar una solicitud a los servicios de ubicación, la configuración del sistema del dispositivo puede estar en un estado que impide que una aplicación obtenga los datos de ubicación que necesita. Por ejemplo, el escaneo GPS o Wi-Fi puede estar desactivado. Esta intención hace que sea fácil:
- ¿Existe una aplicación móvil de Twitter que te permita programar tuits?
- ¿Cuál es la mejor aplicación de texto a voz para Android?
- ¿Debo volver a los libros de Java y estudiarlos o continuar creando malas aplicaciones?
- ¿Qué es el APUS?
- ¿Cómo obtengo alertas de emergencia en Android?
- Determine si las configuraciones relevantes del sistema están habilitadas en el dispositivo para llevar a cabo la solicitud de ubicación deseada.
- Opcionalmente, invoque un cuadro de diálogo que permita al usuario habilitar la configuración de ubicación necesaria con un solo toque.
Para usar esta API, primero cree un GoogleApiClient que admita al menos LocationServices.API. Luego, conecta el cliente a los servicios de Google Play:
mGoogleApiClient = nuevo GoogleApiClient.Builder (contexto)
.addApi (LocationServices.API)
.addConnectionCallbacks (esto)
.addOnConnectionFailedListener (esto)
.construir()
…
mGoogleApiClient.connect ();
Luego cree un LocationSettingsRequest.Builder y agregue todas las LocationRequests que la aplicación usará:
LocationSettingsRequest.Builder builder = nuevo LocationSettingsRequest.Builder ()
.addLocationRequest (mLocationRequestHighAccuracy)
.addLocationRequest (mLocationRequestBalancedPowerAccuracy);
Si el cliente está usando escaneos BLE para derivar la ubicación, puede solicitar que se habilite BLE llamando a setNeedBle (boolean):
builder.setNeedBle (verdadero);
Luego verifique si la configuración de ubicación actual se cumple:
PendingResult result =
LocationServices.SettingsApi.checkLocationSettings (mGoogleClient, builder.build ());
Cuando PendingResult regresa, el cliente puede verificar la configuración de ubicación mirando el código de estado del objeto LocationSettingsResult. El cliente también puede recuperar el estado actual de la configuración de ubicación relevante llamando a getLocationSettingsStates ():
result.setResultCallback (nuevo ResultCallback () {
@Anular
public void onResult (resultado de LocationSettingsResult) {
estado final status = result.getStatus ();
final LocationSettingsStates = result.getLocationSettingsStates ();
switch (status.getStatusCode ()) {
case LocationSettingsStatusCodes.SUCCESS:
// Se cumplen todas las configuraciones de ubicación. El cliente puede inicializar la ubicación.
// solicita aquí.
…
descanso;
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
// La configuración de ubicación no está satisfecha. Pero podría solucionarse mostrando al usuario
// un diálogo.
tratar {
// Muestra el diálogo llamando a startResolutionForResult (),
// y verifica el resultado en onActivityResult ().
status.startResolutionForResult (
OuterClass.this,
REQUEST_CHECK_SETTINGS);
} catch (SendIntentException e) {
// Ignora el error.
}
descanso;
case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
// La configuración de ubicación no está satisfecha. Sin embargo, no tenemos forma de arreglar el
// configuración por lo que no mostraremos el diálogo.
…
descanso;
}
}
});
Si el código de estado es RESOLUTION_REQUIRED, el cliente puede llamar a startResolutionForResult (Activity, int) para que aparezca un cuadro de diálogo, solicitando permiso del usuario para modificar la configuración de ubicación para satisfacer esas solicitudes. El resultado del diálogo se devolverá a través de onActivityResult (int, int, Intent). Si el cliente está interesado en qué proveedores de ubicación están disponibles, puede recuperar un LocationSettingsStates del Intent llamando al Intent (Intent):
@Anular
void protegido en OnActivityResult (int requestCode, int resultCode, Intent data) {
estados finales de LocationSettingsStates = LocationSettingsStates.fromIntent (intento);
switch (requestCode) {
caso REQUEST_CHECK_SETTINGS:
switch (resultCode) {
Caso Actividad.RESULT_OK:
// Todos los cambios requeridos se realizaron con éxito
…
descanso;
Case Activity.RESULT_CANCELED:
// Se le pidió al usuario que cambiara la configuración, pero decidió no hacerlo
…
descanso;
defecto:
descanso;
}
descanso;
}
}
Resumen de método público
abstract PendingResult
checkLocationSettings (cliente GoogleApiClient, LocationSettingsRequestlocationSettingsRequest)
Fuente: SettingsApi | API de Google para Android
El | Desarrolladores de Google