2

問題が発生しましたが、別の Android OS を搭載した別のデバイスで再現できます。初めて iBeacon スキャンで期待どおりの動作が得られました。次回スキャンすると、ビーコンが表示されません。デリゲートの結果リストが空です。ビーコンのサイズで setRangeNotifier にカウントを出力しましたが、ビーコンのサイズが初めて 1 であることを示した後、その後は継続的に 0 を表示したようです。

beaconManager.setRangeNotifier(new RangeNotifier() {
    @Override
    public void didRangeBeaconsInRegion(final Collection<Beacon> beacons, Region region) {
       Log.d("Beacons count",beacons.size());
    }
});

出力: ビーコン カウント 1 ビーコン カウント 0 ビーコン カウント 0 ビーコン カウント 0

私の測距期間とスキャン期間は以下の通りです

beaconManager.setBackgroundScanPeriod(1000l);
beaconManager.setBackgroundBetweenScanPeriod(31000l);
4

3 に答える 3

1

あなたが説明した症状を再現しようとしましたが、Android 5 を搭載した Nexus 5 と送信 RadBeacon USB では再現できませんでした。

参照アプリケーションの変更:

  • 次の行を BeaconReferenceApplication onCreate() メソッドに追加しました。

    beaconManager.setBackgroundBetweenScanPeriod(1000l);
    beaconManager.setBackgroundBetweenScanPeriod(31000l);
    beaconManager.setAndroidLScanningDisabled(true);
    BeaconManager.setDebug(true);
    

上記の 3 行目が必要なのは、Android 5 を搭載した Nexus 5 でテストを行っていて、4.4 フォンで行うように 4.x スキャン API を実行したかったからです。

  • 次の行を RangingActivity didRangeBeaconsInRegion コールバックに追加しました。

    Log.d(TAG, "ranged beacon: "+firstBeacon.toString());
    

テスト手順:

  • 10 HZ で送信する RadBeacon USB を有効にします。

  • 結果をログに記録します。

    $ /Users/dyoung/sdk-android-studio/platform-tools/adb logcat -v time | grep "anged beacon"
    
  • リファレンス アプリを実行し、フォアグラウンドで測距を開始し、3 秒後にバックグラウンドに移行します。次のログ結果を参照してください。

    03-01 08:39:00.146 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:39:01.282 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:39:02.482 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:39:03.515 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:39:12.148 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:39:44.274 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:40:16.179 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:40:48.239 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:41:20.272 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:41:52.205 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    03-01 08:42:24.202 D/RangingActivity(11146): ranged beacon: id1: 04ff791e-f83b-434b-8031-1b3e72bdbcb7 id2: 1 id3: 1
    

ご覧のとおり、コールバックはフォアグラウンドで 1.1 秒ごと、バックグラウンドで 32 秒ごとに送信されます。これは予想通りです。

Cyanogenmod 4.4 を搭載した OnePlus デバイスで参照アプリケーションを使用して上記の手順を繰り返すことができない場合は、そのデバイスの ROM に問題がある可能性があります。これを確認し、(上記のようにデバッグをオンにして) コールバックが来ない期間の完全な Logcat 出力をキャプチャできる場合は、http://github.com/AltBeacon/android-beacon で問題を開いてください。 -library/issuesを開き、ログ キャプチャのコピーを添付します。

于 2015-03-01T13:55:34.420 に答える
0

さらに考えてみると、問題はスキャン間隔にあると思います。報告されたスキャン間隔は、32 秒ごとにビーコンを探すのに 1 秒を費やすことでした。これは、特にわずか 1Hz で送信するビーコンの場合、デューティ サイクルとして十分ではありません。ラジオ ノイズのためにすべての送信が受信されるわけではありません。スキャナの起動またはシャットダウンの境界を送信がまたがらないようにするためには、スキャン時間を 1100 ミリ秒以上にすることが重要です。

于 2015-03-11T21:41:50.437 に答える