南山做網(wǎng)站推廣樂(lè)云seo最新?tīng)I(yíng)銷模式
近期拿了一臺(tái) 華為mate20 Pro的手機(jī),在運(yùn)行AR示例的過(guò)程中出現(xiàn)了黑屏。
問(wèn)題排查
SDK版本:com.huawei.hms:arenginesdk:3.7.0.3
定位
經(jīng)排查,發(fā)現(xiàn)(ARCamera對(duì)象的相機(jī)內(nèi)參) getImageDimensions()返回的圖像尺寸的width和height都為0。
這里的期望結(jié)果是 1440 x 1080。
API參考
查閱API參考,發(fā)現(xiàn)文檔中關(guān)于getImageDimensions的描述中,新增以下注意事項(xiàng):
轉(zhuǎn)至setPreviewSize()方法描述。
解決方法
修改
根據(jù)API文檔的描述,在ARConfigBase創(chuàng)建的地方,調(diào)用了config.setPreviewSize(1440,1080);
但是在后續(xù)的步驟中,仍然無(wú)法通過(guò)getImageDimensions()方法獲取到width、height的有效值。
思考
此前開(kāi)發(fā)用的Huawei Mate 20
,AR示例運(yùn)行正常。
這款設(shè)備既支持ARCore,又支持AREngine。2018年->2020年期間,華為發(fā)布的手機(jī)大都支持ARCore。
現(xiàn)使用Mate 20 Pro
,出現(xiàn)黑屏問(wèn)題。
猜想
這可能跟設(shè)備有關(guān),支持的設(shè)備列表中的設(shè)備都是經(jīng)過(guò)驗(yàn)證的。其它機(jī)型或許會(huì)有問(wèn)題。
并未在AREngine的支持設(shè)備列表中,找到’Mate 20 Pro’這型號(hào)。
AR Engine支持的設(shè)備列表
最終辦法
設(shè)置輸入預(yù)覽流分辨率,默認(rèn)分辨率為(1440x1080),若某些機(jī)型在后續(xù)的步驟中,無(wú)法通過(guò)ARCameraIntrinsics對(duì)象獲取相機(jī)尺寸,那就賦默認(rèn)值。
ARConfig創(chuàng)建
config = new ARWorldTrackingConfig(session);//設(shè)置輸入預(yù)覽流分辨率,默認(rèn)分辨率為(1440x1080)//此外還支持寬高比為4:3的物理相機(jī)預(yù)覽分辨率。config.setPreviewSize(1440,1080);
Texture初始化時(shí)
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);