异常java.lang.RuntimeException:setParameters失败

时间:2016-10-05 15:26:30

标签: android parameters android-camera video-capture

我收到以下错误

Exception java.lang.RuntimeException: setParameters failed
android.hardware.Camera.native_setParameters (Camera.java)
android.hardware.Camera.setParameters (Camera.java:1946)

在下面的代码中。我不知道我在下面做了什么错。

        Camera mCamera = Camera.open();
        Parameters params = mCamera.getParameters();

        if (params.getFlashMode() != null)
            params.setFlashMode(Parameters.FLASH_MODE_OFF);

        if (nightMode && params.getSceneMode() != null)
            params.setSceneMode(Parameters.SCENE_MODE_NIGHT);

        if (params.getSupportedFocusModes().contains(Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) {
            params.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
        } else if (params.getSupportedFocusModes().contains(Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) {
            params.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
        } else if (params.getSupportedFocusModes().contains(Camera.Parameters.FOCUS_MODE_INFINITY)) {
            params.setFocusMode(Parameters.FOCUS_MODE_INFINITY);
        }

        mCamera.setParameters(params);

这种错误主要发生在三星等设备上。 请求帮助。谢谢。

2 个答案:

答案 0 :(得分:4)

设备不支持您的参数。您可以使用Camera.Parameters类的getSupportedFocusModes方法检测可用的焦点模式。如果此列表中不包含某些模式,则无法将其设置为相机。

修改

正如Alex在评论中所说,您可以在logcat中看到错误消息。

答案 1 :(得分:0)

您必须检查用户设备支持的对焦模式(不是所有设备都具有相机对焦模式),您可以这样做:

    public boolean support_focus(Camera camera){
     Camera.Parameters parameters = camera.getParameters();
     List<String> focusModes = parameters.getSupportedFocusModes();
     if (focusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO))
         return true;
     else
         return false;
    }

检查设备是否支持FOCUS_MODE_AUTO,并使用所需的参数进行更改。