FileDocCategorySizeDatePackage
AcousticEchoCanceler.javaAPI DocAndroid 5.1 API4431Thu Mar 12 22:22:30 GMT 2015android.media.audiofx

AcousticEchoCanceler

public class AcousticEchoCanceler extends AudioEffect
Acoustic Echo Canceler (AEC).

Acoustic Echo Canceler (AEC) is an audio pre-processing which removes the contribution of the signal received from the remote party from the captured audio signal.

AEC is used by voice communication applications (voice chat, video conferencing, SIP calls) where the presence of echo with significant delay in the signal received from the remote party is highly disturbing. AEC is often used in conjunction with noise suppression (NS).

An application creates an AcousticEchoCanceler object to instantiate and control an AEC engine in the audio capture path.

To attach the AcousticEchoCanceler to a particular {@link android.media.AudioRecord}, specify the audio session ID of this AudioRecord when creating the AcousticEchoCanceler. The audio session is retrieved by calling {@link android.media.AudioRecord#getAudioSessionId()} on the AudioRecord instance.

On some devices, an AEC can be inserted by default in the capture path by the platform according to the {@link android.media.MediaRecorder.AudioSource} used. The application should call AcousticEchoCanceler.getEnable() after creating the AEC to check the default AEC activation state on a particular AudioRecord session.

See {@link android.media.audiofx.AudioEffect} class for more details on controlling audio effects.

Fields Summary
private static final String
TAG
Constructors Summary
private AcousticEchoCanceler(int audioSession)
Class constructor.

The constructor is not guarantied to succeed and throws the following exceptions:

  • IllegalArgumentException is thrown if the device does not implement an AEC
  • UnsupportedOperationException is thrown is the resources allocated to audio pre-procesing are currently exceeded.
  • RuntimeException is thrown if a memory allocation error occurs.

param
audioSession system wide unique audio session identifier. The AcousticEchoCanceler will be applied to the AudioRecord with the same audio session.
throws
java.lang.IllegalArgumentException
throws
java.lang.UnsupportedOperationException
throws
java.lang.RuntimeException

        super(EFFECT_TYPE_AEC, EFFECT_TYPE_NULL, 0, audioSession);
    
Methods Summary
public static android.media.audiofx.AcousticEchoCancelercreate(int audioSession)
Creates an AcousticEchoCanceler and attaches it to the AudioRecord on the audio session specified.

param
audioSession system wide unique audio session identifier. The AcousticEchoCanceler will be applied to the AudioRecord with the same audio session.
return
AcousticEchoCanceler created or null if the device does not implement AEC.

        AcousticEchoCanceler aec = null;
        try {
            aec = new AcousticEchoCanceler(audioSession);
        } catch (IllegalArgumentException e) {
            Log.w(TAG, "not implemented on this device"+ aec);
        } catch (UnsupportedOperationException e) {
            Log.w(TAG, "not enough resources");
        } catch (RuntimeException e) {
            Log.w(TAG, "not enough memory");
        } finally {
            return aec;
        }
    
public static booleanisAvailable()
Checks if the device implements acoustic echo cancellation.

return
true if the device implements acoustic echo cancellation, false otherwise.


                            
        
        return AudioEffect.isEffectTypeAvailable(AudioEffect.EFFECT_TYPE_AEC);