|
|
|
|
@ -18,7 +18,6 @@ import androidx.media3.common.AudioAttributes; |
|
|
|
|
import androidx.media3.common.PlaybackException; |
|
|
|
|
import androidx.media3.common.Player; |
|
|
|
|
import androidx.media3.exoplayer.ExoPlayer; |
|
|
|
|
import androidx.media3.exoplayer.analytics.AnalyticsListener; |
|
|
|
|
import androidx.media3.exoplayer.util.EventLogger; |
|
|
|
|
import androidx.media3.ui.PlayerView; |
|
|
|
|
|
|
|
|
|
@ -59,7 +58,7 @@ import master.flame.danmaku.ui.widget.DanmakuView; |
|
|
|
|
import tv.danmaku.ijk.media.player.IMediaPlayer; |
|
|
|
|
import tv.danmaku.ijk.media.player.ui.IjkVideoView; |
|
|
|
|
|
|
|
|
|
public class Players implements Player.Listener, IMediaPlayer.Listener, AnalyticsListener, ParseCallback, DrawHandler.Callback { |
|
|
|
|
public class Players implements Player.Listener, IMediaPlayer.Listener, ParseCallback, DrawHandler.Callback { |
|
|
|
|
|
|
|
|
|
private static final String TAG = Players.class.getSimpleName(); |
|
|
|
|
|
|
|
|
|
@ -121,6 +120,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic |
|
|
|
|
private void createSession(Activity activity) { |
|
|
|
|
session = new MediaSessionCompat(activity, "TV"); |
|
|
|
|
session.setCallback(SessionCallback.create(this)); |
|
|
|
|
session.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS); |
|
|
|
|
session.setSessionActivity(PendingIntent.getActivity(App.get(), 0, new Intent(App.get(), activity.getClass()), PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE)); |
|
|
|
|
MediaControllerCompat.setMediaController(activity, session.getController()); |
|
|
|
|
} |
|
|
|
|
@ -138,7 +138,6 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic |
|
|
|
|
exoPlayer.addAnalyticsListener(new EventLogger()); |
|
|
|
|
exoPlayer.setHandleAudioBecomingNoisy(true); |
|
|
|
|
view.setRender(Setting.getRender()); |
|
|
|
|
exoPlayer.addAnalyticsListener(this); |
|
|
|
|
exoPlayer.setPlayWhenReady(true); |
|
|
|
|
exoPlayer.addListener(this); |
|
|
|
|
view.setPlayer(exoPlayer); |
|
|
|
|
@ -404,7 +403,6 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void stop() { |
|
|
|
|
reset(); |
|
|
|
|
if (isExo()) stopExo(); |
|
|
|
|
if (isIjk()) stopIjk(); |
|
|
|
|
session.setActive(false); |
|
|
|
|
@ -674,7 +672,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void onEvents(@NonNull Player player, @NonNull Player.Events events) { |
|
|
|
|
if (!events.containsAny(Player.EVENT_PLAYBACK_STATE_CHANGED, Player.EVENT_PLAY_WHEN_READY_CHANGED, Player.EVENT_IS_PLAYING_CHANGED, Player.EVENT_TIMELINE_CHANGED, Player.EVENT_PLAYBACK_PARAMETERS_CHANGED, Player.EVENT_POSITION_DISCONTINUITY, Player.EVENT_REPEAT_MODE_CHANGED, Player.EVENT_SHUFFLE_MODE_ENABLED_CHANGED, Player.EVENT_MEDIA_METADATA_CHANGED)) return; |
|
|
|
|
if (!events.containsAny(Player.EVENT_PLAYBACK_STATE_CHANGED, Player.EVENT_PLAY_WHEN_READY_CHANGED, Player.EVENT_IS_PLAYING_CHANGED, Player.EVENT_TIMELINE_CHANGED, Player.EVENT_PLAYBACK_PARAMETERS_CHANGED, Player.EVENT_POSITION_DISCONTINUITY, Player.EVENT_MEDIA_METADATA_CHANGED)) return; |
|
|
|
|
setPlaybackState(isPlaying() ? PlaybackStateCompat.STATE_PLAYING : PlaybackStateCompat.STATE_PAUSED); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|