# CameraPractice
**Repository Path**: penguinjacky/camera-practice
## Basic Information
- **Project Name**: CameraPractice
- **Description**: camera2练习
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-06-07
- **Last Updated**: 2021-06-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# CameraPractice
基于Camera2 API
## 介绍
1. 可预览;
2. 可拍照;
3. 拍照成功后保存图片至本地相册,并通知相册刷新;
4. 切换前置、后置摄像头;
5. 拍照成功后显示照片缩略图,点击缩略图后显示大图;
6. 拍照快门声音、录像快门声音;
7. 可录像;
8. 录像文件保存至本地相册;
9. 人脸检测并实时展现,预览画面中出现的人脸会被方框框住,方框实时跟随人脸移动。人脸消失、绘制的方框也消失;
10. 优化UI界面;
11. 解决了拍照 / 录像时,预览画面拉伸的问题;
+ 自定义一个类AutoFixTextureView继承TextureView,写一个约束宽高比的方法setAspectRation(int width, int height),设定好宽高比后请求重新计算布局,实现预览画面的大小的调整
12. 预览的窗口和方向随手机屏幕旋转(横屏或竖屏)适配;
+ openCamera之前需要根据手机屏幕当前的方向(横屏 or 竖屏)去调整预览界面的大小和显示方向
计算出预览窗口到相机输出窗口的变换矩阵:先将两个窗口的中心平移至同一点,设置两个窗口的缩放模式,计算缩放比例和旋转角度,将变换矩阵应用至预览窗口
13. 录像的过程中可以点击拍照按钮拍照;
14. 可选择不同的白平衡模式,使预览画面的色温发生改变。一共8种模式:
+ 自动 CONTROL_AWB_MODE_AUTO
+ 多云 CONTROL_AWB_MODE_CLOUDY_DAYLIGHT
+ 白天 CONTROL_AWB_MODE_DAYLIGHT
+ 日光灯 CONTROL_AWB_MODE_FLUORESCENT
+ 白炽灯 CONTROL_AWB_MODE_INCANDESCENT
+ 阴影 CONTROL_AWB_MODE_SHADE
+ 黄昏 CONTROL_AWB_MODE_TWILIGHT
+ 暖光 CONTROL_AWB_MODE_WARM_FLUORESCENT
还可以滑动滚动条或者点击滚动条,也可以改变画面色温。滚动条的值的区间是2000 ~ 8000。
15. 添加裁剪功能。可以在预览拍照后的显示照片缩略图的界面选择编辑照片,进入剪裁界面对照片进行不同比例剪裁、旋转、缩放。剪裁成功后会保存剪裁的图片。此功能引入了第三方库——[UCrop](https://github.com/Yalantis/uCrop/)。
## ScreenShot
## Android studio APK打包
1. 找到Build选项卡,点击里面的Generate Signed Bundle / APK...;
2. 选择APK,下一步NEXT;
3. 需要有Key Store,如果没有就create一个;
+ 创建Key Store注意事项:密码和确认密码 下面也是 输入相同即可
4. 创建好Key Store后,输入密码,进入下一个界面,选择release,勾上V2,点FINISH。
5. 打包成功后,生成的APK会出现在项目目录下的release文件夹下。
