首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CameraX :如何显示16:9的比例预览?

CameraX 是 Android Jetpack 中的一个相机库,用于简化相机功能的开发。要显示 16:9 的比例预览,可以按照以下步骤进行操作:

  1. 首先,在项目的 build.gradle 文件中添加 CameraX 的依赖:
代码语言:txt
复制
dependencies {
    def camerax_version = "1.1.0-alpha07"
    implementation "androidx.camera:camera-core:$camerax_version"
    implementation "androidx.camera:camera-camera2:$camerax_version"
    implementation "androidx.camera:camera-lifecycle:$camerax_version"
    implementation "androidx.camera:camera-view:1.0.0-alpha23"
}
  1. 在布局文件中添加 CameraView,用于显示相机预览:
代码语言:txt
复制
<androidx.camera.view.CameraView
    android:id="@+id/cameraView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  1. 在相机的生命周期中,配置相机预览的比例为 16:9:
代码语言:txt
复制
val cameraView: CameraView = findViewById(R.id.cameraView)
cameraView.post {
    val ratio = Rational(16, 9)
    val previewConfig = PreviewConfig.Builder().setTargetAspectRatio(ratio).build()
    val preview = Preview(previewConfig)
    preview.setOnPreviewOutputUpdateListener { previewOutput ->
        val parent = cameraView.parent as ViewGroup
        parent.removeView(cameraView)
        parent.addView(cameraView, 0)
        cameraView.surfaceTexture = previewOutput.surfaceTexture
    }

    val cameraProviderFuture = ProcessCameraProvider.getInstance(this)
    cameraProviderFuture.addListener(Runnable {
        val cameraProvider = cameraProviderFuture.get()
        val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
        cameraProvider.unbindAll()
        cameraProvider.bindToLifecycle(this, cameraSelector, preview)
    }, ContextCompat.getMainExecutor(this))
}

这样,CameraX 就会以 16:9 的比例显示相机预览。

CameraX 的优势在于它提供了简洁且一致的 API,使相机功能的开发更加容易。它还支持多种设备和配置,并且与 Jetpack 组件和生命周期绑定,方便与其他组件集成。

CameraX 的应用场景包括但不限于:社交媒体应用中的拍照和录像功能、视频通话应用中的前后摄像头切换、人脸识别应用中的实时相机预览等。

