android - 使用 cordova 媒体插件录制音频会生成空文件

标签 android cordova audio

我正在使用以下代码在 Android 设备上使用 Cordova Media 插件录制音频。尽管在 stopRecord() 上成功返回,但这会导致一个空的音频文件。有人可以指出这段代码可能有什么问题吗?

$cordovaFile.createFile(cordova.file.dataDirectory, 'new-rec.amr'), false)
    .then(function (fileObj) {
      console.log('File created', fileObj);

      var nativePath = fileObj.nativeURL;
      resolveLocalFileSystemURL(nativePath, function (entry) {
        var internalPath = entry.toInternalURL();

        var mediaRec = new Media(internalPath,
          //success callback
          function (success) {
            console.log("record success", success);
          },

          //error callback
          function (err) {
            console.log("record error: " + JSON.stringify(err));
          });

        // Start recording audio
        mediaRec.startRecord();
      });
    }, function (error) {
      console.log('Cannot create a file to initiate a new recording', error);
    });

最佳答案

我今天遇到了同样的问题。通过释放 Media 对象来解决它。我不确定为什么这会有所帮助,但我有一种感觉,操作系统可能会保留媒体对象而不是保存它,然后一旦它被释放,它就会被正确保存?

虽然不是 100% 确定。它无需在其他 Cordova 目录(例如 cordova.file.externalDataDirectory)中发布即可工作。

这是我的代码:

var fileName = randomFileName();   
fileName = fileName + ".aac";
var store = cordova.file.dataDirectory;

window.resolveLocalFileSystemURL(store, function(dir){

    var directoryToSave = dir.nativeURL + fileName;        

    $scope.audioRecording = new Media(directoryToSave, audioRecordingSuccess, audioRecordingFail, audioStatus);

    $scope.audioRecording.startRecord();

    setTimeout(function(){
        $scope.audioRecording.stopRecord();
        $scope.audioRecording.release();
    }, 5000);

});

关于android - 使用 cordova 媒体插件录制音频会生成空文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34604451/

相关文章:

android - 如何仅在android中获取用户创建日期

java - android studio 3.0更新或错误代码引起的问题?

java - 在数据更改时更新 ListView 行

javascript - 如何在 Eclipse 中使用 Phonegap 在移动目录中创建简单的文本文件

vb.net - 如何在VB.NET或VB中压缩大型MP3文件以减小其大小和声音质量?

java - 在 View 寻呼机中滚动时折叠工具栏不会折叠

javascript - 如何在phonegap的readDataUrl中找到javascript的imageArray中的图像名称?

ios - Phonegap 2.9.0 中的摄像头无法正常工作

android - 在 android 中将 16 位 pcm 音频下采样为 8 位

iphone - AVAudioPlayer只能在模拟器中播放,但不能在设备中播放,为什么?! (iPhone-SDK)