2016-07-14 2 views
1

Android 용 opencv 앱을 개발 중이며 카메라의 자동 노출을 고정하려고합니다. OpenCV4Android의 튜토리얼 3 샘플을 따라 다양한 카메라 매개 변수에 액세스했습니다. 카메라 속성에 액세스하기위한 맞춤 카메라 클래스를 만들었습니다.Android 자동 노출 잠금 null 포인터 예외

전체 오류 :이 내 MAINVIEW 클래스 (사용자 정의 카메라 클래스) 지금까지

NullPointerException: Attempt to invoke virtual method 'android.hardware.Camera$Parameters 
android.hardware.Camera.getParameters() on a null object reference 
at {PackageName}.MainView.lockAutoExposure() 

이다 : 나는이 클래스를 인스턴스화하고 주요 활동에 그것을 설정 어디

다음
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); 
} 


} 

입니다 :

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" /> 

누구든지 도움을받을 수 있다면 크게 감사하겠습니다.

+0

튜토리얼 3 샘플을 보면 mCamera의 초기화가 표시되지 않기 때문에 부모 클래스의 멤버라고 생각됩니다. –

+0

Ok .. getParameters() 전에 mCamera = Camera.open()을 추가하려고 시도했습니다. – W0rmH0le

+0

응용 프로그램이 더 이상 충돌하지 않지만 화면에 아무 것도 표시되지 않고 이제 logcat에 "error 2"가 표시됩니다. –

답변

0

mCamera은 null 개체입니다. (전체 코드를 표시하지 않는 한) getParameters()을 호출하려고하기 때문에 오류가 발생합니다.

+0

응용 프로그램이 더 이상 중단되지 않지만 logcat에서 "error 2"를 얻습니다. –

1

lockAutoExposure를 onCameraViewStarted() 메소드로 이동하여 해결했습니다.