【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);
相关推荐
各类产品分享1 天前
什么是景区AR实景导航系统
ar·文旅景区ar实景导航
各类产品分享1 天前
国内做景区AR实景导航方案的公司有哪些
ar·文旅景区ar实景导航
各类产品分享3 天前
地铁隧道AR巡检和人工巡检比哪个好
ar·地铁隧道ar巡检系统
各类产品分享3 天前
买地铁隧道AR巡检设备怎么避免踩坑
ar·地铁隧道ar巡检系统
各类产品分享3 天前
地铁隧道昏暗环境怎么用AR做设备巡检
ar·地铁隧道ar巡检系统
各类产品分享4 天前
电力行业做AR远程协作选哪家供应商好
ar·电力行业ar检修方案
各类产品分享4 天前
发电厂怎么用AR系统做故障排查和记录
ar·电力行业ar检修方案
各类产品分享4 天前
电力变电站用AR做设备点检具体怎么落地
ar·电力行业ar检修方案
各类产品分享4 天前
瑞丰宝丽的AR系统能解决电力巡检作弊问题吗
ar·电力行业ar检修方案
北京阿法龙科技有限公司5 天前
实景智感、无感执勤:AR 眼镜重塑安防警务实战能力
ar