要在Android上打开摄像头,你可以使用Camera类。以下是一些使用相机的简单示例代码:
1. 添加相机权限到AndroidManifest.xml文件中:
```
```
2. 在Activity中的onCreate方法中打开相机:
```java
private Camera camera;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 打开相机
camera = Camera.open();
}
```
3. 在Activity的onDestroy方法中释放相机资源:
```java
@Override
protected void onDestroy() {
super.onDestroy();
// 释放相机资源
if (camera != null) {
camera.release();
camera = null;
}
}
```
在示例中,我们使用了Camera类的open方法来打开默认(后置)相机。如果要打开前置相机,可以使用Camera类的open(int cameraId)方法并传入相应的相机ID。请注意,在Android 2.3及更高版本中,使用Camera.open方法来访问相机需要相机权限。
如果要在界面上显示相机预览,你可以将SurfaceView(或TextureView)添加到布局文件中,并在Activity中添加以下代码:
```java
private SurfaceView surfaceView;
private SurfaceHolder surfaceHolder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
surfaceView = findViewById(R.id.surfaceView);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
}
// 实现SurfaceHolder.Callback接口的方法
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
camera.setPreviewDisplay(holder);
camera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// 更新相机预览参数
Camera.Parameters parameters = camera.getParameters();
Camera.Size bestSize = getBestPreviewSize(parameters.getSupportedPreviewSizes(), width, height);
parameters.setPreviewSize(bestSize.width, bestSize.height);
camera.setParameters(parameters);
camera.startPreview();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// 停止相机预览
camera.stopPreview();
}
```
在上述示例中,我们在布局文件中添加了一个SurfaceView,并通过surfaceView.getHolder()方法获取SurfaceHolder对象。然后,我们在Activity中继承SurfaceHolder.Callback接口,并在其中实现surfaceCreated、surfaceChanged和surfaceDestroyed方法。在surfaceCreated方法中,我们设置了相机的预览显示目标为SurfaceHolder,并调用camera.startPreview方法开始相机预览。在surfaceChanged方法中,我们可以获取到SurfaceView的宽度和高度,并根据这些信息来设置相机预览大小。在surfaceDestroyed方法中,我们调用camera.stopPreview停止相机预览。
注意:上述代码只是一个简单示例,仅用于打开相机和显示相机预览。你可能需要根据自己的需求进行更多的相机操作,如拍照、录制视频等。你可以参考Android开发文档以了解更多关于Camera类的信息。