2016-09-02 5 views
-3

ausgelöst wird, arbeite ich an der Message-API in der Nähe, um einen Dienst in meiner App im Hintergrund zu starten, wenn Eddystone-Beacon in der Nähe erkannt wird.Wenn onLost-Ereignis in der Nachrichten-API

Es funktioniert gut, aber was ich beobachtet habe, ist, dass es sein OnFound-Ereignis jedes Mal auslösen, wenn ich Bluetooth neu starte.

Aber ich möchte OnFound-Ereignis jedes Mal auslösen, wenn ich (Android-Gerät) im Bereich eines Beacons kommt (Bluetooth wäre immer im On-Modus).

Nach dem Debugging habe ich festgestellt, dass dies passiert, weil onLost-Ereignis nicht ausgelöst wird, wenn ich die Reichweite meines Beacons verliere, sondern onLost nur ausgelöst wird, wenn ich Bluetooth abstelle.

Also meine Frage ist, was ist das erwartete Verhalten von onLost Event, und ist es möglich, was ich denke?

Vielen Dank im Voraus für Ihre Ansichten.

Antwort

0

Von: https://developers.google.com/android/reference/com/google/android/gms/nearby/messages/MessageListener

public void onLost (Message message) 

aufgerufen, wenn eine Nachricht in der Nähe nachweisbar ist nicht mehr. Hinweis: Dieser Rückruf funktioniert derzeit am besten für Nachrichten, die an BLE-Beacons angeschlossen sind. Für andere Nachrichten kann es nicht rechtzeitig oder gar nicht aufgerufen werden. Diese Methode wird nicht wiederholt aufgerufen (es sei denn, die Nachricht wird zwischen verlorenen Anrufen erneut gefunden).

sollten Sie versuchen, weg von zu bewegen (oder ausschalten), um das Leuchtfeuer und dies sollte „onLost“ auslösen, wie Bluetooth

+0

Vielen Dank für Ihre Antwort. Tatsächlich funktionierte es nicht, weil die Message-API für die Umgebung im Hintergrundmodus nur nach einem Screen-On-Ereignis funktioniert. Jetzt finde ich einen anderen Weg (ohne Screen-on-Event). Bitte schlagen Sie einen anderen Weg vor, wenn Sie bis jetzt implementiert haben. –

0
Ausschalten

Der onLost Rückruf ausgelöst wird, wenn die Nähe Scan nicht Leuchtfeuer für mindestens 10 erkennen kann, Sekunden (Timeout basierend auf Erfahrung, fand ich keinen offiziellen Wert).

Die Situation ist einfach im Vordergrund Scannen. Das Scannen ist ständig aktiv und Nearby kann nach 10 Sekunden "fehlende" Beacons erkennen.

Die Situation wird bei Hintergrundscan kompliziert. Der Scan wird nur bei Screen-On-Ereignissen durchgeführt, so dass der onLost viel später ausgelöst werden kann.

Ich denke, Bluetooth-Auslösung Trigger Nearby und zuvor gefundene Beacons verloren gehen. Das ist der Grund, warum Sie erst beim Ausschalten von Bluetooth aufstehen. Wenn Sie Hintergrundscan verwenden, erhalten Sie Updates, wenn andere Anwendungen scannen. Also, wenn Sie aus der Reichweite des Beacons herauskommen, warten Sie 10 Sekunden und führen Sie dann den Scan durch andere App aus, Sie sollten auf den letzten Rückruf zurückgreifen.

Das gleiche gilt für onFound.

Ich denke, es löst Ihr Problem nicht, aber hoffentlich beantwortet es Ihre Frage ...

Verwandte Themen