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