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

Angular PWA语音通话时锁屏避免麦克风静音的解决方法

解决方案

1. 监听Agora轨道状态,自动恢复麦克风

Agora的本地麦克风轨道在系统回收资源时会触发状态变更,你可以在代码里监听LocalAudioTrack的state-change事件,当轨道变成paused或stopped时,重新初始化麦克风轨道并替换当前轨道:

// 初始化时监听本地音频轨道状态
this.localAudioTrack.on('state-change', (newState, oldState) => {
  if (newState === 'paused' || newState === 'stopped') {
    // 重新创建本地音频轨道
    AgoraRTC.createMicrophoneAudioTrack().then(newTrack => {
      // 替换旧轨道并重新发布
      this.client.replaceTrack(this.localAudioTrack, newTrack).then(() => {
        this.localAudioTrack.close();
        this.localAudioTrack = newTrack;
      });
    }).catch(err => {
      console.error('重建麦克风轨道失败:', err);
    });
  }
});

2. 配置PWA后台音频权限

在manifest.json里添加音频相关权限和特性,让系统允许PWA在后台保留麦克风访问:

{
  "name": "你的通话应用",
  "permissions": ["audio-capture", "background-audio"],
  "background_service": {
    "service_worker": "ngsw-worker.js"
  },
  "display": "standalone",
  "orientation": "portrait"
}

注意:部分Android设备需要用户手动开启“后台录音”权限,通话前可以引导用户去设置里打开。

3. iOS专属适配

iOS对PWA后台麦克风限制更严,锁屏后容易被中断,可以试试这俩办法:

  • 确保PWA已经添加到主屏幕(iOS只给添加到主屏幕的PWA开放部分后台权限)
  • 用AudioContext维持音频会话:通话时创建一个静默音频源,不让系统销毁音频会话
// 初始化音频上下文,保持会话活跃
private audioContext: AudioContext;

startAudioSession() {
  this.audioContext = new AudioContext();
  const oscillator = this.audioContext.createOscillator();
  oscillator.connect(this.audioContext.destination);
  oscillator.frequency.setValueAtTime(0, this.audioContext.currentTime);
  oscillator.start();
}

通话开始时调用这个方法,结束时记得关闭audioContext。

4. 前台服务(Android最后选项)

如果上面的方法都没用,前台服务是Android上强制保麦克风权限的方案。可以用Capacitor/Cordova的插件实现:

// Capacitor前台服务示例
import { ForegroundService } from '@capacitor-community/foreground-service';

async startForegroundService() {
  await ForegroundService.start({
    id: 1,
    title: '语音通话中',
    text: '保持麦克风活跃',
    icon: 'ic_notification',
  });
}

注意:就算用了前台服务,部分国产安卓系统手动锁屏后还是可能限制麦克风,得引导用户把应用加入后台白名单。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:12:42