Androidでマイクの振幅レベルを次のように取得しようとしていました:
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 しか返しません。
これが機能するには、実際に録音を開始する必要があるようです。あれは正しいですか?
その場合、500 ミリ秒記録し、振幅を取得し、記録を停止して繰り返す必要がありますか?
最後に、ファイルに記録する必要がありますか? このオーディオ ファイルを保存する必要はありません。録音せずに、現在のライブ マイク入力の最後の呼び出し以降の現在の振幅または最大振幅を取得することはできませんか?
どんな助けでも大歓迎です、ありがとう。