Fix play state

pull/567/head
okjack 1 year ago
parent 12fdd23ef8
commit 6214c9d9ac
  1. 8
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java
  2. 7
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  3. 7
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  4. 44
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  5. 7
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  6. 7
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  7. 4
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java

@ -5,6 +5,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.graphics.drawable.Drawable;
import android.os.IBinder;
import android.view.KeyEvent;
import android.view.View;
@ -75,6 +76,11 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
return mBinding.ijk;
}
private Drawable getDefaultArtwork() {
if (mPlayers.isExo()) return getExo().getDefaultArtwork();
return getIjk().getDefaultArtwork();
}
@Override
protected ViewBinding getBinding() {
return mBinding = ActivityCastBinding.inflate(getLayoutInflater());
@ -359,7 +365,7 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
}
private void setMetadata() {
mPlayers.setMetadata(mBinding.widget.title.getText().toString(), "", "");
mPlayers.setMetadata(mBinding.widget.title.getText().toString(), "", "", getDefaultArtwork());
}
@Subscribe(threadMode = ThreadMode.MAIN)

@ -111,6 +111,11 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP
return mBinding.ijk;
}
private Drawable getDefaultArtwork() {
if (mPlayers.isExo()) return getExo().getDefaultArtwork();
return getIjk().getDefaultArtwork();
}
private Group getKeep() {
return (Group) mGroupAdapter.get(0);
}
@ -793,7 +798,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP
private void setMetadata() {
String title = mBinding.widget.name.getText().toString();
String artist = mBinding.widget.play.getText().toString();
mPlayers.setMetadata(title, artist, mChannel.getLogo());
mPlayers.setMetadata(title, artist, mChannel.getLogo(), getDefaultArtwork());
}
@Subscribe(threadMode = ThreadMode.MAIN)

@ -287,6 +287,11 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
return mBinding.ijk;
}
private Drawable getDefaultArtwork() {
if (mPlayers.isExo()) return getExo().getDefaultArtwork();
return getIjk().getDefaultArtwork();
}
private BaseGridView getEpisodeView() {
return Setting.getEpisode() == 0 ? mBinding.episodeHori : mBinding.episodeVert;
}
@ -1421,7 +1426,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
String title = mHistory.getVodName();
String episode = getEpisode().getName();
String artist = title.equals(episode) ? "" : getString(R.string.play_now, episode);
mPlayers.setMetadata(title, artist, mHistory.getVodPic());
mPlayers.setMetadata(title, artist, mHistory.getVodPic(), getDefaultArtwork());
}
@Subscribe(threadMode = ThreadMode.MAIN)

