Tôi đang cố gắng xem trước máy ảnh với hiệu ứng màu được áp dụng cho nó, chẳng hạn như hiệu ứng NEGATIVE. Không có lỗi và bản xem trước hiển thị mà không có sự cố, nhưng độc lập với thiết lập ColorEffect I - xem trước máy ảnh không thay đổi. Tôi đã thử nghiệm nếu các hiệu ứng tôi đang cố gắng sử dụng có sẵn cho điện thoại của tôi bằng cách chạy params.getSupportedColorEffects() (cũng có những hiệu ứng này cũng hoạt động trong ứng dụng ảnh tích hợp sẵn).ColorEffect không hiển thị trên xem trước máy ảnh
Tôi không biết có gì sai với mã - Tôi đăng nó bên dưới. Có lẽ ai đó ở đây có ý tưởng gì có thể làm cho công việc này? Cảm ơn trước.
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();
}
};
}
Sau khi một số thử nghiệm, vấn đề có thể liên quan đến HTC Desire I đang thử nghiệm (hoặc có thể là phiên bản hệ điều hành). Mã hoạt động chính xác trên một số điện thoại Samsung khác. Tôi đã không tìm ra những gì có thể là vấn đề trên HTC.
CẬP NHẬT: Tôi đã quản lý để có được hiệu quả hoạt động, nhưng thật sự là ngẫu nhiên và tôi vẫn không hiểu tại sao. Nhưng tôi sẽ đưa ra câu trả lời ở đây - có lẽ ai đó sẽ thấy nó hữu ích, hoặc có thể sẽ giải thích tại sao nó lại xảy ra theo cách này:
Tôi thêm dòng sau vào phương pháp surfaceChanged
vì tôi đang cố gắng giảm kích thước bản xem trước:
previewHolder.setFixedSize(width, height-1);
Điều này làm cho hiệu ứng được chọn hiển thị.
Khi tôi thay đổi dòng này để:
previewHolder.setFixedSize(width, height);
hiệu quả là không thể nhìn thấy bất kỳ một lần nữa một lần nữa. Vì vậy, kỳ lạ .... nó hoạt động cho chiều cao thiết lập được bất cứ điều gì ít hơn tham số chiều cao nhận được.