繁体   English   中英

Cordova在ios9上录制音频不起作用

[英]Cordova record audio on ios9 does not work

我正在使用Cordova构建一个html5 / JS应用程序。

我必须录制和播放音频,所以我使用Media&File插件,但我有问题让它在iOS上运行。

我的步骤:

1)

我检测平台(Android或iOS)。

如果Android,不需要设置任何东西,它的工作原理。

如果是Ios,我将文件URI设置为'../Library/NoCloud/'(阅读Raymond Camden文章后 ),

然后我在录制前创建文件:

var mediaBaseUrl = '';
if(app.isIOS){
            mediaBaseUrl ='../Library/NoCloud/';
            createFileSystem();
}

我的createFile函数是:

createFileSystem : function(){
        var fileName= mediaBaseUrl+[myFileName];

        //asking for a new space
        window.requestFileSystem(
            LocalFileSystem.PERSISTENT, 
            0, 

            //success 
            function(fileSystem){

                fileSystem.root.getFile(

                    fileName, 
                    { create: true, exclusive: false },

                    //success callback
                    function(){
                        console.log('ok file created');
                    }, 
                    null
                );
            },

            // error
            function() {
                console.log("***log: failed in creating media file in requestFileSystem");
            }
        );
    },

2)创建文件后,我使用Media构造函数创建记录文件:

var recordedFile = new Media(
                mediaBaseUrl + [myFileName], 

                // success callback 
                function () {},

                // error callback
                function (err) {
                    console.log("recorded file error " );
                    console.log(err)
                }
            );

3)在配置XML中,我有这行记录在iOS库文件夹中,并且没有保存在云中:

  <preference name="iosPersistentFileLocation" value="Library" />
  <preference name="BackupWebStorage" value="none" />

我的问题 :

在Android设备上,一切都很好,我可以录制然后听音频文件。

但在iOS设备(ipad2)上,有些事情很奇怪:

  • 使用我的文件名“../Library/NoCloud/myFileName”,我没有成功回调fileSystem.root.getFile函数,但我可以看到一个文件在我的ipad Library / NoCloud文件夹中有一个好名字和好地方, 除了该文件为空。 因此,Media构造函数无法播放该文件并返回错误。

  • 如果我将myFileName设置为“myFileName”,我有文件创建的回调('ok file created'),但是Media构造函数无法访问该文件并返回错误:

     message: "Cannot use audio file from resource 'test.wav'", code: 1 

我已经检查过ipad麦克风,它已为此应用程序激活。 我相信它在ipad(现在是iOS 9.3.2)上的iOS更新之前有效,但我不确定了。 有什么我做错了,还是有新的方式来处理?

谢谢 !

您必须包含cdvfile:// localhost / library-nosync / with / Library / NoCloud

即cdvfile:// localhost / library-nosync //必须在url中提供Library / NoCloud

请记住,假设库文件夹位于www文件夹中,则会给出URL

这个问题来自ios9以及之后

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM