美文网首页
iOS AVAudioPlayer中断事件结束继续播放

iOS AVAudioPlayer中断事件结束继续播放

作者: KeyboardLife | 来源:发表于2017-06-11 12:42 被阅读453次

问题:点击微信语音播放结束后,后台音乐播放器不能在当前时间基础上播放,而是重新开始播放。

思考:中断事件处理方式,一般都是中断开始的时候暂停播放器,中断结束的时候播放,我就是按这种方式出现了上述bug,不知道其他人有遇到没。测试的过程中发现,当我拖动滑块以后,再重复上述操作(点击微信语音,结束以后),发现音乐播放器能继续中断之前的播放时间播放,如果不拖动滑块,而是自然播放的话,就会出现问题描述的bug. 查阅资料网上没有相关的处理,回到问题的本身,不能在中断的时间的基础上继续播放,说明AVAudioPlayer类没有保存当前的播放时间,或者说中断事件回来以后它的属性curretTime值丢失了(原因就不得而知了),ok,那我可以在中断开始的时候保存当前播放的时间,等中断结束以后再把当前时间赋值给AVAudioPlayer的curretTime属性,另外这里需要稍微做下处理,就是排除中断情况,这种代码对其它正常播放事件的影响。

解决办法:
在封装播放音乐的类里面创建两个变量

@property (nonatomic,assign) NSTimeInterval  currentPlayTime;

@property (nonatomic,assign) BOOL  isPause;

在播放音乐的方法里面加入

   if (![player isPlaying]) {
        //解决中事件恢复后不能记录之前的播放时间
        if (self.isPause) {
           player.currentTime = self.currentPlayTime;
            self.isPause = NO;
        }
        [player play];
    }

在暂停播放音乐的方法里面加入

-(void)pauseMusic:(NSString *)fileName
{
    if (fileName == nil || fileName.length == 0) return;
    
    AVAudioPlayer * player = self.musicPlayers[fileName];
    if ([player isPlaying]) {
        self.currentPlayTime = player.currentTime;
        self.isPause = YES;
        [player pause];
    }
}

结果:上述思路可以解决该问题,如开发音乐播放器有出现上述问题的开发者可以下载具体代码了解。github地址

相关文章

  • iOS AVAudioPlayer中断事件结束继续播放

    问题:点击微信语音播放结束后,后台音乐播放器不能在当前时间基础上播放,而是重新开始播放。 思考:中断事件处理方式,...

  • KVAudioStreamer - 基于AudioToolBox

    在iOS上,播放音频一般使用AVAudioPlayer进行音频播放,但是AVAudioPlayer并不支持流媒体播...

  • 音,视频信息详解

    iOS系统中音频的四种播放方式 二、AVAudioPlayer的使用 1、avaudioPlayer在AVFoun...

  • Note 13 播放器

    音频播放 AVAudioplayer AVAudioplayer 只能播放本地音乐 每个AVAudioplayer...

  • 用AVPlayer写音乐播放器

    iOS提供了几种播放音频的方式:AudioToolbox 、AVAudioPlayer、AVPlayer。 Aud...

  • iOS-音频播放

    1 iOS的播放音频方式: 1 AVAudioPlayer(只支持本地音乐播放)2 AVPlayer (既支持本地...

  • iOS 后台运行音乐必看文章

    iOS后台运行之后台播放音乐 必看参考文章:后台播放音乐 后台播放核心代码 电话中断后继续播放核心代码

  • iOS 音频

    iOS 音频播放 本地音频文件 AVPlayer / AVAudioPlayer 在线音频流 AVPlayer i...

  • iOS音频播放

    ·iOS系统中的音频播放方式·AVAudioPlayer、AVPlayer、系统声音、音频队列 ·AVAudioP...

  • iOS AVAudioPlayer 、AVPlayer、AVPl

    一、iOS 音频 1)AVAudioPlayer 在 框架里面 使用简单方便,只能播放本地音频,不支持流媒体播放,...

网友评论

      本文标题:iOS AVAudioPlayer中断事件结束继续播放

      本文链接:https://www.haomeiwen.com/subject/eddhqxtx.html