android - 在android中,如果我有min api 21,cameraX是否覆盖所有设备,还是我需要为旧设备维护camera1实现?
问题描述
我目前有一个最小 api 为 21 的应用程序,它同时具有 camera1 和 camera2 实现。根据以下代码,我选择是使用 camera1 还是 camera2:
val cameraIds = manager.cameraIdList
for (id in cameraIds) {
val info = manager.getCameraCharacteristics(id)
val facing = info.get(CameraCharacteristics.LENS_FACING)!!
val level = info.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL)!!
val hasFullLevel = level == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_FULL
val syncLatency = info.get(CameraCharacteristics.SYNC_MAX_LATENCY)!!
val hasEnoughCapability = syncLatency == CameraCharacteristics.SYNC_MAX_LATENCY_PER_FRAME_CONTROL
// All these are guaranteed by
// CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_FULL, but checking
// for only the things we care about expands range of devices we can run on.
// We want:
// - Back-facing camera
// - Per-frame synchronization (so that exposure can be changed every frame)
if (facing == CameraCharacteristics.LENS_FACING_BACK && (hasFullLevel || hasEnoughCapability)) {
// Found suitable camera - get info, open, and set up outputs
foundCamera = true
break
}
}
我计划在不久的将来对 cameraX 进行更新,并且我很想放弃 camera1 实现并拥有一个统一的 cameraX 实现。有没有人有使用cameraX的经验,它是否可以处理我以前使用camera1后备的所有情况?我们的许多客户都在发展中市场,因此我们需要保持对尽可能多的旧设备的支持。
解决方案
cameraX 没有Camera API1后备。他们依赖于 camera2 LEGACY 支持,但是是的,该库包含许多针对特定问题的解决方法。请查看他们测试的设备列表:https ://developer.android.com/training/camerax/devices 。
您没有解释您之前使用 camera1 后备的“所有情况”是什么,但如果您有这样的列表,您可以查看发行说明以检查当前版本的库是否解决了这些问题。如果不是,欢迎您将它们添加到问题列表中。
推荐阅读
- sql - 如何做 2 个子请求来计算表中的男人和女人
- python - 在我的 python 脚本中更新 requests.get
- javascript - 复制功能无法识别 p5js 中另一个画布上的图像
- vue.js - Vue/Nuxt - 从子元素触发鼠标离开
- r - R中函数运行时的异常值
- parsing - 逐字节搜索文件的正确方法是什么?
- wordpress - 在帖子页面上预填充 Woocommerce 简短描述
- firebase - 从 Firestore Flutter 中的文档中获取用户名
- java - 无法解析方法'toString()
- ios - 使用 Flutter 为 iOS 构建时,我在哪里可以查看 XCode 运行脚本阶段的输出?