Ho questo codice per ottenere il miglior provider disponibileAndroid posizione ottenere dal miglior fornitore disponibili
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);
e poi l'ascoltatore
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);
}
}
Quando ho provato ad un dispositivo (HTC Magic) I ho scoperto che quando gps è disabilitato si blocca immediatamente dalla rete. Quando abilito il GPS non prende alcun dato dalla rete e aspetta che si blocchi dal GPS.
Mi piacerebbe bloccare la posizione come le mappe di google che fino a quando non hanno un buon segnale GPS usano la rete per determinare la mia posizione.
Anche se i criteri migliori lo farebbero, ma quello che fanno è scegliere un fornitore una volta.
C'è qualcosa di sbagliato nel mio codice o devo fare thread e timeouts ecc per farlo accadere?
spagi il codice mi ha aiutato notevolmente - da nessuna parte sul sito dev Android è spiegato come ottenere il miglior fornitore possibile. Alcuni dispositivi potrebbero avere gps, alcuni GSM, alcuni wifi. –
Ecco un articolo di Google molto interessante: http://developer.android.com/training/basics/location/currentlocation.html – shkschneider