我在我的应用中实现了自定义相机。在除Nexus 5和Nexus 7之外的所有设备上都可以正常工作。在这两个设备上,它会崩溃并显示“相机设置参数失败”。我使用以下代码实现了自定义相机:
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
if (mCamera != null) {
Log.e(TAG, "surfaceChanged called");
Camera.Parameters parameters = mCamera.getParameters();
if (mSupportedPreviewSizes != null) {
mPreviewSize = getOptimalPreviewSize(mSupportedPreviewSizes, w,
h);
}
Log.e(TAG, "surfaceChanged : mPreviewSize height:"
+ mPreviewSize.height + " width: " + mPreviewSize.width);
parameters.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
requestLayout();
mCamera.setParameters(parameters);
Log.e(TAG, "surfaceChanged called setParameters success");
}
}
我在很多地方看到评论说这是由于不支持的预览尺寸,但在我的情况下,我已经使用支持的预览尺寸了。