diff --git a/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt b/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt index 73add537..ffd70c03 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt @@ -109,6 +109,7 @@ data class DeviceSettings( var enableAltView:Boolean, var jumpBackwardsTime:Int, var jumpForwardTime:Int, + var enableMp3IndexSeeking:Boolean, var disableShakeToResetSleepTimer:Boolean, var shakeSensitivity: ShakeSensitivitySetting, var lockOrientation: LockOrientationSetting, @@ -130,6 +131,7 @@ data class DeviceSettings( enableAltView = true, jumpBackwardsTime = 10, jumpForwardTime = 10, + enableMp3IndexSeeking = false, disableShakeToResetSleepTimer = false, shakeSensitivity = ShakeSensitivitySetting.MEDIUM, lockOrientation = LockOrientationSetting.NONE, diff --git a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt index 197ca712..51354a9f 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt @@ -43,6 +43,8 @@ import com.google.android.exoplayer2.audio.AudioAttributes import com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector import com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector.CustomActionProvider import com.google.android.exoplayer2.ext.mediasession.TimelineQueueNavigator +import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory +import com.google.android.exoplayer2.extractor.mp3.Mp3Extractor import com.google.android.exoplayer2.source.MediaSource import com.google.android.exoplayer2.source.ProgressiveMediaSource import com.google.android.exoplayer2.source.hls.HlsMediaSource @@ -437,12 +439,26 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { if (playbackSession.isLocal) { Log.d(tag, "Playing Local Item") val dataSourceFactory = DefaultDataSource.Factory(ctx) - mediaSource = ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(mediaItems[0]) + + val extractorsFactory = DefaultExtractorsFactory() + if (DeviceManager.deviceData.deviceSettings?.enableMp3IndexSeeking == true) { + // @see https://exoplayer.dev/troubleshooting.html#why-is-seeking-inaccurate-in-some-mp3-files + extractorsFactory.setMp3ExtractorFlags(Mp3Extractor.FLAG_ENABLE_INDEX_SEEKING) + } + + mediaSource = ProgressiveMediaSource.Factory(dataSourceFactory, extractorsFactory).createMediaSource(mediaItems[0]) } else if (!playbackSession.isHLS) { Log.d(tag, "Direct Playing Item") val dataSourceFactory = DefaultHttpDataSource.Factory() + + val extractorsFactory = DefaultExtractorsFactory() + if (DeviceManager.deviceData.deviceSettings?.enableMp3IndexSeeking == true) { + // @see https://exoplayer.dev/troubleshooting.html#why-is-seeking-inaccurate-in-some-mp3-files + extractorsFactory.setMp3ExtractorFlags(Mp3Extractor.FLAG_ENABLE_INDEX_SEEKING) + } + dataSourceFactory.setUserAgent(channelId) - mediaSource = ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(mediaItems[0]) + mediaSource = ProgressiveMediaSource.Factory(dataSourceFactory, extractorsFactory).createMediaSource(mediaItems[0]) } else { Log.d(tag, "Playing HLS Item") val dataSourceFactory = DefaultHttpDataSource.Factory() diff --git a/package.json b/package.json index 8df94a6b..d20cbe89 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "build": "nuxt build", "start": "nuxt start", "generate": "nuxt generate", + "sync": "nuxt generate && npx cap sync", "icons-android": "cordova-res android --skip-config --copy", "ionic:build": "npm run build", "ionic:serve": "npm run start" @@ -43,4 +44,4 @@ "postcss": "^8.3.5", "tailwindcss": "^3.3.2" } -} +} \ No newline at end of file diff --git a/pages/settings.vue b/pages/settings.vue index 76c7a594..89596965 100644 --- a/pages/settings.vue +++ b/pages/settings.vue @@ -22,7 +22,7 @@ -
Playback Settings
+Playback Settings
Jump forwards time
Enable mp3 index seeking
+ +Sleep Timer Settings
+Sleep Timer Settings