iOS技术类

AVAudioSession设置setCategory的相关参数

2024-04-24  本文已影响0人  喔牛慢慢爬

使用配置 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 正在录制视频 确保系统提供适当的音频信号处理,用于 AVAudioSessionCategoryRecordAVAudioSessionCategoryPlayAndRecord类别
AVAudioSessionModeMeasurement 正在执行音频输入或输出的测量 用于需要最大限度地减少系统提供的对输入和输出信号的信号处理量的 App。用于AVAudioSessionCategoryPlayback、 AVAudioSessionCategoryRecord、AVAudioSessionCategoryPlayAndRecord类别
AVAudioSessionModeMoviePlayback 正在播放视频 使用信号处理来增强某些音频路径的电影播放,例如内置扬声器或耳机。仅用于AVAudioSessionCategoryPlayback类别
AVAudioSessionModeVideoChat 正在使用在线视频会议 用于视频聊天 App,会优化设备的语音音调均衡,用于 AVAudioSessionCategoryPlayAndRecordAVAudioSessionCategoryRecord类别
AVAudioSessionModeSpokenAudio 用于连续语音的 Mode,在另一个 App 播放简短的音频提示时可以暂停音频 用于播放连续语音的 App,例如有声读物。如果另一个 App 播放语音提示,App 暂停自身音频。导致中断的 App 的音频结束后,可以恢复 App 的音频播放
AVAudioSessionModeVoicePrompt 正在使用文本转语音播放音频 App 连接到某些音频设备时,允许不同的路由行为。例如向用户播放简短提示的导航 App

3、AVAudioSession.CategoryOptions

Option 特性 使用场景
AVAudioSessionCategoryOptionMixWithOthers 是否与来自其他音频 App 中的音频混合。设置后 App 会将其音频与后台 App 中播放的音频混合,清除此 Option 会中断其他 Audio Session 可以与AVAudioSessionCategoryPlayAndRecord、 AVAudioSessionCategoryPlaybackAVAudioSessionCategoryMultiRoute 一起使用。如果使用 AVAudioSessionCategoryAmbien类别会自动设置此可选项。设置 AVAudioSessionCategoryOptionDuckOthersAVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWithOthers 会默认设置该可选项
AVAudioSessionCategoryOptionDuckOthers 播放音频时降低其他 AudioSession 音量。App的音频与其他 App的音频混合。但是当我们 App播放其音频时,系统会降低其他AudioSession 的音量以我们的 App 更加突出。清除此Option会中断其 AudioSession 可以与 AVAudioSessionCategoryPlayAndRecord、 AVAudioSessionCategoryPlayback、 AVAudioSessionCategoryMultiRoute一起使用
AVAudioSessionCategoryOptionAllowBluetooth 确定蓝牙免提设备是否为可用的输入路径。设置此Option以允许将音频输入和输出路由到配对的蓝牙免提配置文件 (HFP) 设备。如果清除此Option,配对的蓝牙 HFP 设备不会显示为可用的音频输入路由 AVAudioSessionCategoryPlayAndRecordAVAudioSessionCategoryRecord一起使用
AVAudioSessionCategoryOptionDefaultToSpeaker 确定音频是否默认为内置扬声器而不是接收器 只有在使用 AVAudioSessionCategoryPlayAndRecord 类别时才能设置此可选项。它用于修改路由行为,以便在没有使用其他配件(例如耳机)时,音频始终路由到扬声器而不是接收器
AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWithOthers 播放其音频时是否暂停来自其他AudioSession的语音音频内容。系统会将 App 的音频与其他音频会话混合,但会中断使用AVAudioSessionModeSpokenAudioAudioSession。在App的AudioSession 停用后,系统会恢复中断的应用程序的音频 可以与 AVAudioSessionCategoryPlayAndRecord、AVAudioSessionCategoryPlayback、 AVAudioSessionCategoryMultiRoute一起使用。设置该 Option 会隐式设置AVAudioSessionCategoryOptionMixWithOthers。当App使用此 Option配置时,请在停用Session时通知系统上的其他 App,以便它们可以恢复音频播放,使用AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation 停用 AudioSession
AVAudioSessionCategoryOptionAllowBluetoothA2DP 确定是否可以将此会话中的音频流式传输到支持高级音频分发配置文件 (A2DP) 的蓝牙设备 A2DP 是一种仅用于输出的立体声配置文件,适用于更高带宽的音频用例,例如音乐播放。如果 Catrgory 为 AVAudioSessionCategoryAmbient、AVAudioSessionCategorySoloAmbient、 AVAudioSessionCategoryPlayback系统会自动路由到A2DP端口
AVAudioSessionCategoryOptionAllowAirPlay 确定是否可以将此 Session 中的音频流式传输到 AirPlay 设备 对于选择CatrgoryAVAudioSessionCategoryPlayAndRecord只能显式设置此选项,对于大多数其他 Catagory,系统会隐式设置此可选项。对于AVAudioSessionCategoryMultiRouteAVAudioSessionCategoryRecord会隐式清除此可选项
AVAudioSessionCategoryOptionOverrideMutedMicrophoneInterruption 指示系统在使内置麦克风静音时是否中断AudioSession。某些设备包含隐私功能,可在特定条件下在硬件级别使内置麦克风静音。发生这种情况时,系统会中断从麦克风捕获输入的AudioSession。在系统将麦克风静音后尝试开始音频输入会导致错误 如果您的应用使用支持输入和输出的 Category,例如AVAudioSessionCategoryPlayAndRecord,可以设置此Option以禁用默认行为并继续使用Session
上一篇下一篇

猜你喜欢

热点阅读