Android: escuchar * pasivamente * a las actualizaciones de ubicación de gps

Lo que quiero hacer es lo siguiente: un servicio que escucha continuamente las actualizaciones de ubicación de gps (sí: JUST gps) sin solicitarlas activamente, es decir, esta aplicación no debería consumir recursos adicionales en términos de duración de la batería ni tiempo de CPU, hasta que otras aplicaciones Solicitar / recibir actualizaciones de ubicación de GPS. ENTONCES mi aplicación debería ejecutar alguna funcionalidad. Después de esto, debe volver a "dormir", a la espera de la posición de gps siguiente fijar a ser solicitado por alguna otra aplicación …

Ya he leído este artículo http://android-developers.blogspot.de/2011/06/deep-dive-into-location.html pero esto parece tener un enfoque diferente. En realidad, estoy abit perdido aquí … ¿cómo se puede utilizar este proveedor de ubicación pasiva exactamente? No puedo conseguir que esto funcione 🙁

Mi código hasta ahora: tengo este servicio (remoto) que registra el oyente de la localización:

public class MyService extends Service { LocationManager locationManager; @Override public IBinder onBind(Intent intent) { return serviceBinder; } private final IMyService.Stub serviceBinder = new IMyService.Stub() {}; @Override public void onCreate() { super.onCreate(); Log.d(Config.LOGTAG, "service started"); locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); locationManager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, 0, 0, new GPSLocationListener()); } @Override public void onDestroy() { super.onDestroy(); Log.d(Config.LOGTAG, "service destroyed"); } public class GPSLocationListener implements LocationListener { @Override public void onLocationChanged(Location location) { Toast.makeText(getBaseContext(), "GPS FIX RECEIVED: " + location.getLongitude() + " : " + location.getLatitude(), Toast.LENGTH_LONG).show(); Log.d(Config.LOGTAG, "GPS FIX RECEIVED: " + location.getLongitude() + " : " + location.getLatitude()); } @Override public void onProviderDisabled(String arg0) { Log.d(Config.LOGTAG, ":("); } @Override public void onProviderEnabled(String arg0) { Log.d(Config.LOGTAG, ":)"); } @Override public void onStatusChanged(String arg0, int arg1, Bundle arg2) { Log.d(Config.LOGTAG, ":/"); } } } 

Por desgracia, esto no funciona en absoluto 🙁 el servicio se inicia de acuerdo con los registros, pero cuando por ejemplo, abrir google maps con gps habilitado y obtener una posición de fijar allí, el oyente de la ubicación no es "notificado" (es decir, no registra nada )

Cómo hacerlo bien?

Quisiera saber si no funciona porque no se reciben ubicaciones pasivas o el código no funciona. Así que lo primero que haría es empezar a escuchar para la red y las ubicaciones GPS (para la prueba) y asegurarse de que llegan. Si lo hacen, entonces eso sugiere que Google Maps está utilizando una ubicación en caché y no está instigando una emisión de ubicación pasiva.

Si no obtiene ninguna ubicación, debe comprobar su código y hacerlo funcionar con GPS / red, antes de pasar a ubicaciones pasivas.

Oye, creo que necesitas los valores actualizados de longitud y latitud.

Siga este enlace .. Haga clic aquí

Ya lo probé y probarlo en el teléfono móvil Android. Su funcionamiento.

Nota: Debe y debe probar en el teléfono móvil android con el estado de GPS. No se mostrará en el emulador de eclipse. Pero se mostrará en el teléfono móvil intentarlo ..

tener un buen.

  • Servicio no disponible en geoCoder
  • No se puede obtener la cuenta de satélite Android
  • Android getLatitude () devuelve latitud geodésica o geocéntrica?
  • Android: el proceso ha muerto
  • Algoritmo de trilateración multipunto en Java
  • Redirigir a la configuración de ubicación utilizando cordova en android
  • Android GPS obtener la ubicación actual
  • Android Fake GPS aplicaciones de ubicación ya no funcionan
  • Comprobación de si el GPS está habilitado en android
  • ¿Cómo puedo obtener la ubicación GPS actual?
  • Cómo calcular la distancia de diferentes marcadores en un mapa y luego recoger el menos uno
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.