2013-08-27 71 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

相关问题