跳至正文
LyricWave澜音
功能指南

播放中断恢复

入口:澜音模块设置 → 界面与底栏 → 播放中断恢复。默认开启,首次启用需强制停止并重开 Apple Music。

已核验的原生代码中,ExoMediaPlayer.play() 在仍持有播放意图时直接返回,seekToPosition() 只 seek;它们不会重新准备已经失败的播放源。此修复针对这个错误恢复缺口,不把“转圈”本身视为网络错误。

处理范围

  • 原生 Exo 播放器处于 IDLE,且存在明确的可恢复播放源错误(超时、连接断开、DNS/EOF 或 HTTP 408/429/5xx)时,尝试一次原生 retry()。
  • 原生 retry() 以 resetPosition=false/resetState=false 重准备同一来源;模块不改队列、索引、进度或播放意图。
  • 自动恢复要求仍想播放,并延迟 750ms 后重新核对同一错误、同一歌曲和索引。暂停、切歌、原生已恢复或关闭开关会取消本次尝试。
  • 每个播放器的近期队列项至多自动尝试一次;所有尝试有 10 秒间隔。手动点播放或拖进度也可恢复同一网络错误,暂停中的 seek 不会自动播放。
  • 正常 BUFFERING、鉴权/网络权限、DRM/解码器及其他错误保留原生处理,不循环重试,不规避账号或版权检查。

成员解析核对完整类型,不能匹配时停用本能力,不猜测其他方法。原生实现核验基于官方 Apple Music 6.5.2(1586)安装包;实际设备仍需确认安装的版本、原生错误及现象。

诊断

设置页显示最近一次原生状态、故障分类、恢复阶段与 HTTP 状态(如有)。渲染器错误会读取 getRendererException(),原生运行时错误读取 getUnexpectedException(),分别展示 DRM 会话、音频输出/解码器、原生运行时及远程播放器错误,不再将全部 type=1 统称为“DRM 或解码器”。诊断行包含错误类型与有限异常类名链,以及原生 DRM/音频输出/账号异常提供的整数错误码(E),不包含异常正文。所有错误都会更新原生状态,并取消同一播放器旧的待恢复任务。原生状态通常为 1=IDLE、2=BUFFERING、3=READY、4=ENDED。「播放器已就绪」只代表回到 READY,不承诺用户已听到声音。

记录不含播放地址、签名查询参数、账号凭据或异常正文。若仍卡住,需要报告这行状态及 Apple Music 版本;如果没有原生错误且一直 BUFFERING,本次策略不会盲目重建播放。

“播放一段时间后当前曲目偶发持续加载,拖动进度仅响一下或无声,切歌恢复”的原因尚未在实体设备确认,不能以新增诊断或单元测试通过视为已修复。需要复现后提供新版设置页的异常类名链及 Apple Music 精确版本,以区分授权、DRM 会话和音频输出问题;本次没有放宽 DRM 重试策略。

自动化回归覆盖一次恢复、保持队列与进度、暂停和切歌保护、手动 seek、鉴权/正常缓冲不重试,以及功能关闭。它们不能代替真机连续播放验证。

另修正 HDR 定时检查重复提交相同窗口属性的问题,减少界面状态抖动;尚不能据此认定 HDR 是本次断流的原因。


在 GitHub 查看事实来源

本页内容