我的代码如下
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();
}
我认为我们正在经过的时间段将是扫描的极限,但它不会停止。 也可能有重复的条目。
答案 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);