Tengo este código para obtener el mejor proveedor disponibleubicación Obtener androide del 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
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 probé a un dispositivo (HTC Magic) I descubrió que cuando gps está desactivado, se bloquea de la red de inmediato. Cuando habilito el gps, no toma datos de la red y espera a que se bloquee desde el gps.
Me gustaría bloquear la posición como los mapas de google que hasta que tengan una buena señal gps usan la red para determinar mi ubicación.
Pensé que 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 subprocesos y tiempos de espera, etc. para que esto ocurra?
spagi su código me ayudó en gran medida - en ninguna parte en el sitio dev androide es que explica cómo conseguir el mejor proveedor posible. Algunos dispositivos pueden tener gps, algunos gsm, algunos wifi. –
Aquí hay un artículo de Google muy interesante: http://developer.android.com/training/basics/location/currentlocation.html – shkschneider