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 开发的过程中应用。