使用配置 App播放会话的类别和模式,以及可选项配置。
open func setCategory(_ category: AVAudioSession.Category, mode: AVAudioSession.Mode, options: AVAudioSession.CategoryOptions = []) throws
1、AVAudioSession.Category设置基本行为类别
Category |
作用 |
功能 |
锁屏状态 |
APP打断 |
AVAudioSessionCategoryAmbient |
App播放声音可与其他App播放的声音共存 |
播放音频 |
被静音 |
不会打断 |
AVAudioSessionCategorySoloAmbient |
默认值播放音频,用于视频流媒体 |
播放音频 |
被静音 |
会打断 |
AVAudioSessionCategoryPlayback |
播放音频,用于音乐流媒体播放 |
播放音频 |
继续播放 |
会打断,可修改 |
AVAudioSessionCategoryRecord |
录制音频同时使播放音频静音,用于录制音频 |
录制和音频 |
锁屏继续录制 |
会打断 |
AVAudioSessionCategoryPlayAndRecord |
在录音的同时播放其他声音 |
录制和播放音频 |
继续播放 |
会打断,可修改 |
AVAudioSessionCategoryMultiRoute |
允许多条音频流同步输入和输出 |
录制和播放音频 |
被静音 |
会打断 |
2、AVAudioSession.Mode为类别添加使用mode
Mode |
特性 |
使用场景 |
AVAudioSessionModeDefault |
默认Mode |
可以用于所有会话类别 |
AVAudioSessionModeVoiceChat |
正在使用双向语音通信 |
优化设备的语音音调均衡,用于 AVAudioSessionCategoryPlayAndRecord 类别 |
AVAudioSessionModeGameChat |
使用GameKit 语音聊天服务时设置 |
仅对 AVAudioSessionCategoryPlayAndRecord 类别生效 |
AVAudioSessionModeVideoRecording |
正在录制视频 |
确保系统提供适当的音频信号处理,用于 AVAudioSessionCategoryRecord 或 AVAudioSessionCategoryPlayAndRecord 类别 |
AVAudioSessionModeMeasurement |
正在执行音频输入或输出的测量 |
用于需要最大限度地减少系统提供的对输入和输出信号的信号处理量的 App。用于AVAudioSessionCategoryPlayback、 AVAudioSessionCategoryRecord、AVAudioSessionCategoryPlayAndRecord 类别 |
AVAudioSessionModeMoviePlayback |
正在播放视频 |
使用信号处理来增强某些音频路径的电影播放,例如内置扬声器或耳机。仅用于AVAudioSessionCategoryPlayback 类别 |
AVAudioSessionModeVideoChat |
正在使用在线视频会议 |
用于视频聊天 App,会优化设备的语音音调均衡,用于 AVAudioSessionCategoryPlayAndRecord 或 AVAudioSessionCategoryRecord 类别 |
AVAudioSessionModeSpokenAudio |
用于连续语音的 Mode ,在另一个 App 播放简短的音频提示时可以暂停音频 |
用于播放连续语音的 App,例如有声读物。如果另一个 App 播放语音提示,App 暂停自身音频。导致中断的 App 的音频结束后,可以恢复 App 的音频播放 |
AVAudioSessionModeVoicePrompt |
正在使用文本转语音播放音频 |
App 连接到某些音频设备时,允许不同的路由行为。例如向用户播放简短提示的导航 App |
3、AVAudioSession.CategoryOptions
Option |
特性 |
使用场景 |
AVAudioSessionCategoryOptionMixWithOthers |
是否与来自其他音频 App 中的音频混合。设置后 App 会将其音频与后台 App 中播放的音频混合,清除此 Option 会中断其他 Audio Session |
可以与AVAudioSessionCategoryPlayAndRecord、 AVAudioSessionCategoryPlayback 和 AVAudioSessionCategoryMultiRoute 一起使用。如果使用 AVAudioSessionCategoryAmbien 类别会自动设置此可选项。设置 AVAudioSessionCategoryOptionDuckOthers 或 AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWithOthers 会默认设置该可选项 |
AVAudioSessionCategoryOptionDuckOthers |
播放音频时降低其他 AudioSession 音量。App的音频与其他 App的音频混合。但是当我们 App播放其音频时,系统会降低其他AudioSession 的音量以我们的 App 更加突出。清除此Option 会中断其 AudioSession
|
可以与 AVAudioSessionCategoryPlayAndRecord、 AVAudioSessionCategoryPlayback、 AVAudioSessionCategoryMultiRoute 一起使用 |
AVAudioSessionCategoryOptionAllowBluetooth |
确定蓝牙免提设备是否为可用的输入路径。设置此Option 以允许将音频输入和输出路由到配对的蓝牙免提配置文件 (HFP) 设备。如果清除此Option ,配对的蓝牙 HFP 设备不会显示为可用的音频输入路由 |
与AVAudioSessionCategoryPlayAndRecord 或AVAudioSessionCategoryRecord 一起使用 |
AVAudioSessionCategoryOptionDefaultToSpeaker |
确定音频是否默认为内置扬声器而不是接收器 |
只有在使用 AVAudioSessionCategoryPlayAndRecord 类别时才能设置此可选项。它用于修改路由行为,以便在没有使用其他配件(例如耳机)时,音频始终路由到扬声器而不是接收器 |
AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWithOthers |
播放其音频时是否暂停来自其他AudioSession 的语音音频内容。系统会将 App 的音频与其他音频会话混合,但会中断使用AVAudioSessionModeSpokenAudio 的AudioSession 。在App的AudioSession 停用后,系统会恢复中断的应用程序的音频 |
可以与 AVAudioSessionCategoryPlayAndRecord、AVAudioSessionCategoryPlayback、 AVAudioSessionCategoryMultiRoute 一起使用。设置该 Option 会隐式设置AVAudioSessionCategoryOptionMixWithOthers 。当App使用此 Option 配置时,请在停用Session 时通知系统上的其他 App,以便它们可以恢复音频播放,使用AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation 停用 AudioSession
|
AVAudioSessionCategoryOptionAllowBluetoothA2DP |
确定是否可以将此会话中的音频流式传输到支持高级音频分发配置文件 (A2DP) 的蓝牙设备 |
A2DP 是一种仅用于输出的立体声配置文件,适用于更高带宽的音频用例,例如音乐播放。如果 Catrgory 为 AVAudioSessionCategoryAmbient、AVAudioSessionCategorySoloAmbient、 AVAudioSessionCategoryPlayback 系统会自动路由到A2DP端口 |
AVAudioSessionCategoryOptionAllowAirPlay |
确定是否可以将此 Session 中的音频流式传输到 AirPlay 设备 |
对于选择Catrgory 为AVAudioSessionCategoryPlayAndRecord 只能显式设置此选项,对于大多数其他 Catagory ,系统会隐式设置此可选项。对于AVAudioSessionCategoryMultiRoute 或AVAudioSessionCategoryRecord 会隐式清除此可选项 |
AVAudioSessionCategoryOptionOverrideMutedMicrophoneInterruption |
指示系统在使内置麦克风静音时是否中断AudioSession 。某些设备包含隐私功能,可在特定条件下在硬件级别使内置麦克风静音。发生这种情况时,系统会中断从麦克风捕获输入的AudioSession 。在系统将麦克风静音后尝试开始音频输入会导致错误 |
如果您的应用使用支持输入和输出的 Category ,例如AVAudioSessionCategoryPlayAndRecord ,可以设置此Option 以禁用默认行为并继续使用Session
|