具有自动聚焦和闪光灯的相机应用程序

时间:2013-08-27 04:18:24

标签: java android camera android-camera

我正在Android中开发一个相机应用程序(不使用意图),我正在实现自动对焦和闪光灯功能。如果我实现任何一个功能,它工作正常。但是在添加自动对焦和闪光灯功能时,它可以在LG nexus和其他拥有Flash Light的手机中强行关闭。我使用以下代码进行自动对焦和闪光灯。

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

可能是什么问题。请帮忙!谢谢!

1 个答案:

答案 0 :(得分:0)

刚刚快速阅读了相机文档,看起来你已经错过了Surface Holder。

  

重要提示:将完全初始化的SurfaceHolder传递给   setPreviewDisplay(SurfaceHolder)。没有表面,相机会   无法开始预览。

仔细阅读文档:http://developer.android.com/reference/android/hardware/Camera.html

这是一个答案,显示如何使用它: https://stackoverflow.com/a/3964460/2045570