2010-05-22 6 views
2

K770i의 Java ME 응용 프로그램에 소리를 녹음하고 싶습니다. 내 코드에 RecordControl의Java ME, SE K770i에서 RecordControl을 사용하여 오디오를 녹음/캡처하는 방법

http://java.sun.com/javame/reference/apis/jsr135/javax/microedition/media/control/RecordControl.html

예 : 그래서 나는 이것을 사용했다. 그것은 이렇게 가고 :

import java.util.Vector; 

import javax.microedition.lcdui.Choice; 
import javax.microedition.lcdui.Command; 
import javax.microedition.lcdui.CommandListener; 
import javax.microedition.lcdui.Display; 
import javax.microedition.lcdui.Displayable; 
import javax.microedition.lcdui.List; 
import javax.microedition.media.Manager; 
import javax.microedition.media.MediaException; 
import javax.microedition.midlet.MIDlet; 

import java.io.*; 

import javax.microedition.lcdui.*; 
import javax.microedition.media.*; 
import javax.microedition.media.control.*; 
import javax.microedition.midlet.*; 
import javax.microedition.rms.*; 

(...) 

try { 
    // Create a Player that captures live audio. 
    Player p = Manager.createPlayer("capture://audio"); 
    p.realize(); 
    // Get the RecordControl, set the record stream, 
    // start the Player and record for 5 seconds. 
    RecordControl rc = (RecordControl)p.getControl("RecordControl"); 
    ByteArrayOutputStream output = new ByteArrayOutputStream(); 
    rc.setRecordStream(output); 
    rc.startRecord(); 
    p.start(); 
    Thread.currentThread().sleep(5000); 
    rc.commit(); 
    p.close(); 
} catch (IOException ioe) { 
} catch (MediaException me) { 
} catch (InterruptedException ie) { } 

그러나 불행하게도 내가 빌드 할 때, 그것은 저에게 말한다 :

*** Creating directories *** 
*** Compiling source files *** 
..\src\example\audiodemo\AudioPlayer.java:121: cannot find symbol 
symbol : class RecordControl 
location: class example.audiodemo.AudioPlayer 
      RecordControl rc = (RecordControl)p.getControl("RecordControl"); 
     ^
..\src\example\audiodemo\AudioPlayer.java:121: cannot find symbol 
symbol : class RecordControl 
location: class example.audiodemo.AudioPlayer 
      RecordControl rc = (RecordControl)p.getControl("RecordControl"); 
          ^
2 errors 

그래서 내 질문은 : 더 RecordControl 클래스가없는 이유를 문서화에이 작성된 경우 클래스가 있어야합니다. 또는 Sony Ericsson의 Java ME에서 마이크로 폰의 오디오를 녹음/캡처하는 다른 방법이 있습니까?

어떻게 소리를 녹음합니까?

+0

이것은 아주 나쁜 것입니다. 컴파일러는 Player 또는 Manager에 대해 불평하지 않으므로 JSR-135의 일부만 포함하는 플랫폼에 대해 컴파일하는 경우가 있습니다. 나는 이것이 합법적 인 JavaME라고 확신하지 않는다. 세부 사항에 툴체인을 설명하는 것이 가치 있다고 생각합니다. –

+0

Java ME 플랫폼 –

답변

3

오디오 캡처가 지원되지 않는 것 같습니다.

소니 전화에서이 값을 가져 오십시오.

은 System.getProperty ("supports.audio.capture")

는 위의 진술을 추가 한 형태와 단순한 미들 릿을 작성합니다. 아래처럼 ...

frm.append ("Audio :"+ System.getProperty ("supports.audio.capture")));

이 값이 false를 반환하면 취소 된 것입니다. RecordControl은 작동하지 않습니다.

소니 휴대 전화는 오디오 캡처를 지원하지 않습니다 .. 소니 p1i. 이 도움이

희망 ..

+0

에 Sony Ericsson SDK 2.5.0.6을 사용하고 있습니다. 휴대 전화에 지원되는 정보를 반환합니다.지금 무엇을해야할까요? –

1

확인을 위하여 내가 나를 초보자 자바를 생각했다. 그래서 내가 할 필요가 무엇을 : 나는 다른 데모 프로젝트에서 사용하는 경우 build.bat에서 javax.microedition.media.control.RecordControl

2)에 JAD 및 매니페스트 파일에있는 MIDlet-권한 추가

1) RecordControl가에 위치한 mmapi.jar의 포함을 추가 그래서 내가 마지막 라인은 여기에 표시된 추가 한

을 :.

set CLDCAPI=%LIB_DIR%\cldcapi10.jar 
set MIDPAPI=%LIB_DIR%\midpapi20.jar 
set MMAPI=%LIB_DIR%\mmapi.jar 

그리고 코드의 두 라인을 업데이트 이러한 변화에 따라 :

%JAVAC% -bootclasspath %CLDCAPI%;%MIDPAPI%;%MMAPI% -source 1.3 -target 1.3 -d ..\tmpclasses -classpath ..\tmpclasses %JAVA_FILES% 

%PREVERIFY% -classpath %CLDCAPI%;%MIDPAPI%;%MMAPI%;..\tmpclasses -d ..\classes ..\tmpclasses 

이제 모든 것이 잘 컴파일됩니다. 매우 안타까운가요?