Android自动曝光锁定空指针异常

时间:2016-07-14 18:14:30

标签: java android opencv nullpointerexception camera

我正在为Android开发一个opencv应用程序,并试图锁定我的相机的自动曝光。我一直在关注OpenCV4Android中的教程3示例,以便访问各种摄像头参数。我已经制作了一个用于访问相机属性的自定义相机类。

完整错误:

public class MainView extends JavaCameraView {

private static final String TAG = "Urop::MainView";

public MainView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

@SuppressWarnings("deprecation")
public void lockAutoExposure() {
    Camera.Parameters params = mCamera.getParameters();
    params.setAutoExposureLock(true);
    mCamera.setParameters(params);
}


}

到目前为止,这是我的MainView类(自定义相机类):

private MainView mOpenCvCameraView;

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
    @Override
    public void onManagerConnected(int status) {
        switch(status) {
        case LoaderCallbackInterface.SUCCESS:
        {
            Log.i(TAG, "Loaded Successfully");
            mOpenCvCameraView.enableView();
            mOpenCvCameraView.setMaxFrameSize(640, 480);
            mOpenCvCameraView.lockAutoExposure();
            System.loadLibrary("opencvnative");


            break;
        }
    ...

这是我实例化类并在主活动中设置它的地方:

<uses-permission android:name="android.permission.CAMERA" />

<uses-feature
    android:name="android.hardware.camera"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera.autofocus"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera.front"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera.front.autofocus"
    android:required="false" />

我在清单中的权限。不确定我是否需要其他任何东西:

nav {
  text-align: center;
}

nav li {
  display: inline-block;
}

nav li a {
  display: block;
  /* The rest of your code here */
}

如果有人可以提供帮助,我将非常感激!

2 个答案:

答案 0 :(得分:1)

通过将lockAutoExposure移动到onCameraViewStarted()方法来解决它。

答案 1 :(得分:0)

mCamera是一个空对象。它失败了,因为你试图在不存在的东西上调用getParameters()(除非你没有向我们展示完整的代码?)