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 🙁
- Obtener la distancia más corta desde un punto
- LocationClient no se puede resolver con un tipo
- Android GPS activado o desactivado
- Recuperación de # de satélites utilizados en la reparación de gps de Android
- Cómo anular el registro de escuchas y detener el servicio desde dentro de broadcastreceiver
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?
- Acceso al texto de dirección de giro a giro desde la navegación de google
- Número GPS de satélites y filtrado de ubicaciones
- Cómo habilitar GPS en Eclipse Emulator para Android
- Arquitectura de aplicaciones basadas en gps con permiso de ejecución
- Cómo mantener la aplicación en ejecución en segundo plano? Seguir recogiendo datos?
- GPS VS acelerómetro para calcular la distancia
- ¿Qué es GPS, AGPS, LBS en android?
- Filtro de Kalman para el androide del GPS
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.
- Escuchar cualquier cambio en un cursor en android
- ¿Cómo obtengo el nombre de una clase de servicio en Android?