专注连锁门店会员营销管理系统
线上+线下+进销存+收银+会员2020-09-27 作者:秩名
使用mpvue开发小程序时,可能需要用到录音功能,可以通过使用"长按录音松开发送,上划取消发送"来实现小程序录音功能。以下为大家整理官方文档
下面讲解只贴上关键代码
微信小程序事件接口:
//html部分 class部分只是控制样式 与功能无关分析:长按录音需要longpress事件,松开发送需要touchend事件,上滑取消发送需要touchmove事件。由此可有以下html代码
<div class="input weui-grid" hover-class="weui-grid_active" :class="record.type" @longpress="handleRecordStart" @touchmove="handleTouchMove" @touchend="handleRecordStop"> <image class="weui-grid__icon" :src="record.iconPath"/> <div class="weui-grid__label">{{record.text}}</div> </div>
旧版的小程序录音接口wx.startRecord和wx.stopRecord在1.6.0版本后不再维护了,所以使用其建议的wx.getRecordManager接口。
注意:使用wx.getRecordManager接口的话,应调用相应的音频控制接口wx.createInnerAudioContext()来播放和控制录音.
data(){ record: { text: "长按录音", type: "record", iconPath: require("@/../static/icons/record.png"), handler: this.handleRecordStart }, //与录音相关的数据结构 recorderManager: wx.getRecorderManager(), //录音管理上下文 startPoint: {}, //记录长按录音开始点信息,用于后面计算滑动距离。 sendLock: true, //发送锁,当为true时上锁,false时解锁发送},
onLoad(){ this.recorderManager.onStop(res => { if (this.sendLock) { //上锁不发送 } else {//解锁发送,发送网络请求 if (res.duration < 1000) wx.showToast({ title: "录音时间太短", icon: "none", duration: 1000 }); else this.contents = [...this.contents,{ type: "record", content: res }];//contents是存储录音结束后的数据结构,用于渲染. } }); }
在这个方法中需要做的事:
handleRecordStart(e) { //longpress时触发 this.startPoint = e.touches[0];//记录长按时开始点信息,后面用于计算上划取消时手指滑动的距离。 this.record = {//修改录音数据结构,此时录音按钮样式会发生变化。 text: "松开发送", type: "recording", iconPath: require("@/../static/icons/recording.png"), handler: this.handleRecordStart }; this.recorderManager.start();//开始录音 wx.showToast({ title: "正在录音,上划取消发送", icon: "none", duration: 60000//先定义个60秒,后面可以手动调用wx.hideToast()隐藏 }); this.sendLock = false;//长按时是不上锁的。 },
在这个方法中需要做的事:
handleRecordStop() { // touchend(手指松开)时触发 this.record = {//复原在start方法中修改的录音的数据结构 text: "长按录音", type: "record", iconPath: require("@/../static/icons/record.png"), handler: this.handleRecordStart }; wx.hideToast();//结束录音、隐藏Toast提示框 this.recorderManager.stop();//结束录音 }
在这个方法中需要做的事:
handleTouchMove(e) { //touchmove时触发 var moveLenght = e.touches[e.touches.length - 1].clientY - this.startPoint.clientY; //移动距离 if (Math.abs(moveLenght) > 50) { wx.showToast({ title: "松开手指,取消发送", icon: "none", duration: 60000 }); this.sendLock = true;//触发了上滑取消发送,上锁 } else { wx.showToast({ title: "正在录音,上划取消发送", icon: "none", duration: 60000 }); this.sendLock = false;//上划距离不足,依然可以发送,不上锁 } }, }
以上就是这篇小程序实现长按录音,上划取消发送 ,需要更多小程序开发内容,可以查看本网站,谢谢。
HiShop小程序工具提供多类型商城/门店小程序制作,可视化编辑 1秒生成5步上线。通过拖拽、拼接模块布局小程序商城页面,所看即所得,只需要美工就能做出精美商城。更多小程序请查看:小程序商店
线上+线下+进销存+收银+会员门店零售管理好帮手
门店能实现快速收银,提升门店经营效率。
系统自带进销存管理,更好管理库存销售。
配备收银硬件一站式整体服务。
收 银 会员管理 库存管理 商品管理 交接班 数据报表 营销促单 售后处理 多种收款
获取报价1、本网站发布的该篇文章,目的在于分享电商知识及传递、交流相关电商信息,以便您学习或了解电商知识,请您不要用于其他用途;
2、该篇文章中所涉及的商标、标识的商品/服务并非来源于本网站,更非本网站提供,与本网站无关,系他人的商品或服务,本网站对于该类商标、标识不拥有任何权利;
3、本网站不对该篇文章中所涉及的商标、标识的商品/服务作任何明示或暗示的保证或担保;
4、本网站不对文章中所涉及的内容真实性、准确性、可靠性负责,仅系客观性描述,如您需要了解该类商品/服务详细的资讯,请您直接与该类商品/服务的提供者联系。
推荐文章
微信小程序能够很好连接线下商户与用户之间的关系,并将线上用户有效引流到线下门店,那么对于商户来说,需要如何添加...
如何获得好的运营效益,是微信支付团队和商户共同关心的“商业秘籍”。 在刚刚结束的2018年微信支付成长计划服务商大会...
在微信,如何让用户更便捷地找到你的服务?一搜即可。 今天, 微信“功能直达” 正式开放 ,商家与用户的距离可以更“...
针对部分小程序跳转中暴露出的问题,微信表示将弥补小程序跳转上的缺陷,调整相关规则。具体措施如下:...
公众号搭建商城流程全解析 在移动互联网蓬勃发展的当下,利用微信公众号搭建商城,已成为众多商家拓展线上业务、提升...
微信小程序开发费用全解析 微信小程序作为一种无需下载安装即可使用的应用程序,自推出以来,便凭借其便捷性和强大的...
公众号卖货全攻略:开启流量变现新征程 在当今数字化商业浪潮中,公众号作为强大的内容与营销平台,已成为众多商家和...
公众号店铺开设全攻略 在数字化商业浪潮中,于公众号开设店铺成为众多商家拓展线上业务的热门选择。公众号凭借庞大用...
在数字化浪潮的席卷下,公众号店铺小程序正逐渐成为众多商家拓展业务版图、提升销售业绩的得力助手。它巧妙地将公众号...
微信卖货小程序搭建指南 在数字化浪潮中,微信卖货小程序成为商家拓展业务的得力助手。它不仅能提升品牌形象,还能为...