我想要應用於它的顏色效果獲得相機預覽,例如NEGATIVE效果。沒有錯誤,預覽沒有問題可見,但獨立於我設置的ColorEffect - 相機預覽保持不變。我測試了我嘗試使用的效果是否可以通過運行params.getSupportedColorEffects()(也可以在內置的照片應用程序中使用這些效果)用於我的手機。ColorEffect在相機預覽上不可見
我不知道代碼有什麼問題 - 我在下面貼出來。也許這裏有人有一個想法是什麼可以使這項工作?提前致謝。
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我在測試上(或者其操作系統版本)。該代碼在其他三星手機上正常工作。我還沒有弄清楚在HTC上可能會出現什麼問題。
更新: 我已經設法影響工作,但真正的意外,我還是不明白爲什麼。但我會在這裏給出答案 - 也許有人會發現它有用,或者可能會解釋爲什麼會發生這種情況:
我在surfaceChanged
方法中添加了以下行,因爲我試圖減小預覽:
previewHolder.setFixedSize(width, height-1);
這樣做的結果是使所選效果可見。
當我改變了這一行:
previewHolder.setFixedSize(width, height);
的影響是不可見的任何更多的一次。很奇怪....它適用於設置高度小於收到的高度參數。