推荐的腾讯云相关产品:腾讯云移动直播(https://cloud.tencent.com/product/mlvb),腾讯云短视频(https://cloud.tencent.com/product/tvs),腾讯云云点播(https://cloud.tencent.com/product/vod)。

请注意,以上答案仅供参考,具体实现可能因项目需求和环境而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Google Jetpack 新组件 CameraX 介绍与实践

,具体地址如下: https://github.com/glumes/camera 官方并没有提到 CameraX 库具体如何进行 OpenGL 线程渲染, 继续往下看,你会找到答案~~~ 关于 CameraX...而预览图像最终要呈现到 Android Surface 上,因此选择分辨率时候要考虑 Surface 宽高比例,不要出现比例不匹配导致图像拉伸现象。...,这样实现了 TextureView 控件显示 Camera 预览内容。...拍摄 拍摄同样有一个 Config 参数构建者类,而且设定参数和预览相差不大,也是图像宽高比例、旋转方向、分辨率,除此之外还有闪光灯等配置项。...简单应用方面的内容,更关心如何CameraX 去做 OpenGL 渲染实现美颜。

1.9K20

Android开发笔记(一百八十一)使用CameraX拍照

常言道,眼睛是心灵窗户,那么相机便是手机窗户了,主打美颜相机功能拍照手机大行其道,可见对于手机App来说,如何恰如其分地运用相机开发至关重要。...来自Jetpack库,因此要修改模块build.gradle,往dependencies节点添加以下几配置,表示导入指定版本camerax库: // camerax库各版本见 https://mvnrepository.com...1、准备一个预览视图对象PreviewView,并添加至当前界面; 2、获取相机提供器对象ProcessCameraProvider; 3、构建预览对象Preview,指定预览宽高比例; 4、构建摄像头选择器对象...bindToLifecycle方法,把相机选择器、预览视图、图像捕捉器绑定到相机提供器; 7、调用预览视图对象setSurfaceProvider方法,设置预览视图表面提供器; 把上述初始化步骤串起来..._9; // 宽高比例 private int mFlashMode = ImageCapture.FLASH_MODE_AUTO; // 闪光灯模式 private String mMediaDir;

1.5K20

使用 PreviewView 来展示相机预览

显示相机预览内容是每个相机类应用都会包含功能,想要完美实现这个却并非易事。原因是,在某些特别极端情况下 camera2 API 使用会变得很复杂,而且在不同设备上行为还会有所不同。...PreviewView 介绍 PreviewView 是一个可以显示相机画面的自定义 View,它被构建初衷便是降低开发者们在设置和处理相机所使用预览画面 (preview surface) 难度...PreviewView - 摄像头控制操作 根据相机摄像头传感器方向、设备旋转方向、以及显示模式和预览比例,PreviewView 可能会对从相机接收到预览帧进行相应地缩放、旋转和转换处理,以便在...这样就可以做到拦截捏拉手势,然后相应地更新摄像头缩放比例。...集成到应用中,可以正常去显示或者停止显示来自相机画面数据流。

2.7K20

Android CameraX 知识点

CameraX 知识 我们常见功能分为: 预览: 将Camera拍摄数据实时在app指定区域进行显示,使用PreviewView主要进行预览显示 图片分析:将相机拍摄图片进行数据分析,例如人脸识别...图片拍摄:这个功能主要就是存储,将预览显示图片效果,进行本地存储。 视频拍摄:主要通过VideoCapture类,将音视频数据进行存储。...那么如何了解呢? 可以通过Camera2CameraInfo类来了解。...CameraX会针对不同用例匹配不同分辨率。并不是全部一致。默认情况下 预览模式:默认最高预览分辨率。照着屏蔽分辨率进行匹配最佳尺寸。(可以调整) 分析模式:默认分辨率为640*480。...:9; 参考资料:https://developer.android.google.cn/training/camerax

1.5K20

使用 PreviewView 来展示相机预览

[6ec341560316c.png] 显示相机预览内容是每个相机类应用都会包含功能,想要完美实现这个却并非易事。...还好,Jetpack CameraX PreviewView 可以帮助您解决这一问题。通过在各种 Android 设备上提供开发者友好、一致且稳定 API,使得展示相机预览变得不再困难。...PreviewView 介绍 PreviewView 是一个可以显示相机画面的自定义 View,它被构建初衷便是降低开发者们在设置和处理相机所使用预览画面 (preview surface) 难度...PreviewView - 摄像头控制操作 根据相机摄像头传感器方向、设备旋转方向、以及显示模式和预览比例,PreviewView 可能会对从相机接收到预览帧进行相应地缩放、旋转和转换处理,以便在...集成到应用中,可以正常去显示或者停止显示来自相机画面数据流。

1.6K00

Android CameraX结合LibYUV和GPUImage自定义相机滤镜

实现效果 image.png 实现步骤 1.引入依赖库 这里我引入依赖库有CameraX、GPUImage(滤镜库)、Utilcodex(一款好用工具类) // CameraX core library...(https://github.com/theeasiestway/android-yuv-utils)里面的libyuv,如下 image.png 3.编写CameraX预览代码 布局代码如下 <...        android:layout_width="0dp"         android:layout_height="0dp" /> Activity中开启相机预览代码如下...10         private val REQUIRED_PERMISSIONS = arrayOf(Manifest.permission.CAMERA)     } } 到这里就可以实现相机预览了...()                 //设置回调数据比例16:9                 .setTargetAspectRatio(AspectRatio.RATIO_16_9)

1.1K20

最新版基于ZXingAndroid扫码库

dimension 4dp 扫描区边角宽 cornerRectHeight dimension 16dp 扫描区边角高 scannerLineMoveDistance dimension 2dp...,默认0.8,设置比例最终会在预览区域裁剪基于此比例一个矩形进行扫码识别 .setAreaRectVerticalOffset(0)//设置识别区域垂直方向偏移量,默认为0,为0表示居中,可以为负数...,默认0.8,设置比例最终会在预览区域裁剪基于此比例一个矩形进行扫码识别 .setAreaRectVerticalOffset(0)//设置识别区域垂直方向偏移量,默认为0,...版本说明 v2.x 基于CameraX进行了重构 v2.x 相对于 v1.x 优势 v2.x基于CameraX,抽象整体流程,可扩展性更高。...v2.x基于CameraX通过预览裁剪方式确保预览界面不变形,无需铺满屏幕,就能适配(v1.x通过遍历Camera支持预览尺寸,找到与屏幕最接近比例,减少变形可能性(需铺满屏幕,才能适配)) v2

4.9K30

Android JetPack组件CameraX使用及修改显示图像

学更好别人, 做更好自己。 ——《微卡智享》 本文长度为3743字,预计阅读9分钟 前言 好久没用Kotlin写Android代码了,刚开始写起来还有点生,不过适应了一阵也算是恢复过来了。...划重点 要在CameraX中实现图像上显示修改图像,需要在PreviewView上层再自己写一个View,使用Canvas.draw方式进行绘制显示,而无法直接在Preview中进行图像更改。...这个和我以前文章《Android通过OpenCV和TesserartOCR实时进行识别》直接在OpenCV中修改了图像后在通过SurfaceView显示是完全不一样CameraX使用 ?...我们先创建一个ViewOverLay继承自View,用于实现摄像机上层修改显示图层,其中定义了显示文字,输出坐标及drawtext绘制文字方法 package dem.vaccae.camerax...,两个都是全屏显示

2.4K20

一篇文章带你了解Google CameraX

2)易用性 CameraX 着重于用例,使您可以专注于需要完成任务,而无需花时间处理不同设备之间细微差别。CameraX 支持大多数常见相机用例: 预览:在屏幕上查看图片。...所以,CameraX所能支持功能,也就是Camera2所支持功能。 目前CameraX为我们提供下下面几个最主要功能,分别是预览、图片分析、图片拍摄、视频拍摄等。...这些都是相机开发里面常用功能。 四、 CameraX基本使用示例 1)实现预览 在向应用添加预览时,请使用 PreviewView,这是一种可以剪裁、缩放和旋转以确保正确显示 View。...如需详细了解如何控制相机输出(如变焦和曝光),请参阅此指南。 现在,您已完成实现相机预览操作。请构建您应用,然后确认预览是否出现在您应用中并能按预期工作。...在 CameraX 中,用于视频捕获解决方案是 VideoCapture 用例: 图 2. 展示 CameraX 如何处理 VideoCapture 用例概念图。

