Skip to content

Fix playback stopping and progress saving bugs#129

Open
8bitgentleman wants to merge 1 commit into
mattttvaughn:developfrom
8bitgentleman:fix-playback-multitask
Open

Fix playback stopping and progress saving bugs#129
8bitgentleman wants to merge 1 commit into
mattttvaughn:developfrom
8bitgentleman:fix-playback-multitask

Conversation

@8bitgentleman

Copy link
Copy Markdown

Fixes two critical bugs affecting audiobook playback:

  1. Playback stops when app is swiped away or device locks - Users lose their
    place and playback stops unexpectedly
  2. Progress randomly resets - Listening progress gets lost or jumps back to
    previous positions

Changes

1. Playback stopping on multitask/lock

  • Add WAKE_LOCK and FOREGROUND_SERVICE_MEDIA_PLAYBACK permissions
  • Configure ExoPlayer with wake mode for CPU/WiFi keep-alive
  • Add WifiLock to prevent WiFi disconnection during streaming
  • Fix onTaskRemoved to not stop playback (let foreground service continue)

2. Progress not saving / randomly resetting

  • Fix critical bug: bookRepository.updateProgress() was receiving
    trackProgress instead of bookProgress, causing progress to reset to current
    track position (ProgressUpdater.kt:227)
  • Fix silent DB update failures by removing timestamp WHERE clause
  • Fix network sync overwriting local progress with older data (now uses maxOf)
  • Convert PlexSyncScrobbleWorker to CoroutineWorker to ensure sync completes
  • Save progress when app is swiped away

Fixes #112 may also help with #88

This commit addresses two major user-reported issues:

1. Playback stopping on multitask/lock:
   - Add WAKE_LOCK and FOREGROUND_SERVICE_MEDIA_PLAYBACK permissions
   - Configure ExoPlayer with wake mode for CPU/WiFi keep-alive
   - Add WifiLock to prevent WiFi disconnection during streaming
   - Fix onTaskRemoved to not stop playback (let foreground service continue)

2. Progress not saving / randomly resetting:
   - Fix critical bug: bookRepository.updateProgress() was receiving trackProgress
     instead of bookProgress, causing progress to reset to current track position
   - Fix silent DB update failures by removing timestamp WHERE clause
   - Fix network sync overwriting local progress with older data (now uses maxOf)
   - Convert PlexSyncScrobbleWorker to CoroutineWorker to ensure sync completes
   - Save progress when app is swiped away

Files modified:
- AndroidManifest.xml: Added required permissions
- ProgressUpdater.kt: Fixed trackProgress -> bookProgress bug
- MediaPlayerService.kt: Fixed onTaskRemoved, added WifiLock
- ServiceModule.kt: Added ExoPlayer wake mode
- BookDatabase.kt: Fixed silent update failure
- MediaItemTrack.kt, Audiobook.kt: Fixed merge logic to preserve max progress
- PlexSyncScrobbleWorker.kt: Converted to CoroutineWorker
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.

Doesn't remember stop point

1 participant