AVAudioSession 和 App 之间的关系
每个 App 有对应的 AVAudioSession 实例对象,它是介于应用程序与设备音频硬件之间的中介
func setUp() {
let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(.playAndRecord)
// 启动 AudioSession
try session.setActive(true)
} catch {
}
}
AVAudioSession.Category
枚举 | 作用 |
---|---|
ambient |
用于非主要音频,例如背景音乐或环境音效。当其他音频应用程序开始播放时,该应用程序的音频会被淡出 |
soloAmbient |
类似于.ambient,但当该应用程序的音频开始播放时,其他音频应用程序的音频会被淡出 |
playback |
用于主要音频播放,例如音乐播放器或媒体应用程序。其他音频应用程序的音频将被停止 |
record |
用于音频录制,例如录音应用程序。其他音频应用程序的音频将被停止 |
playAndRecord |
用于同时进行音频播放和录制的应用程序,例如VoIP应用程序。它允许应用程序在录制和播放音频时同时进行 |
multiRoute |
用于支持多个音频输出路径的应用程序,例如连接到扬声器和耳机的应用程序 |
AVAudioSession 的功能
- 设置类别 AVAudioSession.Category
- 处理音频中断、中断结束以及硬件音频路由更改事件
- 针对硬件特性进行优化
获取麦克风的采样率
let hwFormat = audioSession.preferredSampleRate