BlackBerryのサンプルコードを取得するための優れたリポジトリを知っている人はいますか?具体的には、オーディオの録音の仕組みを学ぶのに役立つサンプル、場合によってはそれをサンプリングしてオンザフライの信号処理を行うことさえできますか?
着信オーディオを読み取り、必要に応じてサンプルごとに読み取り、それを処理して目的の結果(この場合はビジュアライザー)を生成したいと思います。
BlackBerryのサンプルコードを取得するための優れたリポジトリを知っている人はいますか?具体的には、オーディオの録音の仕組みを学ぶのに役立つサンプル、場合によってはそれをサンプリングしてオンザフライの信号処理を行うことさえできますか?
着信オーディオを読み取り、必要に応じてサンプルごとに読み取り、それを処理して目的の結果(この場合はビジュアライザー)を生成したいと思います。
RIM API には、オーディオとビデオのコンテンツを処理するためのJSR 135 Java Mobile Media APIが含まれています。
BB ナレッジ ベースの混乱について訂正します。唯一の方法は、サイト マップを再度変更しないことを期待して、閲覧することです。
それは開発者 - >リソース- >ナレッジベース- > 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());
}
}
}
録音の最後に、特定のオーディオ形式のデータで満たされた出力ストリームが得られます。したがって、それを処理またはサンプリングするには、このオーディオ ストリームをデコードする必要があります。
オンザフライ処理について話すと、それはより複雑になります。記録をコミットせずに、記録中に出力ストリームを読み取る必要があります。したがって、解決すべきいくつかの問題があります。
以下も役に立つかもしれません:
java.net: Experiments in Streaming Content in Java ME by Vikram Goyal
私もこれを理解しようと何年も費やしました。BlackBerry Component Pack( Webサイトから入手可能)をインストールすると、コンポーネントパック内にサンプルコードがあります。
私の場合、コンポーネントパックを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]->[ビルド構成...]->[編集...]を選択し、新しいプロジェクトを選択してビルドします。
-Eclipseプロジェクトの「src」フォルダにBlackBerryソースコードを配置してください。配置しないと、ビルドの問題が発生する可能性があります。
音声固有ではありませんが、この質問にはいくつかの優れた「はじめに」の参照があります。