2012-05-08 4 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'을 봅니다

실제 아이폰 디바이스에서 애플리케이션을 디버깅하려고하면 다른 오류가 나타납니다.

답변

1

실제로 문제는 내가 묘사 할 때 루트 디렉토리에 파일을 올바르게 만들었다 고 생각했지만, 나중에 URI에 있어도 나중에 액세스 할 수 없습니다 (어떤 이유로 파일을 찾을 수 없습니다, 같은 디렉토리에 파일이 만들어졌습니다 !!!!). 그래서 나는 "documents://"을 통해 액세스해야한다는 (쉬운 방법은 아님) 것을 알았습니다. 나는 새로운 미디어를 만들 때 그래서 내가 좋아하는 뭔가를 할 :

내가 var mediaFile = new Media(fileURI_I_Just_Created) 그것은 그 파일이 존재하지 않는 말할 것 "했던 경우

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

!! (꼭 폰갭을 사랑 해요!)

0

www 폴더가 아닌 루트 디렉토리에 빈 wav 파일을 만들어야합니다. 루트 디렉터리 URI를 가져 오는 방법 중 하나는 toURI() 메서드를 사용하는 것입니다.

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

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

참고 :

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

당신이 루트 디렉토리에 빈 wav 파일을 만드는 방법의 예는 다음과 같습니다

는 같은 URI 모양을 것입니다
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)

관련 문제