pull/505/head
okjack 2 years ago
parent 9239bb760b
commit 3ed8c7e1d3
  1. 21
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  2. 2
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  3. 2
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  4. 9
      app/src/mobile/java/com/fongmi/android/tv/utils/PiP.java

@ -170,11 +170,6 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
return ijkPlayer;
}
public VideoSize getVideoSize() {
if (isExo()) return exo().getVideoSize();
return new VideoSize(ijk().getVideoWidth(), ijk().getVideoHeight());
}
public Map<String, String> getHeaders() {
return headers == null ? new HashMap<>() : checkUa(headers);
}
@ -234,6 +229,14 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
return Util.format(builder, formatter, time);
}
public int getVideoWidth() {
return isExo() ? exoPlayer.getVideoSize().width : ijkPlayer.getVideoWidth();
}
public int getVideoHeight() {
return isExo() ? exoPlayer.getVideoSize().height : ijkPlayer.getVideoHeight();
}
public float getSpeed() {
if (isExo() && exoPlayer != null) return exoPlayer.getPlaybackParameters().speed;
if (isIjk() && ijkPlayer != null) return ijkPlayer.getSpeed();
@ -444,14 +447,6 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
}
}
private int getVideoWidth() {
return isExo() ? exoPlayer.getVideoSize().width : ijkPlayer.getVideoWidth();
}
private int getVideoHeight() {
return isExo() ? exoPlayer.getVideoSize().height : ijkPlayer.getVideoHeight();
}
private void playExo() {
if (exoPlayer == null) return;
exoPlayer.play();

@ -1143,7 +1143,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom
super.onUserLeaveHint();
if (isRedirect()) return;
if (isLock()) App.post(this::onLock, 500);
if (mPlayers.haveTrack(C.TRACK_TYPE_VIDEO)) mPiP.enter(this, mPlayers.getVideoSize(), Setting.getLiveScale());
if (mPlayers.haveTrack(C.TRACK_TYPE_VIDEO)) mPiP.enter(this, mPlayers.getVideoWidth(), mPlayers.getVideoHeight(), Setting.getLiveScale());
}
@Override

@ -1694,7 +1694,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
super.onUserLeaveHint();
if (isRedirect()) return;
if (isLock()) App.post(this::onLock, 500);
if (mPlayers.haveTrack(C.TRACK_TYPE_VIDEO)) mPiP.enter(this, mPlayers.getVideoSize(), getScale());
if (mPlayers.haveTrack(C.TRACK_TYPE_VIDEO)) mPiP.enter(this, mPlayers.getVideoWidth(), mPlayers.getVideoHeight(), getScale());
}
@Override

@ -13,7 +13,6 @@ import android.view.View;
import androidx.annotation.DrawableRes;
import androidx.annotation.StringRes;
import androidx.media3.common.VideoSize;
import androidx.media3.ui.R;
import com.fongmi.android.tv.App;
@ -72,24 +71,24 @@ public class PiP {
}
}
public void enter(Activity activity, VideoSize size, int scale) {
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));
else builder.setAspectRatio(getRational(size));
else builder.setAspectRatio(getRational(width, height));
activity.enterPictureInPictureMode(builder.build());
} catch (Exception e) {
e.printStackTrace();
}
}
private Rational getRational(VideoSize size) {
private Rational getRational(int width, int height) {
Rational limitWide = new Rational(239, 100);
Rational limitTall = new Rational(100, 239);
Rational rational = new Rational(size.width, size.height);
Rational rational = new Rational(width, height);
if (rational.isInfinite()) return new Rational(16, 9);
if (rational.floatValue() > limitWide.floatValue()) return limitWide;
if (rational.floatValue() < limitTall.floatValue()) return limitTall;

Loading…
Cancel
Save