Frage

Ich habe diesen Code, um die besten verfügbaren Provider zu bekommen

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

und dann den Hörer

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

Wenn ich es eine Vorrichtung (htc Magie) getestet habe ich herausgefunden, dass, wenn GPS deaktiviert ist es aus dem Netz sperrt sofort. Wenn ich die GPS ermöglichen tut es keine Daten aus dem Netz und wartet dauern, bis es von der GPS-verriegelt.
Ich möchte die Position wie die Google sperren abbildet, dass, bis sie ein gutes GPS-Signal sie nutzen das Netzwerk meine Position zu bestimmen.
Ich obwohl die besten Kriterien würde das tun, aber was sie tun, ist ein Anbieter einmal holen.
Gibt es etwas falsch mit meinem Code oder ich habe Threads zu tun und Timeouts etc, um sie geschehen?

War es hilfreich?

Lösung

Vielleicht können Sie sowohl an den Netzbetreiber versuchen Hören und GPS-Anbieter für eine bestimmte Zeit und überprüfen Sie dann die Ergebnisse aus den beiden. Wenn Sie die Ergebnisse haben nicht von dem GPS, verwenden Sie stattdessen die Netzwerk-Ergebnisse. Das ist, wie ich es tat.

Andere Tipps

Vielleicht können Sie getBestProvider (Criteria criteria, boolean enabledOnly) von LocationManager mit Kriterien wie in diesem anderen Thread verwenden. Sehen Sie sich die offizielle Dokumentation .

Hope es hilft

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top