0%

音频会话(Audio Session)

音频会话简介

无论是否使用音频功能,所有的iOS应用都会有一个音频会话(Audio Session).默认的音频会话会有以下一些预配置:

  • 支持音频播放,但不支持音频录制
  • 当设备切换到静音模式时,应用的音频也会处于静音状态
  • 当设备锁定时,应用音频会处于静音状态
  • 当应用播放音频时,其他所有后台程序的音频都会处于静音状态

音频会话分类

AV Foundation定义了7种分类来描述应用程序的音频行为,如下表:

| 分类 | 作用 | 是否允许混音 | 音频输入 | 音频输出 |
|
| Ambiend | 游戏,效率类应用 | 是 | | 是|
| Solo Ambient(默认) | 游戏,效率类应用 | | | 是 |
| Playback | 音视频播放器 | 可选 | | 是 |
| Record | 录音,音频捕捉 | | 是 | 是 |
| Play and Record | VoIP | 可选 | 是 | 是 |
| Audio Processing | 离线会话和处理 |
| Multi-Route | 使用外部硬件的高级A/V处理程序 | | 是 | 是 |

上面分类足以满足大部分场景需要,如果需要更复杂的功能,其中的一些分类还可以通过对应的options和modes方法进行自定义开发.

配置一个音频会话

音频会话在app的生命周期中是可以动态修改的,但通常只需要在应用启动时进行一次配置即可.

   	AVAudioSession *session = [AVAudioSession sharedInstance];
    [session setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
    [session setActive:YES error:nil];