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

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

4

1 回答 1

0

刚刚快速阅读了相机文档,您似乎错过了 Surface Holder。

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

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

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

于 2013-08-27T04:40:41.693 回答