无法在IOS上的ionic应用程序中录制和保存音频
我正在制作一款ionic应用程序,它可以录制音频并将其存储到永久位置,而它在Android上运行得非常完美,IOS让我发疯 这是我正在使用的代码 创建目录的代码无法在IOS上的ionic应用程序中录制和保存音频,ios,file,cordova,ionic-framework,media,Ios,File,Cordova,Ionic Framework,Media,我正在制作一款ionic应用程序,它可以录制音频并将其存储到永久位置,而它在Android上运行得非常完美,IOS让我发疯 这是我正在使用的代码 创建目录的代码 if (ionic.Platform.isAndroid()) { console.log('ok..its android. setting base dir path'); $rootScope.dirBasePath = cordova.file.externalRootDirectory; } else if (ioni
if (ionic.Platform.isAndroid()) {
console.log('ok..its android. setting base dir path');
$rootScope.dirBasePath = cordova.file.externalRootDirectory;
} else if (ionic.Platform.isIOS()) {
console.log('it is ios, setting base path');
$rootScope.dirBasePath = cordova.file.dataDirectory;
}
console.log($rootScope.dirBasePath);
// create directory for audio recordings
$cordovaFile.createDir($rootScope.dirBasePath, "corrit", false)
.then(function (success) {
console.log('created dir '+JSON.stringify(success));
}, function (error) {
console.log('error creating dir '+JSON.stringify(error));
});
正在两个平台上成功创建目录
这是重新编码音频文件的代码
timestamp = new Date()
if (ionic.Platform.isAndroid()) {
$scope.audioFileName = timestamp.getTime()+'.amr';
} else if (ionic.Platform.isIOS()) {
$scope.audioFileName = timestamp.getTime()+'.wav';
}
$scope.data.audioSrc = $rootScope.dirBasePath+'corrit/'+$scope.audioFileName;
console.log($scope.data.audioSrc);
$scope.data.media = $cordovaMedia.newMedia($scope.data.audioSrc);
console.log('recording audio...');
$scope.data.media.startRecord();
console.log('stoping audio...');
$scope.data.media.stopRecord();
$scope.data.media.play();
这是播放音频文件的代码
timestamp = new Date()
if (ionic.Platform.isAndroid()) {
$scope.audioFileName = timestamp.getTime()+'.amr';
} else if (ionic.Platform.isIOS()) {
$scope.audioFileName = timestamp.getTime()+'.wav';
}
$scope.data.audioSrc = $rootScope.dirBasePath+'corrit/'+$scope.audioFileName;
console.log($scope.data.audioSrc);
$scope.data.media = $cordovaMedia.newMedia($scope.data.audioSrc);
console.log('recording audio...');
$scope.data.media.startRecord();
console.log('stoping audio...');
$scope.data.media.stopRecord();
$scope.data.media.play();
以下是ios的控制台日志
created dir {"isFile":false,"isDirectory":true,"name":"corrit","fullPath":"/corrit/","filesystem":"<FileSystem: library-nosync>","nativeURL":"file:///var/mobile/Containers/Data/Application/C07AA015-63B3-4B10-8032-08B0352F06F0/Library/NoCloud/corrit/"}
record audio
file:///var/mobile/Containers/Data/Application/C07AA015-63B3-4B10-8032-08B0352F06F0/Library/NoCloud/corrit/1450348328418.wav
recording audio...
THREAD WARNING: ['Media'] took '575.528076' ms. Plugin should use a background thread.
exeption nativeEvalAndFetch : TypeError: undefined is not an object (evaluating 'a.reject')
stoping audio...
Failed to initialize AVAudioPlayer: The operation couldn’t be completed. (OSStatus error 2003334207.)
THREAD WARNING: ['Media'] took '18.506104' ms. Plugin should use a background thread.
created dir{“isFile”:false,“isDirectory”:true,“name”:“corrit”,“fullPath”:“/corrit/”,“filesystem”:“nativeURL”:file:///var/mobile/Containers/Data/Application/C07AA015-63B3-4B10-8032-08B0352F06F0/Library/NoCloud/corrit/"}
录音
file:///var/mobile/Containers/Data/Application/C07AA015-63B3-4B10-8032-08B0352F06F0/Library/NoCloud/corrit/1450348328418.wav
录音。。。
线程警告:['Media']采用了'575.528076'ms。插件应使用后台线程。
exeption NativeValandFetch:TypeError:undefined不是对象(正在计算“a.reject”)
停止音频。。。
未能初始化AVAudioPlayer:操作无法完成。(OSStatus错误2003334207。)
线程警告:['Media']使用'18.506104'ms。插件应使用后台线程。
我猜该文件不是指定路径的记录
怎么了
谢谢这里有同样的问题,我不知道为什么这里有问题,我不知道为什么