Android ndk : ACameraManager_getCameraIdList return 0

Android ndk : ACameraManager_getCameraIdList return 0

我有一个 Android 带有 OV13850 摄像头模块的 8.1 rk3399 板。

本模块接口为mipi-csi,协议为I2C

当我记录相机特征时,它是 CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY。

我真的很想用ndk相机

但是人家说原生相机不支持legacy

问题一:

我有一个Raspberry b+ mipi相机。

如果只是换个摄像头模组,能兼容吗?

我觉得接口是一样的,所以没必要再编辑board SDK代码了

只需添加到 .rc 文件即可。

问题二:

我想在原生端支持旧相机。

如果我在 ndk 框架代码上编辑一些代码并构建我的 own.m,是否可以支持旧版?

问题三:

哪个部分决定相机模块是否是遗留的(物理模块、模块的内核驱动程序、Android OS 相机代码、ndk 框架等)?

更改物理摄像头模块或编辑代码进行原生处理之间应该选择什么方法?

问题 4:

传统相机和全相机有什么区别?

是的,您可以修改框架以支持不带 Java 的 LEGACY camera2。请参阅我的 POC 将 NDK Camera2 支持反向移植到 Android 6,您需要挑选一些更改。我的代码确实适用于 LEGACY 相机,但我从未对其进行超出最基本功能的测试。

你不能 运行 我的代码在 Android 8 上,因为它禁止从用户代码链接系统库。

official docs 详细描述了 LEGACY 相机有哪些限制,但 TL;NR:LEGACY 相机有一个旧相机 HAL 和一些模拟 camera2 API 到用户应用程序的包装器。经验法则是在检测到 LEGACY 相机时使用旧的 已弃用 相机 API,这样可以避免其中的一些额外包装和错误。

不幸的是,这对您的事业没有帮助,因为我们的相机没有 public C++ API。另外,我认为更换摄像头模块也无济于事。相机的 LEGACY 性质取决于固件级别。