2016-01-05 4 views
5

次のコードを使用して、アンドロイドデバイスのCordova Mediaプラグインを使用してオーディオを録音しています。 stopRecord()で正常に返されたにもかかわらず、空のオーディオファイルになります。誰かがこのコードで間違っているかもしれないことを指摘できますか?cordovaメディアプラグインを使用してオーディオを録音すると、空のファイルになります

$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); 
    }); 
+0

はこれで任意の運?私は同じ問題を抱えている –

答えて

0

私は今日まったく同じ問題を抱えていました。 Mediaオブジェクトを解放して解決しました。なぜこれが助けになったのか分かりませんが、OSがメディアオブジェクトを保存せずに保持していて、それがリリースされたら正しく保存されている可能性があります。

しかし、100%確かではありません。これは他のCordovaのディレクトリ(codeova.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); 

}); 
関連する問題