录音接口wx.playVoice,首次播放暂停之后,再次播放无响应
发布于 5 年前 作者 weipeng 11830 次浏览 来自 问答
/**
 * 监测录音播放点击事件
 */
bindPlayRecordTap() {
  this.data.playing ? this.pauseVoice1() : this.playVoice1();
},
/**
 * 播放录音
 */
playVoice1() {
  console.log('play voice');
  const that = this;
  wx.playVoice({
    filePath: this.data.recordData,
    success(res) {
      console.log(res);
      that.setData({ playing: true });
    },
    fail(err) {
      console.log(err);
    },
    complete(res) {
      console.log(res);
    }
  });
},
/**
 * 暂停录音
 */
pauseVoice1() {
  console.log('pause voice');
  this.setData({ playing: false });
  wx.pauseVoice();
},

运行结果如下

首次点击播放之后,可以正常播放。播放途中暂停,再次点击播放,wx.playVoice()方法既不正常调用,也不提示错误。

从运行的结果可以看到,首次点击播放之后,wx.playVoice()返回了两次success的结果,不知道是不是因为这个原因引起的问题。

请问这个要如何解决。谢谢。

2 回复

解决了吗?,也遇到同样问题,暂停了再开启播放就没声了。如果是函数bug,都一年了早该修复了吧。

这个问题有没有解决?我有同样的问题。把silk文件上传到我的服务器。再下载下来。首次播放没问题。暂停后再次播放无响应。

  voicePlay: function (event) {

    wx.playVoice({

      filePath: this.data.silks[event.currentTarget.dataset.key]

    })

  },

  voicePause: function (event) {

    wx.pauseVoice()

  },

  voiceDownload: function (event) {

    var _filePath =XXXXXXX(服务器上的文件路径)

    console.log("_filePath:", _filePath)

    var that = this

    wx.downloadFile({

      url: _filePath,

      success: function (res) {

        var filepath= res.tempFilePath

        wx.saveFile({

          tempFilePath: filepath,

          success: function(res) {

            var tempdict = that.data.silks

            tempdict[event.currentTarget.dataset.key]=res.savedFilePath

            that.setData({ silks: tempdict })

          }

        })

      }

    })

回到顶部