diff --git a/app/src/main/java/com/fongmi/android/tv/impl/SessionCallback.java b/app/src/main/java/com/fongmi/android/tv/impl/SessionCallback.java index 8dc9bc911..fd0a3c320 100644 --- a/app/src/main/java/com/fongmi/android/tv/impl/SessionCallback.java +++ b/app/src/main/java/com/fongmi/android/tv/impl/SessionCallback.java @@ -7,19 +7,19 @@ import com.fongmi.android.tv.player.Players; public class SessionCallback extends MediaSessionCompat.Callback { - private final Players players; + private final Players player; - public static SessionCallback create(Players players) { - return new SessionCallback(players); + public static SessionCallback create(Players player) { + return new SessionCallback(player); } - private SessionCallback(Players players) { - this.players = players; + private SessionCallback(Players player) { + this.player = player; } @Override public void onSeekTo(long pos) { - players.seekTo(pos); + player.seekTo(pos); } @Override diff --git a/app/src/main/java/com/fongmi/android/tv/player/Players.java b/app/src/main/java/com/fongmi/android/tv/player/Players.java index 3ffc3702b..db6330406 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/Players.java +++ b/app/src/main/java/com/fongmi/android/tv/player/Players.java @@ -35,6 +35,7 @@ import com.fongmi.android.tv.event.PlayerEvent; import com.fongmi.android.tv.impl.ParseCallback; import com.fongmi.android.tv.impl.SessionCallback; import com.fongmi.android.tv.player.exo.ExoUtil; +import com.fongmi.android.tv.server.Server; import com.fongmi.android.tv.utils.FileUtil; import com.fongmi.android.tv.utils.Notify; import com.fongmi.android.tv.utils.ResUtil; @@ -77,7 +78,9 @@ public class Players implements Player.Listener, ParseCallback { private int retry; public static Players create(Activity activity) { - return new Players(activity); + Players player = new Players(activity); + Server.get().setPlayer(player); + return player; } public static boolean isHard(int decode) { @@ -316,6 +319,7 @@ public class Players implements Player.Listener, ParseCallback { releasePlayer(); session.release(); removeTimeoutCheck(); + Server.get().setPlayer(null); App.execute(() -> Source.get().stop()); } diff --git a/app/src/main/java/com/fongmi/android/tv/server/Server.java b/app/src/main/java/com/fongmi/android/tv/server/Server.java index e1ce50298..7fc271ff9 100644 --- a/app/src/main/java/com/fongmi/android/tv/server/Server.java +++ b/app/src/main/java/com/fongmi/android/tv/server/Server.java @@ -1,10 +1,12 @@ package com.fongmi.android.tv.server; +import com.fongmi.android.tv.player.Players; import com.github.catvod.Proxy; import com.github.catvod.utils.Util; public class Server { + private Players player; private Nano nano; private int port; @@ -24,6 +26,14 @@ public class Server { return port; } + public Players getPlayer() { + return player; + } + + public void setPlayer(Players player) { + this.player = player; + } + public String getAddress() { return getAddress(false); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/service/PlaybackService.java b/app/src/mobile/java/com/fongmi/android/tv/service/PlaybackService.java index 0c7e157ee..fe5f62c4d 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/service/PlaybackService.java +++ b/app/src/mobile/java/com/fongmi/android/tv/service/PlaybackService.java @@ -39,11 +39,11 @@ import java.util.Objects; public class PlaybackService extends Service { private final Map cache = new HashMap<>(); - private static Players players; + private static Players player; - public static void start(Players players) { + public static void start(Players player) { ContextCompat.startForegroundService(App.get(), new Intent(App.get(), PlaybackService.class)); - PlaybackService.players = players; + PlaybackService.player = player; } public static void stop() { @@ -51,11 +51,11 @@ public class PlaybackService extends Service { } private boolean isNull() { - return Objects.isNull(players) || Objects.isNull(players.getSession()); + return Objects.isNull(player) || Objects.isNull(player.getSession()); } private boolean nonNull() { - return Objects.nonNull(players) && Objects.nonNull(players.getSession()); + return Objects.nonNull(player) && Objects.nonNull(player.getSession()); } private NotificationManagerCompat getManager() { @@ -67,12 +67,12 @@ public class PlaybackService extends Service { } private NotificationCompat.Action getPlayPauseAction() { - if (nonNull() && players.isPlaying()) return buildNotificationAction(R.drawable.ic_notify_pause, androidx.media3.ui.R.string.exo_controls_pause_description, ActionEvent.PAUSE); + if (nonNull() && player.isPlaying()) return buildNotificationAction(R.drawable.ic_notify_pause, androidx.media3.ui.R.string.exo_controls_pause_description, ActionEvent.PAUSE); return buildNotificationAction(R.drawable.ic_notify_play, androidx.media3.ui.R.string.exo_controls_play_description, ActionEvent.PLAY); } private MediaMetadataCompat getMetadata() { - return isNull() ? null : players.getSession().getController().getMetadata(); + return isNull() ? null : player.getSession().getController().getMetadata(); } private String getTitle() { @@ -120,8 +120,8 @@ public class PlaybackService extends Service { builder.setSmallIcon(R.drawable.ic_logo); builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC); builder.setDeleteIntent(ActionReceiver.getPendingIntent(this, ActionEvent.STOP)); - if (nonNull()) builder.setContentIntent(players.getSession().getController().getSessionActivity()); - if (nonNull()) builder.setStyle(new MediaStyle().setMediaSession(players.getSession().getSessionToken())); + if (nonNull()) builder.setContentIntent(player.getSession().getController().getSessionActivity()); + if (nonNull()) builder.setStyle(new MediaStyle().setMediaSession(player.getSession().getSessionToken())); addAction(builder); setArtwork(builder); return builder.build(); @@ -155,7 +155,7 @@ public class PlaybackService extends Service { @Override public int onStartCommand(Intent intent, int flags, int startId) { - if (nonNull()) MediaButtonReceiver.handleIntent(players.getSession(), intent); + if (nonNull()) MediaButtonReceiver.handleIntent(player.getSession(), intent); startForeground(Notify.ID, buildNotification()); return START_NOT_STICKY; }