You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用NordicSemi Kotlin Android BLE无法扫描到BLE设备求助

BLE扫描仅显示已配对设备的解决方法

针对你使用no.nordicsemi.android.kotlin.ble:scanner:1.0.6库扫描BLE设备时仅能获取已配对设备的问题,可按以下步骤排查解决:

  • 检查权限配置
    Android不同版本对BLE扫描的权限要求不同:

    • Android 12及以上:需在Manifest中声明BLUETOOTH_SCAN、BLUETOOTH_CONNECT权限,并动态申请;若需扫描可定位的BLE设备,还需ACCESS_FINE_LOCATION权限。
    • Android 11及以下:必须声明并动态申请ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION权限,否则无法扫描到未配对设备。
      确保在启动扫描前已获取所需权限,可在Activity中完成权限申请逻辑,再调用ViewModel的扫描方法。
  • 配置扫描参数
    默认的scan()方法可能使用了低灵敏度的扫描模式,导致无法发现未配对设备。可自定义扫描设置提升灵敏度:

    fun startBleScanning(context: Context) {
        val scanSettings = ScanSettings.Builder()
            .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY) // 高灵敏度扫描模式
            .build()
        val filters = emptyList<ScanFilter>() // 不设置过滤,扫描所有BLE设备
    
        BleScanner(context).scan(filters, scanSettings)
            .map { aggregator.aggregateDevices(it) }
            .onEach {
                btDevicesLiveData.postValue(it.map { device ->
                    Log.d("BT", "result: ${device.address}")
                })
            }
            .launchIn(viewModelScope)
    }
    
  • 确认目标设备状态
    目标BLE设备必须处于可发现模式(持续发送广播包),多数设备默认不会主动广播,需手动触发(如长按设备按键)。可先通过系统蓝牙设置的扫描功能测试,若系统无法找到目标设备,需检查设备本身的广播配置。

  • 排查聚合器逻辑
    BleScanResultAggregator的aggregateDevices方法可能存在过滤逻辑,导致未配对设备被排除。可暂时跳过聚合器,直接打印原始扫描结果验证:

    fun startBleScanning(context: Context) {
        BleScanner(context).scan()
            .onEach { result ->
                Log.d("BT", "原始设备: ${result.device.address}, 名称: ${result.device.name}")
            }
            .launchIn(viewModelScope)
    }
    

    若原始结果能看到目标设备,需调整聚合器的过滤规则。

  • 处理系统与厂商限制

    • 后台扫描限制:Android 10+后台扫描需ACCESS_BACKGROUND_LOCATION权限,部分厂商定制系统(如小米、华为)会限制后台APP的蓝牙扫描能力,可尝试在前台运行APP或开启APP的后台运行权限。
    • 设备兼容性:部分老旧设备对BLE扫描支持有限,可更换测试设备验证。

内容的提问来源于stack exchange,提问作者Yury Matatov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 06:42:28