Browse Source

PreviewMediaFragment: stop video when stopping activity, and don't recreate existing player

This avoids multiple instances of the player opening when minimizing the app, for example.

Signed-off-by: Álvaro Brey Vilas <alvaro.brey@nextcloud.com>
Álvaro Brey Vilas 3 years ago
parent
commit
686748dda2

+ 10 - 3
src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java

@@ -305,9 +305,12 @@ public class PreviewMediaFragment extends FileFragment implements OnTouchListene
             // bind to any existing player
             mediaPlayerServiceConnection.bind();
 
-            exoPlayer = new ExoPlayer.Builder(requireContext()).build();
+            if (exoPlayer == null) {
+                exoPlayer = new ExoPlayer.Builder(requireContext()).build();
+            }
             binding.exoplayerView.setPlayer(exoPlayer);
 
+
             LinearLayout linearLayout = binding.exoplayerView.findViewById(R.id.exo_center_controls);
 
             if (linearLayout.getChildCount() == 5) {
@@ -579,10 +582,14 @@ public class PreviewMediaFragment extends FileFragment implements OnTouchListene
     @Override
     public void onStop() {
         Log_OC.v(TAG, "onStop");
-        if (MimeTypeUtil.isAudio(getFile()) && !mediaPlayerServiceConnection.isPlaying()) {
+        final OCFile file = getFile();
+        if (MimeTypeUtil.isAudio(file) && !mediaPlayerServiceConnection.isPlaying()) {
             stopAudio();
+        } else if (MimeTypeUtil.isVideo(file) && exoPlayer.isPlaying()) {
+            savedPlaybackPosition = exoPlayer.getCurrentPosition();
+            exoPlayer.pause();
         }
-        
+
         mediaPlayerServiceConnection.unbind();
         toggleDrawerLockMode(containerActivity, DrawerLayout.LOCK_MODE_UNLOCKED);
         super.onStop();