我做了一個使用surfaceView顯示相機preview.I得到了在開發者控制檯,許多報告與surfaceChanged部分錯誤的應用程序:提高Android攝像頭預覽
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
Parameters parameters = mCamera.getParameters(); //// (Line 127)
List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes();
Camera.Size previewSize = previewSizes.get(4); //480h x 720w /// (Line 129)
parameters.setPreviewSize(previewSize.width, previewSize.height);
parameters.setFlashMode(Parameters.FLASH_MODE_AUTO);
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
mCamera.setParameters(parameters);
Display display = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
if(display.getRotation() == Surface.ROTATION_0)
{
parameters.setPreviewSize(height, width);
mCamera.setDisplayOrientation(90);
}
if(display.getRotation() == Surface.ROTATION_90)
{
parameters.setPreviewSize(width, height);
}
if(display.getRotation() == Surface.ROTATION_180)
{
parameters.setPreviewSize(height, width);
}
if(display.getRotation() == Surface.ROTATION_270)
{
parameters.setPreviewSize(width, height);
mCamera.setDisplayOrientation(180);
}
mCamera.startPreview();
}
第一個錯誤:
java.lang.IndexOutOfBoundsException (Line 129)
第二錯誤:
java.lang.NullPointerException (Line 127)
第三誤差:
java.lang.RuntimeException: set display orientation failed (when rotating cam 90*)
大多數的錯誤報告是從三星Galaxy設備,但應用程序適用於LG的Nexus 4大 能有人給了表面的變化更穩定和可靠的方式來避免這樣的錯誤?
這將有助於顯着,如果你能指出哪些行127和129是 –
Derp,我沒有看到指出這些線的評論。對不起 –