2011-01-04 23 views
21

Implementé un oyente de ubicación en mi aplicación que utiliza el proveedor de red.Usar el proveedor de red y GPS al mismo tiempo en Android

Todo esto funciona bien porque quiero una ubicación de forma rápida y con el proveedor de GPS lleva años.

Pero llegué a un punto en mi aplicación donde la ubicación debe ser precisa (máximo 5-10 metros).

Me preguntaba si es posible utilizar el proveedor de GPS con el proveedor de red al mismo tiempo y luego obtener el mejor resultado de ambos? ¿Y también es posible avisarme cuando el proveedor de GPS me proporcionó una ubicación GPS?

Así que, básicamente:

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); 
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 

¿Este trabajo con el mismo onLocationChanged() sustituido?

¿Y cómo puedo ver si el GPS ha obtenido una ubicación?

Gracias,

Respuesta

27

que sin duda puede utilizar la misma escucha de varios proveedores. Puede ser mejor usar locationmanager.getProviders con un objeto Criteria luego ordenar por precisión o simplemente escucharlos todos. Sin embargo, no hay mucha diferencia práctica.

La devolución de llamada onLocationChanged le ofrece un objeto Location, que tiene un método getProvider() que puede usar para determinar de dónde viene. También tiene un método getAccuracy(), por lo que también puede ordenar las correcciones recientes por precisión.

+0

tnx para su respuesta! – Galip

2

Idealmente, si no está preocupado por el uso de la batería, entonces está perfectamente bien usar ambos proveedores. Como explicó Daren, puedes filtrar las coordenadas usando getProvider() y getAccuracy().

http://blog.shinetech.com/2011/10/14/a-good-look-at-android-location-data/

+0

Agregar esto como un comentario de la respuesta de Daren sería más claro – etienne

+2

Esto realmente debería haber sido un comentario agregado a la respuesta de Daren. –

Cuestiones relacionadas