線路改變
- 在iOS設(shè)備上添加或移除音頻輸入太雨、輸出線路時, 會發(fā)生線路改變, 有多重原因會導(dǎo)致線路變化, 比如用戶插入耳機(jī)或斷開USB麥克風(fēng)
- 當(dāng)這些事情發(fā)生時, 音頻會根據(jù)情況<a>改變輸入或輸出路線</a>, 同時AVAudioSession會廣播一個描述該變化的通知給所有相關(guān)的監(jiān)聽器
- 線路變化時AVAudioSession會發(fā)出<a>AVAudioSessionRouteChangeNotification</a>通知
- 在系統(tǒng)默認(rèn)的情況下, 音頻播放, 插上耳機(jī)后線路改變, 在耳機(jī)中播放, 當(dāng)用戶拔出耳機(jī)后, 音頻又會在手機(jī)上播放
- 我們可以通過監(jiān)聽線路改變, 控制當(dāng)耳機(jī)拔出后停止音樂播放的行為
具體代碼
// 會話線路改變通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleRouteChange:) name:AVAudioSessionRouteChangeNotification object:nil];
/**
音頻會話線路變化通知
*/
- (void)handleRouteChange:(NSNotification *)notification
{
// 通知信息
NSDictionary *info = notification.userInfo;
// 獲取線路信息
AVAudioSessionRouteChangeReason reason = [info[AVAudioSessionRouteChangeReasonKey] unsignedIntegerValue];
// 當(dāng)耳機(jī)拔出后觸發(fā)
if (reason == AVAudioSessionRouteChangeReasonOldDeviceUnavailable) {
// 自定義的一個播放器, 當(dāng)耳機(jī)拔出后停止播放音樂
[self.player pause];
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者