【问题标题】:Camera.Open does not open cameraCamera.Open 不打开相机
【发布时间】:2013-10-29 22:09:39
【问题描述】:

我正在尝试使用以下代码打开相机应用程序:

 Camera camera = Camera.open();
 Parameters p = camera.getParameters();
 p.setFlashMode(Parameters.FLASH_MODE_ON);
 camera.setParameters(p);
 camera.startPreview();        
 camera.release();

它不会抛出任何错误,但也不会打开相机。我尝试了使用和不使用 camera.release() 选项。有什么我做错了吗?

【问题讨论】:

  • 您是否要打开单独的相机应用程序?还是在您自己的应用程序中打开相机视图?
  • 我只想打开相机。它可以打开单独的相机应用程序,因为我不需要对我的应用程序进行任何回调或控制。我需要通过在此打开 Surface 视图来花哨吗?
  • 不,我会改变我的答案以符合那个

标签: android android-intent camera android-camera


【解决方案1】:

确保清单中存在相关权限。

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

根据谷歌开发:

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

确保您的 Activity 实现 SurfaceHolder.Callback

Camera camera = Camera.open();
Parameters p = camera.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_ON);
camera.setParameters(p);
SurfaceView surfaceView = (SurfaceView)findViewById(R.id.surfaceView1); //add this to your xml view
SurfaceHolder surfaceHolder = surfaceView.getHolder()
surfaceHolder.addCallback(this);
camera.setPreviewDisplay(surfaceHolder);
camera.startPreview();      

或者,如果您只想打开任何相机应用程序,请使用:

Intent newCameraApp = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(newCameraApp , 1337);

【讨论】:

  • 非常感谢您的回复。其实我只需要打开相机应用程序。并且您的第二个解决方案听起来要好得多,但我还想设置闪光灯和分辨率等参数,并且当我使用意图进行设置时,它不会设置闪光灯参数。我还在这里发布了一个关于 SO 的问题:stackoverflow.com/questions/19667094/…。如果我能得到答案。我不需要打开相机对象,可以很简单地实现。
  • 我以为你确实在这里放了一些表面代码。我想我现在正在使用 surfaceView 进行操作,您的代码可能有所帮助。:))
  • 恢复到上一个​​:)
  • 顺便说一句,我看到的所有表面视图示例都可以保持相机不变,而不会改变功能。我正在查看不同的示例,但似乎他们正在尝试做太多事情。我不能创建一个空白的 surfaceView 并在其中添加相机吗?如果你能帮助我,我提出了一个新问题? stackoverflow.com/questions/19671297/…
  • 我想知道你能否解释一下 Camera.open()。什么会导致它返回null?我试图弄清楚为什么在我的应用程序中它总是返回 ms null,并且我知道我设置了正确的权限,所以我认为这可能与预览可能尚未准备好有关。但是从您的代码中,预览会在之后添加到相机中。真的是后记,还是我没看懂回调的流程?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-05
相关资源
最近更新 更多