捕获音频Phonegap错误代码3

时间:2014-01-13 19:12:40

标签: android cordova

我正在创建一个带录音的应用程序,我试图实现这个示例代码: http://docs.phonegap.com/en/3.3.0/cordova_media_capture_capture.md.html#capture.captureAudio

但是当点击按钮时会出现错误:代码错误3.根据文档,当您在录制任何内容之前退出录制aplicacion时会出现此错误,但是当我单击按钮时,录制应用程序未启动它会直接进入错误功能。

捕获视频效果很好。

将Phonegap 3.0.0或2.9.0与Phonegap Build一起使用。

代码:

<!DOCTYPE html>
<html>
<head>
<title>Capture Audio</title>

<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8" src="json2.js"></script>
<script type="text/javascript" charset="utf-8">

// Called when capture operation is finished
//
function captureSuccess(mediaFiles) {
    var i, len;
    for (i = 0, len = mediaFiles.length; i < len; i += 1) {
        uploadFile(mediaFiles[i]);
    }
}

// Called if something bad happens.
//
function captureError(error) {
    var msg = 'An error occurred during capture: ' + error.code;
    navigator.notification.alert(msg, null, 'Uh oh!');
}

// A button will call this function
//
function captureAudio() {
    // Launch device audio recording application,
    // allowing user to capture up to 2 audio clips
    navigator.device.capture.captureAudio(captureSuccess, captureError, {limit: 2});
}

// Upload files to server
function uploadFile(mediaFile) {
    var ft = new FileTransfer(),
        path = mediaFile.fullPath,
        name = mediaFile.name;

    ft.upload(path,
        "http://my.domain.com/upload.php",
        function(result) {
            console.log('Upload success: ' + result.responseCode);
            console.log(result.bytesSent + ' bytes sent');
        },
        function(error) {
            console.log('Error uploading file ' + path + ': ' + error.code);
        },
        { fileName: name });
}

</script>
</head>
<body>
    <button onclick="captureAudio();">Capture Audio</button> <br>
</body>

2 个答案:

答案 0 :(得分:6)

这不是您问题的准确答案,而是一种可行的替代方案。

我没有使用 org.apache.cordova.media-capture ,而是尝试 org.apache.cordova.media

这是一个小例子:

function recordAudio() {
    var src = "myrecording.amr";
    var mediaRec = new Media(src,
        // success callback
        function() {
            console.log("recordAudio():Audio Success");
        },

        // error callback
        function(err) {
            console.log("recordAudio():Audio Error: "+ err.code);
        });

    // Record audio
    mediaRec.startRecord();

    // Stop recording after 10 seconds
    setTimeout(function() {
        mediaRec.stopRecord();
    }, 10000);
}

不幸的是,每个设备都使用自己的音频编解码器,而在Android的情况下,它是AMR编解码器。我能够使用MPC (Windows)收听记录。但是,如果您要上传文件并与其他用户共享,则必须convert it

如果找不到myrecording.amr文件:它位于设备的根目录下。我没有弄清楚如何将文件临时存储在应用程序缓存文件夹本身(现有文件)中。

10秒的记录已经<10秒。 20kb大小。

AMR 8000Hz mono 12kbps [Audio]

质量非常糟糕。不幸的是,似乎没有可能提高质量。

答案 1 :(得分:3)

问题可能是没有处理RECORD_SOUND意图的应用程序。

我用过这个:

https://play.google.com/store/apps/details?id=com.brightattic.soundrecorder&hl=en

(除了在我的测试中有效之外,我没有认可它)