java-me - 如何在 Java ME、SE K770i 上使用 RecordControl 录制/捕获音频

标签 java-me audio-recording voice-recording recording media

我想在 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/

相关文章:

streaming - 将流媒体广播录制为 MP3

python - 在 python 中通话时将语音转换为文本

ios - 如何添加过滤器以从 iOS 中录制的音频文件中去除噪音

regex - 将 Android 正则表达式移植到 BlackBerry 正则表达式不起作用

使用音频记录 api 的 Android 录音应用程序

java - 使用 Java ME 的诺基亚不支持 FocusControl?

android - 录制和播放音频不起作用

java - 使用java通过局域网传输语音?

linux - ubuntu上的j2me开发

java - LWUIT 获取组合框选择