所有其他SO帖子
java.lang.RuntimeException: setParameters failed
围绕人们设置他们不应该向cameraParameters设置或试图将其设置为它不支持的预览尺寸。
但是我得到了支持的相机尺寸列表并将其设置为支持的尺寸。
/**
* Sets the cameraParams to new size based on display size
*/
void setPreviewAndSurfaceHolderSize()
{
List<Camera.Size> sizesOfPreviews = _camera.getParameters().getSupportedPreviewSizes();
Camera.Size size = getOptimalPreviewSize(sizesOfPreviews, displayWidth, displayHeight);
printCameraPreviewSizes();
_previewSize = size;
int cameraPreviewWidth = size.width;
int cameraPreviewHeight = size.height;
System.out.println("Optimal camera preview size is " + cameraPreviewWidth + " x " + cameraPreviewHeight);
Camera.Parameters params = _camera.getParameters();
params.setPreviewSize(cameraPreviewWidth, cameraPreviewHeight);
}
我的应用程序允许用户更改相机预览的大小(从正方形到矩形)。因此,我需要切换相机以适应视图。我得到最近支持的预览尺寸并使用它。但是当它使用1280 x 720时,即使它被列为受支持的值之一,它也会崩溃。
当你设置的唯一属性是预览尺寸并且支持预览尺寸时,你能想到为什么setParameters会在相机上失败吗?
更新
经过一些测试,如果我在1280 x 720中硬编码它没有崩溃,它不会崩溃,但是当从其他维度切换到它时,它有时会崩溃(但我无法让它可靠地崩溃)。我怀疑存在某种竞争条件,但我不知道。