首页 > 解决方案 > 在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后备的所有情况?我们的许多客户都在发展中市场,因此我们需要保持对尽可能多的旧设备的支持。

标签: androidandroid-camera

解决方案


cameraX 没有Camera API1后备。他们依赖于 camera2 LEGACY 支持,但是是的,该库包含许多针对特定问题的解决方法。请查看他们测试的设备列表:https ://developer.android.com/training/camerax/devices 。

您没有解释您之前使用 camera1 后备的“所有情况”是什么,但如果您有这样的列表,您可以查看发行说明以检查当前版本的库是否解决了这些问题。如果不是,欢迎您将它们添加到问题列表中


推荐阅读