当前位置: 首页 > news >正文

微信小程序简易录音机

首先先创建一个项目(想必大家都会啦那就直接开干)

首先上html结构

<view class="wx-container"><view id="title">录音机</view><view id="time">{{hours}}:{{minute}}:{{second}}</view><view class="btngroup"><view hover-class="change" catch:tap="play">播放</view><view class="play" hover-class="change" catch:tap="start"></view><view hover-class="change" catch:tap="stop">结束</view></view>
</view>

css样式

/* pages/radio/index.wxss */
.wx-container {width: 100vw;height: 100vh;margin: 0 auto;text-align: center;box-sizing: border-box;
}#title {margin: 100rpx auto;text-align: center;font-size: 50rpx;}#time {font-size: 150rpx;
}.btngroup {height: 180rpx;margin: 100rpx auto;display: flex;align-items: center;justify-content: space-around;
}.btngroup>view:not(.play) {width: 120rpx;height: 120rpx;border-radius: 50%;line-height: 120rpx;background-color: #eee;
}.play {width: 150rpx;height: 150rpx;border: solid 50rpx red;box-sizing: border-box;border-radius: 50%;transition: .2s;background-color: transparent;
}.change {transition: .2s;box-shadow: 0 0 8rpx 8rpx rgb(0, 0, 0);}

样式的效果:
在这里插入图片描述
接下来js代码部分:
通过wx.createInnerAudioContext()方法获取到

// 获取录音管理器
var tape = wx.getRecorderManager()
// 创建全局音频
var audio = wx.createInnerAudioContext()
Page({data: {time: 0,cleartime: '',state: 0, // 0 为停止录音  1 为正在录音   2 为暂停录音timer: null,hours: '0' + 0, // 时minute: '0' + 0, // 分second: '0' + 0, // 秒tempFilePath: null},

计时开始

  start() {let _this = this;switch (this.data.state) {case 0:_this.setInterval();// 开始录音tape.start()console.log('开始录音');this.setData({state: 1 // 把state设置为1 (暂停录音状态)})// audio.destroy() // 释放音频资源breakcase 1:clearInterval(_this.data.timer);// 暂停录音tape.pause()console.log('暂停录音');this.setData({state: 2 // 把state设置为2 (继续录音状态)})breakcase 2:_this.setInterval();// 继续录音tape.resume()console.log('继续录音');this.setData({state: 1 // 把state设置为1 (暂停录音状态)})break}// 为了性能考虑 20 秒后自动结束录音  setTimeout(() => {clearInterval(_this.data.timer);tape.stop()// 监听结束录音事件tape.onStop((res) => {this.data.tempFilePath = res.tempFilePathconsole.log('自动保存录音');wx.showToast({title: '自动保存录音成功',mask: true,duration: 500,})})}, 20000)},

播放

play() {// 如果音频路径为空,弹出提示if (!this.data.tempFilePath) {wx.showModal({title: '没有录音',content: '请开始录音或保存录音'})return}audio.src = this.data.tempFilePath// 播放录音的音频audio.play()wx.showToast({title: '播放录音',mask: true,duration: 500})},

结束

 stop() {// 如果state处于0(未录音状态)弹出提示if (this.data.state == 0) {wx.showToast({title: '请先开始录音',mask: true,duration: 500,icon: 'error'})return}let _this = this;this.setData({hours: '0' + 0,minute: '0' + 0,second: '0' + 0,state: 0 // 点击结束按钮之后 把 state(状态)初始化为0(未录音状态)})clearInterval(_this.data.timer);// 结束录音 保存录音tape.stop()// 监听结束录音事件tape.onStop((res) => {this.data.tempFilePath = res.tempFilePathconsole.log('保存录音');wx.showToast({title: '保存录音成功',mask: true,duration: 500,})})},

最终效果:在主页视频

http://www.lryc.cn/news/378329.html

相关文章:

  • Ollama深度探索:AI大模型本地部署的全面教程
  • 文心一言 VS 讯飞星火 VS chatgpt (285)-- 算法导论21.2 4题
  • 基于springboot实现影院订票系统项目【项目源码+论文说明】计算机毕业设计
  • Linux 常用命令合集
  • Vue3插件安装
  • Redis精要
  • 国产24位I2S输入+192kHz立体声DAC音频数模转换器CJC4344
  • UniApp 开发微信小程序教程(一):准备工作和环境搭建,项目结构和配置
  • [WTL/Win32]_[中级]_[MVP架构在实际项目中的应用]
  • 《Windows API每日一练》5.2 按键消息
  • adb 截屏和录屏命令
  • springboot相关的一些知识
  • DP:完全背包+多重背包问题
  • 购物返利系统的安全性:防范欺诈与数据保护
  • 从WebM到MP3:利用Python和wxPython提取音乐的魔法
  • 图片转pdf,图片转pdf在线转换,在线图片转pdf
  • SpringBoot3使用Swagger3
  • 【51单片机基础教程】点亮led
  • Docker之overlay2的迁移
  • CentOS中的rename命令
  • redis.conf 参数详解,方便进行性能优化配置
  • 微信小程序登录流程详情及Java代码
  • c++qt合并两张灰度图像
  • Uniapp通过年月日时间转变星期格式
  • 如何编写和执行高效的测试计划
  • 【MySQL连接器(Python)指南】03-MySQL连接器(Python)安装
  • Spring Boot组件化与参数校验
  • 实现可扩展的电商返利平台:技术选型与挑战
  • 从0开始C++(三):构造函数与析构函数详解
  • 行车记录仪文件夹“0字节”现象解析与恢复策略