从零开发一款相机APP 第八篇: Camera2相机 拍照功能实现
2023-02-18 16:35:35 时间
本课程内容由 @公众号:小驰笔记出品,欢迎关注公众号,获取更多交流信息~
欢迎访问个人博客:www.xiaochibiji.com
一、创建拍照capture request
final CaptureRequest.Builder captureBuilder =
mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
captureBuilder.addTarget(mImageReader.getSurface());
二、 设置af模式
captureBuilder.set(CaptureRequest.CONTROL_AF_MODE,
CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
三、设置jpeg方向
captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, getOrientation(rotation));
四、拍照尺寸设置
mImageReader = ImageReader.newInstance(largest.getWidth(), largest.getHeight(),
ImageFormat.JPEG, /*maxImages*/2);
mImageReader.setOnImageAvailableListener(
mOnImageAvailableListener, mBackgroundHandler);
五、创建拍照会话
CameraCaptureSession.CaptureCallback CaptureCallback
= new CameraCaptureSession.CaptureCallback() {
@Override
public void onCaptureCompleted(@NonNull CameraCaptureSession session,
@NonNull CaptureRequest request,
@NonNull TotalCaptureResult result) {
unlockFocus();
}
};
mPreviewCaptureSession.stopRepeating();
mPreviewCaptureSession.abortCaptures();
mPreviewCaptureSession.capture(captureBuilder.build(), CaptureCallback, null);
六、保存拍照照片
private final ImageReader.OnImageAvailableListener mOnImageAvailableListener
= new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
mBackgroundHandler.post(new ImageSaver(reader.acquireLatestImage(), mFile));
}
};
深圳上班,
从事Android Camera相关软件开发工作,
公众号记录生活和工作的点滴,
相关文章
- 项目统一异常处理设计
- Es6基本语法
- 华为交换机补丁升级详细过程_CE6856_详细过程
- ASCII码表_ASCII码对照表
- 无语,萝卜遭遇小偷加骗子,还被PUA!
- 项目统一返回结果设计
- 如何去除pycharm中警告波浪线
- Gradle与IDEA整合
- Drawio v20.2.3 开源跨平台绘图软件
- Gradle入门
- Typecho优化加速 - Gzip压缩
- Java反编译工具JAD下载和使用
- H3C交换机堆叠配置及命令详解
- Typecho文章里添加版权链接 - 纯代码
- 假期还要卷,24个免费数据集送给你
- FastStone Capture 屏幕录制截图工具
- Brother标签机连续打印多个标签
- SpringCache基本操作
- 网站外链发布工具 - SEO优化工具
- RabbitMQ之发布高级