質問

BlackBerry のサンプル コードを入手できる良いリポジトリを知っている人はいますか?具体的には、オーディオの録音の仕組みを学ぶのに役立つサンプル、場合によってはそれをサンプリングしてその場で信号処理を行うこともできるでしょうか?

必要に応じて、受信したオーディオをサンプルごとに読み取り、それを処理して目的の結果 (この場合はビジュアライザー) を生成したいと考えています。

役に立ちましたか?

解決

RIM API には以下が含まれます JSR 135 Java モバイル メディア API オーディオおよびビデオコンテンツを処理します。
BB Knowledge Base で混乱について修正しました。唯一の方法は、サイトマップが再び変更されないことを祈りながら、閲覧することです。
その 開発者 -> リソース->知識ベース->Java API とサンプル->オーディオビデオ

録音

基本的に音声を録音するのは簡単です。

  • 正しいオーディオエンコーディングを使用してプレーヤーを作成する
  • レコードコントロールを取得する
  • 録音を開始
  • 録音を停止する

リンク:
RIM 4.6.0 API 参照:パッケージjavax.microedition.media
ハウツー - BlackBerry スマートフォンでオーディオを録音する
ハウツー - アプリケーションでオーディオを再生する
ハウツー - メディア アプリケーションへのストリーミング オーディオをサポートする
方法 - オーディオ パス ルーティングを指定する
方法 - メディア アプリケーションからメディアの再生時間を取得する
概要 - サポートされているオーディオ形式
メディア アプリケーションのエラー コードとは

音声録音サンプル

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());
         }
      }
   }

オーディオストリームの処理とサンプリング

録音の最後には、特定のオーディオ形式のデータで満たされた出力ストリームが得られます。したがって、それを処理またはサンプリングするには、このオーディオ ストリームをデコードする必要があります。

オンザフライ処理について言えば、さらに複雑になります。記録中に、記録をコミットせずに出力ストリームを読み取る必要があります。したがって、解決すべき問題がいくつかあります。

  • Recorder と Sampler の出力ストリームへの同期アクセス - スレッドの問題
  • 適切な量​​のオーディオ データを読み取ります - オーディオ フォーマットのデコードを深く掘り下げてマークアップ ルールを見つけます

以下も役立つかもしれません:
java.net:Java ME でのストリーミング コンテンツの実験 (Vikram Goyal 著)

他のヒント

オーディオいない特定は、この質問にはいくつかの良い「はじめに」の参照を持っているんが。

ライティングブラックベリーのアプリケーション

私もこれを理解しようとしている年齢を過ごしました。あなたはBlackBerryのコンポーネントパックをインストールしたら(利用可能彼らのウェブサイトのから)、あなたがコンポーネントパック内部のサンプルコードを見つけることができます。

私の場合には、かつて私は、Eclipseへのコンポーネントパックをインストールしていた、私はこの場所に抽出されたサンプルコードを見つけます:

  

C:\プログラム   ファイル\ Eclipseの\ eclipse3.4 \プラグイン\ net.rim.eide.componentpack4.5.0_4.5.0.16 \サンプル\コンポーネント

私はすべてのこと、サンプルコードをインポートするとき、

残念ながら、私はコンパイルエラーの束を持っていました。私はコンパイルエラーが発生したパッケージの20%を削除することを回避するには。

私の次の問題は、シミュレータを起動すると、常に(私の場合のactivetextfieldsdemoで)最初のサンプルコードパッケージを立ち上げ、私はそれが私が興味を持ってだけでパッケージを実行するために得ることができなかったということでした。そのための回避策は、すべてのパッケージを削除することでした私が望んでいた1の前にアルファベット順にリストされます。

その他の落とし穴:
Eclipseでプロジェクトをクリックし、BlackBerry
のためのActivateを選択し右回転 -Chooseブラックベリー - >編集...そしてそれは構築しますので、あなたの新しいプロジェクトを選択し
- > ...をビルド構成。 そうでなければ、問題を構築打つかもしれない、あなたはEclipseプロジェクトで「SRC」フォルダの下にあなたのBlackBerryのソースコードを入れてください-make。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top