Skip to content

微信小程序 wx.getBackgroundAudioManager API中的一些坑 #6

Open
@wusb

Description

@wusb

(此总结只保证对基础库1.9.91有效)

onCanplay

onCanplay在真机及开发工具上均无法触发,因此无法在此生命周期执行相关操作

onPlay

onPlay开始播放音频,我们通常会考虑在这个生命周期内获取音频的长度duration,但是回调函数内并不能实时获取,感觉违背了常识。可以采用setTimeout设定一个延时来获取,但也做不到实时,建议在 onTimeUpdate回调内获取我们需要的duration。

onPause

在此生命周期,我们希望能获取音频的播放状态paused,来做一些逻辑上的处理,但并不能准备获取正确的值true,此处需要手动设置。比如:

const audio = wx.getBackgroundAudioManager();
audio.onPause(() => {
    //此时audio.paused,按道理来说是true,并不一定是true
    self.setData({
        pause: audio.paused
    })
    //所以需要显式的去设置
    self.setData({
        pause: true
    })
})

seek

文档写的参数是postion,如果是首次接触很容易误导,其实参数就是一个Number,比如:

const audio = wx.getBackgroundAudioManager();
audio.seek(500);

title

如果不设置的话,在iOS设备上会导致音频无法播放,Android上影响不大。

全局对象

const audio = wx.getBackgroundAudioManager();

audio 获取是一个全局的音频对象,如果一个页面里面定义多个audio,它们的生命周期是共享的。比如说,我们在同一个page的两个function内均定义了audio,并且,都使用了onTimeUpdate这个生命周期,那么这两个onTimeUpdate是共享的,并不会同时存在,只会以最近一次调用的audio为准。

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions