首页 文章

Cordova 6.5.0无法使用cordova-plugin-media录制音频FAILED重命名/storage/emulated/0/tmprecording-1489806941198.3gp

提问于
浏览
2

我正在尝试使用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 回答

  • 3

    Android无法将文件从/ storage移动到/ data愚蠢的部分是如果文件无法移动则moveFile方法不返回false因此仍然会调用Success回调 .

    所以解决方案是用 cordova.file.externalCacheDirectory 或cordova.file.externalDataDirectory替换cordova.file.cacheDirectory

相关问题