0

バックグラウンド サービスとして実行されるアプリで Android ビーコン ライブラリを使用しようとしています。サービスの開始時に beaconManager をバインドします。onDestroy callBack でバインドを解除しています。

私は setBackGroundScanPeriod と setBackGroundBetweenScanPeriod で iBeaconManager をいくつかのデフォルト値で設定しています。

アプリケーションを実行するたびにサービスが呼び出され、自動的にビーコンをスキャンします。コールバック メソッド didEnterRegion と didExitRegion はビーコンの可用性に基づいて呼び出され、didEnterRegion callBack メソッドで startRangingBeaconsInRegion を呼び出しています。

私が同じ地域にいたとき、すべてがうまくいきました。また、離れた場所に行って同じ場所に再び入った場合、ビーコンをスキャンしていません。

場所の変更は本当にビーコン スキャンに影響しますか? または、特定の時間だけスキャンしますか? 誰でもこれを手伝ってください。前もって感謝します。

4

1 に答える 1

0

コードを見ずして断言することはできませんが、ライブラリがアプリケーションのある時点でスキャンを停止していると思われます。BeaconManager にバインドおよびアンバインドするバックグラウンド サービスについて言及しています。バックグラウンド サービスがまだ実行されていますか?

BeaconService がまだスキャンしているかどうかを確認する 1 つの方法は、デバッグ ログを有効にすることです。アプリでこれが完了したら、USB ケーブルを介してアプリをコンピューターに接続し、以下の行を使用して BeaconService からのデバッグ出力を探すことができます。

adb logcat | grep BeaconService

ビーコンをスキャンしている場合は、次のような行が表示されます。

D/BeaconService(14202): Waiting to stop scan for another 1100 milliseconds
D/BeaconService(14202): Scan started
D/BeaconService(14202): Waiting to stop scan for another 100 milliseconds
D/BeaconService(14202): Done with scan cycle

ライブラリがバックグラウンド モードであるかどうかによって、時間間隔が長くなる場合があります。

もう 1 つの方法は、サービスで BeaconManger にバインドおよびバインド解除するのではなく、ライブラリを AndroidApplicationクラスにアタッチすることでアプローチを簡素化することです。これは推奨されるアプローチであり、ここに示す参照アプリケーションで説明されているように RegionBootstrapandを使用します。 .javaBackgroundPowerSaver

于 2014-10-07T15:15:25.413 に答える