我想在 K770i 上的 Java ME 应用程序上录制声音。所以我用了这个:
http://java.sun.com/javame/reference/apis/jsr135/javax/microedition/media/control/RecordControl.html
我的代码中的 RecordControl 示例。事情是这样的:
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 类。或者还有其他方法可以在索尼爱立信的 Java ME 中从麦克风录制/捕获音频吗?
如何录制声音?
最佳答案
原因可能是不支持音频捕获。
尝试从索尼手机获取该值。
System.getProperty("supports.audio.capture")
编写一个简单的 midlet,并在表单中附加上述语句。像下面这样..
frm.append("Supports Audio:" + System.getProperty("supports.audio.capture"));
如果返回 false,那么你就清楚了...... RecordControl 将不起作用。
很少有索尼手机不支持音频捕获..比如索尼 p1i。
希望这有帮助..
关于java-me - 如何在 Java ME、SE K770i 上使用 RecordControl 录制/捕获音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2887382/