关于nexus one的Camera.setParameters()的RuntimeException

Eri*_*k B 27 camera android

我从这里的答案中复制了代码,我仍然得到一个RuntimeException:我的nexus上的setParameters失败错误.我的清单文件具有camera和wake_lock权限.这适用于模拟器,在机器人上我没有得到错误但它确实有旋转问题.

Rom*_*rik 41

您最有可能要求无效的预览尺寸.如果你检查结果adb logcat你可能会看到这样的事情:

E/QualcommCameraHardware(22732): Invalid preview size requested: 480x724
Run Code Online (Sandbox Code Playgroud)

解决方案是请求最接近的预览尺寸到您想要的尺寸; 您可以通过调用获得预览可用尺寸的列表getSupportedPreviewSizesCamera.Parameters对象通过返回Camera.getParameters.

  • @Erik B - 我意识到这是对此评论的回应,但可能是因为您的应用处于兼容模式,并且系统将您应用中的像素视为实际设备分辨率的0.66倍.因此,480x800将以320x533的形式呈现给您的应用,可能会为状态栏水平或垂直削减几个像素,除非您的活动是全屏的. (2认同)

小智 26

我通过做罗马所说的代码来纠正这个问题:

   Camera.Parameters parameters = camera.getParameters();  
   List<Camera.Size> sizes = parameters.getSupportedPreviewSizes();  
   Camera.Size cs = sizes.get(0);  
   parameters.setPreviewSize(cs.width, cs.height);  
   camera.setParameters(parameters);
Run Code Online (Sandbox Code Playgroud)


And*_*nce 10

对于它的价值,我的问题的根源是我试图打电话parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);而没有先通过检查确认支持闪存模式parameters.getFlashMode() != null.

这个记录不完整的异常的原因不止一个,所以检查所有参数,而不仅仅是你正在使用的supportedPreviewSize.