- 在初始化 player 的时候, 添加通知监听的方法, 监听
AVAudioSessionRouteChangeNotification
变化, 获取当前输出设备的变化
- 当获得通知的时候, 调用
routeChanged:
方法, 在此方法中通过 [notification.userInfo valueForKey:AVAudioSessionRouteChangePreviousRouteKey]
获取通知中的上一个设备
对取得的上一个设备, 获取其中的 [outputs firstObject].portType
, 与 AVAudioSessionPortHeadphones
相同则代表上一个设备是耳机设备, 即表示此时耳机已经移除
- 耳机已经移除, 所以进行歌曲暂停操作
- 在界面结束后移除通知
5个步骤
1. 为AVAudioSessionRouteChangeNotification addObserver
2. 接到通知后从notification.userInfo中获取AVAudioSessionRouteChangeReasonKey对应的value
3. 调用value的-unsignedIntegerValue方法获取AVAudioSessionRouteChangeReason对应的routeChangeReason
4. 判断routeChangeReason是否为AVAudioSessionRouteChangeReasonOldDeviceUnavailable,如果是继续,如果不是return
5. 读取[AVAudioSession sharedInstance].currentRoute.outputs的第一个元素,判断其portType是否为
AVAudioSessionPortHeadphones,如果是调用打断,如果不是return