diff --git a/application/resources/src/main/res/values/strings.xml b/application/resources/src/main/res/values/strings.xml index 904d203e43f25bb88a59fb3a60fc0d83d8ca63c5..fc4cd9926416a0dab40755ac289ac090f07624d9 100644 --- a/application/resources/src/main/res/values/strings.xml +++ b/application/resources/src/main/res/values/strings.xml @@ -582,6 +582,8 @@ <string name="blurred_cover_background_summary">Blurred cover in audio player background</string> <string name="force_shuffle_title">Force shuffle</string> <string name="force_shuffle_summary">Force shuffling when launching a playback</string> + <string name="play_and_pause_title">Play and pause</string> + <string name="play_and_pause_summary">Pause playback after each media</string> <string name="network_caching_popup">This value must be between 0 and 60000 ms</string> <string name="quit">Quit and restart application</string> <string name="restart_message">Changes will take effect once application has restarted.\n\nRestart now?</string> diff --git a/application/tools/src/main/java/org/videolan/tools/Settings.kt b/application/tools/src/main/java/org/videolan/tools/Settings.kt index ef529c1b480e0e51ec21b7b4d76c4103cc6885b5..941b7de7e52156941f1502d119ec86ab0e546c63 100644 --- a/application/tools/src/main/java/org/videolan/tools/Settings.kt +++ b/application/tools/src/main/java/org/videolan/tools/Settings.kt @@ -118,6 +118,7 @@ const val KEY_VIDEO_DOUBLE_TAP_JUMP_DELAY = "video_double_tap_jump_delay" const val KEY_AUDIO_JUMP_DELAY = "audio_jump_delay" const val KEY_AUDIO_LONG_JUMP_DELAY = "audio_long_jump_delay" const val KEY_AUDIO_FORCE_SHUFFLE = "audio_force_shuffle" +const val KEY_AUDIO_PLAY_AND_PAUSE = "audio_play_and_pause" const val KEY_AUDIO_SHOW_TRACK_NUMBERS = "audio_show_track_numbers" const val KEY_AUDIO_SHOW_CHAPTER_BUTTONS = "audio_show_chapter_buttons" const val KEY_AUDIO_SHOW_BOOkMARK_BUTTONS = "audio_show_bookmark_buttons" diff --git a/application/vlc-android/res/xml/preferences_audio_controls.xml b/application/vlc-android/res/xml/preferences_audio_controls.xml index 1a98fda4fc655124d7c793e5106fd74e525d6374..8950f32592a930c08e8c462a9a8fe089c47b1c75 100644 --- a/application/vlc-android/res/xml/preferences_audio_controls.xml +++ b/application/vlc-android/res/xml/preferences_audio_controls.xml @@ -27,6 +27,13 @@ android:summary="@string/force_shuffle_summary" android:title="@string/force_shuffle_title"/> + <CheckBoxPreference + app:singleLineTitle="false" + android:defaultValue="false" + android:key="audio_play_and_pause" + android:summary="@string/play_and_pause_summary" + android:title="@string/play_and_pause_title"/> + </PreferenceCategory> diff --git a/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt b/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt index f34b15965a950c34c9e5a47cadb450d7a0c8f276..dd1f9e41754e2ee062c90caa0ca83e3bf5ff15b8 100644 --- a/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt +++ b/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt @@ -57,6 +57,7 @@ import org.videolan.tools.DAV1D_THREAD_NUMBER import org.videolan.tools.HTTP_USER_AGENT import org.videolan.tools.KEY_AUDIO_CONFIRM_RESUME import org.videolan.tools.KEY_AUDIO_FORCE_SHUFFLE +import org.videolan.tools.KEY_AUDIO_PLAY_AND_PAUSE import org.videolan.tools.KEY_INCOGNITO import org.videolan.tools.KEY_INCOGNITO_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE import org.videolan.tools.KEY_INCOGNITO_PLAYBACK_SPEED_VIDEO_GLOBAL_VALUE @@ -159,6 +160,7 @@ class PlaylistManager(val service: PlaybackService) : MediaWrapperList.EventList private val mediaFactory = FactoryManager.getFactory(IMediaFactory.factoryId) as IMediaFactory lateinit var videoResumeStatus: ResumeStatus lateinit var audioResumeStatus: ResumeStatus + var pauseAtNextMedia = false fun hasCurrentMedia() = isValidPosition(currentIndex) @@ -1180,6 +1182,10 @@ class PlaylistManager(val service: PlaybackService) : MediaWrapperList.EventList } } playingState.value = true + if (pauseAtNextMedia) { + pauseAtNextMedia = false + pause() + } } MediaPlayer.Event.EndReached -> { clearABRepeat() @@ -1203,6 +1209,9 @@ class PlaylistManager(val service: PlaybackService) : MediaWrapperList.EventList } } next() + if (!player.isVideoPlaying() && settings.getBoolean(KEY_AUDIO_PLAY_AND_PAUSE, false) && hasNext()) { + pauseAtNextMedia = true + } } } MediaPlayer.Event.EncounteredError -> {