Servicios de ubicación de Google contra servicios de ubicación de Android

Como sabemos, tenemos dos alternativas para hacer que nuestra ubicación de aplicación sea correcta. Utilizamos la API de servicios de ubicación de Google (parte de los servicios de Google Play) o utilizamos la API de ubicación de Androids.

El problema que tengo aquí es que usando los servicios de Google, tenemos que usar la interfaz com.google.android.gms.location.LocationListener que nos proporciona actualizaciones de ubicación. Sin embargo, a diferencia del android.location.LocationListener, la versión de google no nos proporciona el estado del proveedor de ubicación (gps o internet).

Tenemos los siguientes métodos en el Androids Location Listener

abstract void onLocationChanged(Location location) Called when the location has changed. abstract void onProviderDisabled(String provider) Called when the provider is disabled by the user. abstract void onProviderEnabled(String provider) Called when the provider is enabled by the user. abstract void onStatusChanged(String provider, int status, Bundle extras) Called when the provider status changes 

.

Sin embargo, en google sólo tenemos una

 abstract void onLocationChanged(Location location) 

¿Cómo identificaría los cambios en el proveedor si utilizo los servicios de google? . Por ejemplo, en medio del uso de la aplicación, el usuario decide apagar el GPS, quería mostrar un brindis en este evento.

Estoy en la oscuridad cómo debo lograr eso.

Registra un receptor para manejar la acción Providers_changed.

 private static final String ACTION_GPS = "android.location.PROVIDERS_CHANGED"; private BroadcastReceiver yourReceiver; private void checkGPS() { Context context = this.getApplicationContext(); if (context != null) { Button btnGPS = (Button) findViewById(R.id.btnGPS); if (btnGPS != null) { LocationManager locationManager = (LocationManager) context .getSystemService(Context.LOCATION_SERVICE); boolean b = locationManager .isProviderEnabled(LocationManager.GPS_PROVIDER); locationManager = null; if (b) { if (btnGPS.getVisibility() != View.GONE) { btnGPS.setVisibility(View.GONE); } } else { if (btnGPS.getVisibility() != View.VISIBLE) { btnGPS.setVisibility(View.VISIBLE); } } } } } private void registerReceiverGPS() { if (yourReceiver == null) { // INTENT FILTER FOR GPS MONITORING final IntentFilter theFilter = new IntentFilter(); theFilter.addAction(ACTION_GPS); yourReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent != null) { String s = intent.getAction(); if (s != null) { if (s.equals(ACTION_GPS)) { checkGPS(); } } } } }; registerReceiver(yourReceiver, theFilter); } } @Override public void onResume() { super.onResume(); checkGPS(); registerReceiverGPS(); @Override public void onStop() { super.onStop(); // Do not forget to unregister the receiver!!! if (yourReceiver != null) { unregisterReceiver(yourReceiver); yourReceiver = null; } 

La versión de google 'doesnt' nos proporciona el estado del proveedor de ubicación (gps o internet)

En parte, esto se debe a que no está usando ningún proveedor de ubicación único.

¿Cómo identificaría los cambios en el proveedor si utilizo los servicios de google?

Puede probar escuchar las transmisiones de PROVIDERS_CHANGED_ACTION .

  • Samsung Nota 2 no puede llegar onLocationChanged ()
  • Cambiar el modo de ubicación a alta precisión mediante programación Android
  • Obtenga la ubicación (coordenadas) periódicamente sin aumentar drásticamente el consumo de la batería
  • Android - ¿Cómo obtener el tiempo estimado de conducción de un lugar a otro?
  • ¿Es Fused Location Provider buena opción?
  • Cómo superar la adquisición de señales GPS
  • Comparando dos ubicaciones usando sus longitudes y latitud
  • Servicios de ubicación de Android que drenan la batería - Fused Location API
  • NullpointerException al llamar a getSystemService (Context.LOCATION_SERVICE) y onLocationChanged no se llama
  • Android, Solicitud de ubicación, establecer la duración de caducidad no funciona
  • Geocoder devuelve una dirección con longitud cero
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.