La búsqueda de ubicación GPS nunca se detiene en ICS

Intento realizar una detección de ubicación en dos pasos con mi LocationListener . Funciona como se esperaba en cada versión de Android como se esperaba. Sólo en ICS no puedo detener la detección de ubicación GPS.

 // inner class inside my PoiActivity private class CustomLocationListener implements LocationListener { String currentProvider = LocationManager.NETWORK_PROVIDER; @Override public void onLocationChanged(Location location) { if (location != null) { if (currentProvider.equals(LocationManager.NETWORK_PROVIDER)) { System.out.println(this); mLastKnownLocation = location; mHandler.sendEmptyMessage(0); mLocationManager.removeUpdates(this); Log.i("CustomLocationListener", "Got a rough location, removing the network listener "); Toast.makeText(PoiActivity.this, "Network found and removed", Toast.LENGTH_LONG).show(); mLocationManager .requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, Constants.LOCATION_MAX_ACCURACY, this); currentProvider = LocationManager.GPS_PROVIDER; } else if (location.getAccuracy() < Constants.LOCATION_MAX_ACCURACY && currentProvider.equals(LocationManager.GPS_PROVIDER)) { System.out.println(this); mLastKnownLocation = location; mHandler.sendEmptyMessage(0); mLocationManager.removeUpdates(this); Log.i("CustomLocationListener", "Got a rough location, removing the gps listener "); Toast.makeText(PoiActivity.this, "GPS found and removed", Toast.LENGTH_LONG).show(); } } } @Override public void onProviderDisabled(String provider) {} @Override public void onProviderEnabled(String provider) {} @Override public void onStatusChanged(String provider, int status, Bundle extras) {} } 

En base a la información de Toast y LogCat, se eliminan los oyentes y en todas las versiones excepto ICS veo que el icono de GPS desaparece. En ICS el icono reaparece después de un par de segundos, pero nunca conseguí los brindis más de una vez, por lo que mi oyente se eliminó correctamente.

Matar la aplicación con un administrador de tareas o mediante la información de la aplicación no detiene el icono de GPS para que aparezca una y otra vez.

Supongo que es un problema específico de ICS, pero no puedo encontrar un informe de fallo para eso o descripciones de problemas similares.

¿Alguien tiene una solución? Porque no quiero que el usuario tenga la sensación de que tirar varias veces y consumir batería sin ningún beneficio …

He visto varias fuentes (ninguna de ellas definitiva) que indican que el estado del icono puede no reflejar el estado del chip de GPS. Con el fin de averiguar si el GPS está funcionando en realidad podría escribir una aplicación de prueba que sólo utiliza un PASSIVE_PROVIDER y dispara un Toast o envía la ubicación a un cuadro de texto en la ubicación cambió si la fuente es el GPS.

Aunque el ícono de mi teléfono parece comportarse, he escrito una prueba de "aplicación sucia" que sólo elimina las actualizaciones de ubicación en onDestroy no en onPause. Así que cuando empiezo esta aplicación y presionar 'casa' va al fondo pero deja el GPS encendido. Si luego ejecuto la aplicación de proveedor pasivo, esto recoge las actualizaciones de ubicación.

Usted podría hacer algo similar para poner su mente en reposo, (o de otra manera).

  • SetTestProviderLocation () no activa la llamada de onLocationChanged ()
  • OnLocationChanged no se llama automáticamente
  • Alarma de proximidad disparando dos veces después de retirar y volver a agregar
  • Ubicación de Android getBearing () devuelve siempre 0
  • Asistencia de inyección de datos en GPS
  • ¿Debo usar android LocationManager.getBestProvider cada vez que solicito actualizaciones de ubicación?
  • ¿Por qué locationmanager devuelve viejas correcciones de ubicación con new gettime-timestamp?
  • Obtenga la ubicación (coordenadas) periódicamente sin aumentar drásticamente el consumo de la batería
  • android LocationManager.requestLocationUpdates con minTime> 0 no funciona como se esperaba
  • La devolución de llamada OnLocationChanged nunca se llama
  • LocationManager.isProviderEnabled (LocationManager.NETWORK_PROVIDER) no es fiable, ¿por qué?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.