【问题标题】:Cordova 6.5.0 fails recording audio using cordova-plugin-media FAILED renaming /storage/emulated/0/tmprecording-1489806941198.3gpCordova 6.5.0 无法使用 cordova-plugin-media 录制音频失败重命名 /storage/emulated/0/tmprecording-1489806941198.3gp
【发布时间】:2017-08-09 18:11:20
【问题描述】:

我正在尝试在 Cordova 6.5.0 上使用 cordova-plugin-media 录制音频。当我运行该方法时,它返回“OK”并调用成功回调函数,但是当此函数尝试获取文件时,该文件不存在。

如果我只指定文件名,则该文件位于 /storage/emulated/0/filename.mp3 但应用程序无法访问此路径。因此,当我指定使用 cordova.file.cacheDirectory 作为参考保存时,它会在后台触发错误,但在 javascript 界面中,它仍然调用成功回调函数。

看了一下logcat,发现是这样的:

E 音频播放器: 将 /storage/emulated/0/tmprecording-1489806941198.3gp 重命名为 /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();

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: javascript android html cordova media


    【解决方案1】:

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

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

    替换 cordova.file.cacheDirectory

    【讨论】:

      猜你喜欢
      • 2018-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多