¿Por qué Android LocationManager tiene un gran retraso antes de que las actualizaciones de ubicación se inicien si la precisión del ajuste

Si establezco cualquier PRECISIÓN en los criterios, tarda mucho tiempo en LocationManager para iniciar la actualización de la ubicación:

Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); provider = locationManager.getBestProvider(criteria, true); locationManager.requestLocationUpdates(provider, 0, 0, this); 

Si quito el indicador PRECISIÓN, comienza inmediatamente pero a veces no es exacto.

¿Cómo puedo empezar a actualizar de inmediato y con buena precisión?

Por desgracia, de ninguna manera.

Si utiliza ACCURACY_FINE , utilizará sólo GPS, pero GPS tendrá efecto de "arranque en frío". Esto significa que si el dispositivo no utiliza GPS mucho tiempo, necesita mucho tiempo para conectarse con los satélites y descargar almanaque y efemérides. No puede cambiar este comportamiento.

Si no utiliza ACCURACY_FINE , utilizará señales GPS y de red (móvil, wi-fi). Así que recibirá la primera posición rápida de la red, ya que no tienen efecto de "arranque en frío", pero la precisión de este método es baja. Cuando el módulo GPS esté listo, comenzará a recibir actualizaciones de él también.

Si sólo te interesa la precisión y no las cosas como el rumbo o la altitud, te sugiero que cambies al nuevo proveedor fusionado en la API de LocationClient de Google .

Es muy rápido para obtener el primer arreglo, más preciso que basado en red y no depende de GPS.

Se requiere un poco más de configuración a continuación, el LocationManager incorporado, por lo que puede leer este artículo de formación: http://developer.android.com/training/location/receive-location-updates.html

Sospecho que al menos con ACCURACY_FINE , está a la espera de obtener una solución GPS inicial. Usted puede encontrar que si usted ya tiene GPS activado por otra razón (por ejemplo, si está en medio de la navegación) que comienza a informar inmediatamente.

Puede tomar un tiempo para obtener una solución GPS – creo que es sólo una parte natural de cómo funciona el GPS.

LocationManager es buggy en muchos teléfonos, ya que depende en gran medida del código de código abierto Android personalizado para hardware específico. Los teléfonos Samsung son muy difíciles cuando se trata de LocationManager .

No debes usar requestLocationUpdates , en lugar de usar getLastKnownLocation con un hack pequeño. Justo antes de la llamada getLastKnownLocation poner el siguiente hack y debe ser capaz de utilizar un AlarmManager para obtener actualizaciones periódicas.

 HomeScreen.getLocationManager().requestLocationUpdates( LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } @Override public void onLocationChanged(final Location location) { } }); 

LocationClient es la otra alternativa a LocationManager . Es más preciso, usa un hola mucho menos batería.

  • Marcadores de clúster superpuestos por el icono de ubicación actual del usuario en Android
  • Android Maps error "No se pudo encontrar la clase 'android.app.AppOpsManager'"
  • MapFragment devuelve null
  • MapView sin ampliar MapActivity
  • Acercar a los marcadores google map V2
  • Importar la biblioteca google-play-service mostrando una X roja junto a esta referencia android
  • ¿Cómo puedo agregar un botón a la ventana de información de un marcador?
  • MoveCamera y animateCamera no funcionan la segunda vez
  • Usar la API de Google Maps de Google para mostrar una capa de Mapa de Calor
  • Obtención de latitud y longitud de latlng objeto en android
  • Ocultar infoWindow cuando se hace clic en el marcador por segunda vez (Google Map Android API V2)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.