Android-Standortanbieter - GPS- oder Netzwerkanbieter?

128

In meiner Bewerbung möchte ich den aktuellen Standort des Benutzers ermitteln. Ich habe diesbezüglich jedoch einige Fragen:

  1. Es gibt verschiedene Standortanbieter. Welcher ist der genaueste? Der GPS-Anbieter oder der Netzwerkanbieter ?

  2. Inwieweit unterscheiden sich diese verfügbaren Anbieter? Wie funktionieren sie?

  3. Könnten Sie mir bitte einige Code-Schnipsel oder Tutorials zur Verfügung stellen, wie ich mit der Implementierung der GPS-Funktionalität in meiner Anwendung beginnen kann?

Kein Mann
quelle
18
Stimmen Sie für die Wiedereröffnung ab - die Frage ist gut und die Antwort ist nützlich. Die Antwort ist ebenfalls veraltet, da es jetzt den Fused Location Provider gibt. Wenn Sie die Frage öffnen, kann sie aktualisiert werden.
Richard Le Mesurier

Antworten:

281

Es gibt 3 Standortanbieter in Android.

Sie sind:

gps -> (GPS, AGPS): Name des GPS-Standortanbieters. Dieser Anbieter ermittelt den Standort mithilfe von Satelliten. Abhängig von den Bedingungen kann es eine Weile dauern, bis dieser Anbieter einen Standortfix zurückgibt. Erfordert die Berechtigung android.permission.ACCESS_FINE_LOCATION.

Netzwerk -> (AGPS, CellID, WiFi MACID): Name des Netzwerkstandortanbieters. Dieser Anbieter bestimmt den Standort basierend auf der Verfügbarkeit von Mobilfunkmasten und WLAN-Zugangspunkten. Die Ergebnisse werden mittels einer Netzwerksuche abgerufen. Erfordert entweder die Berechtigungen android.permission.ACCESS_COARSE_LOCATION oder android.permission.ACCESS_FINE_LOCATION.

passiv -> (CellID, WiFi MACID): Ein spezieller Standortanbieter zum Empfangen von Standorten, ohne tatsächlich eine Standortkorrektur einzuleiten. Dieser Anbieter kann verwendet werden, um Standortaktualisierungen passiv zu empfangen, wenn andere Anwendungen oder Dienste sie anfordern, ohne die Standorte selbst anzufordern. Dieser Anbieter gibt Standorte zurück, die von anderen Anbietern generiert wurden. Erfordert die Berechtigung android.permission.ACCESS_FINE_LOCATION. Wenn das GPS nicht aktiviert ist, gibt dieser Anbieter möglicherweise nur grobe Korrekturen zurück. Dies nennt Android diese Standortanbieter. Die zugrunde liegenden Technologien, mit denen dieses Material funktioniert, werden jedoch auf die spezifischen Hardware- und Telekommunikationsfunktionen (Netzwerkdienst) abgebildet.

Der beste Weg ist, zuerst den "Netzwerk" - oder "passiven" Anbieter zu verwenden und dann auf "GPS" zurückzugreifen und je nach Aufgabe zwischen Anbietern zu wechseln. Dies deckt alle Fälle ab und bietet einen Service mit dem kleinsten gemeinsamen Nenner (im schlimmsten Fall) und einen hervorragenden Service (im besten Fall).

Geben Sie hier die Bildbeschreibung ein

Artikelreferenz: Android-Standortanbieter - GPS, Netzwerk, passiv Von Nazmul Idris

Code-Referenz: https://stackoverflow.com/a/3145655/28557

-----------------------Aktualisieren-----------------------

Jetzt hat Android Fused Location Provider

Der Fused Location Provider verwaltet die zugrunde liegende Standorttechnologie intelligent und bietet Ihnen den besten Standort entsprechend Ihren Anforderungen. Es vereinfacht die Möglichkeiten für Apps, den aktuellen Standort des Benutzers mit verbesserter Genauigkeit und geringerem Stromverbrauch abzurufen

