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.
- Android GPS Localización Velocidad no fiable
- Android: envía los datos de la ubicación en segundo plano periódicamente (cada 30 segundos) y solicita al servidor nuevos datos
- Presentación GPS en interiores
- ¿Existe una alternativa al Cliente de ubicación (API de Google Play)?
- LocationManager requestLocationUpdates no funciona
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 …
- OnPause para detener LocationManager
- ¿Por qué no se llama al método onProviderEnabled () de Android?
- Obtener la ubicación actual durante el lanzamiento de la aplicación
- Calibración GPS androide
- Permisos del administrador de ubicaciones de Android que se utilizarán
- Forzar la alerta de proximidad para usar Proveedor de red
- Android didUpdateHeading (gerente de locación)?
- La llamada requiere permisos que pueden ser rechazados por el usuario.
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).
- Error del emulador de Android -ddmlib error
- NSString: sizeWithFont: forWidth: lineBreakMode Android equivalente