切换听筒/扬声器:AVAudioSession

iOS开发中切换扬声器或听筒使用的是AVAudioSession这个类。

AVAudioSession

一个单独对象,用于向iOS表达app使用音频的意图以及设置app的音频上下文。

主要功能:

1.激活或者取消激活app的音频会话
2.设置音频会话类型
3.配置音频采样率、I / O的缓冲时间和频道
4.对重要的音频事件作出响应,例如改变底层媒体进程的响应。

切换听筒/扬声器用到的主要方法:

1.单例方法,用于实例化

//返回一个单例的AVAudioSession对象
+ (AVAudioSession *)sharedInstance;

2.设置输出端口的方法

- (BOOL)overrideOutputAudioPort:(AVAudioSessionPortOverride)portOverride error:(NSError * _Nullable *)outError;

其中portOverride参数有2个可选参数:

AVAudioSessionPortOverrideNone:我的理解是将音频输出设置听筒,系统默认应该就是听筒,因为官方文档给出的解释是:

切换听筒/扬声器:AVAudioSession_第1张图片
Snip20161216_1.png

AVAudioSessionPortOverrideSpeaker:音频输出设置为扬声器。

3.App占用听筒或扬声器

由于你的APP使用音频通道时其他App可能正在使用它,所以需要调用这个方法。

- (BOOL)setActive:(BOOL)active error:(NSError * _Nullable *)outError;

使用方法:

//拿到AVAudioSession的单例对象
AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 

//设置为听筒模式
//[audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil];
  
//设置为公放模式
[audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];

 //让我的App占用听筒或扬声器
 [audioSession setActive:YES error:nil];

你可能感兴趣的:(切换听筒/扬声器:AVAudioSession)