从零开发一款相机APP 第六篇: Camera2相机 打开功能实现
2023-02-18 16:35:36 时间
本课程内容由 @公众号:小驰笔记出品,欢迎关注公众号,获取更多交流信息~
欢迎访问个人博客:www.xiaochibiji.com
流程图:
1、获取当前设备支持摄像头颗数
CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE);
manager.getCameraIdList();
2、获取到对应摄像头的ID
CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE)
for (String cameraId: manager.getCameraIdList()) {
mCameraCharacteristics = manager.getCameraCharacteristics(mCameraId);
// We don't use a front facing camera in this sample.
Integer facing = mCameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
if (facing != null && facing == CameraCharacteristics.LENS_FACING_BACK) {
continue;
}
}
3、根据camera id打开摄像头
CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE);
manager.openCamera(mCameraId,mStateCallback, mBackgroundHandler);
4、camera状态监听
private final CameraDevice.StateCallback mStateCallback = new CameraDevice.StateCallback() {
@Override
public void onOpened(@NonNull CameraDevice cameraDevice) {
}
@Override
public void onDisconnected(@NonNull CameraDevice cameraDevice) {
}
@Override
public void onError(@NonNull CameraDevice cameraDevice, int error) {
}
};
5、相关api接口
//1) CameraManager,获取camera服务
CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE);
//2) CameraCharacteristics,获取camera相关参数
CameraCharacteristics mCameraCharacteristics = manager.getCameraCharacteristics(mCameraId);
//facing信息
Integer facing = mCameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
//stream map 信息
StreamConfigurationMap map = mCameraCharacteristics.get(
CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
//3)open camera
manager.openCamera(mCameraId,mStateCallback, mBackgroundHandler);
CameraDevice mCameraDevice;
CameraDevice.StateCallback
CaptureRequest.Builder
//4)创建session
mCameraDevice.createCaptureSession(Arrays.asList(surface, mImageReader.getSurface()),
new CameraCaptureSession.StateCallback() {
}
//5) repeatingRequest
CameraCaptureSession mPreviewCaptureSession;
mPreviewCaptureSession.setRepeatingRequest(mPreviewRequest,
null, mBackgroundHandler);
6、总结正常流程
深圳上班,
从事Android Camera相关软件开发工作,
公众号记录生活和工作的点滴,
相关文章
- docker高级篇第三章-dockerfile案例之制作自己的centos镜像
- Lightroom Classic 2022 for Mac(Lrc2022) 11.5中文版
- java基于ssh的旅游系统
- java论坛贴子网站ssm论坛项目发帖子网站论坛系统论坛源码
- java美食论坛系统发帖子系统美食论坛网站美食分享论坛源码
- ACDSee 2023软件下载和安装教程
- ACDSee 2022软件下载和安装教程
- LPCG:用激光点云指导单目的3D物体检测
- ACDSee 2021软件下载和安装教程
- ACDSee 2020软件下载和安装教程
- ACDSee 2019软件下载和安装教程
- 深度学习算法原理——RCNN
- 2023年机器学习趋势分析
- 实时语义SLAM:激光+IMU+GPS/MAV
- VP-SLAM:具有点、线和灭点的单目实时VSLAM
- Adobe Acrobat 9 Pro软件安装教程(一款强大的PDF编辑软件)
- PDF编辑器Acrobat DC(PDF) 功能简介+安装破解
- PDF编辑软件:Adobe Acrobat DC
- Acrobat DC 2019 For Mac软件安装教程
- Acrobat Pro DC2021软件安装教程