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

如何获取Android音频配置枚举值的官方文档说明?

关于audio_session库Android端音频配置枚举值的疑问

我在Flutter中使用audio_session库做如下配置:

final session = await AudioSession.instance;
await session.configure(const AudioSessionConfiguration(
  avAudioSessionCategory: AVAudioSessionCategory.playAndRecord,
  avAudioSessionCategoryOptions: AVAudioSessionCategoryOptions.mixWithOthers,
  avAudioSessionMode: AVAudioSessionMode.measurement,
  avAudioSessionSetActiveOptions: AVAudioSessionSetActiveOptions.none,
  androidAudioAttributes: AndroidAudioAttributes(
    contentType: AndroidAudioContentType.sonification,
    flags: AndroidAudioFlags.none,
    usage: AndroidAudioUsage.alarm,
  ),
  androidAudioFocusGainType: AndroidAudioFocusGainType.gainTransient,
  androidWillPauseWhenDucked: true,
));

iOS相关配置的文档很容易找到,但Android端的枚举和常量值找不到官方说明,比如androidAudioFocusGainType的可选值gain、gainTransient、gainTransientExclusive、gainTransientMayDuck的具体含义和作用。目前AndroidAudioFocusGainType的官方文档完全没相关解释,想知道这是Android本身的问题,还是有我没注意到的信息来源?


回答

这不是Android本身的问题,audio_session库的Android端配置其实是直接映射了Android原生的音频焦点API,只是库的文档没有同步这些枚举值的说明。你可以通过Android原生的音频焦点概念来理解这些值:

AndroidAudioFocusGainType各值含义

  • gain:获取永久音频焦点,适用于长时间播放/录制场景(比如音乐播放器、录音应用)。当其他应用请求焦点时,你的应用会失去焦点,通常需要暂停播放或录制。
  • gainTransient:获取临时音频焦点,用于短时间音频操作(比如发送语音消息、播放提示音)。操作结束后会自动释放焦点,不会长时间抢占其他应用的焦点。
  • gainTransientExclusive:获取独占式临时焦点,适合不希望被打断的短时间操作(比如导航语音播报)。此时其他应用的音频会被暂停,直到你的操作结束释放焦点。
  • gainTransientMayDuck:获取临时焦点,允许其他应用降低音量(俗称“Duck”)继续播放,而非完全暂停。常见于导航提示、消息通知音等场景,既传递提示信息,又不打断正在播放的音乐。

补充说明

audio_session作为Flutter插件,核心是封装了Android和iOS的原生音频会话API,所以其Android端配置项本质上和原生Android AudioManager中的音频焦点请求常量一一对应。如果需要更细节的逻辑,可以参考Android原生关于音频焦点的核心定义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 05:25:16