iOS播放音頻時(shí)來(lái)電打斷播放,掛電話(huà)繼續(xù)播放處理方法總結(jié)

需求:

蘋(píng)果端,需要在播放音頻時(shí)(無(wú)論是前臺(tái)還是后臺(tái)),來(lái)了電話(huà),暫停音頻,電話(huà)掛斷以后,音頻繼續(xù)播放。

實(shí)現(xiàn):(在delegate.m中)

在didFinishLaunchingWithOptions方法中寫(xiě)如下語(yǔ)句

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  AudioSessionInitialize(NULL, NULL, interruptionListenner, (__bridge void*)self);
  …………………………
}

然后在delegate.m中添加如下方法

void interruptionListenner(void* inClientData, UInt32 inInterruptionState)
{
    NewsDetailController *newsDetailVC = [NewsDetailController sharedMp3Player];
    AppDelegate* pTHIS = (__bridge AppDelegate*)inClientData;
    if (pTHIS) {
        NSLog(@"interruptionListenner %u", (unsigned int)inInterruptionState);
        if (kAudioSessionBeginInterruption == inInterruptionState) {//來(lái)電話(huà)了(按照個(gè)人音頻需求進(jìn)行處理,我的是暫停播放)
            NSLog(@"Begin interruption");
            if ([newsDetailVC isPlaying]) {//如果當(dāng)前mp3處于播放狀態(tài)
                [newsDetailVC playButtonPressed:newsDetailVC.playBtn];//暫停播放
            }
        }
        else {//掛了電話(huà)(按照個(gè)人音頻需求進(jìn)行處理,我的是繼續(xù)播放)
            NSLog(@"Begin end interruption");
            
            if (![newsDetailVC isPlaying]) {//如果當(dāng)前mp3處于暫停狀態(tài)
                [newsDetailVC playButtonPressed:newsDetailVC.playBtn];//繼續(xù)播放
            }
            
            NSLog(@"End end interruption");
        }
        
    }
}

在此記錄,以便以后查看,也可讓更多需要此需求的人得到解答。
——凡幾多

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容