线路改变
- 在iOS设备上添加或移除音频输入、输出线路时, 会发生线路改变, 有多重原因会导致线路变化, 比如用户插入耳机或断开USB麦克风
- 当这些事情发生时, 音频会根据情况<a>改变输入或输出路线</a>, 同时AVAudioSession会广播一个描述该变化的通知给所有相关的监听器
- 线路变化时AVAudioSession会发出<a>AVAudioSessionRouteChangeNotification</a>通知
- 在系统默认的情况下, 音频播放, 插上耳机后线路改变, 在耳机中播放, 当用户拔出耳机后, 音频又会在手机上播放
- 我们可以通过监听线路改变, 控制当耳机拔出后停止音乐播放的行为
具体代码
// 会话线路改变通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleRouteChange:) name:AVAudioSessionRouteChangeNotification object:nil];
/**
音频会话线路变化通知
*/
- (void)handleRouteChange:(NSNotification *)notification
{
// 通知信息
NSDictionary *info = notification.userInfo;
// 获取线路信息
AVAudioSessionRouteChangeReason reason = [info[AVAudioSessionRouteChangeReasonKey] unsignedIntegerValue];
// 当耳机拔出后触发
if (reason == AVAudioSessionRouteChangeReasonOldDeviceUnavailable) {
// 自定义的一个播放器, 当耳机拔出后停止播放音乐
[self.player pause];
}
}