Files
android-tv/docs/superpowers/specs/2026-05-27-player-enhancements-design.md

30 lines
1.3 KiB
Markdown

# Player Enhancements Design
## 1. Pause Shows Controls
- Add `Player.Listener` to ExoPlayer, monitor `onPlayWhenReadyChanged`
- When `playWhenReady` becomes false: show control panel, cancel auto-hide timer
- When `playWhenReady` becomes true: restart auto-hide timer
- WebView playback: not supported (can't detect pause)
## 2. Brightness/Volume Gestures
- Replace click listener with `OnTouchListener` on playerView/playerWebView
- `ACTION_DOWN`: record startY, determine left/right half of screen
- Left half: brightness mode
- Right half: volume mode
- `ACTION_MOVE`: calculate deltaY, adjust brightness/volume proportionally
- `ACTION_UP`: if delta < threshold, treat as click (toggle controls); reset state
- Brightness: `window.attributes.screenBrightness` (activity-scoped, no permission)
- Volume: `AudioManager.setStreamVolume(STREAM_MUSIC, ...)`
- Show floating indicator (TextView overlay) during adjustment
## 3. Playback Position Resume
- Add `playbackPosition: Long?` to `PlayHistory` entity
- Add `updatePosition(id, position)` to `PlayHistoryDao`
- Save position every 5 seconds via handler, and on pause/destroy
- On player entry: read position from history, seek to it after prepare
- Pass `resume_position` via Intent from SearchFragment
- ExoPlayer only (WebView excluded)