Android Camera2 API,androidframework 开发书籍
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,以思维脑图的方式展示在下图;

评论