使用scankit 进行扫码,在使用display.on监听到折叠屏变化的时候重新设置相机流的宽和高不生效。导致相机画面扫描到的物体变扭曲。
let viewControl: customScan.ViewControl = {
width: this.cameraWidth,
height: this.cameraHeight,
surfaceId: this.surfaceId
};
// 重新扫码
customScan.start(viewControl, this.callback);
当开发设备为折叠屏时,折叠态切换时需自行调整XComponent的宽高,start接口会重新适配相机分辨率比例。因此需要设置XComponent组件的宽和高动态绑定this.cameraWidth和 this.cameraHeight
参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/scan-customscan-api-V5\#section8604949165313
start相机流之后,会自动根据width: this.cameraWidth, height: this.cameraHeight适应新的宽高,不需要再次start的。问题中描述的宽高变化不生效,可以先检查是否this.cameraWidth和this.cameraHeight两个值计算有误。监听折叠屏变化获取新的屏幕宽度,可以使用display监听foldDisplayModeChange事件,再用display.getDefaultDisplaySync()或取宽高,参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-display-V5\#displayonfolddisplaymodechange10