有谁知道一个很好的存储库来获取黑莓的示例代码?具体来说,可以帮助我学习录制音频的机制,甚至可能对其进行采样并对其进行一些动态信号处理的示例?
我想读取传入的音频,如果需要,逐个采样,然后对其进行处理以产生所需的结果,在这种情况下是可视化器。
有谁知道一个很好的存储库来获取黑莓的示例代码?具体来说,可以帮助我学习录制音频的机制,甚至可能对其进行采样并对其进行一些动态信号处理的示例?
我想读取传入的音频,如果需要,逐个采样,然后对其进行处理以产生所需的结果,在这种情况下是可视化器。
RIM API 包含用于处理音频和视频内容的JSR 135 Java 移动媒体 API 。
您更正了 BB 知识库上的混乱情况。唯一的方法是浏览它,希望他们不会再更改站点地图。
它是开发人员->资源->知识库-> Java API的&示例->音频和视频
基本上录制音频很简单:
链接:
RIM 4.6.0 API 参考: 包 javax.microedition.media
如何 - 在 BlackBerry 智能手机上录制音频
如何 - 在应用程序中播放音频
如何 - 支持将音频流式传输到媒体应用程序
如何 - 指定音频路径路由
如何To - 从媒体应用程序获取媒体播放时间
What Is - 支持的音频格式
What Is - 媒体应用程序错误代码
声明了带有 Player、RecordControl 和资源的线程:
final class VoiceNotesRecorderThread extends Thread{
private Player _player;
private RecordControl _rcontrol;
private ByteArrayOutputStream _output;
private byte _data[];
VoiceNotesRecorderThread() {}
private int getSize(){
return (_output != null ? _output.size() : 0);
}
private byte[] getVoiceNote(){
return _data;
}
}
在 Thread.run() 开始录音:
public void run() {
try {
// Create a Player that captures live audio.
_player = Manager.createPlayer("capture://audio");
_player.realize();
// Get the RecordControl, set the record stream,
_rcontrol = (RecordControl)_player.getControl("RecordControl");
//Create a ByteArrayOutputStream to capture the audio stream.
_output = new ByteArrayOutputStream();
_rcontrol.setRecordStream(_output);
_rcontrol.startRecord();
_player.start();
} catch (final Exception e) {
UiApplication.getUiApplication().invokeAndWait(new Runnable() {
public void run() {
Dialog.inform(e.toString());
}
});
}
}
并且在 thread.stop() 记录停止:
public void stop() {
try {
//Stop recording, capture data from the OutputStream,
//close the OutputStream and player.
_rcontrol.commit();
_data = _output.toByteArray();
_output.close();
_player.close();
} catch (Exception e) {
synchronized (UiApplication.getEventLock()) {
Dialog.inform(e.toString());
}
}
}
在录制结束时,您将获得充满特定音频格式数据的输出流。因此,要对其进行处理或采样,您必须解码此音频流。
谈到动态处理,那将更加复杂。您将不得不在录制期间读取输出流而不提交录制。所以会有几个问题需要解决:
也可能有用:
java.net: Experiments in Streaming Content in Java ME by Vikram Goyal
虽然不是特定于音频,但这个问题确实有一些很好的“入门”参考。
我也花了很长时间试图弄清楚这一点。安装 BlackBerry 组件包(可从其网站获得)后,您可以在组件包中找到示例代码。
在我的例子中,一旦我将组件包安装到 Eclipse 中,我在这个位置找到了提取的示例代码:
C:\Program Files\Eclipse\eclipse3.4\plugins\net.rim.eide.componentpack4.5.0_4.5.0.16\components\samples
不幸的是,当我导入所有示例代码时,我遇到了一堆编译错误。为了解决这个问题,我刚刚删除了 20% 的带有编译错误的包。
我的下一个问题是启动模拟器总是启动第一个示例代码包(在我的情况下为 activetextfieldsdemo),我无法让它只运行我感兴趣的包。解决方法是删除之前按字母顺序列出的所有包我想要的那个。
其他陷阱:
- 右键单击 Eclipse 中的项目并选择为 BlackBerry 激活- 选择
BlackBerry -> Build Configurations... -> Edit... 并选择您的新项目以便构建。
- 确保将 BlackBerry 源代码放在 Eclipse 项目中的“src”文件夹下,否则可能会遇到构建问题。