首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Blackberry音频录制示例代码

Blackberry音频录制示例代码
EN

Stack Overflow用户
提问于 2009-05-28 04:02:35
回答 3查看 8.2K关注 0票数 3

有没有人知道一个好的存储库来获取BlackBerry的示例代码?具体地说,样本将帮助我学习录制音频的机制,甚至可能采样并对其进行一些动态信号处理?

我想要读取传入的音频,如果需要的话,逐个样本,然后对其进行处理以产生所需的结果,在这种情况下是可视化工具。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-08 07:07:30

RIM接口包含用于处理音视频内容的JSR 135 Java Mobile Media API

您在BB知识库上纠正了关于mess的错误。唯一的办法就是浏览它,希望他们不会再改变网站地图。

我是Developers->Resources->Knowledge Base->Java API's&Samples->Audio&Video

录音

基本上,录制音频很简单:

  • 使用正确的音频编码创建播放器
  • get RecordControl
  • 开始录制
  • 停止录制

链接:

RIM 4.6.0 API ref: Package javax.microedition.media

How To - Record Audio on a BlackBerry smartphone

How To - Play audio in an application

How To - Support streaming audio to the media application

How To - Specify Audio Path Routing

How To - Obtain the media playback time from a media application

What Is - Supported audio formats

What Is - Media application error codes

录音样本

声明了包含播放器、RecordControl和资源的线程:

代码语言:javascript
运行
复制
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()音频录制开始时:

代码语言:javascript
运行
复制
   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()上,记录被停止:

代码语言:javascript
运行
复制
   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

票数 11
EN

Stack Overflow用户

发布于 2009-05-28 04:13:05

虽然不是音频特定的,但这个问题确实有一些很好的“入门”参考。

Writing Blackberry Applications

票数 0
EN

Stack Overflow用户

发布于 2009-12-10 07:26:45

我也花了很长时间试图弄清楚这一点。一旦安装了BlackBerry组件包(可用的from their website),就可以在组件包中找到示例代码。

在我的示例中,将组件包安装到Eclipse中后,我在以下位置找到了提取的样例代码:

C:\Program Files\Eclipse\eclipse3.4\plugins\net.rim.eide.componentpack4.5.0_4.5.0.16\components\samples

不幸的是,当我导入所有这些示例代码时,我遇到了一堆编译错误。为了解决这个问题,我刚刚删除了有编译错误的20%的包。

我的下一个问题是启动模拟器总是启动第一个示例代码包(在我的例子中是activetextfieldsdemo),我不能让它只运行我感兴趣的包。解决方法是删除按字母顺序列出的所有包,然后删除我想要的包。

其他问题:

单击Eclipse中的项目并选择Activate -Right BlackBerry

-Choose BlackBerry ->生成配置...->编辑...并选择您的新项目,这样它就可以构建。

-Make确保您将BlackBerry源代码放在项目中的"src“文件夹下,否则可能会遇到构建问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/919126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档