【发布时间】:2021-04-19 18:58:27
【问题描述】:
我目前有一个应用程序,其 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 后备的所有情况?我们的许多客户都在发展中市场,因此我们需要尽可能多地支持旧设备。
【问题讨论】: