使用Cordova File Plugin和Cordova Media插件我正在捕获一个音频片段,我尝试在应用程序中保存和使用 .

这适用于iOS和某些Android设备 . 但是在许多(特别是旧的三星)设备上,成功回调在捕获音频片段后失败 .

这是来自Samsung设备的相关错误信息:

temporary directory: file:///storage/emulated/0/Sounds/Spraak%20005.m4a
current file name: Spraak 005.m4a
move to this directory: file:///data/data/com.ctrl.appname/files/appname/recordings
new file name: opname_1539936956.m4a
cordova.js:309 Error in Success callbackId: File1062676118 : TypeError: e.getFile is not a function
cordova.js:311 Uncaught TypeError: e.getFile is not a function
    at ng-cordova.min.js:8
    at resolveLocalFileSystemURI.js:76
    at Object.require.getFs (fileSystems-roots.js:41)
    at success (resolveLocalFileSystemURI.js:70)
    at Object.callbackFromNative (cordova.js:291)
    at <anonymous>:1:9

这是我们在记录文件后移动文件的方式:

var rootDirectory = cordova.file.applicationStorageDirectory;
var recordingDirectory = "appname/recordings";
var filename = $scope.filename = 'opname_' + Math.floor(Date.now() / 1000);
var temp_dir = (ionic.Platform.isIOS()) ? cordova.file.tempDirectory : mediaFiles[i].fullPath.replace(mediaFiles[i].name, '');
var extension = mediaFiles[i].name.split('.')[1];

console.log('temporary directory: ' + temp_dir);
console.log('current file name: ' + mediaFiles[i].name);
console.log('move to this directory: ' + rootDirectory + recordingDirectory);
console.log('new file name: ' + filename + "." + extension);

$cordovaFile.moveFile(temp_dir, mediaFiles[i].name, rootDirectory + recordingDirectory, filename + "." + extension)
    .then(function () {
        database.add('Recordings', {0: filename, 1: 0}).then(function () {
        });
        $scope.entries.push({active: 0, name: filename});
        $scope.alertNameChange = true;
    }, function (error) {
        alert(error);
        console.dir(error);
    });

有谁知道为什么这个 TypeError: e.getFile is not a function 会出现在三星设备上?注意:设备运行的是Android 5.0.1 . 此代码适用于安装了Android 8.0的华为