写点什么

Android Camera2 API,androidframework 开发书籍

作者:嘟嘟侠客
  • 2021 年 11 月 27 日
  • 本文字数:1643 字

    阅读完需:约 5 分钟

Android Camera2 API和拍照与录像过程(阅读量 2.3w,14 赞)


Android Camera2教程之打开相机、开启预览、实现PreviewCallback、拍照(阅读量 4w,28 赞)


1、简介


====


Android 5.0 开始出现了新的相机 Camera 2 API,用来替代以前的 camera api。


Camera2 API 不仅提高了 android 系统的拍照性能,还支持 RAW 照片输出,还可以设置相机的对焦模式,曝光模式,快门等等。


2、Camera2 中主要的 API 类


==================


  • CameraManager 类 : 摄像头管理类,用于检测、打开系统摄像头,通过 getCameraCharacteristics(c


《Android 学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享


ameraId)可以获取摄像头特征。


  • CameraCharacteristics 类:相机特性类,例如,是否支持自动调焦,是否支持 zoom,是否支持闪光灯一系列特征。

  • CameraDevice 类: 相机设备,类似早期的 camera 类。

  • CameraCaptureSession 类:用于创建预览、拍照的 Session 类。通过它的 setRepeatingRequest()方法控制预览界面 , 通过它的 capture()方法控制拍照动作或者录像动作。

  • CameraRequest 类:一次捕获的请求,可以设置一些列的参数,用于控制预览和拍照参数,例如:对焦模式,曝光模式,zoom 参数等等。


2.1、CameraManager 类




摄像头管理类,用于检测、打开系统摄像头,通过 getCameraCharacteristics(cameraId)可以获取摄像头特征。


CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);


2.2、CameraCharacteristics 类




相机特性类:CameraCharacteristics 是一个包含相机参数的对象,可以通过一些 key 获取对应的 values。

2.2.1、LENS_FACING:获取摄像头方向

//摄像头的方向


final Integer facing = characteristics.get(CameraCharacteristics.LENS_FACING);


// We don't use a front facing camera in this sample.


// 在本案例中,我们不考虑前置摄像头的情况,如果是前置摄像头,就跳出本次循环,进行下一次循环


if (facing != null && facing == CameraCharacteristics.LENS_FACING_FRONT) {


continue;


}


  • LENS_FACING_FRONT 是前摄像头,

  • LENS_FACING_BACK 是后摄像头,

  • LENS_FACING_EXTERNAL 是?额外(双摄像头)。Android Camera2的使用记录

2.2.2、SCALER_STREAM_CONFIGURATION_MAP:

获取 StreamConfigurationMap,它是管理摄像头支持的所有输出格式和尺寸。


Android Camera2教程之打开相机、开启预览、实现PreviewCallback、拍照(阅读量 4w,28 赞)


//获取 StreamConfigurationMap,它是管理摄像头支持的所有输出格式和尺寸


final StreamConfigurationMap map =


characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);


if (map == null) {


continue;


}

2.2.3、SENSOR_ORIENTATION

获取摄像头拍照的方向。

2.2.4、FLASH_INFO_AVAILABLE

获取是否支持闪光灯

2.2.5、SCALER_AVAILABLE_MAX_DIGITAL_ZOOM

获取最大的数字调焦值,也就是 zoom 最大值

2.2.6、LENS_INFO_MINIMUM_FOCUS_DISTANCE

获取最小的调焦距离,某些手机上获取到的该 values 为 null 或者 0.0。前摄像头大部分有固定焦距,无法调节。

2.2.7、INFO_SUPPORTED_HARDWARE_LEVEL

获取摄像头支持某些特性的程度,以下手机中支持的若干种程度:


  • INFO_SUPPORTED_HARDWARE_LEVEL_FULL:全方位的硬件支持,允许手动控制全高清的摄像、支持连拍模式以及其他新特性。

  • INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED:有限支持,这个需要单独查询。

  • INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY:所有设备都会支持,也就是和过时的 Camera API 支持的特性是一致的。


2.3、CameraDevice 类

Android 开发除了 flutter 还有什么是必须掌握的吗?

相信大多数从事 Android 开发的朋友们越来越发现,找工作越来越难了,面试的要求越来越高了


除了基础扎实的 java 知识,数据结构算法,设计模式还要求会底层源码,NDK 技术,性能调优,还有会些小程序和跨平台,比如说 flutter,以思维脑图的方式展示在下图;



本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

用户头像

嘟嘟侠客

关注

还未添加个人签名 2021.03.19 加入

还未添加个人简介

评论

发布
暂无评论
Android Camera2 API,androidframework开发书籍