Browse Source

Keep screen on while video is playing

Fixes #9059

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
Álvaro Brey 2 năm trước cách đây
mục cha
commit
38e83cd03c

+ 11 - 2
app/src/main/java/com/nextcloud/client/media/ExoplayerListener.kt

@@ -24,6 +24,7 @@ package com.nextcloud.client.media
 
 import android.content.Context
 import android.content.DialogInterface
+import android.view.View
 import com.google.android.exoplayer2.ExoPlayer
 import com.google.android.exoplayer2.PlaybackException
 import com.google.android.exoplayer2.Player
@@ -31,7 +32,9 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
 import com.owncloud.android.R
 import com.owncloud.android.lib.common.utils.Log_OC
 
-class ExoplayerListener(private val context: Context, private val exoPlayer: ExoPlayer) : Player.Listener {
+class ExoplayerListener(private val context: Context, private val playerView: View, private val exoPlayer: ExoPlayer) :
+    Player.Listener {
+
     override fun onPlaybackStateChanged(playbackState: Int) {
         super.onPlaybackStateChanged(playbackState)
         if (playbackState == Player.STATE_ENDED) {
@@ -39,6 +42,12 @@ class ExoplayerListener(private val context: Context, private val exoPlayer: Exo
         }
     }
 
+    override fun onIsPlayingChanged(isPlaying: Boolean) {
+        super.onIsPlayingChanged(isPlaying)
+        Log_OC.d(TAG, "Exoplayer keep screen on: $isPlaying")
+        playerView.keepScreenOn = isPlaying
+    }
+
     private fun onCompletion() {
         exoPlayer.let {
             it.seekToDefaultPosition()
@@ -48,7 +57,7 @@ class ExoplayerListener(private val context: Context, private val exoPlayer: Exo
 
     override fun onPlayerError(error: PlaybackException) {
         super.onPlayerError(error)
-        Log_OC.e(ExoplayerListener, "Exoplayer error", error)
+        Log_OC.e(TAG, "Exoplayer error", error)
         val message = ErrorFormat.toString(context, error)
         MaterialAlertDialogBuilder(context)
             .setMessage(message)

+ 1 - 1
app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java

@@ -331,7 +331,7 @@ public class PreviewMediaFragment extends FileFragment implements OnTouchListene
                             final NextcloudClient client = clientFactory.createNextcloudClient(accountManager.getUser());
                             handler.post(() ->{
                                 exoPlayer = NextcloudExoPlayer.createNextcloudExoplayer(requireContext(), client);
-                                exoPlayer.addListener(new ExoplayerListener(requireContext(), exoPlayer));
+                                exoPlayer.addListener(new ExoplayerListener(requireContext(), binding.exoplayerView, exoPlayer));
                                 playVideo();
                             });
                         } catch (ClientFactory.CreationException e) {

+ 1 - 1
app/src/main/java/com/owncloud/android/ui/preview/PreviewVideoActivity.kt

@@ -177,7 +177,7 @@ class PreviewVideoActivity :
                         val client = clientFactory.createNextcloudClient(accountManager.user)
                         CoroutineScope(Dispatchers.Main).launch {
                             exoPlayer = createNextcloudExoplayer(context, client).also {
-                                it.addListener(ExoplayerListener(context, it))
+                                it.addListener(ExoplayerListener(context, binding.videoPlayer, it))
                             }
                             setupPlayerView()
                             play(mediaItem)