@ -3,6 +3,8 @@ package com.fongmi.android.tv.player;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.media.MediaMetadataCompat;
@ -627,7 +629,15 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, ParseCal
return bundle;
}
public void setMetadata(String title, String artist, String artUri) {
private MediaMetadataCompat.Builder putBitmap(MediaMetadataCompat.Builder builder, Drawable drawable) {
try {
return builder.putBitmap(MediaMetadataCompat.METADATA_KEY_ART, ((BitmapDrawable) drawable).getBitmap());
} catch (Exception ignored) {
return builder;
}
}
public void setMetadata(String title, String artist, String artUri, Drawable drawable) {
MediaMetadataCompat.Builder builder = new MediaMetadataCompat.Builder();
builder.putString(MediaMetadataCompat.METADATA_KEY_TITLE, title);
builder.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, artist);
@ -635,7 +645,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, ParseCal
builder.putString(MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI, artUri);
builder.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON_URI, artUri);
builder.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, getDuration());
session.setMetadata(builder.build());
session.setMetadata(putBitmap(builder, drawable).build());
ActionEvent.update();
}
@ -697,8 +707,21 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, ParseCal
@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_MEDIA_METADATA_CHANGED)) return;
setPlaybackState(isPlaying() ? PlaybackStateCompat.STATE_PLAYING : PlaybackStateCompat.STATE_PAUSED);
if (!events.containsAny(Player.EVENT_TIMELINE_CHANGED, Player.EVENT_IS_PLAYING_CHANGED, Player.EVENT_POSITION_DISCONTINUITY, Player.EVENT_MEDIA_METADATA_CHANGED, Player.EVENT_PLAYBACK_STATE_CHANGED, Player.EVENT_PLAY_WHEN_READY_CHANGED, Player.EVENT_PLAYBACK_PARAMETERS_CHANGED, Player.EVENT_PLAYER_ERROR)) return;
switch (player.getPlaybackState()) {
case Player.STATE_IDLE:
setPlaybackState(events.contains(Player.EVENT_PLAYER_ERROR) ? PlaybackStateCompat.STATE_ERROR : PlaybackStateCompat.STATE_NONE);
break;
case Player.STATE_READY:
setPlaybackState(player.isPlaying() ? PlaybackStateCompat.STATE_PLAYING : PlaybackStateCompat.STATE_PAUSED);
break;
case Player.STATE_BUFFERING:
setPlaybackState(PlaybackStateCompat.STATE_BUFFERING);
break;
case Player.STATE_ENDED:
setPlaybackState(PlaybackStateCompat.STATE_STOPPED);
break;
}
}
@Override
@ -708,24 +731,13 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, ParseCal
@Override
public void onPlayerError(@NonNull PlaybackException error) {
setPlaybackState(PlaybackStateCompat.STATE_ERROR);
Logger.t(TAG).e(error.errorCode + "," + url);
ErrorEvent.url(ExoUtil.getRetry(error.errorCode), error.errorCode);
}
@Override
public void onPlaybackStateChanged(int state) {
switch (state) {
case Player.STATE_IDLE:
case Player.STATE_READY:
case Player.STATE_ENDED:
PlayerEvent.state(state);
break;
case Player.STATE_BUFFERING:
PlayerEvent.state(state);
setPlaybackState(PlaybackStateCompat.STATE_BUFFERING);
break;
}
PlayerEvent.state(state);
}
@Override

@ -126,6 +126,11 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom
return mBinding.ijk;
}
private Drawable getDefaultArtwork() {
if (mPlayers.isExo()) return getExo().getDefaultArtwork();
return getIjk().getDefaultArtwork();
}
private Group getKeep() {
return mGroupAdapter.get(0);
}
@ -860,7 +865,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom
private void setMetadata() {
String title = mBinding.widget.name.getText().toString();
String artist = mBinding.widget.play.getText().toString();
mPlayers.setMetadata(title, artist, mChannel.getLogo());
mPlayers.setMetadata(title, artist, mChannel.getLogo(), getDefaultArtwork());
}
@Subscribe(threadMode = ThreadMode.MAIN)

@ -270,6 +270,11 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
return mBinding.ijk;
}
private Drawable getDefaultArtwork() {
if (mPlayers.isExo()) return getExo().getDefaultArtwork();
return getIjk().getDefaultArtwork();
}
private boolean isReplay() {
return Setting.getReset() == 1;
}
@ -1373,7 +1378,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
String title = mHistory.getVodName();
String episode = getEpisode().getName();
String artist = title.equals(episode) ? "" : getString(R.string.play_now, episode);
mPlayers.setMetadata(title, artist, mHistory.getVodPic());
mPlayers.setMetadata(title, artist, mHistory.getVodPic(), getDefaultArtwork());
}
@Subscribe(threadMode = ThreadMode.MAIN)

@ -427,8 +427,8 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
}
}
public Bitmap getDefaultArtwork() {
return ((BitmapDrawable) mDefaultArtwork).getBitmap();
public Drawable getDefaultArtwork() {
return mDefaultArtwork;
}
private void updateForCurrentTrackSelections() {

Loading…
Cancel
Save