uniapp微信小程序实现按住说话功能

uniapp微信小程序实现按住说话功能前端页面布局代码描述:@longpress是uniapp的事件,长按时触发的事件,@touchend事件可以监听松开按钮时触发的是。 <!上传语音> <viewclass=”Voice_inputaudiodiv”> <textclass=”Voice_title”>语音输入:</text> <viewclass=”Voice_Btn”> <!<viewclass=”sp

前端页面布局代码

描述:@longpress是uniapp的事件,长按时触发的事件,@touchend事件可以监听松开按钮时触发的。

	<!-- 上传语音 -->
			<view class="Voice_input audiodiv" >
				<text class="Voice_title">语音输入:</text>
				<view class="Voice_Btn">
					<!-- <view class="speak_btn" > -->
					<button v-if="ifshowrecordbtn" @longpress="touchdown" @touchend="touchup"  style="width:500rpx;height:66rpx"   class="talkbtn">{ 
   { 
   speak}}</button>
					<!-- </view> -->
					<button v-else class="talkbtn talkbtn2"  style="width:500rpx;height:66rpx"  @tap="recordagain">{ 
   { 
   recordtimeshow}} S</button>
					<audio class="showaudio" :src="audioSrc" id="myAudio"  controls :poster="poster"></audio>
				
				</view>
			</view>

css样式

/* 语音输入 */
	.Voice_input{ 
   
		border-bottom: 1px solid rgba(215,215,215,0.50);
	}
	.audiodiv{ 
   
		padding-bottom: 50px;
	}
	.Voice_title{ 
   
		height: 41px;
		line-height: 41px;
		font-family: PingFangSC-Regular;
		font-size: 16px;
		color: #1F1F26;
	}
	.speak_btn{ 
   
		width: 178px;
		height: 30px;
		background-image: linear-gradient(180deg, #FFFFFF 0%, #F1F1F1 100%);
		border: 1px solid #E8E8E8;
		border-radius: 15.5px;
		margin: 0 auto;
		text-align: center;
		line-height: 30px;
		font-family: PingFangSC-Regular;
		font-size: 14px;
		color: #AAAAAA;
		text-align: center;
		margin-bottom: 15px;
	}
	.talkbtn{ 
   
	  color: #cccccc;
	  font-size: 11px;
	  border: 1rpx solid #cccccc;
	  border-radius: 40rpx;
	  margin-top: 5px;
	  position: absolute;
	  left: 50%;
	  transform:translate(-50%,0);
	  background: #f2f6fa;
	
	}
	.showaudio{ 
   
	  position: fixed;
	  left: 800rpx;
	  top: 0;
	  width: 213px;
	    height: 28px;
	}
	

js部分

methods:{ 
   
	// 按住说话start
			touchdown:function(){ 
   
				this.speak='正在录音'
				recorderManager.start({ 
   
					duration: 60000,//录音的时长,单位 ms
					sampleRate: 16000, //采样率,有效值 8000/16000/44100
					numberOfChannels: 1, //录音通道数,有效值 1/2
					encodeBitRate: 96000, //编码码率
					format: 'mp3', //音频格式,有效值 aac/mp3
					frameSize: 50, //指定帧大小
					audioSource: 'auto' //指定录音的音频输入源,可通过 wx.getAvailableAudioSources() 获取
				})
				  console.log('录音开始')
			},
			//停止录音
		    touchup: function (e) { 
   
				this.speak='按住说话',
				this.ifshowrecordbtn=false
				recorderManager.stop()
				console.log('录音结束')
		    },
			recordagain:function(){ 
   
			  let that = this;
			  uni.showModal({ 
   
				title: '提示',
				content: '试听或者删除录音',
				confirmText: "试听",//这块是确定按钮的文字
				cancelText:"删除",//这块是取消的文字
				success (res) { 
   
				  if (res.confirm) { 
   
					that.recordplay();
				  } else if (res.cancel) { 
   
					 that.recordtimeshow=0,
					 that.ifshowrecordbtn=true
				  }
				}
			  })
			},
			ss_to_s:function(ss){ 
   
			  return (ss/1000).toFixed(0);
			},
			//点击播放录音
			recordplay: function () { 
   
				var that = this
				that.audioCtx.play()
			},
			//按住说话end
}
声明关于录音的api
 onReady() { 
   
			  var that = this
		  	  that.audioCtx = uni.createAudioContext('myAudio')
},
录音授权等相关操作
onLoad() { 
   
			 this.ctx = uni.createCameraContext()
			    
			  uni.authorize({ 
   
			    scope: "scope.record",
			    success: function() { 
   
			      console.log("录音授权成功");
			    },
			    fail: function() { 
   
			      console.log("录音授权失败");
			    }
			  })
				
			   var that = this;
			    //获取全局唯一的录音管理器 RecorderManager实例
			    that.recorderManager = uni.getRecorderManager()
			    that.recorderManager.onStop((res) => { 
   
			      console.log('res' + res);
			      console.log('获取到文件路径:' + res.tempFilePath)
			      console.log('duration' + res.duration)
			      console.log('fileSize' + res.fileSize)
			       that.audioSrc=res.tempFilePath,
			       that.recordtimeshow=that.ss_to_s(res.duration)
			    })
			   that.recorderManager.onError((res) => { 
   
			      console.log('录音失败了!')
			    })
		}

df

今天的文章uniapp微信小程序实现按住说话功能分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/6197.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注