约10秒后如何自动关闭BLE扫描

时间:2018-06-22 09:44:32

标签: android bluetooth-lowenergy scanning

我的代码如下

scanLeDevice(true);
.......................
private void scanLeDevice(final boolean enable) {
        if (enable) {
            // Stops scanning after a pre-defined scan period.
            ViewHolder newUser2 = new ViewHolder("adtv2","vvg2");
            adapter.add(newUser2);
            mHandler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    mScanning = false;
                    mBluetoothAdapter.stopLeScan(mLeScanCallback);
                    //invalidateOptionsMenu();
                }
            }, SCAN_PERIOD);

            mScanning = true;
            mBluetoothAdapter.startLeScan(mLeScanCallback);
        } else {
            mScanning = false;
            mBluetoothAdapter.stopLeScan(mLeScanCallback);
        }
        //invalidateOptionsMenu();
    }

我认为我们正在经过的时间段将是扫描的极限,但它不会停止。 也可能有重复的条目。

2 个答案:

答案 0 :(得分:1)

我希望这对您有用。

要停止扫描scanLeDevice(false);,请使用此代码。

如果它已经处于扫描状态,则可以在下面的代码中弯腰使用

 if (mScanning) {
       mBluetoothAdapter.stopLeScan(mLeScanCallback);
       mScanning = false;
     }

然后将数据设置为mLeScanCallback中的适配器

答案 1 :(得分:0)

您可以为此使用处理程序。使用延迟发布(大约10秒钟)并在那里停止扫描。

Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
           // stop scanning here
           mBluetoothAdapter.stopLeScan(mLeScanCallback);
           /*not sure if this is your code to stop scanning but you can use handler for a delay 
           like this.*/
        }
    }, 10000);