3.5K31

回顾 | Android Jetpack 重要更新

Paging 3 — 分页加载显示数据内容 Paging 开发库可以帮助分页加载显示数据内容。我们发布了使用 Kotlin 协程 重写 Paging 3。...请通过我们文章《期待已久动态数据库工具终于来了!》了解更多关于这个工具内容以及如何使用它。...请通过 官方文档 获取更多有关游戏 SDK 内容。 CameraX 库 由于 Android 设备多样性,市面上有太多不同种类相机硬件,而 CameraX 可以兼容市面上 90% 设备。...要了解更多关于 CameraX 内容,请参阅我们详尽 CameraX 文档 和 示例工程,以及我们过去推送文章《使用 PreviewView 来展示相机预览》。...Android Studio 预览现在是可交互,并且还有很多编译器方面的优化。

23540

CameraX 1.1 有哪些新特性发布?

CameraX 基于主要使用场景来构建,比如实时预览相机、检索缓冲区以进行分析和拍摄照片,在 CameraX 1.1 版本中还加入了视频拍摄功能。...现在,应用启动时屏幕上便会显示实时预览。 我们已于 2021 年 5 月发布了 1.0 稳定版本,目前正在开发 1.1 Alpha 版本并且很快将会进入 Beta 阶段。...我们来看看如何使用 CameraX Extensions API: // 获取后置相机列表 val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA...在上面的例子中,imageCapture 输出图像将会具有焦外虚化效果,如果设备支持的话,preview 也将预览焦外虚化效果。...Coordinate Transformation API 可以将不同用例间坐标关联起来,如果您在 imageAnalysis缓冲区中定位了兴趣点,便可以方便地在图像捕捉输出或预览中轻松找到它。

