Question

J'ai ce code pour obtenir le meilleur fournisseur 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);

et 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é à un dispositif (htc magique) J'ai découvert que lorsque le GPS est désactivé, il se bloque à partir du réseau immédiatement. Quand je le GPS, activer ne prend pas toutes les données du réseau et attend jusqu'à ce qu'il se bloque du GPS.
Je voudrais verrouiller la position comme les cartes Google Maps que jusqu'à ce qu'ils aient un bon signal GPS, ils utilisent le réseau pour déterminer ma position.
Je pensais que les meilleurs critères ferait cela, mais ce qu'ils font est de choisir un fournisseur une fois.
Y at-il quelque chose de mal avec mon code ou je dois faire les discussions et les délais d'attente, etc pour y arriver?

Était-ce utile?

La solution

Peut-être que vous pouvez écouter à la fois le fournisseur de réseau et fournisseur GPS pour un certain laps de temps, puis vérifier les résultats des deux. Si vous ne possédez pas les résultats des GPS, utilisez plutôt les résultats du réseau. Voilà comment je l'ai fait.

Autres conseils

Peut-être que vous pouvez utiliser getBestProvider (Criteria criteria, boolean enabledOnly) de LocationManager avec des critères comme dans cet autre fil . Voir documentation officielle .

it helps

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top