2016-09-06 6 views
0

の振幅を取得する方法:私はそうのようにAndroid上でマイクの振幅レベルを取得しようとしていたMediaRecorder

MediaRecorder recorder = new MediaRecorder(); 
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 

Timer timer = new Timer(); 
timer.scheduleAtFixedRate(new RecorderTask(recorder), 0, 1000); 

private class RecorderTask extends TimerTask { 
    private MediaRecorder recorder; 

    public RecorderTask(MediaRecorder recorder) { 
     this.recorder = recorder; 
    } 

    public void run() { 
     Log.v("MicInfoService", "amplitude: " + recorder.getMaxAmplitude()); 
    } 
} 

残念ながら、これだけは0を返しますが、すべての時間を。

これが機能するには、実際に録音を開始する必要があるようです。あれは正しいですか?

もしそうなら、500msの間録音し、振幅を取得し、録音を停止して繰り返しますか?

最後に、ファイルに記録する必要がありますか?私はこのオーディオファイルを保存する必要はありません。録音せずに現在のライブマイク入力の最後の呼び出しから現在の振幅または最大振幅を得ることはできませんか?

ご協力いただきありがとうございます。

答えて

0

はい、録音を開始する必要があります。録音していない場合、振幅を見つけるための信号はありません。

いいえ、録音を停止する必要はありません。getMaxAmplitudeは、最後に呼び出したときから最大振幅を検出します。

はい、このAPIを使用すると、ファイルに書き込む必要があります。あなたはしかし、完了したときにファイルを削除することができます。または、/ dev/nullをファイルとして使用してみてください。

関連する問題