mp3Recorder 模块封装在 iOS、Android 下录音间接生成 mp3,对立两个平台的录音生成文件,不便双平台之间的交互,缩小录音实现后再转码的过程;同时提供分贝波形图显示 UI;应用该模块前须要关上麦克风权限。
固件要求:Android:4.0 及以上 iOS:8.0 及以上
该模块提供了 8 个接口:
addEventListener 视频后果和声音分贝监听;
startRecord 开始录音
stopRecord 进行录音
openVoiceLine 显示线性波形图
closeVoiceLine 敞开线性波形图
setDecibels 设置波形图的分贝值
pauseRecord 暂停录音
resumeRecord 复原录音
办法详解见 apicloud 平台模块开发文档:
https://docs.apicloud.com/Cli...
以下是代码的具体实现过程:
<!DOCTYPE html><html><head> <title>Module Develop</title> <meta charset="utf-8"> <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" /> <style type="text/css"> html, body { height: 100% } body { background-color: #fff; margin: 0; } #wrap { height: 100%; position: relative; } #header { padding-top: 20px; background-color: #5082c2; height: 44px; position: relative; } #header h1 { font-size: 20px; height: 44px; line-height: 44px; margin: 0em; color: #fff; margin-left: 100px; margin-right: 100px; text-align: center; } #main { display: -webkit-box; -webkit-box-orient: vertical; -webkit-box-pack: center; } a.button { display: -webkit-box; -webkit-box-orient: vertical; -webkit-box-pack: center; -webkit-box-align: center; height: 32px; margin: 8px; background-color: rgba(240, 240, 240, 1.0); border-color: rgba(220, 220, 220, 1.0); border-width: 2px; border-style: solid; } a.active { background-color: rgba(240, 240, 240, 0.7); } </style></head><body> <div id="wrap"> <div id="main"> <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> <a class="button" tapmode="active" onclick="_addEventListener()">监听录音</a> <a class="button" tapmode="active" onclick="startRecord()">开始录音</a> <a class="button" tapmode="active" onclick="pauseRecord()">暂停录音</a> <a class="button" tapmode="active" onclick="resumeRecord()">复原录音</a> <a class="button" tapmode="active" onclick="stopRecord()">进行录音</a> <a class="button" tapmode="active" onclick="openVoiceLine()">关上曲线</a> <a class="button" tapmode="active" onclick="closeVoiceLine()">敞开曲线</a> <a class="button" tapmode="active" onclick="setDecibels()">设置分贝值</a> <a class="button" tapmode="active" onclick="playAudio()">播放录音</a> <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> </div> </div></body><script> apiready = function () { } var mp3Path; function _addEventListener() { var demo = api.require('mp3Recorder'); demo.addEventListener(function (ret, err) { alert(JSON.stringify(ret)); if (ret.evenType == 'endRecord') { mp3Path = ret.data.path; } api.toast({ msg: JSON.stringify(ret) }); }); } function startRecord() { var demo = api.require('mp3Recorder'); demo.startRecord({ channel: 2, //声道反对:1 单声道 2 立体声道 sampleRates: 44100, //采样率 }, function (ret, err) { api.toast({ msg: JSON.stringify(ret) }); }); } function pauseRecord() { var demo = api.require('mp3Recorder'); demo.pauseRecord(function (ret, err) { api.toast({ msg: JSON.stringify(ret) }); }); } function resumeRecord() { var demo = api.require('mp3Recorder'); demo.resumeRecord(function (ret, err) { api.toast({ msg: JSON.stringify(ret) }); }); } function stopRecord() { var demo = api.require('mp3Recorder'); demo.stopRecord(function (ret, err) { api.toast({ msg: JSON.stringify(ret) }); }); } function openVoiceLine() { var demo = api.require('mp3Recorder'); demo.openVoiceLine({ rect: { x: 0, y: 0, w: api.frameWidth, h: api.frameHeight / 3 }, fixedOn: api.frameName, fixed: true, isTransparent: false, //背景是否通明(通明时能够穿透点击视图) }, function (ret, err) { alert(JSON.stringify(ret)); }); } function closeVoiceLine() { var demo = api.require('mp3Recorder'); demo.closeVoiceLine(function (ret, err) { api.toast({ msg: JSON.stringify(ret) }); }); } function setDecibels() { var demo = api.require('mp3Recorder'); var random = getRandom(0, 60); demo.setDecibels({ decibel: random }, function (ret, err) { api.toast({ msg: JSON.stringify(ret) }); }); } function getRandom(min, max) { var r = Math.random() * (max - min); var re = Math.round(r + min); re = Math.max(Math.min(re, max), min) return re; } function playAudio() { api.startPlay({ path: mp3Path }, function (ret, err) { }); }</script></html>
模块应用绝对比较简单,能够在 APICloud 开发平台上创立利用并增加间接增加模块,编译后装置到手机上,用示例代码进行测试。不便开发者在 app 开发的过程中应用。