国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
微信jssdk錄音功能開發(fā)記錄
0.需求描述
1.開發(fā)流程
使用微信jssdk:微信JS-SDK說明文檔
本次需求核心功能:錄音并保存
2.小麻煩
3.難題
首頁 微信小程序 微信開發(fā) 微信jssdk錄音功能開發(fā)記錄

微信jssdk錄音功能開發(fā)記錄

Feb 15, 2017 am 11:30 AM

微信jssdk錄音功能開發(fā)記錄

0.需求描述

在微信瀏覽器內打開的頁面,制作一個按鈕,用戶按住按鈕后開始錄音,松手后停止錄音并將錄音上傳并長期保存。

1.開發(fā)流程

如果開發(fā)的是普通的展示性頁面,就和開發(fā)普通的頁面沒有區(qū)別,不過這里要用到設備(手機)的錄音功能,就需要調用微信app的錄音接口,需要使用微信jssdk。

使用微信jssdk:微信JS-SDK說明文檔

  • 先登錄微信公眾平臺進入“公眾號設置”的“功能設置”里填寫“JS接口安全域名”。[需要有微信公眾號]

  • 引入JS文件

  • 通過config接口注入權限驗證配置

  • 通過ready接口處理成功驗證

  • 通過error接口處理失敗驗證

//假設已引入微信jssdk?!局С质褂?AMD/CMD?標準模塊加載方法加載】
wx.config({
????debug:?true,?//?開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數(shù),可以在pc端打開,參數(shù)信息會通過log打出,僅在pc端時才會打印。
????appId:?'',?//?必填,公眾號的唯一標識
????timestamp:?,?//?必填,生成簽名的時間戳
????nonceStr:?'',?//?必填,生成簽名的隨機串
????signature:?'',//?必填,簽名,見附錄1
????jsApiList:?[]?//?必填,需要使用的JS接口列表,所有JS接口列表見附錄2
});

wx.ready(function(){

????//?config信息驗證后會執(zhí)行ready方法,所有接口調用都必須在config接口獲得結果之后,config是一個客戶端的異步操作,所以如果需要在頁面加載時就調用相關接口,則須把相關接口放在ready函數(shù)中調用來確保正確執(zhí)行。對于用戶觸發(fā)時才調用的接口,則可以直接調用,不需要放在ready函數(shù)中。
});

wx.error(function(res){

????//?config信息驗證失敗會執(zhí)行error函數(shù),如簽名過期導致驗證失敗,具體錯誤信息可以打開config的debug模式查看,也可以在返回的res參數(shù)中查看,對于SPA可以在這里更新簽名。

});

本次需求核心功能:錄音并保存

//假設全局變量已經(jīng)在外部定義
//按下開始錄音
$('#talk_btn').on('touchstart',?function(event){
????event.preventDefault();
????START?=?new?Date().getTime();

????recordTimer?=?setTimeout(function(){
????????wx.startRecord({
????????????success:?function(){
????????????????localStorage.rainAllowRecord?=?'true';
????????????},
????????????cancel:?function?()?{
????????????????alert('用戶拒絕授權錄音');
????????????}
????????});
????},300);
});
//松手結束錄音
$('#talk_btn').on('touchend',?function(event){
????event.preventDefault();
????END?=?new?Date().getTime();
????
????if((END?-?START)?<?300){
????????END?=?0;
????????START?=?0;
????????//小于300ms,不錄音
????????clearTimeout(recordTimer);
????}else{
????????wx.stopRecord({
??????????success:?function?(res)?{
????????????voice.localId?=?res.localId;
????????????uploadVoice();
??????????},
??????????fail:?function?(res)?{
????????????alert(JSON.stringify(res));
??????????}
????????});
????}
});

//上傳錄音
function?uploadVoice(){
????//調用微信的上傳錄音接口把本地錄音先上傳到微信的服務器
????//不過,微信只保留3天,而我們需要長期保存,我們需要把資源從微信服務器下載到自己的服務器
????wx.uploadVoice({
????????localId:?voice.localId,?//?需要上傳的音頻的本地ID,由stopRecord接口獲得
????????isShowProgressTips:?1,?//?默認為1,顯示進度提示
????????success:?function?(res)?{
????????????//把錄音在微信服務器上的id(res.serverId)發(fā)送到自己的服務器供下載。
????????????$.ajax({
????????????????url:?'后端處理上傳錄音的接口',
????????????????type:?'post',
????????????????data:?JSON.stringify(res),
????????????????dataType:?"json",
????????????????success:?function?(data)?{
????????????????????alert('文件已經(jīng)保存到七牛的服務器');//這回,我使用七牛存儲
????????????????},
????????????????error:?function?(xhr,?errorType,?error)?{
????????????????????console.log(error);
????????????????}
????????????});
????????}
????});
}

//注冊微信播放錄音結束事件【一定要放在wx.ready函數(shù)內】
wx.onVoicePlayEnd({
????success:?function?(res)?{
????????stopWave();
????}
});

2.小麻煩

要防止用戶誤操作(如:反復點擊、誤觸摸)導致的無效錄音。

小于300ms不錄音

防止用戶長按導致的瀏覽器默認彈出微信瀏覽器默認的“復制對話框”。

使用css設置按鈕 user-select:none;

微信播放錄音接口事件回調函數(shù)無效

微信注冊事件一定要放在wx.ready中。

阻止默認事件

touch 事件記得加 event.preventDefault(); 防火防爆

微信存儲靜態(tài)資源時間為3天,如何長期保存

要么存到自己服務器,要么利用其它資源,比如七牛,還可以幫我們自由轉換amr格式到mp3等格式呢!
微信服務器默認資源格式為amr,這個格式在android機器可以使用audio標簽播放,在ios機器使用audio標簽無法播放。

微信錄音功能授權引發(fā)的交互問題

使用微信jssdk接口錄音,在同一個域只需要授權一次,即第一次使用錄音的時候,微信自己會彈出對話框詢問是否允許錄音,用戶點擊允許后,之后再使用錄音時,便不會再咨詢用戶是否允許。
在第一次按住錄音后,由于用戶未曾允許錄音,微信會提示用戶授權允許在本頁面使用微信錄音功能,這時用戶會放開錄音按鈕轉而去點擊允許,在用戶允許后,才真正會開始錄音,而此時用戶早已放開錄音按鈕,那么錄音按鈕上便不會再有touchend事件,錄音便會一直進行。
解決策略:使用localStorage記錄用戶是否曾授權,并以此來判斷是否需要在剛進入頁面是自動錄一段錄音來觸發(fā)用戶授權

if(!localStorage.rainAllowRecord?||?localStorage.rainAllowRecord?!==?'true'){
????wx.startRecord({
????????success:?function(){
????????????localStorage.rainAllowRecord?=?'true';
????????????wx.stopRecord();
????????},
????????cancel:?function?()?{
????????????alert('用戶拒絕授權錄音');
????????}
????});
}

3.難題

音量bug:在ios設備上,使用微信錄音功能后,再播放audio標簽的音頻,音量極低。
但是使用微信接口(wx.playVoice)播放錄音的音量是正常的,而且之后,audio標簽的音量會有所增大(但是依然音量很低)。

更多微信jssdk錄音功能開發(fā)記錄相關文章請關注PHP中文網(wǎng)!

本站聲明
本文內容由網(wǎng)友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權的內容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)