Hallo,
bin gerade dabei eine App zu schreiben, die Offline (Vektor) Karten anzeigt (mapsforge) und auf diesen bei Wunsch (GPX) Tracks als Overlay anzeigt, zum Orientieren bei Wanderungen etc.. Funktioniert auch alles soweit. Überraschungen sind für mich jedoch aufgetreten, wenn ich die Position über das Netzwerk (LocationManager.NETWORK_PROVIDER) feststellen und als Overlay einblenden möchte.
Überraschung 1:
Criteria kriterien=new Criteria();
kriterien.setAccuracy(Criteria.ACCURACY_COARSE);
kriterien.setPowerRequirement(Criteria.POWER_LOW);
führt (meist) zum erwarteten Ergebnis.
Aber auch
Criteria kriterien=new Criteria();
kriterien.setAccuracy(Criteria.ACCURACY_COARSE);
kriterien.setAccuracy(Criteria.ACCURACY_MEDIUM);
kriterien.setPowerRequirement(Criteria.POWER_LOW);
gibt genau das gleiche Ergbenis. Setze ich statt Criteria.ACCURACY_MEDIUM dann Criteria.ACCURACY_LOW ist es auch das selbe.
Wenn ich jedoch Criteria.ACCURACY_HIGH statt Criteria.ACCURACY_MEDIUM setze geht die App ins Nirvana.
Überschreibt ein neuer Aufruf von setAccuracy() die vorher gesetzen Kriterien (ACCURACY_COARSE)?? Wer kann dazu genaueres sagen?
Überraschung 2:
Egal ob ich die Position dann mit
oder
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,pos_zeit_interval*1000, pos_min_distanz,locationListener);
aufrufe, wobei ich requestSingleUpdate vorziehe, erreiche ich nicht immer den nächstliegenden Sendemast, sondern auch des öfteren andere Netzwerkzellen, bis zu 20 km entfernt.
Warum geschieht dies und wie kann man (ich) darauf vernüftig reagieren.
Übrigens habe ich ein ähnliches Verhalten auch bei OSMAND festgestellt.
Bisher fällt mir nur ein die Daten von 10 ooder 50 oder 100 requestSingleUpdate Aufrufen in einem Array zu speichern und dann die am häufigsten vorkommende Position als die "richtige" zu nutzen.......
Hat von Euch jemand eine Idee??
Mit fragenden Silvestergrüßen,
schymura