官方文档和论坛都没有写这个问题的解决办法,最后经过实验发现,需要在InnerAudioContext.onTimeUpdate调用以前,先调用innerAudioContext.onPlay,并且在innerAudioContext.onPlay的回调函数中访问innerAudioContext.duration属性
Page({
/**
* 页面的初始数据
*/
data: {
msg:"",
msg2:"",
audioSrc:''
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
const innerAudioContext = wx.createInnerAudioContext()
console.log(innerAudioContext)
// innerAudioContext.loop = true;
var that = this;
innerAudioContext.src = this.data.audioSrc;
innerAudioContext.onPlay(function(res){
// 一定要访问duration 否则onTimeUpdate不会触发
var duration = innerAudioContext.duration;
})
innerAudioContext.onTimeUpdate(function(res){
var currentTime = innerAudioContext.currentTime * 1000
that.setData({
msg: innerAudioContext.duration,
msg2: innerAudioContext.currentTime * 1000
});
})
innerAudioContext.play()
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})