基于JS開發(fā)微信網(wǎng)頁(yè)錄音功能的實(shí)例代碼
具體代碼如下所示:
wx.ready(function () {
var startRecordflag = false
var startTime = null
//btnRecord 為錄音按鈕dom對(duì)象
btnRecord.addEventListener('touchstart', function (event) {
event.preventDefault();
startTime = newDate().getTime();
// 延時(shí)后錄音,避免誤操作
recordTimer = setTimeout(function () {
wx.startRecord({
success: function () {
var rainAllowRecord = sessionStorage.getItem("rainAllowRecord");//判斷是否授權(quán)過(guò)允許使用錄音功能
if (!isEmpty(rainAllowRecord) && rainAllowRecord == "1") {
//開始錄音時(shí)的操作 如修改錄音按鈕樣式等
} else {
//一般第一次時(shí) 都沒有授權(quán) 彈出授權(quán)窗口后 無(wú)法終止錄音過(guò)程 所以在這里設(shè)置rainAllowRecord 的值表示允許過(guò)錄音 并且在第一次時(shí)主動(dòng)停止錄音
sessionStorage.setItem("rainAllowRecord", "1");
wx.stopRecord();
}
startRecordflag = true;
},
cancel: function () {
startRecordflag = true;
alert('用戶拒絕授權(quán)錄音');
},
complete: function () {
startRecordflag = true;
}
});
}, 300);
});
btnRecord.addEventListener('touchend', function (event) {
event.preventDefault();
// 間隔太短
var timeDitance = newDate().getTime() - startTime;
if (timeDitance < 300) {
startTime = 0;
// 不錄音
clearTimeout(recordTimer);
} else {
// 松手結(jié)束錄音
//startRecordflag 因?yàn)閟tartRecord是個(gè)異步方法 防止沒有進(jìn)入startRecord 的回調(diào)就進(jìn)入了這里
var startRecordHandle = setInterval(function () {
//startRecordflag為true 表示已經(jīng)進(jìn)入過(guò)startRecord的回調(diào)
if (startRecordflag) {
startRecordflag = false;
clearInterval(startRecordHandle);
wx.stopRecord({
success: function (res) {
voice.localId = res.localId;
translateVoice();
},
fail: function (res) {
}
});
}
}, 0);
}
});
wx.onVoiceRecordEnd({
complete: function (res) {
voice.localId = res.localId;
alert('錄音時(shí)間已超過(guò)一分鐘');
}
});
function translateVoice() {
//調(diào)用微信的語(yǔ)音轉(zhuǎn)文字接口
wx.translateVoice({
localId: voice.localId,
isShowProgressTips: 0,
complete: function (res) {
if (res.hasOwnProperty('translateResult')) {
alert('識(shí)別結(jié)果:' + res.translateResult);
} else {
}
}
});
}
function playVoice() {
wx.playVoice({
localId: voice.localId
});
}
})
總結(jié)
以上所述是小編給大家介紹的基于JS開發(fā)微信網(wǎng)頁(yè)錄音功能的實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
JavaScript實(shí)現(xiàn)倒計(jì)時(shí)功能2種方法實(shí)例
很多網(wǎng)站在做活動(dòng)時(shí)會(huì)出現(xiàn)一個(gè)截止時(shí)間倒計(jì)時(shí)的提示,下面這篇文章主要給大家介紹了JavaScript實(shí)現(xiàn)倒計(jì)時(shí)功能2種方法的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
關(guān)于封裝axios網(wǎng)絡(luò)請(qǐng)求降低代碼耦合度詳解
在項(xiàng)目中直接使用Axios或其他第三方庫(kù)來(lái)發(fā)送網(wǎng)絡(luò)請(qǐng)求獲取數(shù)據(jù)時(shí),會(huì)導(dǎo)致代碼與網(wǎng)絡(luò)請(qǐng)求的邏輯耦合度過(guò)高,導(dǎo)致難以維護(hù),所以本文將講解如何將網(wǎng)路請(qǐng)求的代碼進(jìn)行封裝來(lái)進(jìn)行解耦操作,文中通過(guò)代碼示例和圖文講解的非常詳細(xì),需要的朋友可以參考下2024-05-05
javascript實(shí)現(xiàn)的閉包簡(jiǎn)單實(shí)例
這篇文章主要介紹了javascript實(shí)現(xiàn)的閉包簡(jiǎn)單實(shí)現(xiàn)方法,涉及javascript閉包的原理與實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
JS基于面向?qū)ο髮?shí)現(xiàn)的放煙花效果
這篇文章主要介紹了JS基于面向?qū)ο髮?shí)現(xiàn)的放煙花效果,涉及javascript面向?qū)ο蠹夹g(shù)的使用技巧,需要的朋友可以參考下2015-05-05
兩個(gè)JavaScript中的特殊值null和undefined詳解
Null和Undefined是JavaScript中非?;A(chǔ)和重要的概念,理解它們的含義、特點(diǎn)和使用方式對(duì)于避免出現(xiàn)錯(cuò)誤和編寫健壯的應(yīng)用程序非常重要,這篇文章主要介紹了兩個(gè)JavaScript中的特殊值null和undefined詳解,需要的朋友可以參考下2023-06-06
通過(guò)封裝scroll.js 獲取滾動(dòng)條的值
本文通過(guò)實(shí)例代碼給大家介紹了通過(guò)封裝scroll.js 獲取滾動(dòng)條的值的相關(guān)知識(shí),代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-07-07

