有没有办法使用 CameraX
查询可用的相机分辨率? ?与 Camera2
这可以使用 StreamConfigurationMap.getOutputSizes() .但是,我找不到使用 CameraX
的方法。 .
documentation 无济于事已经过时了。目前它引用版本 1.0.0-alpha06
并且许多 API 在最新的 1.0.0-beta01
中发生了变化.
编辑:
有一种方法可以使用 Camera2
获得可用的分辨率。 API(感谢以下 Wasim 的回答)。但是,这只有在相机绑定(bind)到生命周期后才有可能,因此无法再更改目标分辨率,这使得它非常无用。
当然,我可以在不知道可用分辨率的情况下指定目标分辨率,但这样我就无法控制结果的纵横比。就我而言,我最终得到 16:9 Preview
和 4:3 ImageAnalysis
虽然 targetResolution
对于我的ImageAnalysis
为 16:9 (224x126)。
作为记录,这是您获得输出大小的方式:
val camera = cameraProvider.bindToLifecycle(this, cameraSelector, preview, imageAnalyzer)
val cameraId = Camera2CameraInfo.extractCameraId(camera.cameraInfo)
val cameraManager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
val characteristics = cameraManager.getCameraCharacteristics(cameraId)
val streamConfigurationMap = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP)
val outputSizes = streamConfigurationMap.getOutputSizes(format)
仍在寻找实际的解决方案。提前致谢。
最佳答案
这可以帮助任何在这里搜索的人。
Android CameraX,获取CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE等相机特征。
对于 2021 年,语法就像...
所以,你已经完成了获取相机的过程......
theCamera = cameraProvider.bindToLifecycle((LifecycleOwner)this,
yourCameraSelector, yourImageAnalysis, yourPreview);
现在的代码是:CameraCharacteristics camChars = Camera2CameraInfo
.extractCameraCharacteristics(theCamera.getCameraInfo());
float discoveredMinFocusDistance = camChars
.get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE);
你可能需要一个@SuppressLint("UnsafeExperimentalUsageError")
CameraCharacteristics camChars = ...
对于第一行。
关于android - 如何在 Android 上使用 CameraX 获取可用分辨率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60901831/