通过wx.startRecord和wx.stopRecord方法,可以录制和停止录制音频。如果成功录制音频,会将音频存在临时文件中,并返回临时音频文件名,以便后续处理。
与大多数API一样,这两个方法都可以传入对象类型参数,对于这两个方法来说,只有3个事件属性:success、fail和complete。含义与其他方法同名属性类似。
下面的布局代码在窗口上放置两种按钮:“开始录音”和“停止录音”。
<view style="margin:20px"> <button bindtap="startRecord">开始录音</button> <button style = "margin-top:10px" bindtap="stopRecord">停止录音</button></view>
点击这两个按钮,分别调用startRecord和stopRecord函数,这两个函数及相关代码如下:
var app = getApp()Page({ data: { recording: false, // 表示当前是否正在录制 hasRecord: false, // 表示当前是否已经成功录制,并成功生成了音频临时文件 }, //录制音频 startRecord: function () {var that = this;// 开始录制音频wx.startRecord({ // 录制成功后调用 success: function (res) { console.log(res.tempFilePath); that.setData({ hasRecord: true, tempFilePath: res.tempFilePath, // 保存音频文件临时路径 })},// 不管录制成功还是失败,都会调用该方法,用于收尾工作 complete: function () { that.setData({ recording: false }) } }) }, // 停止音频录制 stopRecord:function(){ var that = this; console.log(this.data.tempFilePath); wx.stopRecord({ success: function() { console.log('stop record success') that.setData({ recording: false, hasRecord: false, }) } }) } })
第一次点击“开始录音”按钮后,会弹出个对话框,询问是否授权音频录制,授权后,才会开始录制音频,当第一次授权后,以后不会再次弹出该授权对话框。
要注意的是,小程序模拟器对录音支持的并不好,因此,需要使用真机测试本节的例子。开启小程序真机调试模式后,点击“开始录音”按钮,弄出点声音,然后再点击“停止录音”按钮,会在真机的Console中输入如图1的临时音频文件路径。
图1 临时音频文件路径
对本文感兴趣,可以加李宁老师微信公众号(unitymarvel):
关注 「极客起源」 公众号,获得更多免费技术视频和文章。