本讲是Android Camera专题系列的第3讲,我们介绍Android Camera2 API概述,了解Camera2 API的核心组件,以及他们如何交互来完成Camera各种流程。
视频在线观看:
加入知识星球与更多Camera同学交流
- 星球名称:深入浅出Android Camera
- 星球ID: 17296815
Camera2 API专题 - 课程组织安排
目标:详解Android官方文档
-
https://developer.android.google.cn/reference/android/hardware/camera2/package-summary
-
https://developer.android.google.cn/reference/android/hardware/camera2/params/package-summary - GeekCamera2 App专题介绍
思路:以相机使用流程将各组件串联起来讲解
-
Android Camera2 Open/Close Camera流程
-
Android Camera2 创建Session流程
- 预览组件:SurfaceView、GLSurfaceView、TextureView
- 拍照组件:ImageReader
- 录像组件:MediaRecorder、MediaCodec
-
Android Camera2 创建CaptureRequest流程
-
Android Camera2 预览(启动、停止)流程
-
Android Camera2 拍照流程
-
Android Camera2 录像流程
Android Camera2 API核心组件
CameraManager
CameraCharacteristics
CameraDevice
SessionConfiguration
CameraCaptureSession
CaptureRequest
CaptureResult
TotalCaptureResult
参考文档
参考资料
-
https://developer.android.google.cn/reference/android/hardware/camera2/package-summary
-
https://developer.android.google.cn/reference/android/hardware/camera2/params/package-summary
老师,你好,getCameraIdList 返回的是 手机 摄像头的个数么?
华为P20 PRO 有以下打印:
(LogicalCamera: 0,PhysicalCameraIds:[2, 3, 4],has LOGICAL_MULTI_CAMERA capability:true)
为什么打开ID0,和ID2 是打开的同一个摄像头?
1. 返回的是逻辑意义上可用的Camera个数,比如你提到的LogicalCamera: 0,实际对应到物理上有三颗camera: 2, 3, 4。 logical camera 0应该是用来做光学变焦的,它可能会同时打开某两颗camera。
2. 为什么打开ID0,和ID2 是打开的同一个摄像头?
==> 有可能camera 2是广角镜头, camera 3是普通镜头, camera 4是长焦镜头,你打开ID 0时,此时根据zoom倍数可能选择的camera 3的画面, 再zoom变大或缩小就会是其他镜头的画面了。
==> ID2 可能直接mapping到物理camera 3的,所以(ID0和ID2)看上去是同一颗camera。