android obtenir la localisation de meilleur fournisseur de disponible

J'ai ce code pour obtenir les meilleurs fournisseur de

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);

et ensuite l'auditeur

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);
   }
}

Quand je l'ai testé sur un téléphone(htc magic) j'ai découvert que lorsque le gps est désactivé, il écluses du réseau immédiatement. Quand j'active le gps il ne prend pas toutes les données à partir du réseau et attend jusqu'à ce qu'il se verrouille par le gps.
Je voudrais verrouiller la position comme google maps jusqu'à ce qu'ils ont un bon signal gps ils utilisent le réseau pour déterminer ma position.
J'ai bien le meilleur des critères de le faire, mais ce qu'ils ont à faire est de choisir un fournisseur une fois.
Est-il quelque chose de mal avec mon code ou je dois faire les threads et les délais d'attente etc pour le faire?

spagi votre code m'a beaucoup aidé - nulle part sur l'android dev du site est-elle expliqué comment obtenir le meilleur fournisseur. Certains périphériques peuvent avoir gps, certains gsm, certains wifi.
Voici un très intéressant article Google: developer.android.com/training/basics/location/...

OriginalL'auteur spagi | 2010-05-27