自学内容网 自学内容网

鸿蒙AVPlayer开发音乐播放器——重启读取历史播放进度

故事要从这里说起

在使用AVPlayer开发音乐播放器时,需要开发应用重启后根据历史播放记录进度来重构player对象的功能,本来想使用AppStorage和PersistentStorage监听player对象的播放进度毫秒值信息并完成应用关闭时自动持久化该信息并且在应用重启后自动读取出该数据,然后直接调用player对象的seek函数就能跳转到该播放进度,实现信息的重读,但是在实际开发过程中发现,在生命周期函数中调用seek函数不生效,然后在player对象的on('timeUpdate')回调函数中打了log,发现seek函数根本没有调用,只有把seek函数在onClick等事件函数中调用才能真正使得seek函数被调用,寻找了许久问题,未果。

He still Alive!

只要思想歪,办法总比困难多!

本来这个问题已经搁置了,然后在一次发呆乱点文件的时候看到了on('stateChange')中对象播放状态变化回调函数,想到能不能在play状态回调中判断一下,如果是刚重启(也就是缓存读取到了播放时间信息),就在这里跳转一下,很快啊,生效了!He Still Alive!

翻过这座山,他们就会听到你的故事

展示下代码吧(好像没什么展示的必要)

     case 'playing':          
          player.play()
          if (AppStorage.get('reStart') == true) {
            player.seek(AppStorage.get('preSeek'))
            player.pause()
            AppStorage.setOrCreate('reStart', false)
          }

无视这个pause,只有在playing状态下才能暂停,但是这会导致重启app之后会播放一下在暂停,难顶

小狗也倒了...被我们寄予厚望的RNG倒在了八强

虽然我极力去忽视这个问题,但是这样实现重启应用后暂停会导致重启app之后会播放一下在暂停,难顶。

也许有一天,我是说也许

更新预告,无缝切换暂停


原文地址:https://blog.csdn.net/Cary_cacb/article/details/143823994

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!