我正在尝试使用Cordova 6.5.0上的 cordova-plugin-media 录制音频 . 当我运行该方法时,它返回'OK'并调用成功回调函数,但是当此函数尝试获取文件时,该文件不存在 .
如果我只是指定文件名,则文件放在/storage/emulated/0/filename.mp3,但应用程序无法访问此路径 . 因此,当我指定使用 cordova.file.cacheDirectory 作为参考进行保存时,它会在后台触发错误,但在javascript界面中,它仍然调用成功回调函数 .
看一下logcat,我发现了这样的事情:
E AudioPlayer:FAILED将/storage/emulated/0/tmprecording-1489806941198.3g重命名为/data/user/0/com.app/cache/recordedData-23-58cca65df12bf.mp3
我一直在网上搜索,我发现与Cordova 3.5.0有关的类似错误是一个BUG,但我使用的是Cordova 6.5.0,可能还在发生BUG吗?
此外,我已经检查了应用程序的权限,并且已经授予了所有必需的权限 . 例如:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我尝试使用 cordova.file.dataDirectory 而不是 cordova.file.cacheDirectory ,但我仍然没有成功 .
这里有一段代码:
audioCtx = new Media(
cordova.file.cacheDirectory + currentMediaFile,
uploadMediaCapture
);
//console.log("Recording audio.");
audioCtx.startRecord();
任何人都有任何关于如何解决这个问题的线索?
1 回答
Android无法将文件从/ storage移动到/ data愚蠢的部分是如果文件无法移动则moveFile方法不返回false因此仍然会调用Success回调 .
所以解决方案是用 cordova.file.externalCacheDirectory 或cordova.file.externalDataDirectory替换cordova.file.cacheDirectory