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

BLE前台服务扫描1分钟后自动停止问题求助

问题原因分析

你的BLE前台服务在应用退到后台后扫描仅运行1分钟就停止,核心原因是Android系统的后台BLE扫描权限限制,具体细节如下:

  • 缺少后台位置权限:从Android 10(API 29)开始,系统要求应用必须持有ACCESS_BACKGROUND_LOCATION权限,才能在后台(包括前台服务运行但应用UI不可见的场景)持续进行BLE扫描。如果你的应用仅申请了ACCESS_FINE_LOCATION权限,系统会在应用退到后台后强制限制BLE扫描的运行时长(约1分钟),之后暂停扫描;当应用回到前台,扫描权限恢复,扫描重新启动。

  • 扫描模式的后台兼容性问题:你当前使用的SCAN_MODE_LOW_LATENCY是为前台场景优化的高功耗扫描模式,即使服务是前台状态,当应用UI退到后台时,系统可能会对该模式的扫描进行时长限制。如果是长期后台扫描需求,SCAN_MODE_LOW_POWER模式的兼容性更好,更不容易被系统限制。

解决建议
  1. 添加后台位置权限声明
    在AndroidManifest.xml中添加权限:
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

注意:该权限仅对API 29及以上版本生效,可配合android:minSdkVersion做版本适配。

  1. 动态申请后台位置权限
    在启动BLE服务前,除了请求ACCESS_FINE_LOCATION,还要主动请求ACCESS_BACKGROUND_LOCATION权限(针对API 29+设备),确保用户授权。

  2. 调整扫描模式(可选)
    如果你的扫描需求不需要极低延迟,可将扫描模式改为SCAN_MODE_LOW_POWER,减少系统对扫描的限制概率:

private val scanSettings = ScanSettings.Builder()
    .setScanMode(ScanSettings.SCAN_MODE_LOW_POWER)
    .build()

内容的提问来源于stack exchange,提问作者Diky Wahyudi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:05:17