【AREngine BUG & 解决方法】无法获取有效的相机图像尺寸

近期拿了一台 华为mate20 Pro的手机,在运行AR示例的过程中出现了黑屏。

问题排查

SDK版本:com.huawei.hms:arenginesdk:3.7.0.3

定位

经排查,发现(ARCamera对象的相机内参) getImageDimensions()返回的图像尺寸的width和height都为0。

这里的期望结果是 1440 x 1080。

API参考

查阅API参考,发现文档中关于getImageDimensions的描述中,新增以下注意事项:

转至setPreviewSize()方法描述。

解决方法

修改

根据API文档的描述,在ARConfigBase创建的地方,调用了config.setPreviewSize(1440,1080);

但是在后续的步骤中,仍然无法通过getImageDimensions()方法获取到width、height的有效值。

思考

此前开发用的Huawei Mate 20,AR示例运行正常。

这款设备既支持ARCore,又支持AREngine。2018年->2020年期间,华为发布的手机大都支持ARCore。

现使用Mate 20 Pro,出现黑屏问题。

猜想

这可能跟设备有关,支持的设备列表中的设备都是经过验证的。其它机型或许会有问题。

并未在AREngine的支持设备列表中,找到'Mate 20 Pro'这型号。


AR Engine支持的设备列表

最终办法

设置输入预览流分辨率,默认分辨率为(1440x1080),若某些机型在后续的步骤中,无法通过ARCameraIntrinsics对象获取相机尺寸,那就赋默认值。

ARConfig创建

复制代码
            config = new ARWorldTrackingConfig(session);
            //设置输入预览流分辨率,默认分辨率为(1440x1080)
            //此外还支持宽高比为4:3的物理相机预览分辨率。
            config.setPreviewSize(1440,1080);

Texture初始化时

复制代码
        ARCamera arCamera = frame.getCamera();
        ARCameraIntrinsics intrinsics = arCamera.getCameraImageIntrinsics();
        int[] dimensions = intrinsics.getImageDimensions();
        int width ,height ;
        if (ARPlatForm.isArCore()){
            width = dimensions[0];//1440;
            height = dimensions[1];//1080;
        }else{
            if (dimensions[0] == 0 && dimensions[1] == 0){
                width = 1440;
                height = 1080;
            }else {
                width = Math.max(dimensions[1],dimensions[0]);
                height = Math.min(dimensions[1],dimensions[0]);
            }
        }

        cameraTexture = new ExternalTexture(cameraTextureId, width, height);
相关推荐
想你依然心痛2 天前
HarmonyOS 6(API 23)实战:打造“空间相册“——基于 Face AR 表情驱动 + 沉浸光感悬浮导航的 PC 端沉浸式照片浏览系统
华为·ar·harmonyos·悬浮导航·沉浸光感
想你依然心痛3 天前
HarmonyOS 6(API 23)实战:基于悬浮导航、沉浸光感与Face AR的“心流空间“——PC端沉浸式心理疗愈与正念冥想平台
华为·ar·harmonyos·悬浮导航·沉浸光感
想你依然心痛3 天前
HarmonyOS 6(API 23)实战:基于悬浮导航、沉浸光感与AR双引擎的“量子实验室“——PC端沉浸式科学实验与虚拟仿真平台
华为·ar·harmonyos·悬浮导航·沉浸光感
想你依然心痛4 天前
HarmonyOS 6(API 23)实战:基于悬浮导航、沉浸光感与Face AR的“音律工坊“——PC端沉浸式音乐创作与编曲工作站
华为·ar·harmonyos·悬浮导航·沉浸光感
图导物联4 天前
AR景区导览解决方案避坑指令+成本控制
ar·ar景区导览解决方案
爱看科技5 天前
三星新一代智能眼镜率先亮相,微美全息多维度AI+AR场景体验驱动行业飞跃
人工智能·ar
熊猫钓鱼>_>6 天前
AR游戏的“轻”与“深”:当智能体接管眼镜,游戏逻辑正在发生什么变化?
人工智能·游戏·ai·ar·vr·game·智能体
想你依然心痛7 天前
HarmonyOS 6(API 23)实战:基于 Face AR 疼痛评估与 Body AR 姿态追踪的“智能康复训练助手“
华为·ar·harmonyos·悬浮导航·沉浸光感
想你依然心痛8 天前
HarmonyOS 6(API 23)游戏开发实战:基于 Face AR & Body AR 的“律动星途“体感音游
华为·ar·harmonyos·body·face·悬浮导航·沉浸光感
想你依然心痛8 天前
HarmonyOS 6(API 23)实战:基于 Face AR 专注度检测与 Body AR 手势互动的“智能互动课堂“教师授课系统
华为·ar·harmonyos·悬浮导航·沉浸光感·face ar·body ar