FileDocCategorySizeDatePackage
AutomaticGainControl.javaAPI DocAndroid 5.1 API4371Thu Mar 12 22:22:30 GMT 2015android.media.audiofx

AutomaticGainControl

public class AutomaticGainControl extends AudioEffect
Automatic Gain Control (AGC).

Automatic Gain Control (AGC) is an audio pre-processing which automatically normalizes the output of the captured signal by boosting or lowering input from the microphone to match a preset level so that the output signal level is virtually constant. AGC can be used by applications where the input signal dynamic range is not important but where a constant strong capture level is desired.

An application creates a AutomaticGainControl object to instantiate and control an AGC engine in the audio framework.

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

On some devices, an AGC 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 AutomaticGainControl.getEnable() after creating the AGC to check the default AGC 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 AutomaticGainControl(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 AGC
  • 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 AutomaticGainControl 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_AGC, EFFECT_TYPE_NULL, 0, audioSession);
    
Methods Summary
public static android.media.audiofx.AutomaticGainControlcreate(int audioSession)
Creates an AutomaticGainControl and attaches it to the AudioRecord on the audio session specified.

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

        AutomaticGainControl agc = null;
        try {
            agc = new AutomaticGainControl(audioSession);
        } catch (IllegalArgumentException e) {
            Log.w(TAG, "not implemented on this device "+agc);
        } catch (UnsupportedOperationException e) {
            Log.w(TAG, "not enough resources");
        } catch (RuntimeException e) {
            Log.w(TAG, "not enough memory");
        } finally {
            return agc;
        }
    
public static booleanisAvailable()
Checks if the device implements automatic gain control.

return
true if the device implements automatic gain control, false otherwise.


                            
        
        return AudioEffect.isEffectTypeAvailable(AudioEffect.EFFECT_TYPE_AGC);