拔耳機暫停歌曲播放的操作思路

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

推薦閱讀更多精彩內容