# 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文件夹下。