1

Android Beacon Libraryを使用してビーコンを検出しています。

以下の他のStackoverflowの質問の回答によると、解決策は

beaconManager.setBackgroundScanPeriod(60000l);
beaconManager.setBackgroundBetweenScanPeriod(60000l);
beaconManager.updateScanPeriods();

しかし、私の場合は機能していません。スキャン期間の変更はできません。

コードは次のとおりです。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    beaconManager = BeaconManager.getInstanceForApplication(this);
    beaconManager.getBeaconParsers().add(new BeaconParser()
            .setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"));
    beaconManager.bind(this);
}

@Override
public void onBeaconServiceConnect() {
    try {
        beaconManager.setBackgroundScanPeriod(60000l);
        beaconManager.setBackgroundBetweenScanPeriod(60000l);
        beaconManager.updateScanPeriods();

        beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId",
                Identifier.parse(Config.PROXIMITY_UUID), null, null));
        beaconManager.setRangeNotifier(new RangeNotifier() {
            @Override
            public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
                if (beacons.size() > 0) {
                    Log.i(TAG, "minor:"+ beacons.iterator().next().getId3());
                }


            }
        });
    } catch (RemoteException e) {
        e.printStackTrace();
    }
}
4

1 に答える 1

5

フォアグラウンドでスキャン期間を変更する場合は、同等のメソッドを使用してフォアグラウンドの動作を変更できます。

beaconManager.setForegroundScanPeriod(60000l);
beaconManager.setForegroundBetweenScanPeriod(60000l);
beaconManager.updateScanPeriods();

上記が行うことは、スキャンを 60 秒間実行し、検出されたすべてのビーコンの結果を処理し、60 秒間スキャンを停止してからサイクルをやり直すことであることを理解してください。1 分おきにスキャンを停止したくない場合は、次のようなコードを使用します。これにより、最後のスキャン サイクルが終了した後、すぐに新しいスキャン サイクルが開始されます。

beaconManager.setForegroundScanPeriod(60000l);
beaconManager.setForegroundBetweenScanPeriod(0l);
beaconManager.updateScanPeriods();
于 2015-09-09T12:53:44.220 に答える