From 9cc23f587ee29ca41d680e8e6fbcb5b3422055fd Mon Sep 17 00:00:00 2001 From: FongMi Date: Mon, 6 Jan 2025 00:26:35 +0800 Subject: [PATCH] Optimize pip --- .../android/tv/ui/activity/LiveActivity.java | 16 +++++++++++++++- .../android/tv/ui/activity/VideoActivity.java | 16 ++++++++++++++-- .../java/com/fongmi/android/tv/utils/PiP.java | 1 - 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index fba2e1bdc..e74577ebf 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -1,6 +1,7 @@ package com.fongmi.android.tv.ui.activity; import android.annotation.SuppressLint; +import android.app.PictureInPictureUiState; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; @@ -13,6 +14,7 @@ import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import androidx.media3.common.C; @@ -1055,7 +1057,19 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List } @Override - public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) { + @RequiresApi(35) + public void onPictureInPictureUiStateChanged(@NonNull PictureInPictureUiState pipState) { + super.onPictureInPictureUiStateChanged(pipState); + if (pipState.isTransitioningToPip()) { + hideControl(); + hideInfo(); + hideUI(); + } + } + + @Override + public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode, @NonNull Configuration newConfig) { + super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig); super.onPictureInPictureModeChanged(isInPictureInPictureMode); if (isInPictureInPictureMode) { PlaybackService.start(mPlayers); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index a43168b43..8f613773d 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -4,6 +4,7 @@ import android.Manifest; import android.annotation.SuppressLint; import android.app.Activity; import android.app.Dialog; +import android.app.PictureInPictureUiState; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.res.Configuration; @@ -26,6 +27,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.lifecycle.Observer; @@ -1500,8 +1502,18 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo } @Override - public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) { - super.onPictureInPictureModeChanged(isInPictureInPictureMode); + @RequiresApi(35) + public void onPictureInPictureUiStateChanged(@NonNull PictureInPictureUiState pipState) { + super.onPictureInPictureUiStateChanged(pipState); + if (pipState.isTransitioningToPip()) { + hideControl(); + hideSheet(); + } + } + + @Override + public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode, @NonNull Configuration newConfig) { + super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig); if (!isFullscreen()) setVideoView(isInPictureInPictureMode); if (isInPictureInPictureMode) { PlaybackService.start(mPlayers); diff --git a/app/src/mobile/java/com/fongmi/android/tv/utils/PiP.java b/app/src/mobile/java/com/fongmi/android/tv/utils/PiP.java index 9e098ea3d..365869627 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/utils/PiP.java +++ b/app/src/mobile/java/com/fongmi/android/tv/utils/PiP.java @@ -74,7 +74,6 @@ public class PiP { public void enter(Activity activity, int width, int height, int scale) { try { if (noPiP() || activity.isInPictureInPictureMode() || !Setting.isBackgroundPiP()) return; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) builder.setAutoEnterEnabled(true); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) builder.setSeamlessResizeEnabled(true); if (scale == 1) builder.setAspectRatio(new Rational(16, 9)); else if (scale == 2) builder.setAspectRatio(new Rational(4, 3));