AudioSession简介
iOS 通过sessions和AudioSession APIs处理音频行为,交互(图来自apple)
通过AudioSession API,可以控制App的audio相关的行为
- 为app选择输入输出的路由 (通过扬声器还是听筒播放)
- 协调音频播放的app之间的关联,以及系统的声音处理
- 处理被其他apps打断
- 创建一个录音或者播放音乐的
定义一个 AudioSession 是一个单例
[AVAudioSession sharedInstance]
设置Category 通过调用音频会话对象的setCategory:error:实例方法,来从iOS应用可用的不同类别中作出选择
相关方法
/* set session category */
- (BOOL)setCategory:(NSString *)category error:(NSError **)outError;
/* set session category with options */
- (BOOL)setCategory:(NSString *)category withOptions: (AVAudioSessionCategoryOptions)options error:(NSError **)outError NS_AVAILABLE_IOS(6_0);
Category 的类型
* AVAudioSessionCategorySoloAmbient
会停止其他程序的音频播放。当设备被设置为静音模式,app也同样被停止
* AVAudioSessionCategoryRecord
仅用来录音,无法播放音频
* AVAudioSessionCategoryPlayback
会停止其它音频播放,并且能在后台播放,锁屏and静音模式下均可
* AVAudioSessionCategoryPlayAndRecord
能播也能录,播放默认声音是从听筒出来
* AVAudioSessionCategoryAmbient
app的声音可与其它app共存,但锁屏和静音情况会被停止,除非当前app是唯一播放的app
激活当前的AudioSession
- (BOOL)setActive:(BOOL)active error:(NSError **)outError;
- (BOOL)setActive:(BOOL)active withFlags:(NSInteger)flags error:(NSError **)outError NS_DEPRECATED_IOS(4_0, 6_0);
- (BOOL)setActive:(BOOL)active withOptions:(AVAudioSessionSetActiveOptions)options error:(NSError **)outError NS_AVAILABLE_IOS(6_0);