Используя Cordova File Plugin и Cordova Media Plugin, я записываю аудио фрагмент, который я пытаюсь сохранить и использовать в приложении.
Это прекрасно работает для iOS и некоторые устройства Android.Но на многих (особенно старых устройствах Samsung) обратный вызов успеха завершается неудачно после захвата аудиофрагмента.
Это соответствующая информация об ошибке с устройства 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
происходит на устройствах Samsung?Примечание. Устройства работают под управлением Android 5.0.1.Этот код отлично работает на Huawei с Android 8.0