2011-01-04 3 views
21

Ich habe ein Locationlistener in meiner App, die den Netzwerk-Provider verwendet implementiert.Verwenden Sie GPS und Netzwerk-Provider zur gleichen Zeit in Android

Das alles funktioniert gut, weil ich einen Standort schnell und mit GPS-Provider brauche es ewig.

Aber ich bin zu einem Punkt in meiner App gekommen, wo der Ort genau sein muss (max 5-10 Meter).

Ich frage mich, ob es möglich ist, den GPS-Anbieter mit dem Netzwerkanbieter zur gleichen Zeit zu verwenden und dann das beste Ergebnis von beiden zu bekommen? Und ist es auch möglich, mich wissen zu lassen, wenn der GPS-Anbieter mir einen GPS-Standort zur Verfügung gestellt hat?

Also im Grunde:

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); 
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 

Wird diese Arbeit mit der gleichen überschriebene OnLocationChanged()?

Und wie kann ich sehen, ob das GPS einen Standort bekommen hat?

Danke,

Antwort

27

Sie können sicherlich den gleichen Listener für mehrere Anbieter verwenden. Es kann besser sein, locationmanager.getProviders mit einem Criteria Objekt zu verwenden, dann nach Genauigkeit zu sortieren oder nur auf alle zu hören. Allerdings nicht viel praktischer Unterschied.

Der Rückruf onLocationChanged gibt Ihnen ein Location-Objekt, das über eine getProvider()-Methode verfügt, mit der Sie ermitteln können, woher es stammt. Es hat auch eine getAccuracy() Methode, so dass Sie auch Ihre letzten Fixes mit Genauigkeit sortieren können.

+0

tnx für Ihre Antwort! – Galip

2

Idealerweise ist es völlig in Ordnung, beide Anbieter zu verwenden, wenn Sie sich nicht um den Akkuverbrauch kümmern. Wie Daren erklärte, können Sie die Koordinaten mit getProvider() und getAccuracy() filtern.

http://blog.shinetech.com/2011/10/14/a-good-look-at-android-location-data/

+0

Dies als Kommentar von Darens Antwort hinzufügen wäre klarer – etienne

+2

Das sollte eigentlich ein Kommentar zur Antwort von Daren hätte hinzugefügt werden sollen. –

Verwandte Themen