2016-09-02 12 views
-3

私は近くのEddystoneビーコンが近くに検出されたときに、彼のバックグラウンドでApp内のサービスを開始するためにNearby Message APIに取り組んでいます。近くのメッセージAPIでonLostイベントが発生したとき

これはうまくいきますが、私が観察したことは、Bluetoothを再起動するたびにonFoundイベントが発生することです。

しかし、私は(Androidデバイス)がビーコンの範囲に入るたびに(Bluetoothは常にオンモードになります)、onFoundイベントをトリガーしたいと思います。

デバッグ後、私は自分のビーコンの範囲外に出るときにonLostイベントがトリガーされず、代わりにonLostがBluetoothをオフにしたときにのみトリガーされるため、これが起こることがわかりました。

私の質問は、onLostイベントの期待される動作は何ですか、そして私が考えていることは可能でしょうか?

ご意見をいただきありがとうございます。

答えて

0

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

public void onLost (Message message) 

メッセージが近くもはや検出されたときに呼び出されません。 注:このコールバックは現在、BLEビーコンに接続されたメッセージに最適です。他のメッセージについては、タイムリーに呼び出されることはありません。 このメソッドは、(メッセージが失われた呼び出しの間に再度見つからない限り)繰り返し呼び出されることはありません。あなたが離れてから移動(またはオフ)にしてください

ビーコン、これがトリガする「onLost」、近所のスキャンは、少なくとも10のためのビーコンを検出できない場合onLostコールバックがトリガされるブルートゥース

+0

感謝。バックグラウンドモードのNearby Message APIはスクリーンオンイベントの後にのみ動作するため、実際には機能していませんでした。今私はそうするための他の方法を探しています(スクリーンオンイベントなし)。あなたがこれまで実装していれば他の方法を提案してください。 –

0

をオフにするように秒(経験値に基づくタイムアウト、私は正式な値が見つかりませんでした)。

フォアグラウンドスキャンの場合は状況が簡単です。スキャンは常にアクティブであり、Nearbyは10秒後に「欠落」ビーコンを検出することができます。

バックグラウンドスキャンの場合は状況が複雑になります。スキャンはスクリーンオンイベントでのみ実行されるので、onLostは後で非常にトリガーされます。

私はBluetoothをオフに切り替えると思います。近くに見つかったビーコンと以前に見つかったビーコンが失われます。これが、Bluetoothをオフにしたときに消えてしまう理由です。バックグラウンドスキャンを使用している場合は、他のアプリケーションがスキャンを実行すると更新されます。したがって、ビーコンの範囲外に出て10秒待ってから、他のアプリでスキャンを実行すると、最も遅いコールバックを取得する必要があります。

同じことがonFoundに適用されます。私はそれはあなたの問題を解決していませんが、うまくいけば、それは、あなたの質問に答えると思い

...あなたの応答のための

関連する問題