¿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.
- SetRadius en Circle da mala experiencia de usuario en Google Maps
- Error de compilación en Android Studio Al realizar un simple proyecto Google API de Google Maps API v2
- Problema de exactitud de Google maps
- ¿Cómo abrir la aplicación estándar de Google Map desde mi aplicación?
- GetSupportFragmentManager (). FindFragmentById (R.id.map) comenzó a devolver null
¿Cómo puedo empezar a actualizar de inmediato y con buena precisión?
- ¿Cómo pueden las aplicaciones usar Google Offline Maps de Android 4+?
- El método de instantánea de GoogleMap devuelve una imagen blanca
- ¿Cómo obtener detalles del hospital con la especialización usando google map para android?
- SHA-1 huella dactilar del certificado keystore
- Actividad de Map de Android se bloquea al salir Actividad
- Calcular la distancia real recorrida por el móvil
- Google google maps agrega al marcador propia etiqueta
- Importar google-play-service dependencia cruz roja
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.