Nicht zu sehen, Geofence-Übergänge in den Google-tutorial Geofencing
Ich versuche zu testen Geofence-Funktionalität mit Google Beispiel: Erstellen & Überwachung von Geofences. Hochgeladen habe ich die code hier.
Problem ist, dass ich nie eine Benachrichtigung über den Eingang oder den Ausgang. Ich habe Wifi, 4G und GPS auf. Ich habe versucht zu testen, haben Sie folgende Möglichkeiten:
- Ich sogar zu Fuß aus meinem Haus für etwa 50ft und zu Fuss zurück - aber keine Benachrichtigungen. Ich kann sehen, dass die play-Diensten verbunden wird und sogar die "GeofenceUtils.ACTION_GEOFENCES_ADDED in MainActivity.java" wird ausgelöst, so dass ich denke, Geofences sind immer korrekt Hinzugefügt.
- Aktiviert Mock-Standorte in die Einstellungen und verwendet diese Fake-GPS-App und verändert Lage - ausgehend von den gleichen Koordinaten wie die Geofence1 und dann Einstellung, um etwas völlig außerhalb (in einem anderen Staat) - aber ich noch nicht bekommen, eine exit-Meldung.
Was mache ich falsch? Jemand hatte Erfolg in der Ausführung dieses Google Beispiel: Erstellen & Überwachung von Geofences. Hochgeladen habe ich die code hier für einfaches durchsuchen.
Ich versuche nur zu lernen Geofencing - Erkennung entry & beenden. ICH WERDE MARKIEREN SIE JEDE ANTWORT ALS DIE RICHTIGE ANTWORT, DIE ICH VERWENDEN KÖNNEN, UM GEOFENCING FUNKTIONIERT AUF MEINEM ECHTEN GERÄT
.
- Eigentlich gibt es einen bug in der android-Beispiel-code.Sie sollten nicht IntentService-Klasse für die Meldung und übergang.Ersetzen Sie es mit BroadCastReceiver. Gleiche Problem hier gepostet- stackoverflow.com/questions/19505614/...
- Können Sie mir sagen, wie hast du dieses Problem lösen ?
- Ich Tat es nicht, und das ist, warum ich habe nicht markiert, die unter Antwort als die richtige Antwort. Ich müssen noch mal reden, irgendwann .... sorry. Wenn Sie einen Weg finden, wäre genial, wenn Sie können post eine Lösung bitte.
- Hast du das problem gelöst bekommen ?
- Nein, ich hatte nicht sehr viel Glück, ich werde wahrscheinlich wieder kommen, um dies in Zukunft. Wenn ich das Tue, wird update hier.
Du musst angemeldet sein, um einen Kommentar abzugeben.
War ich auch Probleme mit den Beispiel-code. Eine der wichtigsten Fragen, die ich hatte, war rund um das erklären der ReceiveTransitionsIntentService. Sie müssen nicht fügen Sie einen BroadcastReceiver oder Anfrage Ort-updates, aber Sie brauchen, um Ihre AndroidManifest festlegen, der exportierte Wert auf true, so:
Stellen Sie sicher, dass der Pfad zu den Diensten ist ebenfalls richtig.
Habe ich vereinfacht das Google-Beispiel deutlich und Sie finden den code und die Erklärung hier. Ich habe entfernt die UI-Komponente und anhaltende Geofence-Speicher, so dass dieses Beispiel sollte einfacher zu Folgen. Hoffe, das hilft!
<service
..android:exported="false"
. Ich denke du meinsttrue
. Danke!android:exported="false"
bei der Erstellung der IntentService. Sie haben zu gehen in dem Manifest, und ändern Sie es auf "true". Diese Antwort sollte sein gekennzeichnet als die Lösung.Initial mein code ausgeführt wurde smoothy aber nach, dass ich auch dieses problem , Bitte versuchen Sie dies durch eine änderung geofenceRequester Klasse in continueAddGeofences () - Funktion.
im Grunde ist es ruft der Empfänger über location-request-Methode
War ich auch und habe das gleiche problem mit der Geofence-api. Am Ende verwendete ich addProximityAlert der LocationManager.Es hat sehr gut funktioniert!
Wie Sie sehen, Google überarbeitet Lage logic, das ist eine neue API. Scheint es als "shared" - location-Anbieter (
LocationRequest#setFastestInterval
können Ihnen koordiniert, wenn eine andere Anwendung anfordern, oder Sie erhalten die Koordinaten mitPRIORITY_NO_POWER flag
).Geofence
- API ist wiehelper
Verfahren, brauchen Sie nicht zu entwickeln, ähnlich der Logik von selbst (Berechnung von radius, usw). AberGeofence
nicht verlangen Koordinaten von selbst, es braucht nur empfangene Koordinaten (d.h. von der anderen Anwendung). Methode Namensgebung selbsterklärend:LocationServices.GeofencingApi.addGeofences;
=>addGeofences
, nichtrequestGeofences
.Also, sollten Sie die Anfrage von Koordinaten mit: