我正在製作相機應用程序。我使用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矩陣。我試圖用預分頻()和後分頻器(),我嘗試添加的最後2行至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
我在做什麼錯?是否有可能更改ScaleView SurfaceView?如果沒有,是否有其他方式來翻轉相機預覽?
如果你想進入的OpenGL ES,你可以做各種事情(例如參見「顯示+捕捉相機「在https://github.com/google/grafika)。但這確實增加了很多複雜性。 – fadden