当前位置: 首页> 汽车> 新车 > 即将上市的手机_广州代办营业执照的正规公司_海外推广代理公司_福州短视频seo平台

即将上市的手机_广州代办营业执照的正规公司_海外推广代理公司_福州短视频seo平台

时间:2025/7/9 21:44:31来源:https://blog.csdn.net/json_ligege/article/details/144369751 浏览次数: 0次
即将上市的手机_广州代办营业执照的正规公司_海外推广代理公司_福州短视频seo平台

微信小程序常用API练习 - 录音机小程序开发笔记

目录

录音机

准备工作

创建项目

配置导航栏

加载图片资源

创建模块脚本

录音机页面布局

录音机页面样式

录音机脚本控制

功能截图

总结


录音机

录音机是生活中的常用工具,可以记录声音和播放声音。它可以在开会的时候记录说话人的声音,也可以在生活中留下一段美妙歌声。本案例将对“录音机”微信小程序的开发进行详细讲解。

录音机”微信小程序页面分为顶部区域和按钮控制区域。其中,顶部区域展示录音时长,按钮控制区域中从左到右的3个按钮分别是“播放录音”按钮、​“开始/暂停录音”按钮和“停止录音”按钮,这3个按钮分别实现了播放录音、开始或暂停录音、停止录音的功能。

准备工作

在开发本案例前,需要先完成一些准备工作,主要包括创建项目、配置导航栏和复制素材,

具体步骤如下。

创建项目

在微信开发者工具中创建一个新的项目,项目名称为“录音机”,模板选择“不使用模板”。

配置导航栏

在pages/index/index.json文件中配置页面导航栏,具体代码如下:

{"usingComponents": {"navigation-bar": "/components/navigation-bar/navigation-bar"},"navigationBarTitleText": "录音机"
}

加载图片资源

创建images文件夹,放入三个图片,分别为:播放、开始录制、结束的功能按钮显示icon。

如下图:

创建模块脚本

创建utils文件夹,并创建timer.js封装一些对录音Api操作方法,用以在录音机中调用:

包含开始、结束录音,更新录音的时间等。

项目结构如下:

具体代码如下:

module.exports = {message: 'timer',recorderManager:wx.getRecorderManager(),// 获取录音管理器对象options: {duration: 60000, // 最长录音时间为60秒sampleRate: 44100, // 采样率numberOfChannels: 1, // 单声道encodeBitRate: 192000, // 编码码率format: 'mp3' // 录音文件格式},// 开始录音start() {this.recorderManager.start(this.options)},// 暂停录音pause() {this.recorderManager.pause(this.options)},// 停止录音stop(){this.recorderManager.stop(this.options)},// 时间格式转化getTime(seconds) {var hours = Math.floor(seconds / 3600);var minutes = Math.floor((seconds % 3600) / 60);var secods = seconds % 60;secods = secods >= 10 ? secods : "0" + secodsif (minutes > 0) {minutes = minutes >= 10 ? minutes : "0" + minutes;} else {minutes = "00";}if (hours > 0) {hours = hours >= 10 ? hours : '0' + hours;} else {hours = "00";}return hours + ":" + minutes + ":" + secods;}
}

录音机页面布局

录音机的页面布局在pages/index/index.wxml中编写。主要分为两个部分:上面显示标题和录音时间,下方显示三个功能按钮,从左到右分别为:播放、开始录制、结束录制。

具体代码如下:

<!--index.wxml-->
<navigation-bar title="录音机" back="{{false}}" color="black" background="#FFF"></navigation-bar>
<view class="container"><view class="top"><view class="top-title">录音机</view><view class="top-time">{{ time }}</view></view><view class="control"><view class="btn btn-play" bindtap="play" hover-class="btn-hover" hover-stay-time="50"><image src="/images/play.png" mode=""/></view><view class="btn btn-rec {{ state ===  1 ? 'btn-rec-pause' : 'btn-rec-normal' }}" bindtap="rec" hover-class="btn-hover" hover-stay-time="50"><image src="/images/center.png" mode=""/></view><view class="btn btn-stop" bindtap="stop" hover-class="btn-hover" hover-stay-time="50"><image src="/images/stop.png" mode=""/></view></view>
</view>

录音机页面样式

对录音机页面样式的设置在pages/index/index.wxss中编写,具体代码如下:

/**index.wxss**/
.top {margin: 0 auto;text-align: center;
}.top .top-title {font-size: 30px;
}.top .top-time {margin-top:5vh;font-size: 60px;
}.control {margin-top:10vh;display: flex;flex-direction: row;
}.btn {margin: 0 10vw;
}.btn-play image{width:50px;height:50px;border-radius: 20px;margin-top:30px;
}.btn-rec image{width:100px;height:100px;border-radius: 30px;
}.btn-stop image{width:50px;height:50px;border-radius: 20px;margin-top:30px;
}

录音机脚本控制

对录音机功能操作的脚本控制在pages/index/index.js中编写。主要内容为:设置初始变量,开始录制、暂停、停止及录音文件播放脚本。

具体代码如下:

// index.js
const timer = require('../../utils/timer.js')
// 音频对象
var audioCtx = wx.createInnerAudioContext()
// 初始化录音功能
var rec = wx.getRecorderManager()
var tempFilePath = null
rec.onStop(res => {tempFilePath = res.tempFilePathconsole.log('录音成功:' + tempFilePath)
})
Page({data: {time: '00:00:00',   // 录音时长state: 0,           // 录音状态,0表示停止,1表示开始,2表示暂停seconds: 0,         // 秒数},// 实现开始或暂停录音rec: function () {var that = this;switch (this.data.state) {case 0:rec.start()// 开始计时this.timer = setInterval(function () {that.setData({seconds: that.data.seconds + 1,time: timer.getTime(that.data.seconds)})}, 1000);timer.start()this.setData({time: '00:00:00',state: 1})breakcase 1:rec.pause()timer.pause()this.setData({state: 2})breakcase 2:rec.resume()timer.start()this.setData({state: 1})break}},// 停止录音stop: function () {console.log("停止")var onStopCallBack = nullrec.onStop(res => {tempFilePath = res.tempFilePathconsole.log('录音成功:' + tempFilePath)onStopCallBack && onStopCallBack(tempFilePath)})this.setData({time: '00:00:00',state: 0,seconds:0});timer.stop()// 清除定时器clearInterval(this.timer)},// 播放录音play: function () {console.log("播放录音")if (this.data.state > 0) {// 第1种情况,录音尚未完成onStopCallBack = tempFilePath => {onStopCallBack = nullaudioCtx.src = tempFilePathaudioCtx.play()this.setData({time: '播放录音'})}this.stop()} else if (tempFilePath) {// 第2种情况,录音已完成audioCtx.src = tempFilePathaudioCtx.play()this.setData({time: '播放录音'})} else {// 第3种情况,尚未录音this.setData({time: '暂无录音'})}}
})

功能截图

总结

微信小程序常用API练习 - 录音机小程序开发笔记

关键字:即将上市的手机_广州代办营业执照的正规公司_海外推广代理公司_福州短视频seo平台

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: