iOS開發(fā)中切換揚聲器或聽筒使用的是AVAudioSession這個類簿训。
AVAudioSession
一個單獨對象,用于向iOS表達(dá)app使用音頻的意圖以及設(shè)置app的音頻上下文袜漩。
主要功能:
1.激活或者取消激活app的音頻會話
2.設(shè)置音頻會話類型
3.配置音頻采樣率、I / O的緩沖時間和頻道
4.對重要的音頻事件作出響應(yīng)僧凤,例如改變底層媒體進(jìn)程的響應(yīng)深浮。
切換聽筒/揚聲器用到的主要方法:
1.單例方法,用于實例化
//返回一個單例的AVAudioSession對象
+ (AVAudioSession *)sharedInstance;
2.設(shè)置輸出端口的方法
- (BOOL)overrideOutputAudioPort:(AVAudioSessionPortOverride)portOverride error:(NSError * _Nullable *)outError;
其中portOverride參數(shù)有2個可選參數(shù):
AVAudioSessionPortOverrideNone:我的理解是將音頻輸出設(shè)置聽筒池充,系統(tǒng)默認(rèn)應(yīng)該就是聽筒桩引,因為官方文檔給出的解釋是:
AVAudioSessionPortOverrideSpeaker:音頻輸出設(shè)置為揚聲器。
3.App占用聽筒或揚聲器
由于你的APP使用音頻通道時其他App可能正在使用它纵菌,所以需要調(diào)用這個方法阐污。
- (BOOL)setActive:(BOOL)active error:(NSError * _Nullable *)outError;
使用方法:
//拿到AVAudioSession的單例對象
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
//設(shè)置為聽筒模式
//[audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil];
//設(shè)置為公放模式
[audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
//讓我的App占用聽筒或揚聲器
[audioSession setActive:YES error:nil];