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

Flutter后台麦克风权限保留及API33设备录音中断问题排查

问题分析与解决方案

核心原因

你的问题主要是Android API 33+对后台麦克风访问的严格管控,同时权限设置也会直接影响录音稳定性,模拟器与真机的差异源于旧版本系统无此类限制。

具体原因拆解

1. 权限设置问题

如果用户给应用的麦克风权限是「仅在使用应用时允许」,API33+系统会判定后台状态的应用不属于“使用中”,通常在20秒到1分钟后自动收回麦克风权限,导致录音中断(表现为静音段);当应用重新获得焦点时,系统会重新授权麦克风,录音恢复。而API26系统没有这种精细化的权限生命周期管控,所以模拟器可以正常后台录音。

2. 系统后台资源回收

即使权限设为「始终允许」,API33+也会对后台应用的麦克风资源进行管控:如果应用没有通过前台服务维持活跃状态,系统会认为应用处于非活跃状态,一段时间后回收麦克风资源,尤其是在系统资源紧张时。

解决步骤

1. 修正权限配置与申请

  • 在android/app/src/main/AndroidManifest.xml中添加必要权限:
    <!-- 基础录音权限 -->
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <!-- API31+ 前台服务需要通知权限 -->
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
    <!-- 声明依赖麦克风硬件 -->
    <uses-feature android:name="android.hardware.microphone" android:required="true" />
    
  • 动态申请权限时,必须请求「始终允许」的麦克风权限(而非仅使用时允许)。若使用permission_handler包,示例代码:
    final status = await Permission.microphone.request();
    if (status.isPermanentlyDenied) {
      // 引导用户前往系统设置页开启权限
    } else if (status.isGranted) {
      // 启动录音逻辑
    }
    

2. 启用前台服务绑定录音

API33+要求后台录音必须通过前台服务维持,避免被系统回收:

  • 在AndroidManifest.xml中声明前台服务(指定麦克风类型):
    <service
        android:name="com.dooboolab.fluttersound.FlutterSoundRecorderService"
        android:foregroundServiceType="microphone" />
    
  • 使用flutter_sound录音时,开启前台服务通知:
    await flutterSoundRecorder.startRecorder(
      toFile: 'recording.aac',
      androidAudioSource: AndroidAudioSource.mic,
      enableNotification: true, // 启用前台服务通知
      notificationConfig: NotificationConfig(
        channelId: 'recording_channel',
        channelName: '后台录音',
        channelDescription: '应用正在后台录音',
      ),
    );
    

3. 适配flutter_sound版本

确保使用的flutter_sound版本适配Android API33,建议升级到最新稳定版(旧版本可能未处理新系统的权限规则)。

验证步骤

  1. 先在应用设置中手动把麦克风权限改为「始终允许」,测试后台录音是否稳定;
  2. 如果仍中断,检查前台服务是否正常启动(是否显示录音状态通知);
  3. 最后确认flutter_sound的配置参数是否正确设置了前台服务相关选项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:33:11