PhoneGap:media.startRecord()在cordova-1.6.1中无效

时间:2012-05-08 14:08:21

标签: javascript ios cordova

我正在尝试使用phoneGap录制示例音频,但没有成功。

根据文档,我的工作非常简单:

<script>
var media = null;

function record(){
   media = new Media("audio.wav");
   media.startRecord();
}
</script>

“audio.wav”存在于我的“www”文件夹中,是一个空的wav文件。 每当此代码块运行时,我都会收到此控制台错误:

 - ERROR: Method 'create:withDict:' not defined in Plugin 'Media'

 - FAILED pluginJSON = {"className":"Media","methodName":"create","arguments":["INVALID","952d1fe0-5ec7-5e48-d68a-74cc979878b5","audio.wav"]}

即使有这个错误,录音也应该继续。但是当我尝试播放录音时,我在调试器上观看媒体对象,我看到'_duration:-1'

当我尝试在精确的iPhone设备上调试应用程序时,会出现不同的错误。

2 个答案:

答案 0 :(得分:1)

实际上,问题是即使我在你描绘的时候我正确地在根目录上创建了文件,我也无法在以后访问它,即使我得到它的URI(由于某种原因找不到文件,在同一个目录文件是在一秒钟前创建的!!!!)。 所以我发现(不是简单的方法......)我必须通过"documents://"访问它。因此,当我创建一个新媒体时,我会做类似的事情:

var mediaFile = new Media ("documents://"+audioFileName).

如果我做了“var mediaFile = new Media(fileURI_I_Just_Created)它会说该文件不存在!!!!(必须爱上phoneGap!)

答案 1 :(得分:0)

您需要在根目录中创建一个空白的wav文件,而不是www文件夹。获取根目录URI的方法之一是使用方法toURI()

这就是URI的样子:

file:///data/some/com.stack.overflow/

以下是如何在根目录中创建空白wav文件的示例:

function onDeviceReady() {
  window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}

function gotFS(fileSystem) {
  fileSystem.root.getFile("blank.wav", {create: true, exclusive: false}, gotFileEntry, fail);
}

注意:

create: Used to indicate that the file or directory should be created, if it does not exist. (boolean)
exclusive: By itself, exclusive has no effect. Used with create, it causes the file or directory creation to fail if the target path
     

已经存在。 (布尔值)