2012-05-08 54 views
0

我試圖用phoneGap錄製示例音頻,但沒有成功。PhoneGap:media.startRecord()不工作在cordova-1.6.1

我做的是非常簡單的,根據文檔:

<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設備上調試應用程序時,出現不同的錯誤。

回答

1

實際上,問題在於,即使我認爲我正確地創建了根目錄中的文件,我以後無法訪問它,即使我得到了它的URI(由於某種原因找不到文件,在同一個目錄下文件是在第二個之前創建的!!!!)。 所以我發現(不是簡單的方法..),我必須通過"documents://"訪問它。所以,當我創建一個新的媒體我做這樣的事情:

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

如果我做了「var mediaFile = new Media(fileURI_I_Just_Created)它會說文件不存在!!!!(愛是愛的PhoneGap!)

0

您需要在根目錄中創建一個空白wav文件,而不是www文件夾。您可以使用方法toURI()獲取根目錄URI的方法之一。

這是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 

already exists. (boolean)