Skip to content

fix(player): 修复弱网回跳并恢复详情玻璃控件 - #54

Open
AritxOnly wants to merge 6 commits into
mainfrom
codex/playback-buffer-recovery
Open

AritxOnly wants to merge 6 commits into
mainfrom
codex/playback-buffer-recovery

Conversation

@AritxOnly

@AritxOnly AritxOnly commented Nov 14, 2026 •

Copy link
Copy Markdown
Collaborator

播放恢复与详情界面修复

弱网播放到缓冲尾端发生网络错误时,原始 CDN / 兼容画质回退会重新应用页面初始恢复位置,导致跳回开头或旧历史位置。现在以 bvid:cid 区分内容,在同内容换源前读取播放器实时位置、暂停意图与倍速,并将位置随媒体源一次提交。新视频/分 P 和后台队列切歌保持各自入口位置。

预缓冲低水位 15→45 秒(上限仍 120 秒),卡顿后的恢复缓冲 2→5 秒,首次起播仍 1 秒;HTTP 连接/读取超时显式为 15/30 秒。可能增加缓冲流量、内存与卡顿后的等待时间,不更改离线缓存格式。

验证

  • 已通过 :core:application:test :app:testDebugUnitTest :danmaku-engine:test :app:assembleDebug,最终代码再次通过 application 测试与 debug 构建。
  • JVM 回归覆盖错误后续播、暂停/倍速、重复回退、回拖到零、首次加载、新视频/分 P 和后台切歌。
  • 静态扫描详情/后台/预览/直播/离线入口和 seekTo(0) 路径,记录见 docs/PLAYBACK_BUFFER_RECOVERY.md。
  • 当前无连接设备,以下手动验证待完成:弱网缓冲耗尽→恢复;切清晰度→切分P→全屏旋转→画中画→后台播放→退出→重新进入恢复进度,以及实际 CDN 回退。

本 PR 为独立缺陷修复,基于 main,不包含 PR52 的推荐功能。交付 APK 会另行在 main + 本 PR + PR52 的本地集成分支构建,不合并远端 main。

详情顶栏与页面遮罩

恢复竖屏随滚动的控件柔光玻璃;横屏双栏未显现玻璃时使用与合集框相同的 groupedBackground 不透明底色。横竖屏均保留顶部渐进遮罩/渐进模糊;详情简介/推荐区仅移除底部渐变,评论 tab 保留底部遮罩。播放器内部的控件明暗遮罩保持原行为。

追加验证:assembleDebug 通过;在 Pixel 9 模拟器实际播放视频,查看竖屏、平板尺寸双栏及滚动后的玻璃状态,确认浅/深色双栏控件与内容边缘。源码/API 依据当前项目 TeakUI 与固定 Miuix 源码,无新增依赖。

评论实体解码

评论 mapper 在生成正文时单次解码 HTML 4 命名实体(含 apos)与十进制/十六进制 Unicode 实体,统一覆盖主评论、预览回复和楼中楼。保留未知/非法实体、原始换行和字面量标签,不使用 HTML 文档解析,不引入依赖。

追加验证::infra:bili:testDebugUnitTest :app:assembleDebug 通过。新增 4 项纯解码回归和 1 项基于现有真实评论样本的 mapper 变体测试,覆盖主评论/预览一致性、emoji、单层解码、链接/表情/@、未知实体和非法 Unicode。

竖屏顶栏处于播放器下方,顶部渐进材质不再重复计入系统状态栏高度,避免遮罩向下过度覆盖正文。横屏与其他顶栏默认保持原高度。新增两项顶栏覆盖范围 JVM 测试,debug 构建通过。

@AritxOnly AritxOnly changed the title fix(player): 修复弱网缓冲耗尽后换源跳回开头 fix(player): 修复弱网回跳并恢复详情玻璃控件 Nov 14, 2026

This branch was successfully deployed

1 active deployment
pr-signing — 0d96ba97 Deployed Nov 14, 2026 by AritxOnly via signed-release #105
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant