2011-01-28 5 views
3

を記録していないときに私は、次のコードを持っていると電話でマイクに耳を傾け、ビジュアライザのいくつかの並べ替えにグラフィカルに表示されるようにその値を使用できるようにする必要があります。戻り振幅

Timer micTimer = new Timer(); 
micTimer.schedule(new TimerTask(){ 
    @Override 
    public void run(){ 
     int x = MediaRecorder.getAudioSourceMax(); 
     Log.v("Timer", "" + x); 
    } 
}, 0, 100); 

これはおそらく間違っているとは限りません。クラスの後半で、私はAudioRecorderオブジェクトを使用して、後処理のサウンドを記録しています。ここでは、ビジュアライザーにサウンドを表示するだけで何も記録したくないのです。このコードからのログは、100msごとに6という数字を出力します。ゲインの自動調整と関係がありますか?もしそうなら、私はどのようにこれをラウンドするのですか?

答えて

2

サムに申し訳ありませんが、の振幅を録音なしで取得することはできません。私はこれに非常に類似したアプリを開発しました。録音を開始し、getMaxAmplitude()関数を呼び出して(0を返します)、ちょっと待ってからもう一度呼び出すと、関数が最後に呼び出されてから最大振幅が返されます。見てくださいNoiseAlert app.それは本当に私を助けました。

また、私の研究では、オートゲインがないため、MediaRecorderオブジェクトを使用する方が簡単であることが分かりました。あなたは実際にマイクによって聞かれているものを手に入れます。

+0

私はNoiseAlertアプリを試してみましたが、自分のアプリでコードを使用しています。 getMaxAmplitude()は、マイクの近くで指をスナップするだけの最大値を返すか、または話しています...私のデバイスのマイクが壊れていますか?録音されたオーディオはうまく聞こえる – Mirko

1

コードからのログは、実際には100msごとに6を出力します。この変更を行う必要があります:

mediaRecorder = new MediaRecorder(); 
//... 
//... 
//int x = MediaRecorder.getAudioSourceMax(); change to: 
int x = mediaRecorder.getMaxAmplitude(); 
関連する問題