我在我的应用中实现了自定义相机。除了Nexus 5和Nexus 7之外,它在所有设备上都运行良好。在这两款设备中,相机上的SetParameters崩溃都会导致崩溃。我用以下代码实现了自定义相机:
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");
}
}
我在很多地方发现评论说这是由于预览尺寸不受支持但在我的情况下,我已经从支持的预览尺寸中获取了它。
答案 0 :(得分:1)
我在Nexus平板电脑上遇到了同样的问题:相同的代码将预览尺寸更改为另一种支持的预览尺寸,适用于各种平板电脑,但不适用于我所拥有的nexus平板电脑。
就我而言,问题是我在更改预览尺寸之前已经开始预览。在开始预览尺寸之前更改预览尺寸解决了我的问题。