- 在初始化 player 的時候, 添加通知監(jiān)聽的方法, 監(jiān)聽
AVAudioSessionRouteChangeNotification
變化, 獲取當(dāng)前輸出設(shè)備的變化
- 當(dāng)獲得通知的時候, 調(diào)用
routeChanged:
方法, 在此方法中通過 [notification.userInfo valueForKey:AVAudioSessionRouteChangePreviousRouteKey]
獲取通知中的上一個設(shè)備
對取得的上一個設(shè)備, 獲取其中的 [outputs firstObject].portType
, 與 AVAudioSessionPortHeadphones
相同則代表上一個設(shè)備是耳機(jī)設(shè)備, 即表示此時耳機(jī)已經(jīng)移除
- 耳機(jī)已經(jīng)移除, 所以進(jìn)行歌曲暫停操作
- 在界面結(jié)束后移除通知
5個步驟
1. 為AVAudioSessionRouteChangeNotification addObserver
2. 接到通知后從notification.userInfo中獲取AVAudioSessionRouteChangeReasonKey對應(yīng)的value
3. 調(diào)用value的-unsignedIntegerValue方法獲取AVAudioSessionRouteChangeReason對應(yīng)的routeChangeReason
4. 判斷routeChangeReason是否為AVAudioSessionRouteChangeReasonOldDeviceUnavailable,如果是繼續(xù),如果不是return
5. 讀取[AVAudioSession sharedInstance].currentRoute.outputs的第一個元素,判斷其portType是否為
AVAudioSessionPortHeadphones,如果是調(diào)用打斷精绎,如果不是return
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者