1. 程式人生 > >微信音訊介面呼叫demo

微信音訊介面呼叫demo

前幾天做一個錄音送祝福的專案,事先做了一個demo,記錄一下,方便日後需要時套上直接使用

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="viewport" content="width=640, user-scalable=no">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">
<meta name="apple-mobile-web-app-title" content="">
<title>錄音test</title>
<style type="text/css">
@charset "utf-8";
*{ margin:0px; padding:0px; box-sizing:border-box; -webkit-tap-highlight-color:rgba(0,0,0,0);}
html{ max-width:640px; margin:0 auto;}
body{ font-family:"PingFangSC-Regular","sans-serif","STHeitiSC-Light","微軟雅黑","Microsoft YaHei"; font-size:24px; line-height:1.5em; color:#000;
    -webkit-user-select:none; user-select:none;
    -webkit-touch-callout:none; touch-callout:none;
}

.start_btn , .play_btn , .send_btn{ width:250px; height:60px; line-height:60px; margin:20px auto; text-align:center; border:#eee solid 2px; cursor:pointer;}
.start_btn_in , .stop_btn{ color:#f00; border:#f00 solid 2px;}
</style>
</head>

<body>

<div class="start_btn">按住不放即可錄音</div>

<div class="play_btn">點我播放</div>

<div class="send_btn">點我儲存</div>




<script type="text/javascript" src="https://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script type="text/javascript">
wx.config({
	debug: false, // 開啟除錯模式,呼叫的所有api的返回值會在客戶端alert出來,若要檢視傳入的引數,可以在pc端開啟,引數資訊會通過log打出,僅在pc端時才會列印。
	appId: '', // 必填,公眾號的唯一標識
	timestamp: '', // 必填,生成簽名的時間戳
	nonceStr: '', // 必填,生成簽名的隨機串
	signature: '',// 必填,簽名,見附錄1
	jsApiList: ['onMenuShareTimeline','onMenuShareAppMessage','startRecord','stopRecord','onVoiceRecordEnd','playVoice','stopVoice','onVoicePlayEnd','uploadVoice'] // 必填,需要使用的JS介面列表,所有JS介面列表見附錄2
});

wx.ready(function(){
	//返回音訊的本地ID
	var localId;
	//返回音訊的伺服器端ID
	var serverId;
	//錄音計時,小於指定秒數(minTime = 10)則設定使用者未錄音
	var startTime , endTime , minTime = 2;
	
	
	//***********************************//
	
	
	//開始錄音
	$('.start_btn').on('touchstart',function(e){
		e.preventDefault();
		var $this = $(this);
		$this.addClass('start_btn_in');
		startTime = new Date().getTime();
		
		//開始錄音
		wx.startRecord();
	});
	//***********************************//
	//停止錄音介面
	$('.start_btn').on('touchend', function(){
		var $this = $(this);
		$this.removeClass('start_btn_in');
		
		//停止錄音介面
		wx.stopRecord({
			success: function (res) {
				localId = res.localId;
			}
		});
		
		endTime = new Date().getTime();
		alert((endTime - startTime) / 1000);
		if((endTime - startTime) / 1000 < minTime){
			localId = '';
			alert('錄音少於' + minTime +  '秒,錄音失敗,請重新錄音');
		}
		
	});
	//監聽錄音自動停止介面
	wx.onVoiceRecordEnd({
		//錄音時間超過一分鐘沒有停止的時候會執行 complete 回撥
		complete: function (res) {
			localId = res.localId;
			
			$('.start_btn').removeClass('start_btn_in');
		}
	});
	
	
	//***********************************//
	
	
	$('.play_btn').on('click',function(){
		if(!localId){
			alert('您還未錄音,請錄音後再點選播放');
			return;
		}
		var $this = $(this);
		if($this.hasClass('stop_btn')){
			$(this).removeClass('stop_btn').text('點我播放');
			
	//		//暫停播放介面
	//		wx.pauseVoice({
	//			//需要暫停的音訊的本地ID,由 stopRecord 或 onVoiceRecordEnd 介面獲得
	//			localId: localId
	//		});
	
			//停止播放介面
			wx.stopVoice({
				//需要停止的音訊的本地ID,由 stopRecord 或 onVoiceRecordEnd 介面獲得
				localId: localId
			});
		}else{
			$this.addClass('stop_btn').text('點我停止');
			
			//播放語音介面
			wx.playVoice({
				//需要播放的音訊的本地ID,由 stopRecord 或 onVoiceRecordEnd 介面獲得
				localId: localId
			});
		}
	});
	//監聽語音播放完畢介面
	wx.onVoicePlayEnd({
		//需要下載的音訊的伺服器端ID,由uploadVoice介面獲得
		serverId: localId,
		success: function (res) {
			$('.play_btn').removeClass('stop_btn').text('點我播放');
			
			//返回音訊的本地ID
			//localId = res.localId;
		}
	});
	
	
	//***********************************//
	
	
	//上傳語音介面
	$('.send_btn').on('click',function(){
		if(!localId){
			alert('您還未錄音,請錄音後再儲存');
			return;
		}
		
		alert('上傳語音,測試,並未提交儲存');
		return;
		
		//上傳語音介面
		wx.uploadVoice({
			//需要上傳的音訊的本地ID,由 stopRecord 或 onVoiceRecordEnd 介面獲得
			localId: localId, 
			//預設為1,顯示進度提示
			isShowProgressTips: 1,
			success: function (res) {
				//返回音訊的伺服器端ID
				serverId = res.serverId;
			}
		});
	});
	
});

</script>
</body>
</html>