1.7K20

RK3399主板,Android 7.1系统 USB摄像机配置

例如:双USB摄像头插入后调用系统相机崩溃,预览界面左右镜像翻转了,拍照结果左右镜像翻转了,预览或者拍照时旋转了90°、180°等等情况。 下面介绍一下我处理。 2....但其实并不是不支持,而是调用摄像头时出现了冲突造成崩溃。(系统相机App版本问题) 直接使用Android CameraX库进行识别摄像头时候,因为只能得到一个相机设备。还容易触发崩溃。...这种方案优势就在于USB摄像头是手动加载,扩展性比较好。 但是性能没有直接CameraX性能高。 但是可自定义空间大。 3....CameraX 加载 USB双摄像头 RK3399 本身是支持多摄像头。可以将USB摄像头进行配置,并分配为前置摄像头或后置摄像头。...方法很简单:打开系统设置->显示->摄像头设置然后在弹出面板中进行设置哪个摄像头为前置,哪个摄像头为后置。 同时可以调整摄像头预览以及拍照输出旋转角度。同时也可以解决相机画面中镜像翻转问题。

1K40

Android CameraX NDK OpenCV(一)--实时灰度图预览

——《微卡智享》 本文长度为5350字,预计阅读11分钟 前言 上一篇《Android JetPack组件CameraX使用及修改显示图像》已经实现了CameraX相机预览使用,所以要结合OpenCV...搭建环境 摄像机预览:JetPack CameraX OpenCV版本:4.5 NDK版本:21.1.6352462 CMake版本:3.10.2 开发语言:kotlin 实现效果 ?...微卡智享 01 预览图像传入OpenCV转为Mat问题 YUV_420_888转为byteArray 上篇使用CameraX中提到过,在图像分析里面通过ImageAnalysis.Analyzer中analyze...刚才是解决了怎么将图片转为byteArray传入OpenCV,在处理过程中发现预览是竖屏图像,但是传入图像是90度旋转过去,所以在OpenCV中处理完后回传显示时候也是旋转后图像。...调试中发现,ImageProxy中生成图像默认是720*1280,上图中左上角文字也显示了出来,而CameraX预览里面Android内部已经把图像缩放显示都集中进去了,所以我们如果直接按原图画上后

2.6K20

Android CameraX NDK OpenCV(二)-- 实现Dnn人脸检测

前言 上一篇《Android CameraX NDK OpenCV(一)--实时灰度图预览》已经把Android下OpenCVNdk配置完成,并且实现了实时灰度图显示,本篇来看看在Android下使用...GIF动图 视频效果 划重点 从上面的效果很仔细的话可以看到,我们检测人脸到画上红色矩形框时偶尔会有延时情况,这个在《Android JetPack组件CameraX使用及修改显示图像》中说过,我们在摄像机预览中上层加入了...VIEW,在VIEW中进行绘制,其实如果不要想这个情况,可以像灰度图显示一样,把整张已经标记好图片都传回来,然后DrawBitmap把原来预览图盖住也可以。...在ViewOverLay类中加入一个DrawRect方法,因为在JNI返回是人脸检测到矩形,所以这里加入一个画矩形函数,后面两个参数宽度和高度在上一篇灰度显示中提到过,我们传入图片大小和预览图片大小不一致...,预览时自动就缩放至设备屏幕宽高了,所以这里传入参数为实际处理图片宽和高,用于计算宽和度偏移比例

1.7K40
领券