diff --git a/src/main/java/se/lublin/humla/audio/AudioInput.java b/src/main/java/se/lublin/humla/audio/AudioInput.java index 07fdd76b4e43e7f5fee9b0e6e480fd9f4b65533b..dd7969c63a4b3354f5b2852be8c4b6d26abce7db 100644 --- a/src/main/java/se/lublin/humla/audio/AudioInput.java +++ b/src/main/java/se/lublin/humla/audio/AudioInput.java @@ -19,6 +19,10 @@ package se.lublin.humla.audio; import android.media.AudioFormat; import android.media.AudioRecord; +import android.media.audiofx.AcousticEchoCanceler; +import android.media.audiofx.AutomaticGainControl; +import android.media.audiofx.NoiseSuppressor; +import android.os.Build; import android.util.Log; import se.lublin.humla.Constants; @@ -86,6 +90,19 @@ public class AudioInput implements Runnable { throw new AudioInitializationException("AudioRecord failed to initialize!"); } + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + int audioSessionId = audioRecord.getAudioSessionId(); + if(AcousticEchoCanceler.isAvailable()) { + AcousticEchoCanceler.create(audioSessionId); + } + if(AutomaticGainControl.isAvailable()) { + AutomaticGainControl.create(audioSessionId); + } + if(NoiseSuppressor.isAvailable()) { + NoiseSuppressor.create(audioSessionId); + } + } + return audioRecord; }