异常 java.lang.RuntimeException:setParameters 失败

Exception java.lang.RuntimeException: setParameters failed

我收到以下错误

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);

这个错误主要发生在一些设备上,比如三星。 提前申请help.Thanks。

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

编辑

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

你必须检查用户设备是否支持对焦模式,并非所有设备都有相机对焦模式,你这样做:

    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,用您想要的参数更改它。