前段时间公司要求做一个录音功能。没有头绪,到网上查了下,发现微信的api提供的jssdk能满足我的需求,就决定用这个开发了。先后查了不少资料加上自己琢磨和问前辈的经验,花了大概一个多星期总算完成了,这边记录一下过程。
首先贴一篇教程出来,这篇教程前期省了我不少时间。
微信JSSDK中Config配置:http://blog.csdn.net/zhaojiacan/article/details/51025097 这篇讲的很详细,跟着配置是没问题的,
主要注意的有两点,其一是保证你的项目运行环境是你配置的js安全接口域名之下。其二是链接里面出现的util工具类他没有上传,里面
封装的都是些普通的写入写出方法,自己写都可以这不是重点。
jssdk配置成功后,就可以直接引入微信接口了。
wx.ready(function(){
/**
config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,
所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,
则可以直接调用,不需要放在ready函数中。
*/
var localIds
var lysj //录音时间
var lyCss //样式
var lyName //图片名字
var localIdArr //本地ID集合字符串
var serverIdArr //服务端ID集合字符串
//注册微信播放录音结束事件【一定要放在wx.ready函数内】
/* wx.onVoicePlayEnd({
success: function (res) {
}
}); */
//假设全局变量已经在外部定义
//按下开始录音
$('#talk_btn').on('touchstart', function(event){
event.preventDefault();
START = new Date().getTime();
if(localIds != null){
if(localIdArr == null){
localIdArr = localIds
}else{
localIdArr += "," + localIds;
}
}
localIds = null;
recordTimer = setTimeout(function(){
wx.startRecord({
success: function(){
localStorage.rainAllowRecord = 'true';
wx.onVoiceRecordEnd({
// 录音时间超过一分钟没有停止的时候会执行 complete 回调
complete: function (res) {
END = new Date().getTime();
localIds = res.localId;
alert('最多只能录制一分钟');
}
})
},
cancel: function () {
alert('用户拒绝授权录音');
}
});
},300);
});
var yyTotal = 1; //语音数量
//松手结束录音
$('#talk_btn').on('touchend', function(event){
event.preventDefault();
if(localIds != null){
}else{
END = new Date().getTime();
}
if((END - START) < 300){
END = 0;
START = 0;
//小于300ms,不录音
clearTimeout(recordTimer);
alert("录音时间太短,录音不做保存!")
}else{
$("#voiceButton").show();
lysj = (END - START)/1000;
if(lysj <= 10){
lyName = 10;