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);
. .... , - , .