我正在使用以下代码在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);
});
答案 0 :(得分:1)
我今天遇到了同样的问题。通过释放Media对象解决了这个问题。我不确定为什么这会有所帮助,但我觉得操作系统可能会保留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);
});