日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS AVAudioPlayer和AVAudioPlayerDelegate-音频播放处理中断

發布時間:2023/12/13 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS AVAudioPlayer和AVAudioPlayerDelegate-音频播放处理中断 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
學習總是在進行。 一、AVAudioPlayer如何處理中斷 AVAudioPlayer類提供了代理方法,用來處理當播放音頻文件時,發生來電、鬧鐘等事件。設置代理并遵守AVAudioPlayerDelegate協議,<span style="font-family: Arial, Helvetica, sans-serif;">AVAudioPlayerDelegate中提供的代理方法</span>
二、AVAudioPlayer代理方法實現 看例子:
1.加入音頻相應的框架到項目中。 #import2.聲明音頻播放類,并且實現AVAudioPlayerDelegate協議@interface SquareViewController : UIViewController<AVAudioPlayerDelegate>{AVAudioPlayer *_audioPlayer; } @property (nonatomic,retain)AVAudioPlayer *audioPlayer;3.實現AVAudioPlayerDelegate協議方法。#pragma mark - AVAudioPlayerDelegate// 音頻播放完成時 - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{// 音頻播放完成時,調用該方法。// 參數flag:如果音頻播放無法解碼時,該參數為NO。//當音頻被終端時,該方法不被調用。而會調用audioPlayerBeginInterruption方法// 和audioPlayerEndInterruption方法}// 解碼錯誤 - (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error{NSLog(@"解碼錯誤!");}// 當音頻播放過程中被中斷時 - (void)audioPlayerBeginInterruption:(AVAudioPlayer *)player{// 當音頻播放過程中被中斷時,執行該方法。比如:播放音頻時,電話來了!// 這時候,音頻播放將會被暫停。 }// 當中斷結束時 - (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withOptions:(NSUInteger)flags{// AVAudioSessionInterruptionFlags_ShouldResume 表示被中斷的音頻可以恢復播放了。// 該標識在iOS 6.0 被廢除。需要用flags參數,來表示視頻的狀態。NSLog(@"中斷結束,恢復播放");if (flags == AVAudioSessionInterruptionFlags_ShouldResume && player != nil){[player play];}}//- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withFlags:(NSUInteger)flags { // // //該方法在iOS 6.0 中被廢除 // if (flags == AVAudioSessionInterruptionFlags_ShouldResume && player != nil){ // [player play]; // } // //} // //- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player{ // //該方法被廢除 // //}注意:因為以上兩個方法在iOS 6.0 已經被廢除。故注釋。4.使用音頻播放器播放音頻文件//異步加載音頻播放器進行播放self.view.backgroundColor = [UIColor whiteColor];dispatch_queue_t dispatchQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispatch_async(dispatchQueue, ^(void) {NSBundle *mainBundle = [NSBundle mainBundle];NSString *filePath = [mainBundle pathForResource:@"mySong" ofType:@"mp3"];NSData *fileData = [NSData dataWithContentsOfFile:filePath];NSError *error = nil;// 初始化音頻控制器 self.audioPlayer = [[AVAudioPlayer alloc] initWithData:fileData error:&error];if (self.audioPlayer != nil){self.audioPlayer.delegate = self;// 設置 delegateif ([self.audioPlayer prepareToPlay] && [self.audioPlayer play]){// 播放成功 }else {// 播放失敗 }}else {// 初始化 AVAudioPlayer 失敗 }});

總結

以上是生活随笔為你收集整理的iOS AVAudioPlayer和AVAudioPlayerDelegate-音频播放处理中断的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。