pull/586/head
FongMi 1 year ago
parent 073cca8294
commit 206621eeca
  1. 12
      app/src/main/java/com/fongmi/android/tv/impl/SessionCallback.java
  2. 6
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  3. 10
      app/src/main/java/com/fongmi/android/tv/server/Server.java
  4. 20
      app/src/mobile/java/com/fongmi/android/tv/service/PlaybackService.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

@ -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());
}

@ -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);
}

@ -39,11 +39,11 @@ import java.util.Objects;
public class PlaybackService extends Service {
private final Map<String, Bitmap> 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;
}

Loading…
Cancel
Save