我在诺基亚C1录制音频时遇到异常。以下是我得到的以下例外情况:
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 :(得分:0)
在将代码的录制部分与我的某个项目的录制部分进行比较时,我能发现的唯一区别是我在调用recordControl.startRecord()之前调用了player.start()
player = Manager.createPlayer("capture://audio");
player.realize();
player.start();
recordControl = (RecordControl) player.getControl("RecordControl");
bos = new ByteArrayOutputStream();
recordControl.setRecordStream(bos);
recordControl.startRecord();
这适用于索尼爱立信手机。
我不播放音频,所以我不知道你的代码中是否有这个问题。