7

私はボイスレコーダーアプリケーションに取り組んでいます。録音中にオーディオの強さを見つける方法はありますか。録音をどこにも保存したくありません。マイクでキャッチされた音が事前に定義されたしきい値よりも大きいかどうかをユーザーに表示したいだけです。

音が 2 デシベル未満でキャッチされている場合、赤いキャンバスに「低」と表示されるはずです。音が大きくなり、2 デシベルのしきい値を超えるとすぐに、キャンバスが緑色に変わり、「高」メッセージが表示されます。

MediaRecorder を使用することは可能ですか、または AudioRecorder クラスを使用する必要があります。そして、それを解決する方法。

前もって感謝します

4

1 に答える 1

11

記録開始時に別のスレッドを開始し、getMaxAmplitude関数を使用して振幅をキャプチャできます。

以下はスニペットです。ここでは、250 ミリ秒ごとにサンプルを取得し、最大振幅を計算しています。

public void run() {
            int i = 0;
            while(i == 0) {

                try {
                    sleep(250);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                if (mRecorder != null) {
                    amplitude = mRecorder.getMaxAmplitude();

                    //Here you can put condition (low/high)
                    Log.i("AMPLITUDE", new Integer(amplitude).toString());
                } 

            }
        }
于 2012-06-16T20:21:20.383 に答える