微信小程序写一个录音机
代码:
wxml:
<view class="container">
<view class="duration">{{duration}}</view>
<button bindtap="startRecord" class="btn">开始录音</button>
<button bindtap="stopRecord" class="btn">停止录音</button>
<button bindtap="playRecord" class="btn">播放录音</button>
</view>
<audio id="audio" src="{{recordPath}}" controls></audio>
wxss:
.container {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 84vh;
}
.btn {
margin: 10px;
padding: 10px 20px;
background-color: #4CAF50;
color: white;
border: none;
border-radius: 5px;
}
.duration {
margin-top: -50px;
font-size: 24px;
}
js:
let timer = null;
Page({
data: {
isRecording: false,
recordPath: '',
duration: '00:00'
},
startRecord: function() {
const recorderManager = wx.getRecorderManager();
this.setData({
isRecording: true,
duration: '00:00'
});
let startTime = new Date().getTime();
timer = setInterval(() => {
let currentTime = new Date().getTime();
let diff = currentTime - startTime;
let m = Math.floor(diff / 60000 % 60);
let s = Math.floor(diff / 1000 % 60);
this.setData({
duration: `${this.formatTime(m)}:${this.formatTime(s)}`
});
}, 1000);
recorderManager.start({
format: 'mp3'
});
recorderManager.onStart(() => {
console.log('recorder start');
});
recorderManager.onStop((res) => {
console.log('recorder stop', res);
this.setData({
recordPath: res.tempFilePath,
isRecording: false
});
});
},
stopRecord: function() {
const recorderManager = wx.getRecorderManager();
clearInterval(timer);
recorderManager.stop();
},
playRecord: function() {
this.setData({
// isRecording: true,
duration: '录音播放'
});
const audioCtx = wx.createInnerAudioContext();
audioCtx.src = this.data.recordPath;
audioCtx.play();
},
formatTime: function(time) {
return time < 10 ? `0${time}` : time;
}
});
json:
{
"usingComponents": {},
"navigationBarTitleText": "录音机"
}
以上就是实现一个录音机的小程序!