HDR 开了画面却忽明忽暗:HarmonyOS 7 VideoProcessor 状态监听与回退实战 HDR 开了画面却忽明忽暗HarmonyOS 7 VideoProcessor 状态监听与回退实战菜谱视频打开 HDR 后顶部按钮显示“已开启”但切换视频或应用退后台再回来时画面亮度跳变埋点只有按钮值没有处理器状态也无法判断是资源不支持、处理器忙还是已经回退。本文交付一套 VideoHdrCoordinator、状态到 UI 的映射、短视频预览与全屏播放两个案例以及监听解绑检查表。。图中的每条箭头都应对应一条可查询日志输入、平台调用、状态映射、UI 或降级结果。只有 UI 变化而没有中间证据后续仍然难以区分接口失败和页面逻辑错误。两种行为不同的案例案例一列表短视频预览滚动离开可见区就停止监听并回到 SDR避免多个预览同时占用处理资源。案例二全屏步骤视频保持用户选择但以处理器状态为准展示“准备中、HDR、生效失败、已回退”切源时重新绑定。复现与验证准备一段 HDR 候选视频和一段普通 SDR 视频。记录按钮意图值、sourceId、getStatus 和回调状态。快速切换视频、前后台切换并滚动预览列表。确认旧 sourceId 的回调不会覆盖新视频。解绑后检查监听数量归零并验证 SDR 回退文案。输入/场景预期分支验收信号初始 SDRoff不显示已开启请求 HDRpreparing显示准备中处理器生效active显示 HDR资源不支持fallback保持可播放快速切源忽略旧回调新源状态正确离开页面offStatusChange无悬挂监听官方依据与版本边界官方变更页https://developer.huawei.com/consumer/cn/doc/doccenter-release-notes/js-apidiff-mediakit-7003Media Kit 新增 videoProcessing 能力。VideoProcessor 可读取 getStatus。可通过 onStatusChange/offStatusChange 管理状态监听。AI HDR 状态变化不能由按钮开关替代。本文依据 HarmonyOS 7.0.0 ReleaseAPI 26官方变更说明梳理接口并对状态模型、分支选择和异常映射做了宿主侧 TypeScript 测试。当前本机 SDK 为 API 24且没有连接 HDC 设备因此不把示例描述为 API 26 编译通过、真机性能数据或上架审核结论。接入前请在 API 26 工程中按文末清单完成编译、设备与回归验证。可复用的 ArkTS 集成片段typeHdrUioff|preparing|active|fallbackexportclassVideoHdrCoordinator{privateui:HdrUioffprivatesourceIdbind(processor:videoProcessing.VideoProcessor,sourceId:string){this.sourceIdsourceIdconstcurrentprocessor.getStatus()this.uithis.mapStatus(current)processor.onStatusChange((status){if(this.sourceId!sourceId)returnthis.uithis.mapStatus(status)AppStorage.setOrCreate(hdrUi,this.ui)})}unbind(processor:videoProcessing.VideoProcessor){processor.offStatusChange()this.sourceIdthis.uioff}privatemapStatus(status:number):HdrUi{if(status1)returnpreparingif(status2)returnactivereturnfallback}}代码刻意把平台调用和业务状态分开平台返回什么就记录什么页面只消费稳定状态。接入时还应补齐项目的日志域、错误码类型和生命周期释放。取舍与落地清单UI 直接绑定开关值最简单但会把“用户想开”误写成“处理器已生效”。状态机多了几种中间态却能让播放、埋点和问题定位说同一种语言。已用 API 26 工程编译并记录 SDK 与设备版本已覆盖“列表短视频预览”和“全屏步骤视频”两类行为已记录成功、失败、降级三条路径的输入与结果已核对监听、对象或任务的释放与幂等行为已把本文宿主测试替换为项目自己的真机证据小结一套 VideoHdrCoordinator、状态到 UI 的映射、短视频预览与全屏播放两个案例以及监听解绑检查表。。建议先在最小页面复现再接入完整“中式美食”流程先证明状态链正确再谈动画、缓存或埋点优化。