我正在开发一个移动应用程序,我正在做下面的工作,以便从我的传感器获取数据。
我使用以下语句启动/重新启动扫描
scanner.startScan(scanFilters,scanSettings,callback);我使用以下语句停止扫描
scanner.stopScan(callback);在scanFilters中,我设置了设备ID的名称,在scanSettings中,我将扫描模式设置为LOW_LATENCY
这个应用程序大部分时间运行良好。但有时我会收到客户的抱怨,即使蓝牙和位置是开着的,也没有数据更新。传感器工作正常。当我启动blueooth LE扫描时,如何确保扫描实际上正在运行?我在任何我能得到扫描状态的地方运行或不运行。
发布于 2021-02-25 05:53:27
发布于 2021-02-25 05:46:41
你只需要一点修改就行了。
mScanning是标记。mScanning值。mScanning是真还是假。public static boolean isScanRunning(){
return mScanning;
}private BluetoothLeScanner bluetoothLeScanner =
BluetoothAdapter.getDefaultAdapter().getBluetoothLeScanner();
private boolean static mScanning = false;
private Handler handler = new Handler();
// Stops scanning after 10 seconds.
private static final long SCAN_PERIOD = 10000;
private void scanLeDevice() {
if (!mScanning) {
// Stops scanning after a pre-defined scan period.
handler.postDelayed(new Runnable() {
@Override
public void run() {
mScanning = false;
bluetoothLeScanner.stopScan(leScanCallback);
}
}, SCAN_PERIOD);
mScanning = true;
bluetoothLeScanner.startScan(leScanCallback);
} else {
mScanning = false;
bluetoothLeScanner.stopScan(leScanCallback);
}
}https://stackoverflow.com/questions/66362099
复制相似问题