ColorEffect not displayed on camera preview

I am trying to get a preview of a camera with a color effect applied to it, for example, the NEGATIVE effect. There are no errors, and the preview is viewed without problems, but regardless of the ColorEffect installed, the camera preview remains unchanged. I tested if the effects I'm trying to use are available for my phone by running params.getSupportedColorEffects () (these effects also work in the built-in photo app).

I don't know what is wrong with the code - I post it below. Maybe someone has an idea what can make this work? Thanks in advance.

public class CustomCameraView extends SurfaceView{

Camera mCamera;
SurfaceHolder mHolder;

public CustomCameraView(Context context){
    super(context);
    mHolder = this.getHolder();
    mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    mHolder.addCallback(mSurfaceHolderListener);
}

SurfaceHolder.Callback mSurfaceHolderListener = new SurfaceHolder.Callback() {
    public void surfaceCreated(SurfaceHolder holder) {
        mCamera=Camera.open();
        try {
            mCamera.setPreviewDisplay(mHolder);
        }
        catch (Exception e){ }
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int width,
            int height)
    {
        Camera.Parameters params = mCamera.getParameters();
        params.setColorEffect(Camera.Parameters.EFFECT_NEGATIVE);
        mCamera.setParameters(params);
        mCamera.startPreview();
    }

    public void surfaceDestroyed(SurfaceHolder arg0)
    {
        mCamera.stopPreview();
        mCamera.release();   
    }
};
}

, HTC Desire, (, , ). Samsung. , HTC.


UPDATE: , - , , . - , - , , , :

surfaceChanged, :

previewHolder.setFixedSize(width, height-1); 

, .

:

previewHolder.setFixedSize(width, height); 

. .... , - , .

+5
3

. , HTC Desire setParameters, setPreviewDisplay startPreview . :

Camera.Parameters parameters = camera.getParameters();

//set the parameters

camera.setParameters(parameters);
camera.startPreview();
camera.setParameters(parameters);
camera.setPreviewDisplay(surfaceHolder);

startPreview setPreviewDisplay Android SDK View .

, , ! , ( - ). (re) () , , . , , , , HTC Desire, Acer Iconia A500, .

, , HTC Desire HD, , HTC Desire.

+1

invalidate() SurfaceView. Invalidate the whole view. If the view is visible, onDraw(android.graphics.Canvas) will be called at some point in the future. , , onDraw() . onDraw() onMeasure(), . , .

0

Simple answers use the following type:

  Camera camera = null;
  camera = Camera.open();

  if (camera != null) {
  try {
       Camera.Parameters parameters = camera.getParameters();

        // Set all kind of stuffs here..
            parameters.setSceneMode(Camera.Parameters.FLASH_MODE_AUTO);
            parameters.setColorEffect(Camera.Parameters.EFFECT_SEPIA); // whatever effect you want
            camera.setParameters(parameters);

            camera.setPreviewDisplay(surface_holder);
            camera.startPreview();

   } catch (IOException exception) {
   camera.release();  
   camera = null;  
 }
}
0
source

All Articles