一 通过camerax 实现基本的拍照、屏幕曝光度 闪光灯 放大 聚焦等功能

823 阅读1分钟

一 通过camerax 实现基本的拍照、屏幕曝光度 闪光灯 放大 聚焦等功能

二 通过重力感应实现了横竖屏拍照

三 camerax 拍照的数据是字节流 如何控制图片的大小与方向

四 感悟与展望

要用camerax实现自定义相机,那必须要去官网学习啊。 developer.android.google.cn/jetpack/and…

当然我没有用最新版本,一般我用得版本都是久一些的版本。哈哈总感觉用最新版本的都是当小白鼠。 不过你们也可以用最新版本体验。

1、增加依赖

implementation "androidx.camera:camera-core:$camerax_version"
// CameraX Camera2 extensions
implementation "androidx.camera:camera-camera2:$camerax_version"
// CameraX Lifecycle library
implementation "androidx.camera:camera-lifecycle:$camerax_version"
//previewView
implementation("androidx.camera:camera-view:1.0.0-alpha27")

2、写个fragment 编写自己的ui 核心代码都在BaseCameraxFragmentV2

这里我也不全贴代码了,用自己的理解无非就是 相机预览->点击拍照按钮产生图片流 这2步

相机预览核心代码

cameraProvider.bindToLifecycle(
    viewLifecycleOwner,
    cameraSelector,
    preview,
    imageCapture
)

ProcessCameraProvider是相机提供者并且与我们的ui进行了生命周期绑定。

CameraSelector 是相机选择器 可以选择前置还是后置摄像头

PreviewView 显示CameraX预览用例的摄影机的自定义视图,它在内部使用TextureView或SurfaceView来显示相机提要,并对其应用所需的变换以正确显示预览,这包括更正其纵横比、缩放和旋转。

ImageCapture 用来控制图片拍照后宽高 图片的生成角度 闪光灯模式等。

3、到这里大家可以先把我的代码理一理 或者项目跑起来点击拍照看看 去文件管理中 /storage/emulated/0/Android/data/cn.zdq.mvvm_demo/files 目录下看看生成的图片