2013-08-27 80 views
0

我正在開發一個相機應用程序在android(不使用意圖)在哪裏,我正在實現自動對焦和閃光燈功能。它工作正常,如果我實現任何一個功能。但是,在增加自動對焦和閃光燈功能的同時,它在LG Nexus和其他具有閃光燈的手機中提供了強制關閉功能。我正在使用下面的代碼進行自動對焦和閃光燈。相機應用程序與自動對焦和閃光燈

public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if (keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) 
    { 
     event.startTracking(); 
     camera.autoFocus(autoFocusCallback); 
     Parameters p = camera.getParameters(); 
     p.setFocusMode(Parameters.FOCUS_MODE_AUTO); 

     if(this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) 
     { 

      p.setFlashMode(Parameters.FLASH_MODE_ON); 
      camera.setParameters(p); 
      camera.startPreview(); 
      camera.takePicture(shutterCallback, rawCallback, jpgCallback); 
     } 

     else 
     { 
      camera.startPreview(); 
      camera.takePicture(shutterCallback, rawCallback, jpgCallback); 
     } 
     return true; 

    } 
    return super.onKeyDown(keyCode, event); 
} 

    private AutoFocusCallback autoFocusCallback = new AutoFocusCallback() 
    { 

    @Override 
    public void onAutoFocus(boolean autoFocusSuccess, Camera camera) 
     { 
      camera.takePicture(shutterCallback, rawCallback, jpgCallback); 
       if (autoFocusHandler != null) 
       { 
       Message message = autoFocusHandler.obtainMessage(autoFocusMessage, success); 
       autoFocusHandler.sendMessageDelayed(message, AUTOFOCUS_INTERVAL_MS); 
        autoFocusHandler = null; 
       } 
       else 
       { 

       } 
    } 
}; 

這是我得到的錯誤日誌。

http://txtup.co/WCYjl

可能是什麼問題。請幫忙!謝謝!

回答

0

剛剛通過相機文檔快速閱讀,它看起來像你已經錯過了表面持有人。

重要提示:將完全初始化的SurfaceHolder傳遞給 setPreviewDisplay(SurfaceHolder)。如果沒有表面,相機將無法啓動預覽功能 。

必須通過文檔的讀取:http://developer.android.com/reference/android/hardware/Camera.html

這裏是一個答案,展示瞭如何使用這個: https://stackoverflow.com/a/3964460/2045570

+0

我試過了。它給出了同樣的錯誤! – sanjana

+0

可以請你發佈你的代碼的其餘部分?這又發生在哪裏?什麼是914線? – nedaRM

+0

它的給力就在這條線上。 \t camera.setParameters(p); – sanjana

相關問題