さまざまなAudioEffect
クラスを使用してみAudioRecord/MediaPlayer
ましたが、クラスの新しいオブジェクトを呼び出すとすぐに同じエラーが発生しますAudioEffect
。次のエラーが表示されます -
04-28 18:31:06.571: **E/AudioEffect(6688): set(): AudioFlinger could not create effect, status: -22**
04-28 18:31:06.571: **E/AudioEffects-JNI(6688): AudioEffect initCheck failed -4**
04-28 18:31:06.571: **E/AudioEffect-JAVA(6688): Error code -4 when initializing AudioEffect.**
たとえば、MediaPlayer クラスのオブジェクトを作成し、mp3 録音を含む出力ファイルを setDataSource 関数に送信する次のコードを作成しました。次に、Android API ドキュメントhttp://developer.android.com/reference/android/media/audiofx/LoudnessEnhancer.htmlに従って、オーディオ セッション ID を LoudnessEnhancer オブジェクトのコンストラクターに送信することになっています。また、ターゲット ゲインを 100 に設定し、setEnabled を true に設定しました。
MediaPlayer m = new MediaPlayer();
m.setDataSource(outputFile);
int sessionID=m.getAudioSessionId();
AudioEffect effect=new LoudnessEnhancer(sessionID);
((LoudnessEnhancer) effect).setTargetGain(100);
((LoudnessEnhancer) effect).setEnabled(true);
m.prepare();
m.start();
注: コードをデバッグするたびに、それが LoudnessEnhancer のコンストラクターにヒットするとすぐに、ソースが接続されていないというメッセージが表示されます。そこで、windows->preferences->java->installed jre を確認したところ、正しいパスが表示されました。ただし、私のプロジェクト->ビルドパス->ビルドパスの構成->ライブラリでは、ネイティブライブラリの場所を確認すると、パスに何も表示されません。必要な場合、ここにどのパスを含めるかわかりません
プロジェクトが AudioEffect クラスのコンストラクターをインスタンス化するために必要な特定のソースを見つけられない可能性はありますか?
親切に提案をしてください..