2012-09-20 5 views
4

Nokia C1에서 오디오를 녹음 할 때 예외가 발생합니다.J2ME에서 오디오를 녹음 할 때 예외 발생

Error2: 
javax.microediting.media.MediaException: MUS 

는 사람이 예외를 제거하는 나를 도울 수 또는 어디에 내가 잘못 갈거야 : 아래 나는 다음과 같은 예외가 무엇입니까입니까? 다음은

, 내 코드를 제공하고있는 나는이 예외를 얻고있다 :

package video; 

import javax.microedition.midlet.*; 

import java.io.*; 
import javax.microedition.lcdui.*; 
import javax.microedition.media.*; 
import javax.microedition.media.control.*; 

public class VoiceRecordMidlet extends MIDlet { 

    private Display display; 

    public void startApp() { 
     display = Display.getDisplay(this); 
     display.setCurrent(new VoiceRecordForm()); 
    } 

    public void pauseApp() { 
    } 

    public void destroyApp(boolean unconditional) { 
     notifyDestroyed(); 
    } 
} 

class VoiceRecordForm extends Form implements CommandListener { 

    private StringItem message; 
    private StringItem errormessage; 
    private final Command record, play, end; 
    private Player player; 
    private byte[] recordedAudioArray = null; 
    private RecordControl rc; 
    private ByteArrayOutputStream output; 

    public VoiceRecordForm() { 
     super("Recording Audio"); 
     message = new StringItem("", "Select Record to start recording."); 
     this.append(message); 
     errormessage = new StringItem("", ""); 
     this.append(errormessage); 
     record = new Command("Record", Command.SCREEN, 0); 
     this.addCommand(record); 
     play = new Command("Play", Command.SCREEN, 0); 
     end = new Command("End", Command.SCREEN, 0); 
     this.setCommandListener(this); 
    } 

    public void commandAction(Command comm, Displayable disp) { 
     if (comm == record) { 
      Thread t = new Thread() { 

       public void run() { 
        try { 

         player = Manager.createPlayer("capture://audio"); 

         player.realize(); 
         rc = (RecordControl) player.getControl("RecordControl"); 
         output = new ByteArrayOutputStream(); 
         rc.setRecordStream(output); 
         rc.startRecord(); 
         player.start(); 
         removeCommand(record); 
         addCommand(end); 


        } catch (Exception e) { 
         errormessage.setLabel("Error1"); 
         errormessage.setText(e.toString()); 
        } 
       } 
      }; 

      t.start(); 

     } else if (comm == play) { 
      try { 

       ByteArrayInputStream recordedInputStream = new ByteArrayInputStream(recordedAudioArray); 

       Player p2 = Manager.createPlayer(recordedInputStream, "audio/basic"); 

       **p2.prefetch(); 

       p2.start();** 

      } catch (Exception e) { 
       errormessage.setLabel("Error2"); 
       errormessage.setText(e.toString()); 
      } 
     } else if (comm == end) { 
      try { 
       rc.stopRecord(); 
       removeCommand(end); 
       addCommand(play); 
           rc.commit(); 
       recordedAudioArray = output.toByteArray(); 

       player.close(); 

      } catch (IOException ex) { 
       ex.printStackTrace(); 
      } 
     } 
    } 
} 

답변

0

내 프로젝트 중 하나의 기록 부분과 코드의 기록 부분을 비교할 때 내가 발견 할 수있는 유일한 차이는, 나는 소니 에릭슨 휴대 전화에 나를 위해 작동 player.start을() 나는 recordControl.startRecord를 호출하기 전에()

player = Manager.createPlayer("capture://audio"); 
player.realize(); 
player.start(); 
recordControl = (RecordControl) player.getControl("RecordControl"); 
bos = new ByteArrayOutputStream(); 
recordControl.setRecordStream(bos); 
recordControl.startRecord(); 

호출 할 것입니다.

나는 오디오를 재생하지 않으므로 코드 일부가 문제의 원인인지는 알 수 없습니다.