Android BLE扫描失败\u仅在某些设备上已启动(错误代码1)
我正在写一个BLE扫描器,它可以经常扫描外设、连接和断开连接 我正在“循环”扫描-关闭2秒,然后再打开10秒-因为我在某个地方(将尝试查找参考)读到,否则(Android 7.0之后)操作系统将在30分钟左右后停止后台扫描。我也经历过类似的事情 问题是,在某些设备上(例如,摩托罗拉Moto Z和谷歌Pixel),我收到一个错误,表明该应用程序已经开始使用这些参数进行扫描 但是,在我的扫描算法中,我强制在尝试开始扫描之前调用Android BLE扫描失败\u仅在某些设备上已启动(错误代码1),android,bluetooth-lowenergy,Android,Bluetooth Lowenergy,我正在写一个BLE扫描器,它可以经常扫描外设、连接和断开连接 我正在“循环”扫描-关闭2秒,然后再打开10秒-因为我在某个地方(将尝试查找参考)读到,否则(Android 7.0之后)操作系统将在30分钟左右后停止后台扫描。我也经历过类似的事情 问题是,在某些设备上(例如,摩托罗拉Moto Z和谷歌Pixel),我收到一个错误,表明该应用程序已经开始使用这些参数进行扫描 但是,在我的扫描算法中,我强制在尝试开始扫描之前调用stopScan。下面是一个相关的代码示例,它在提到的设备上产生错误。这只
stopScan
。下面是一个相关的代码示例,它在提到的设备上产生错误。这只是代码的扫描部分
private final int SCANNER_DOWN_TIME = 2000;
private final int SCANNER_LIFETIME_MS = 10000;
private Runnable runnable = new Runnable() {
private BluetoothLeScanner scanner;
final ScanSettings.Builder builder = new ScanSettings.Builder();
final ScanSettings settings = builder.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.build();
public void run() {
try {
bootScanner();
} catch (Exception e) {
Sentry.capture(e);
}
}
class StartScannerAndScheduleReboot implements Runnable {
@Override
public void run() {
if (bluetoothAdapter.isEnabled()) {
scanner = bluetoothAdapter.getBluetoothLeScanner();
if (scanner != null) {
scanner.startScan(null, settings, sensorReadingHandler);
}
} else {
bluetoothAdapter.enable();
}
bootScanHandler = new Handler(Looper.getMainLooper());
bootScan = new RebootScanner();
bootScanHandler.postDelayed(bootScan, SCANNER_LIFETIME_MS);
}
}
class RebootScanner implements Runnable {
@Override
public void run() {
bootScanner();
}
}
private void bootScanner() {
try {
scanner.stopScan(sensorReadingHandler);
} catch (Exception e) {
/* We can ignore this - there are cases that this will happen & it's ok */
}
startScanHandler = new Handler(Looper.getMainLooper());
startScan = new StartScannerAndScheduleReboot();
startScanHandler.postDelayed(startScan, SCANNER_DOWN_TIME);
}
private ScanCallback sensorReadingHandler = new ScanCallback()
{ /* I don't believe the scanCallback code is relevant, as this happens before any connections are even attempted. */ }
};
不足为奇的是,该应用程序仍然能够读取可传输的数据,但有些数据被删除了。这让我相信我不应该忽略这个错误。你找到解决方案了吗?