我正在开发一款相机应用。我使用SurfaceView来显示摄像头预览。
preview=(SurfaceView)findViewById(R.id.preview);
previewHolder=preview.getHolder();
previewHolder.addCallback(surfaceCallback);
previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
Matrix m = preview.getMatrix();
m.setScale(-1,1);
我想做的是翻转SurfaceView矩阵。我尝试使用preScale()和postScale(),并尝试将最后两行添加到Surfaceview.callback方法中,如下所示:
public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
initPreview(width, height);
startPreview();
Matrix m = preview.getMatrix();
m.setScale(-1,1);
}
但我在任何地方都遇到了同样的错误(连同应用程序崩溃):
java.lang.IllegalStateException: Matrix can not be modified
我做错了什么?有没有可能改变SurfaceView的比例?如果不行,是否有其他方法来翻转相机预览?