切换听筒/扬声器: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:我的理解是将音频输出设置听筒,系统默认应该就是听筒,因为官方文档给出的解释是:

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];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容