敬告:此 demo 演示为开放测试页面,仅用于开发者快速测试体验应用功能,请严格遵守开发者协议,九游会国际-九游会真人第一品牌。
♦ js-sdk 引用方式:
♦ 普通网页 script 方式加载:下载最新版 ,请在页面上调用 jsbridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge
♦ jsbridge.audiorecorder;
♦ app 端始终只保留一个录音文件,执行 startrecord 将覆盖已有录音;
♦ 执行 remove 可删除录音;
事件监听
• 如需接口调用事件,请设置此监听器;
• 回调参数 event及data 请详见具体接口注释;
jsbridge.audiorecorder.setlistener(function(event, data) { switch (event) { //录音进度,每秒回调一次 case 10: //data: { // duration : //数字类型,已录音长度(秒) // maxduration: //数字类型,最大可录音长度 //} break; //达到设置的最大录音长度(maxduration),停止录音 case 11: //data: { // duration: //数字类型,实际录音长度(秒) //} break; //声波振幅,每200毫秒回调一次,可用于制作跳动的波形图 case 12: //data: { // amplitude: //数字类型,声波振幅 //} break; //已停止录音 case 13: //data: { // duration : //数字类型,实际录音长度(秒) // iscanceled: //布尔类型,是否已取消录音(如取消,app会删除录音,不可回放,不可上传),只有 iscanceled 为 false 时录音才可用。 //} break; //上传进度 jsbridge.audiorecorder.upload 接口 case 20: //data: { // uploaded: //数字类型,已上传字节数(byte) // total : //数字类型,总字节数(byte) //} break; //上传结束 case 21: //data: { // success : //布尔类型,是否上传成功 // message : //字符串类型,未成功时的错误说明 // response: //字符串类型,你的服务器返回的 response 字符串 //} break; } //此函数仅用于显示回调参数在本 demo 页面上 showresult({ event: event, data : data }); }); //请拉到页面底部查看回调数据信息 $('html,body').animate({ scrolltop: $('#view').offset().top }, 500); /** 回调参数说明: event - 事件代码,数字类型 data - 事件数据,json 对象 event编号及data数据结构 请详见具体接口注释 **/
//移除监听器,不会再收到回调通知 //在需要时可重新调用 setlistener jsbridge.audiorecorder.removelistener();
录音
• 本接口会自动请求录音权限,未授权则无法录音;
• 你可先调用 jsbridge.requestpermissions(["microphone"]) 请求授权或判断是否已始终拒绝;
• 如果没有权限可调用 jsbridge.appsettings() 跳转到app设置界面提示用户开启权限;
• android 录音为 mpeg4 格式,aac 编码;
//app 端始终只保留一个录音文件,执行 startrecord 将覆盖已有录音。 jsbridge.audiorecorder.startrecord({ //必须,数字类型,最大录音时长(秒) maxduration: 60, //可选,布尔类型,是否隐藏 app 自带的 ui(录音话筒),默认 false //设为 true 可以不用app自带的ui,自己设计 html 录音界面即可 hiddenui : false, //可选,字符串类型,音源,默认 mic 麦克风 //mic 麦克风 //voice 语音通信(仅用于语音通话,不然可能引发闪退) source : "mic" }, function(succ, data) { if (!succ) { alert(json.stringify(data)); } });
jsbridge.audiorecorder.startrecord({ maxduration: 60, hiddenui : false, source : "voice" }, function(succ, data) { if (!succ) { alert(json.stringify(data)); } });
jsbridge.audiorecorder.stoprecord(function(succ, data) { alert(succ "\n" json.stringify(data)); }); /** data 返回实际录音时长 { duration //数字类型,实际录音时长 } **/
• 给 input file 标签添加 accept="audio/*" 属性。
• form 表单每次录制时长限30分钟以内。
回放
//回放最近一次的录音 jsbridge.audiorecorder.play(function(succ, data) { alert(succ "\n" json.stringify(data)); });
jsbridge.audiorecorder.pause(function(succ, data) { alert(succ "\n" json.stringify(data)); });
jsbridge.audiorecorder.resume(function(succ, data) { alert(succ "\n" json.stringify(data)); });
jsbridge.audiorecorder.stop(function(succ, data) { alert(succ "\n" json.stringify(data)); });
//需在 play 之后,stop 之前才能获取录音长度。 jsbridge.audiorecorder.duration(function(succ, data) { alert(succ "\n" json.stringify(data)); });
删除
//删除最近一次的录音 jsbridge.audiorecorder.remove(function(succ, data) { alert(succ "\n" json.stringify(data)); });
读取
//读取录音文件内容,以 base64 编码格式返回,需自己转换为二进制数据 jsbridge.audiorecorder.read(function(contentasbase64) { showresult({ contentasbase64: contentasbase64 }); });
上传
//上传最近一次的录音 //post(multipart/form-data 编码)方式上传最新录音文件到指定的地址 jsbridge.audiorecorder.upload({ //必须,字符串类型,post 方式接收录音文件的链接地址 //如需鉴权,请将鉴权参数放在此 url 上,参数需 urlencode 编码 url : "https://...", //可选,字符串类型,form-data 表单项名称,默认 file //在服务器上用类似 request.files["file"] 方式获取数据 name : "file" }, function(succ, data) { showresult({ succ: succ, data: data }); });
监听回调数据: