2016-04-03 7 views
-1

Ich entwickle eine Anwendung, die einige Operationen ausführt, sobald der Benutzer in einen vordefinierten Bereich eintritt, auch wenn GPS ausgeschaltet oder nicht verfügbar ist.Android-Standortaktualisierungen & Zellenstandort

Problem: Wie identifiziert man den Benutzer in diesem Bereich (Radius oder Genauigkeit von 500 bis 700 Meter).

Mögliche Lösung mit Vor-& Nachteilen:

  1. Geofence: Es funktioniert nur, wenn GPS auf Willen ist sonst nicht & auch wenn GPS eingeschaltet ist, aber es gibt keine Verbindung mit Satelliten, die am ehesten als je nach Anwendungsfall meiner Anwendung (im Keller, unterirdisch oder im Tunnel) wird Geofence nicht ausgelöst. Also kann man sich nicht komplett auf GPS verlassen.

Pros:

ein. Funktioniert, wenn GPS auf & in der Lage ist, mit dem Satelliten zu verbinden.

b. Funktioniert sogar, wenn Handy-Display ausgeschaltet ist (das heißt Sleep-Modus)

Cons: a. Funktioniert nicht, wenn GPS ausgeschaltet ist.

b. Funktioniert nicht bei Verbindungsproblemen wie in Kellern, Tunnel.

  1. addProximityAlert: kann mir jemand bitte erklären, was Unterschied zwischen Geofencing addProximityAlert & ist? Welches ist besser? Ist der Annäherungsalarm im folgenden Fall aktiviert:

a. Wenn der Bildschirm ausgeschaltet ist, aber GPS eingeschaltet ist.

b. Wenn GPS ausgeschaltet ist.

  1. Zellen-ID von onCellLocationChanged(): Da nicht vollständig auf GPS verlassen kann (ausgeschaltet werden kann oder keine Konnektivität) Gedanken an cellLocation verwenden. Also ich implementiert MyPhoneStateListener erweitert PhoneStateListener, registriert es mit Telefoniedienste für PhoneStateListener.LISTEN_CELL_LOCATION & überschreiben onCellLocationChanged-Methode.

Ich weiß, Zellen-ID oder Turm Ide Bereich, wo ich Betrieb möchte so über den Eintritt durchgeführt werden, wenn onCellLocationChanged Methode aufgerufen wird, ich cid bekommen von cellLocationobject & vergleichen sie mit gespeicherten Zellen-IDs.

Problem ist onCellLocationChanged Methode nicht wenn Bildschirm wenn off genannt.Gefunden, dass diese Methode ist auch im Fall der eingehenden & abgehender Anruf genannt, weiß nicht, Grund sollte es nur aufgerufen werden, wenn der Standort der Zelle geändert wird. Jeder kennt den Grund?

Pros:

ein. Funktioniert auch, wenn GPS ausgeschaltet ist.

Cons:

ein. Die onCellLocationChanged-Methode wird nicht aufgerufen, wenn der Bildschirm ausgeschaltet ist (z. B. Schlafmodus). Es wird auch bei ausgehenden Anrufen & angerufen.

Erprobt halten teilweise Weckschloss immer noch diese Methode ist nicht genannt. Jemand hat geschrieben, starten Sie einen Service & Anfrage für Standortaktualisierungen von Netzwerk dann auch wenn Bildschirm ausgeschaltet ist OnCellLocationChanged-Methode aufgerufen werden. Versucht, aber immer noch onCellLocationChanged wird nicht aufgerufen, wenn der Bildschirm ausgeschaltet ist.

  1. Erstellter Dienst, der alle 2 Minuten eine Standortaktualisierung vom Netzwerk anfordert & Der Mindestabstand beträgt 500 Meter.

    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,1000 *60 *2,500,this); 
    

am 4. Punkt-Abfragen:

a. Erhalten wir Ortsaktualisierungen vom Netzwerk, wenn der Bildschirm ausgeschaltet ist?

b. Wenn das GPS die Standortaktualisierungen vom Netzwerk erhält, aber wenn GPS ausgeschaltet ist, werden keine Standortaktualisierungen vom Netzwerk empfangen. Nicht 100 Prozent sicher über diesen Punkt müssen mehr untersuchen. Bitte lassen Sie mich wissen, was ist das Verhalten, wenn wir Standort-Updates vom Netzwerk anfordern & GPS ist aus.

Zu viele Fragen in einem Beitrag gestellt, aber nach der Erkundung verschiedener Optionen für 10-12 Tage konnte keine zuverlässige Lösung finden, die auch ohne GPS funktionieren.

Danke.

Antwort

0

Offenlegung: Ich arbeite für Pathsense.

Obwohl ich nicht getestet haben Googles Geofence oder Android Geofence (addProximityAlert()) ohne GPS auf, habe ich Pathsense geofences ausgiebig getestet, und ich weiß, es wird ohne GPS arbeiten (nicht so genau, obwohl).

Wenn jedoch eine Drittanbieterbibliothek nicht in Frage kommt, können Sie eine Standortaktualisierungsanforderung (LocationManager.requestUpdates()) mit einer minTime von mindestens 30 Sekunden festlegen. Dies verringert den Stromverbrauch und Sie können einfach eine distance calculation zwischen dem Standort, den Sie überwachen, und den vom LocationManager angegebenen Standorten ausführen und die gewünschte Aktion ausführen, wenn sie größer ist als Ihr Überwachungsbereich.

+0

Vielen Dank für Ihre Antwort @Pablo. PathSense, wenn kostenlos oder bezahlt? Was ist der Genauigkeitsradius von Pathsense? Wenn es eine Genauigkeit von 700 bis 800 Meter ohne GPS hat, wird für mich arbeiten. – napster

+0

Ja, es ist kostenlos, und ich sehe kein Problem mit der Arbeit an einem Geofence dieser Größe.Wir unterstützen Geofences so klein wie 50 Meter, obwohl ich GPS in diesem Fall empfehle. –

+0

Schätzen Sie Ihre Bemühungen @Pablo. Wird PathSense ausprobieren, bevor die Antwort als hilfreich markiert wird. Eigentlich sollte die Anwendung auch ohne GPS mit einer Nähe von 700-800 Metern funktionieren. Hoffnung Lösung funktioniert. Prost. – napster