0

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

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

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

4

1 回答 1

4

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

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

根据谷歌开发:

重要提示:将完全初始化的 SurfaceHolder 传递给 setPreviewDisplay(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);
于 2013-10-29T22:39:55.720 回答