Der Fused Location Provider bietet drei Möglichkeiten zum Abrufen des Standorts

  1. Letzter Standort: Verwenden Sie diese Option, wenn Sie den aktuellen Standort einmal kennen möchten.
  2. Standort mit Listener anfordern: Verwenden Sie diese Option, wenn sich die Anwendung auf dem Bildschirm / Frontend befindet und ein fortgesetzter Standort erforderlich ist.
  3. Standort mit ausstehender Absicht anfordern: Wird verwendet, wenn die Anwendung im Hintergrund ausgeführt wird und ein fortgesetzter Standort erforderlich ist.

Verweise :

Offizielle Website: http://developer.android.com/google/play-services/location.html

Beispiel für einen Fused Location Provider: GIT: https://github.com/kpbird/fused-location-provider-example

http://blog.lemberg.co.uk/fused-location-provider

-------------------------------------------------- ------ ------.

Vinayak Bevinakatti
quelle
2
Beachten Sie, dass es auch den Google Play Services Fused Locator-Anbieter gibt, den Sie verwenden können.
Richard Le Mesurier
Ist es möglich, einen eigenen Standortanbieter zu erstellen? android.permission.INSTALL_LOCATION_PROVIDER ist signiert oder das System bedeutet, dass ich eines auf einem gerooteten Gerät installieren kann, nicht wahr?
JohnyTex
1
Der Fused Location Provider ist nur für API> = 19 verfügbar. Wir müssen immer noch das alte Verfahren für Geräte befolgen, auf denen ältere Versionen ausgeführt werden, oder?
Shobhit Puri
Gibt es einen Beispielcode / eine vorhandene API, die nach dem GPS-Standort sucht und nach einiger Zeit auf den Netzwerkanbieter zurückgreift, wenn GPS den Standort nicht abrufen kann? oder sollte es im Code von einer Timer-Logik behandelt werden?
Jrhamza
Passiver Anbieter "" "Dieser Anbieter kann verwendet werden, um Standortaktualisierungen passiv zu empfangen, wenn andere Anwendungen oder Dienste sie anfordern, ohne die Standorte selbst anzufordern." "
nurisezgin
7

GPS ist im Allgemeinen genauer als das Netzwerk, aber manchmal ist GPS nicht verfügbar. Daher müssen Sie möglicherweise zwischen beiden wechseln.

Ein guter Anfang könnte sein, sich die Android-Dev-Site anzusehen. Sie hatten einen Abschnitt, der der Bestimmung des Benutzerstandorts gewidmet war und alle Codebeispiele enthält, die Sie benötigen.

http://developer.android.com/guide/topics/location/obtaining-user-location.html

Otra
quelle
@Noman möchten Sie Ihren Standort Längen- und Breitengrad erhalten?
Nikunj Patel
@ Scorpio Ich wollte eigentlich wissen, welche Option unter NETWORK PROViDER & GPS PROVIDER besser ist. . .Otra sende mir einen Link als Antwort auf meine Frage, die mir sehr geholfen hat ... jetzt benutze ich NETWORK PROVIDER in meiner App :-)
Noman
3

Hier werden einige gute Antworten erwähnt. Ein anderer Ansatz, den Sie wählen könnten, wäre die Verwendung einiger kostenlos verfügbarer SDKs wie Atooma, tranql und Neura, die in Ihre Android-Anwendung integriert werden können (die Integration dauert weniger als 20 Minuten). Sie erhalten nicht nur den genauen Standort Ihres Benutzers, sondern auch gute Einblicke in die Aktivitäten Ihres Benutzers. Einige von ihnen verbrauchen weniger als 1% Ihrer Batterie

Johndaly
quelle
1
Kann ich Verweise auf das SDK erhalten, das Sie erwähnen?
Kishore Relangi