- 在初始化 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
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。