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

Flutter应用使用audioplayers时,来电能否暂停音频播放?

解决audioplayers来电时音频持续播放的问题

要实现来电时暂停音频,核心是利用音频会话的中断监听机制——当系统来电时,会触发音频中断事件,我们只需捕获这个事件并调用播放器的暂停方法即可。以下是具体实现步骤:

1. 配置音频会话并监听中断事件

可以借助audio_session插件(与audioplayers兼容)统一管理跨平台音频会话,监听来电等中断事件:

首先在pubspec.yaml添加依赖:

dependencies:
  audioplayers: ^4.0.0 # 使用最新稳定版
  audio_session: ^0.1.16

然后编写初始化和监听逻辑:

import 'package:audioplayers/audioplayers.dart';
import 'package:audio_session/audio_session.dart';

final AudioPlayer _player = AudioPlayer();

Future<void> setupAudio() async {
  // 配置音频会话为音乐播放模式
  final session = await AudioSession.instance;
  await session.configure(const AudioSessionConfiguration.music());

  // 监听音频中断事件
  session.interruptionEventStream.listen((event) {
    if (event.type == AudioInterruptionType.begin) {
      // 来电/其他音频抢占焦点,暂停播放
      _player.pause();
    } else if (event.type == AudioInterruptionType.end) {
      // 中断结束(如通话结束),可选恢复播放
      if (event.iosResumeOptions == AVAudioSessionInterruptionOptions.shouldResume) {
        _player.resume();
      }
    }
  });

  // 加载并播放音频(示例)
  await _player.play(UrlSource('your_audio_path.mp3'));
}

2. 纯audioplayers内置配置(无需额外插件)

如果不想引入额外插件,也可以通过audioplayers自带的AudioContext配置音频会话,让系统自动处理焦点抢占,同时建议结合状态监听确保可靠性:

final AudioPlayer _player = AudioPlayer();

Future<void> setupAudio() async {
  // 配置音频上下文,让系统识别为音乐播放
  await _player.setAudioContext(const AudioContext(
    android: AudioContextAndroid(
      usage: AndroidUsage.media,
      contentType: AndroidContentType.music,
    ),
    ios: AudioContextIOS(
      category: AVAudioSessionCategory.playback,
    ),
  ));

  // 监听播放器状态变化,辅助处理焦点丢失后的逻辑
  _player.onPlayerStateChanged.listen((state) {
    if (state == PlayerState.paused) {
      // 可在这里执行暂停后的额外逻辑
    }
  });

  await _player.play(UrlSource('your_audio_path.mp3'));
}

关键说明

  • 安卓平台:配置AndroidUsage.media后,来电时系统会抢占音频焦点,触发中断事件,此时调用pause()即可暂停播放。
  • iOS平台:设置AVAudioSessionCategory.playback后,系统会在来电时发送中断通知,通过audio_session的监听可精准捕获并处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:10:30