WebApp快捷打包
录音
转到模块插件

敬告:此 DEMO 演示为开放测试页面,仅用于开发者快速测试体验应用功能,请严格遵守开发者协议,了解更多

JS-SDK 引用方式:

♦ 普通网页 script 方式加载:下载最新版 jsBridge-v20240326.zip,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;

♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package

♦ jsBridge.audioRecorder;

♦ APP 端始终只保留一个录音文件,执行 startRecord 将覆盖已有录音;

♦ 执行 remove 可删除录音;

事件监听

setListener 设置监听器

• 如需接口调用事件,请设置此监听器;

• 回调参数 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数据结构 请详见具体接口注释

**/

removeListener 移除监听器

//移除监听器,不会再收到回调通知
//在需要时可重新调用 setListener
jsBridge.audioRecorder.removeListener();

录音

startRecord 开始录音

• 本接口会自动请求录音权限,未授权则无法录音;

• 你可先调用 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));
  }
});

startRecord 开始录音 - voice

jsBridge.audioRecorder.startRecord({
  maxDuration: 60,
  hiddenUI   : false,
  source     : "voice"
}, function(succ, data) {
  if (!succ) {
    alert(JSON.stringify(data));
  }
});

stopRecord 停止录音

jsBridge.audioRecorder.stopRecord(function(succ, data) {
  alert(succ + "\n" + JSON.stringify(data));
});

/**
data 返回实际录音时长
  {
    duration //数字类型,实际录音时长
  }
**/

HTML Form 表单录音

• 给 input file 标签添加 accept="audio/*" 属性。

• form 表单每次录制时长限30分钟以内。

<input type="file" accept="audio/*" name="file" />

回放

play 回放录音

//回放最近一次的录音
jsBridge.audioRecorder.play(function(succ, data) {
  alert(succ + "\n" + JSON.stringify(data));
});

pause 暂停播放

jsBridge.audioRecorder.pause(function(succ, data) {
  alert(succ + "\n" + JSON.stringify(data));
});

resume 恢复播放

jsBridge.audioRecorder.resume(function(succ, data) {
  alert(succ + "\n" + JSON.stringify(data));
});

stop 停止播放

jsBridge.audioRecorder.stop(function(succ, data) {
  alert(succ + "\n" + JSON.stringify(data));
});

duration 获取录音时长(秒)

//需在 play 之后,stop 之前才能获取录音长度。
jsBridge.audioRecorder.duration(function(succ, data) {
  alert(succ + "\n" + JSON.stringify(data));
});

删除

remove 删除录音

//删除最近一次的录音
jsBridge.audioRecorder.remove(function(succ, data) {
  alert(succ + "\n" + JSON.stringify(data));
});

读取

read 读取录音文件内容

//读取录音文件内容,以 Base64 编码格式返回,需自己转换为二进制数据
jsBridge.audioRecorder.read(function(contentAsBase64) {
  showResult({
    contentAsBase64: contentAsBase64
  });
});

上传

upload 上传录音

//上传最近一次的录音
//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
  });
});

监听回调数据: