okjack
okjack 2 years ago
parent 71aa8abc3b
commit cd627ec732
  1. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java
  2. 11
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  3. 17
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  4. 8
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  5. 2
      app/src/mobile/AndroidManifest.xml
  6. 4
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  7. 3
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java

@ -6,7 +6,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.support.v4.media.MediaMetadataCompat;
import android.view.KeyEvent;
import android.view.View;
@ -392,6 +391,7 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
private void onStopped() {
setState(RenderState.STOPPED);
mPlayers.reset();
mPlayers.stop();
}

@ -501,6 +501,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP
private void hideControl() {
mBinding.control.getRoot().setVisibility(View.GONE);
mBinding.widget.top.setVisibility(View.GONE);
App.removeCallbacks(mR1);
}
@ -621,6 +622,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP
mViewModel.getUrl(mChannel, item);
setActivated(item);
mPlayers.clear();
mPlayers.stop();
showProgress();
hideEpg();
}
@ -686,6 +688,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP
LiveConfig.get().setKeep(mChannel);
mViewModel.getUrl(mChannel);
mPlayers.clear();
mPlayers.stop();
showProgress();
}
@ -714,6 +717,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP
@Override
public void setLive(Live item) {
LiveConfig.get().setHome(item);
mPlayers.reset();
mPlayers.stop();
resetAdapter();
hideControl();
@ -819,6 +823,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP
private void onError(ErrorEvent event) {
showError(event.getMsg());
mPlayers.reset();
mPlayers.stop();
startFlow();
}
@ -955,14 +960,12 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP
@Override
public void onKeyUp() {
if (!mPlayers.isVod()) prevChannel();
else showControl(mBinding.control.player);
prevChannel();
}
@Override
public void onKeyDown() {
if (!mPlayers.isVod()) nextChannel();
else showControl(mBinding.control.player);
nextChannel();
}
@Override

@ -293,6 +293,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
private void setEpisodeSelectedPosition(int position) {
getEpisodeView().setSelectedPosition(position);
if (hasKeyEvent) return;
if (isFullscreen()) return;
getEpisodeView().postDelayed(() -> {
View selectedItem = getEpisodeView().getLayoutManager().findViewByPosition(position);
View focusedView = getCurrentFocus();
@ -533,6 +534,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
getIntent().putExtra("id", item.getVodId());
mBinding.scroll.scrollTo(0, 0);
mClock.setCallback(null);
mPlayers.reset();
mPlayers.stop();
getDetail();
}
@ -549,6 +551,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
mViewModel.playerContent(getKey(), flag.getFlag(), episode.getUrl());
updateHistory(episode, replay);
mPlayers.clear();
mPlayers.stop();
showProgress();
setMetadata();
hidePreview();
@ -707,7 +710,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
if (episode == null || episode.isActivated()) return;
if (Setting.getFlag() == 1) {
episode.setActivated(true);
getEpisodeView().requestFocus();
if (!isFullscreen()) getEpisodeView().requestFocus();
setEpisodeSelectedPosition(getEpisodePosition());
episode.setActivated(false);
} else {
@ -896,6 +899,11 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
showDanmu();
}
private void showDanmu() {
if (Setting.isDanmu()) mBinding.danmaku.show();
else mBinding.danmaku.hide();
}
private void onDanmuAdd() {
int line = Setting.getDanmuLine(3);
line = Math.min(line + 1, 15);
@ -912,11 +920,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
setDanmuViewSettings();
}
private void showDanmu() {
if (Setting.isDanmu()) mBinding.danmaku.show();
else mBinding.danmaku.hide();
}
private void onEpisodes() {
EpisodeDialog.create().episodes(getFlag().getEpisodes()).show(this);
hideControl();
@ -1125,6 +1128,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
}
private void hideInfo() {
mBinding.widget.info.setVisibility(View.GONE);
showDisplayInfo();
}
@ -1449,6 +1453,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
Track.delete(getHistoryKey());
showError(event.getMsg());
mClock.setCallback(null);
mPlayers.reset();
mPlayers.stop();
startFlow();
}

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

@ -133,7 +133,7 @@
<service
android:name=".service.PlaybackService"
android:exported="false"
android:exported="true"
android:foregroundServiceType="mediaPlayback">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />

@ -674,6 +674,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom
mEpgDataAdapter.setSelected(item);
mViewModel.getUrl(mChannel, item);
mPlayers.clear();
mPlayers.stop();
showProgress();
hideEpg();
}
@ -733,6 +734,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom
LiveConfig.get().setKeep(mChannel);
mViewModel.getUrl(mChannel);
mPlayers.clear();
mPlayers.stop();
showProgress();
}
@ -774,6 +776,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom
@Override
public void setLive(Live item) {
LiveConfig.get().setHome(item);
mPlayers.reset();
mPlayers.stop();
resetAdapter();
hideControl();
@ -884,6 +887,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom
private void onError(ErrorEvent event) {
showError(event.getMsg());
mPlayers.reset();
mPlayers.stop();
startFlow();
}

@ -492,6 +492,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
mBinding.swipeLayout.setEnabled(false);
mBinding.scroll.scrollTo(0, 0);
mClock.setCallback(null);
mPlayers.reset();
mPlayers.stop();
getDetail();
}
@ -594,6 +595,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
updateHistory(episode, replay);
mPlayers.clear();
mPlayers.stop();
showProgress();
setMetadata();
hidePreview();
@ -1357,6 +1359,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
Track.delete(getHistoryKey());
showError(event.getMsg());
mClock.setCallback(null);
mPlayers.reset();
mPlayers.stop();
startFlow();
}

Loading…
Cancel
Save