Android obtener la ubicación del mejor proveedor disponible
Tengo este código para obtener el mejor proveedor disponible
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locationListener = new MyLocationListener(); Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); String provider = lm.getBestProvider(criteria, true); Location mostRecentLocation = lm.getLastKnownLocation(provider); if(mostRecentLocation != null) { latid=mostRecentLocation.getLatitude(); longid=mostRecentLocation.getLongitude(); } lm.requestLocationUpdates(provider, 1, 0, locationListener);
Y luego el oyente
- La mejor manera de obtener la ubicación del GPS del usuario en segundo plano en Android
- ¿Cómo puedo detener al usuario durante mucho tiempo para obtener una corrección de ubicación?
- El acceso al GPS no funciona. La aplicación utiliza la red para obtener ubicación
- Actualizaciones de ubicación que no funcionan en interiores como lo reclaman las API del proveedor de ubicaciones de Fusion
- Alternativa a FusedLocationProviderApi
private class MyLocationListener implements LocationListener { @Override public void onLocationChanged(Location loc) { if (loc != null) { latid = loc.getLatitude(); longid = loc.getLongitude(); // if(loc.hasAccuracy()==true){ accuracyd = loc.getAccuracy(); String providershown = loc.getProvider(); accuracy.setText("Location Acquired. Accuracy:" + Double.toString(accuracyd) + "m\nProvider: "+providershown); accuracy.setBackgroundColor(Color.GREEN); // } userinfo=usernamevalue+"&"+Double.toString(latid)+"&"+Double.toString(longid); submituserlocation(userinfo); } }
Cuando lo probé a un dispositivo (htc magic) me enteré de que cuando el gps está desactivado se bloquea de la red de inmediato. Cuando habilito el gps no toma ningún dato de la red y espera hasta que bloquea desde el gps.
Me gustaría bloquear la posición como los mapas de Google que hasta que tienen una buena señal GPS que utilizan la red para determinar mi ubicación.
Aunque el mejor criterio lo haría, pero lo que hacen es elegir un proveedor una vez.
¿Hay algo mal con mi código o tengo que hacer hilos y tiempos muertos etc para que esto suceda?
- ¿Cómo obtener la ubicación con Wifi en Android?
- ¿Cómo activar el receptor de difusión cuando gps está encendido / apagado?
- Proveedores de ubicación de Android - ¿Proveedor de GPS o de red?
- Calibración GPS androide
- ¿Es posible simular ubicaciones con el nuevo proveedor de ubicación fusionado de Google?
- IllegalArgumentException: el proveedor no exisit: null en Maps V1
Tal vez usted puede tratar de escuchar tanto al proveedor de la red y el proveedor de gps para una cierta cantidad de tiempo y luego comprobar los resultados de los dos. Si no tiene resultados de los gps, utilice los resultados de la red en su lugar. Así es como lo hice.
Tal vez usted puede utilizar getBestProvider (Criteria criteria, boolean enabledOnly)
de LocationManager
con criterios como en este otro hilo . Consulte la documentación oficial .
Espero eso ayude