Android BLE蓝牙扫描代码 不会出现BtGatt.GattService is scanning too frequently警告
时间: 2024-03-05 21:50:39 浏览: 141
在 Android 中使用 BLE 扫描功能时,可以通过设置扫描参数来避免出现 `BtGatt.GattService is scanning too frequently` 的警告。在代码中,可以通过设置 `ScanSettings` 对象的 `setReportDelay()` 方法来设置扫描间隔,从而避免扫描过于频繁。具体的代码如下所示:
```java
// 创建一个 ScanSettings 对象,用于设置扫描参数
ScanSettings settings = new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY) // 设置扫描模式
.setReportDelay(5000) // 设置扫描间隔为 5 秒
.build();
// 创建一个 ScanFilter 对象,用于设置过滤条件
ScanFilter filter = new ScanFilter.Builder()
.setDeviceName("MyDevice") // 设置设备名称
.build();
// 开始扫描
BluetoothLeScanner scanner = BluetoothAdapter.getDefaultAdapter().getBluetoothLeScanner();
scanner.startScan(Collections.singletonList(filter), settings, scanCallback);
```
在上面的代码中,`setReportDelay(5000)` 方法用于设置扫描间隔为 5 秒,可以根据需要进行调整。需要注意的是,`setReportDelay()` 方法的单位是毫秒。设置好扫描参数后,可以通过 `startScan()` 方法来开始扫描。在回调函数 `scanCallback` 中,可以获取到扫描结果并进行相应的处理。需要注意的是,扫描结束后需要调用 `stopScan()` 方法来停止扫描,以释放相关资源。
阅读全文