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

Flutter使用CallKeep与Agora实现VOIP通话时无法收发音频问题求助

问题根因

从代码和场景描述来看,主要有以下几个明确的问题点:

  • 代码存在主动静音配置错误
  • FCM后台回调运行在独立Isolate,无法正常初始化音视频相关能力
  • 缺少必要的音频场景配置和权限声明

解决方案

1. 修复静音配置

你在接听来电的回调中主动调用了_callKeep.setMutedCall(callUUID, true)将通话设为静音,直接删除该行即可:

Timer(const Duration(seconds: 1), () {
  _callKeep.setCurrentCallActive(callUUID);
  // 删除下面这行静音代码
  // _callKeep.setMutedCall(callUUID, true);
});

2. 迁移Agora初始化逻辑到主Isolate

FCM的onBackgroundMessage回调运行在独立的后台Isolate,该Isolate的生命周期不稳定,且和应用主Isolate内存隔离,在此处初始化的RtcEngine实例无法正常调用系统音频硬件。
你需要将initAgora的调用逻辑迁移到主Isolate执行:在CallKeep的接听回调中发送跨Isolate消息/事件通知主Isolate,主Isolate收到事件后再执行Agora初始化、加入频道的逻辑。

3. 补充Agora音频配置

在initAgora方法中补充通话场景相关的音频配置,确保音频采集和播放正常:

Future<void> initAgora() async {
  engine = await RtcEngine.create(AGORA_APP_ID);
  // 新增:配置音频为通话场景
  await engine.setAudioProfile(AudioProfile.Default, AudioScenario.ChatRoomEntertainment);
  // 新增:开启本地音频采集,取消静音配置
  await engine.enableLocalAudio(true);
  await engine.muteLocalAudioStream(false);
  await engine.muteAllRemoteAudioStreams(false);

  engine.setEventHandler(RtcEngineEventHandler(
    joinChannelSuccess: (channel, uid, elapsed) {
      print("local user [$uid] joined");
    },
    userJoined: (uid, elapsed) {
      print("remote user [$uid] joined");
      remoteUid = uid;
    },
    userOffline: (uid, reason) {
      print("remote user [$uid] left channel $reason");
      remoteUid = null;
      engine.leaveChannel();
    },
  ));

  try {
    await engine.enableAudio();
    await engine.joinChannel(AGORA_TOKEN, "firstChannel", null, 0);
  } catch (e) {
    print("error with agora = $e");
  }
}

4. 检查权限配置

确保Android端AndroidManifest.xml已经添加以下权限:

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<!-- Android 12+ 后台麦克风权限 -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:24:00