# 屏幕常亮与前台自动续播 ## 目标 - Android 与 iOS 前台保持屏幕常亮,不引入插件或依赖。 - 用户主动暂停后切后台再回前台,在播放器与票据状态安全时自动续播。 - 锁定、blocked、票据失败、错误态及浮层遮挡场景不得强制起播。 ## 实施步骤 1. Android `MainActivity.onCreate` 添加 `FLAG_KEEP_SCREEN_ON`,保留现有渠道逻辑。 2. iOS `AppDelegate` 设置 `UIApplication.shared.isIdleTimerDisabled = true`。 3. 为 `PlaybackSession` 增加无浮层、路线可见且 active 播放器可用的恢复判断。 4. 调整 `PlayerLogic.onLifecycle`,在现有 PiP 复位和过期票据刷新流程后安全设置播放意图。 5. 补用户暂停恢复、锁定/票据失败不恢复、后台保存并暂停测试。 6. 执行 `dart analyze lib test` 与 `flutter test --no-pub`,回填 PROGRESS 后提交合并。 ## 风险 / 待确认 - 真机常亮和生命周期行为由 PM 验收,本次不启停服务、不操作设备。 - PiP 继续沿用现有可见性策略,不额外修改后台播放行为。 ## 执行结果 - Android 主 Activity 已添加 `FLAG_KEEP_SCREEN_ON`,未改动 Flutter 渠道与 PiP 逻辑。 - iOS AppDelegate 已设置 `UIApplication.shared.isIdleTimerDisabled = true`。 - 用户主动暂停后回前台可安全恢复;过期票据会等待重取完成后再恢复。 - locked、blocked、票据错误、会话错误、解锁/浮层遮挡和 PiP 场景均不会强制续播。 - 后台仍先保存进度并暂停。 - `dart analyze lib test` 零告警,`flutter test --no-pub` 580 项全过。 - 未启停服务,未操作真机。