-3

Eddystoneビーコンが近くで検出されるたびに、バックグラウンドでアプリでサービスを開始するために、Nearby Message APIに取り組んでいます。

正常に動作しますが、Bluetooth を再起動するたびに onFound イベントがトリガーされることがわかりました。

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

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

だから私の質問は、 onLost イベントの予想される動作は何ですか?私が考えていることは可能ですか?

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

4

2 に答える 2

0

onLost コールバックは、Nearby スキャンが少なくとも 10 秒間ビーコンを検出できない場合にトリガーされます (経験に基づくタイムアウト、公式の値は見つかりませんでした)。

フォアグラウンドスキャンの場合、状況は簡単です。スキャンは常にアクティブで、Nearby は 10 秒後に「見つからない」ビーコンを検出できます。

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

Bluetooth をオフにすると、Nearby がトリガーされ、以前に見つかったビーコンが失われると思います。これが、Bluetooth をオフにすると onLost になる理由です。バックグラウンド スキャンを使用している場合は、他のアプリケーションがスキャンを行うときに更新を取得します。そのため、ビーコンの範囲外に出て、10 秒待ってから他のアプリでスキャンを実行すると、onLost コールバックが返されるはずです。

同じことが onFound にも当てはまります。

それはあなたの問題を解決しないと思いますが、うまくいけばあなたの質問に答えます...

于 2016-11-03T14:00:04.503 に答える