在 使用Intent调用Android系统自身的相机功能 中,演示了如何使用 intent 调用内置的相机进行拍照。本文我们将演示如何使用 Camera2 API 完成拍照任务。对于想要定制相机的开发人员来说,理解 Camera2 API 是必须要掌握的。
声明权限
使用相机并保存拍摄的相片,需要在应用的 AndroidManifest.xml 加入权限声明相机和存储的权限:
1 | <uses-permission android:name="android.permission.CAMERA" /> |
构造界面
构造一个包含一个 TextureView 和两个 Button 的界面, TextrueView 用来显示相机镜头所拍摄到的画面。
activity_main.xml
1 |
|
构建一个TextrueView 的监听器
使用 SurfaceTextureListener 监听器来监听(响应)TexttrueView 状态变化的情况
1 | TextureView.SurfaceTextureListener textureListener = new TextureView.SurfaceTextureListener() { |
构建一个相机状态的回调接口类
1 | private final CameraDevice.StateCallback stateCallback = new CameraDevice.StateCallback() { |
创建一个相机会话回调接口
1 | final CameraCaptureSession.CaptureCallback captureCallbackListener = new CameraCaptureSession.CaptureCallback() { |
在按钮事件中打开相机
1 | private void openCamera() { |