FileDocCategorySizeDatePackage
EffectFactory.javaAPI DocAndroid 5.1 API19283Thu Mar 12 22:22:30 GMT 2015android.media.effect

EffectFactory

public class EffectFactory extends Object

The EffectFactory class defines the list of available Effects, and provides functionality to inspect and instantiate them. Some effects may not be available on all platforms, so before creating a certain effect, the application should confirm that the effect is supported on this platform by calling {@link #isEffectSupported(String)}.

Fields Summary
private EffectContext
mEffectContext
private static final String[]
EFFECT_PACKAGES
public static final String
EFFECT_IDENTITY

Copies the input texture to the output.

Available parameters: None

public static final String
EFFECT_BRIGHTNESS

Adjusts the brightness of the image.

Available parameters:

Parameter nameMeaningValid values
brightness The brightness multiplier. Positive float. 1.0 means no change; larger values will increase brightness.
public static final String
EFFECT_CONTRAST

Adjusts the contrast of the image.

Available parameters:

Parameter nameMeaningValid values
contrast The contrast multiplier. Float. 1.0 means no change; larger values will increase contrast.
public static final String
EFFECT_FISHEYE

Applies a fisheye lens distortion to the image.

Available parameters:

Parameter nameMeaningValid values
scale The scale of the distortion. Float, between 0 and 1. Zero means no distortion.
public static final String
EFFECT_BACKDROPPER

Replaces the background of the input frames with frames from a selected video. Requires an initial learning period with only the background visible before the effect becomes active. The effect will wait until it does not see any motion in the scene before learning the background and starting the effect.

Available parameters:

Parameter nameMeaningValid values
source A URI for the background video to use. This parameter must be supplied before calling apply() for the first time. String, such as from {@link android.net.Uri#toString Uri.toString()}

If the update listener is set for this effect using {@link Effect#setUpdateListener}, it will be called when the effect has finished learning the background, with a null value for the info parameter.

public static final String
EFFECT_AUTOFIX

Attempts to auto-fix the image based on histogram equalization.

Available parameters:

Parameter nameMeaningValid values
scale The scale of the adjustment. Float, between 0 and 1. Zero means no adjustment, while 1 indicates the maximum amount of adjustment.
public static final String
EFFECT_BLACKWHITE

Adjusts the range of minimal and maximal color pixel intensities.

Available parameters:

Parameter nameMeaningValid values
black The value of the minimal pixel. Float, between 0 and 1.
white The value of the maximal pixel. Float, between 0 and 1.
public static final String
EFFECT_CROP

Crops an upright rectangular area from the image. If the crop region falls outside of the image bounds, the results are undefined.

Available parameters:

Parameter nameMeaningValid values
xorigin The origin's x-value. Integer, between 0 and width of the image.
yorigin The origin's y-value. Integer, between 0 and height of the image.
width The width of the cropped image. Integer, between 1 and the width of the image minus xorigin.
height The height of the cropped image. Integer, between 1 and the height of the image minus yorigin.
public static final String
EFFECT_CROSSPROCESS

Applies a cross process effect on image, in which the red and green channels are enhanced while the blue channel is restricted.

Available parameters: None

public static final String
EFFECT_DOCUMENTARY

Applies black and white documentary style effect on image..

Available parameters: None

public static final String
EFFECT_BITMAPOVERLAY

Overlays a bitmap (with premultiplied alpha channel) onto the input image. The bitmap is stretched to fit the input image.

Available parameters:

Parameter nameMeaningValid values
bitmap The overlay bitmap. A non-null Bitmap instance.
public static final String
EFFECT_DUOTONE

Representation of photo using only two color tones.

Available parameters:

Parameter nameMeaningValid values
first_color The first color tone. Integer, representing an ARGB color with 8 bits per channel. May be created using {@link android.graphics.Color Color} class.
second_color The second color tone. Integer, representing an ARGB color with 8 bits per channel. May be created using {@link android.graphics.Color Color} class.
public static final String
EFFECT_FILLLIGHT

Applies back-light filling to the image.

Available parameters:

Parameter nameMeaningValid values
strength The strength of the backlight. Float, between 0 and 1. Zero means no change.
public static final String
EFFECT_FLIP

Flips image vertically and/or horizontally.

Available parameters:

Parameter nameMeaningValid values
vertical Whether to flip image vertically. Boolean
horizontal Whether to flip image horizontally. Boolean
public static final String
EFFECT_GRAIN

Applies film grain effect to image.

Available parameters:

Parameter nameMeaningValid values
strength The strength of the grain effect. Float, between 0 and 1. Zero means no change.
public static final String
EFFECT_GRAYSCALE

Converts image to grayscale.

Available parameters: None

public static final String
EFFECT_LOMOISH

Applies lomo-camera style effect to image.

Available parameters: None

public static final String
EFFECT_NEGATIVE

Inverts the image colors.

Available parameters: None

public static final String
EFFECT_POSTERIZE

Applies posterization effect to image.

Available parameters: None

public static final String
EFFECT_REDEYE

Removes red eyes on specified region.

Available parameters:

Parameter nameMeaningValid values
centers Multiple center points (x, y) of the red eye regions. An array of floats, where (f[2*i], f[2*i+1]) specifies the center of the i'th eye. Coordinate values are expected to be normalized between 0 and 1.
public static final String
EFFECT_ROTATE

Rotates the image. The output frame size must be able to fit the rotated version of the input image. Note that the rotation snaps to a the closest multiple of 90 degrees.

Available parameters:

Parameter nameMeaningValid values
angle The angle of rotation in degrees. Integer value. This will be rounded to the nearest multiple of 90.
public static final String
EFFECT_SATURATE

Adjusts color saturation of image.

Available parameters:

Parameter nameMeaningValid values
scale The scale of color saturation. Float, between -1 and 1. 0 means no change, while -1 indicates full desaturation, i.e. grayscale.
public static final String
EFFECT_SEPIA

Converts image to sepia tone.

Available parameters: None

public static final String
EFFECT_SHARPEN

Sharpens the image.

Available parameters:

Parameter nameMeaningValid values
scale The degree of sharpening. Float, between 0 and 1. 0 means no change.
public static final String
EFFECT_STRAIGHTEN

Rotates the image according to the specified angle, and crops the image so that no non-image portions are visible.

Available parameters:

Parameter nameMeaningValid values
angle The angle of rotation. Float, between -45 and +45.
public static final String
EFFECT_TEMPERATURE

Adjusts color temperature of the image.

Available parameters:

Parameter nameMeaningValid values
scale The value of color temperature. Float, between 0 and 1, with 0 indicating cool, and 1 indicating warm. A value of of 0.5 indicates no change.
public static final String
EFFECT_TINT

Tints the photo with specified color.

Available parameters:

Parameter nameMeaningValid values
tint The color of the tint. Integer, representing an ARGB color with 8 bits per channel. May be created using {@link android.graphics.Color Color} class.
public static final String
EFFECT_VIGNETTE

Adds a vignette effect to image, i.e. fades away the outer image edges.

Available parameters:

Parameter nameMeaningValid values
scale The scale of vignetting. Float, between 0 and 1. 0 means no change.
Constructors Summary
EffectFactory(EffectContext effectContext)


      
        mEffectContext = effectContext;
    
Methods Summary
public EffectcreateEffect(java.lang.String effectName)
Instantiate a new effect with the given effect name.

The effect's parameters will be set to their default values.

Note that the EGL context associated with the current EffectContext need not be made current when creating an effect. This allows the host application to instantiate effects before any EGL context has become current.

param
effectName The name of the effect to create.
return
A new Effect instance.
throws
IllegalArgumentException if the effect with the specified name is not supported or not known.

        Class effectClass = getEffectClassByName(effectName);
        if (effectClass == null) {
            throw new IllegalArgumentException("Cannot instantiate unknown effect '" +
                effectName + "'!");
        }
        return instantiateEffect(effectClass, effectName);
    
private static java.lang.ClassgetEffectClassByName(java.lang.String className)

        Class effectClass = null;

        // Get context's classloader; otherwise cannot load non-framework effects
        ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();

        // Look for the class in the imported packages
        for (String packageName : EFFECT_PACKAGES) {
            try {
                effectClass = contextClassLoader.loadClass(packageName + className);
            } catch (ClassNotFoundException e) {
                continue;
            }
            // Exit loop if class was found.
            if (effectClass != null) {
                break;
            }
        }
        return effectClass;
    
private EffectinstantiateEffect(java.lang.Class effectClass, java.lang.String name)

        // Make sure this is an Effect subclass
        try {
            effectClass.asSubclass(Effect.class);
        } catch (ClassCastException e) {
            throw new IllegalArgumentException("Attempting to allocate effect '" + effectClass
                + "' which is not a subclass of Effect!", e);
        }

        // Look for the correct constructor
        Constructor effectConstructor = null;
        try {
            effectConstructor = effectClass.getConstructor(EffectContext.class, String.class);
        } catch (NoSuchMethodException e) {
            throw new RuntimeException("The effect class '" + effectClass + "' does not have "
                + "the required constructor.", e);
        }

        // Construct the effect
        Effect effect = null;
        try {
            effect = (Effect)effectConstructor.newInstance(mEffectContext, name);
        } catch (Throwable t) {
            throw new RuntimeException("There was an error constructing the effect '" + effectClass
                + "'!", t);
        }

        return effect;
    
public static booleanisEffectSupported(java.lang.String effectName)
Check if an effect is supported on this platform.

Some effects may only be available on certain platforms. Use this method before instantiating an effect to make sure it is supported.

param
effectName The name of the effect.
return
true, if the effect is supported on this platform.
throws
IllegalArgumentException if the effect name is not known.

        return getEffectClassByName(effectName) != null;