2016-07-14 66 views
1

我正在開發一個Android的opencv應用程序,並試圖鎖定我的相機的自動曝光。我一直在關注OpenCV4Android中的教程3示例,以便訪問各種攝像頭參數。我製作了一個自定義相機類來訪問相機屬性。Android的自動曝光鎖定空指針異常

完整的錯誤:

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

這是我的MainView類到目前爲止(自定義相機類):

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

好吧..嘗試添加mCamera = Camera.open()之前getParameters() – W0rmH0le

+0

應用程序不再崩潰,但沒有任何顯示在屏幕上,現在我在logcat中得到「錯誤2」 –

回答

0

mCamera是一個空對象。它失敗了,因爲你試圖在不存在的東西上調用getParameters()(除非你沒有向我們展示完整的代碼?)

+0

應用程序不再崩潰,但我在logcat中得到「錯誤2」 –

1

通過將lockAutoExposure移動到onCameraViewStarted()方法來解決它。