From 057643c73e5de86143a09acf1beab5ae0bc10f02 Mon Sep 17 00:00:00 2001 From: Yuriy Liskov Date: Tue, 13 May 2025 01:10:49 +0300 Subject: [PATCH] video card: playback preview: upd --- .../complexcardview/ComplexImageView.java | 8 ++++- .../widgets/embedplayer/EmbedPlayerView.java | 34 +++++++++---------- .../main/res/layout/text_badge_image_view.xml | 1 + .../res/layout/text_badge_image_view_red.xml | 1 + 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/complexcardview/ComplexImageView.java b/smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/complexcardview/ComplexImageView.java index 9177eb5b9..cca795e67 100644 --- a/smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/complexcardview/ComplexImageView.java +++ b/smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/complexcardview/ComplexImageView.java @@ -120,6 +120,7 @@ public class ComplexImageView extends RelativeLayout { mPreviewImage.setScaleType(ScaleType.CENTER_CROP); mPreviewImage.setAdjustViewBounds(true); mPreviewContainer.addView(mPreviewImage, new FrameLayout.LayoutParams(mPreviewWidth, mPreviewHeight)); + mPreviewContainer.setVisibility(View.VISIBLE); } Glide.with(getContext().getApplicationContext()) // FIX: "You cannot start a load for a destroyed activity" @@ -139,7 +140,10 @@ public class ComplexImageView extends RelativeLayout { if (mPreviewPlayer == null) { mPreviewPlayer = new EmbedPlayerView(getContext()); mPreviewPlayer.setUseController(false); - mPreviewPlayer.setOnLoad(() -> mPreviewContainer.addView(mPreviewPlayer, new FrameLayout.LayoutParams(mPreviewWidth, mPreviewHeight))); + mPreviewPlayer.setOnLoad(() -> { + mPreviewContainer.addView(mPreviewPlayer, new FrameLayout.LayoutParams(mPreviewWidth, mPreviewHeight)); + mPreviewContainer.setVisibility(View.VISIBLE); + }); } mPreviewPlayer.openVideo(mPreviewVideoId); @@ -148,6 +152,7 @@ public class ComplexImageView extends RelativeLayout { public void stopPlayback() { if (mPreviewUrl != null) { mPreviewContainer.removeView(mPreviewImage); + mPreviewContainer.setVisibility(View.GONE); mPreviewImage.setImageDrawable(null); Glide.with(getContext()).clear(mPreviewImage); mPreviewImage = null; @@ -156,6 +161,7 @@ public class ComplexImageView extends RelativeLayout { if (mPreviewPlayer != null) { mPreviewContainer.removeView(mPreviewPlayer); + mPreviewContainer.setVisibility(View.GONE); mPreviewPlayer.finish(); mPreviewPlayer = null; } diff --git a/smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/embedplayer/EmbedPlayerView.java b/smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/embedplayer/EmbedPlayerView.java index 472d7f4cf..cfb650d00 100644 --- a/smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/embedplayer/EmbedPlayerView.java +++ b/smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/embedplayer/EmbedPlayerView.java @@ -232,7 +232,7 @@ public class EmbedPlayerView extends PlayerView implements PlaybackView { @Override public void finish() { - releasePlayer(); + destroyPlayerObjects(); } @Override @@ -466,9 +466,14 @@ public class EmbedPlayerView extends PlayerView implements PlaybackView { mVideo = video; mPlaybackPresenter.onNewVideo(video); initPlayer(); + createPlayerObjects(); } private void createPlayerObjects() { + if (isEngineInitialized()) { + return; + } + // Use default or pass your bandwidthMeter here: bandwidthMeter = new DefaultBandwidthMeter.Builder(getContext()).build() DefaultTrackSelector trackSelector = new RestoreTrackSelector(new AdaptiveTrackSelection.Factory()); mExoPlayerController.setTrackSelector(trackSelector); @@ -491,27 +496,24 @@ public class EmbedPlayerView extends PlayerView implements PlaybackView { } setPlayer(mPlayer); - } - private void releasePlayer() { - if (isEngineInitialized()) { - Log.d(TAG, "releasePlayer: Start releasing player engine..."); - mOnLoad = null; - mPlaybackPresenter.onEngineReleased(); - destroyPlayerObjects(); - } + mPlaybackPresenter.onEngineInitialized(); // start playback } private void destroyPlayerObjects() { - // Fix access calls when player isn't initialized - mExoPlayerController.release(); - mPlayer = null; - setPlayer(null); - //mPlaybackPresenter.setView(null); + if (isEngineInitialized()) { + mOnLoad = null; + mPlaybackPresenter.onEngineReleased(); + // Fix access calls when player isn't initialized + mExoPlayerController.release(); + mPlayer = null; + setPlayer(null); + //mPlaybackPresenter.setView(null); + } } private void initPlayer() { - if (isEngineInitialized()) { + if (mExoPlayerController != null) { return; } @@ -520,8 +522,6 @@ public class EmbedPlayerView extends PlayerView implements PlaybackView { mExoPlayerController = new ExoPlayerController(getContext(), mPlaybackPresenter); mExoPlayerController.setOnVideoLoaded(this::onVideoLoaded); mPlaybackPresenter.onViewInitialized(); // init all controllers - createPlayerObjects(); - mPlaybackPresenter.onEngineInitialized(); // start playback } private void onVideoLoaded() { diff --git a/smarttubetv/src/main/res/layout/text_badge_image_view.xml b/smarttubetv/src/main/res/layout/text_badge_image_view.xml index 77d6cf499..e0cdb3033 100644 --- a/smarttubetv/src/main/res/layout/text_badge_image_view.xml +++ b/smarttubetv/src/main/res/layout/text_badge_image_view.xml @@ -13,6 +13,7 @@ android:adjustViewBounds="true" tools:ignore="ContentDescription"/> diff --git a/smarttubetv/src/main/res/layout/text_badge_image_view_red.xml b/smarttubetv/src/main/res/layout/text_badge_image_view_red.xml index 1376bcfd2..dbf38e5af 100644 --- a/smarttubetv/src/main/res/layout/text_badge_image_view_red.xml +++ b/smarttubetv/src/main/res/layout/text_badge_image_view_red.xml @@ -5,6 +5,7 @@ tools:ignore="ContentDescription" style="?attr/imageCardViewImageStyle"/>