Support history - part 4

pull/21/head
FongMi 4 years ago
parent bc85a4e431
commit e4f6a6ca78
  1. 50
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  2. 15
      app/src/main/java/com/fongmi/android/tv/player/Players.java

@ -71,6 +71,10 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener {
return getIntent().getStringExtra("id");
}
private String getHistoryKey() {
return getKey().concat("_").concat(getId());
}
private Vod.Flag getVodFlag() {
return (Vod.Flag) mFlagAdapter.get(mBinding.flag.getSelectedPosition());
}
@ -166,7 +170,8 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener {
if (mFullscreen) Notify.show(ResUtil.getString(R.string.play_ready, item.getName()));
mSiteViewModel.playerContent(getKey(), getVodFlag().getFlag(), item.getUrl());
mBinding.progress.getRoot().setVisibility(View.VISIBLE);
addHistory(item);
Players.get().setKey(getHistoryKey());
updateHistory(item);
}
private void setViewModel() {
@ -199,17 +204,6 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener {
else view.setText(ResUtil.getString(resId, text));
}
private void checkHistory() {
History history = AppDatabase.get().getHistoryDao().find(getKey() + "_" + getId());
if (history != null) {
setFlagActivated(history.getFlag());
setEpisodeActivated(history.getEpisode());
} else {
setFlagActivated((Vod.Flag) mFlagAdapter.get(0));
setEpisodeActivated((Vod.Flag.Episode) mEpisodeAdapter.get(0));
}
}
private void setFlagActivated(Vod.Flag item) {
if (mBinding.flag.isComputingLayout()) return;
for (int i = 0; i < mFlagAdapter.size(); i++) {
@ -283,21 +277,40 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener {
Prefers.putScale(scale);
}
private void addHistory(Vod.Flag.Episode item) {
private void checkHistory() {
History history = AppDatabase.get().getHistoryDao().find(getHistoryKey());
if (history != null) {
setFlagActivated(history.getFlag());
setEpisodeActivated(history.getEpisode());
} else {
createHistory();
setFlagActivated((Vod.Flag) mFlagAdapter.get(0));
setEpisodeActivated((Vod.Flag.Episode) mEpisodeAdapter.get(0));
}
}
private void createHistory() {
History history = new History();
history.setKey(getKey() + "_" + getId());
history.setKey(getHistoryKey());
history.setVodPic(mBinding.video.getTag().toString());
history.setVodName(mBinding.name.getText().toString());
AppDatabase.get().getHistoryDao().insertOrUpdate(history);
}
private void updateHistory(Vod.Flag.Episode item) {
History history = AppDatabase.get().getHistoryDao().find(getHistoryKey());
history.setVodFlag(getVodFlag().getFlag());
history.setEpisodeUrl(item.getUrl());
history.setVodRemarks(item.getName());
history.setCreateTime(System.currentTimeMillis());
history.setVodPic(mBinding.video.getTag().toString());
history.setVodName(mBinding.name.getText().toString());
AppDatabase.get().getHistoryDao().insertOrUpdate(history);
AppDatabase.get().getHistoryDao().update(history);
EventBus.getDefault().post(RefreshEvent.history());
}
private void updateHistory() {
History history = AppDatabase.get().getHistoryDao().find(getHistoryKey());
history.setDuration(Players.get().getCurrentPosition());
AppDatabase.get().getHistoryDao().update(history);
}
@Subscribe(threadMode = ThreadMode.MAIN)
@ -361,6 +374,7 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener {
@Override
protected void onDestroy() {
super.onDestroy();
updateHistory();
Players.get().stop();
EventBus.getDefault().unregister(this);
}

@ -7,7 +7,9 @@ import androidx.annotation.NonNull;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.bean.History;
import com.fongmi.android.tv.bean.Result;
import com.fongmi.android.tv.db.AppDatabase;
import com.fongmi.android.tv.event.PlayerEvent;
import com.fongmi.android.tv.ui.custom.CustomWebView;
import com.fongmi.android.tv.utils.ResUtil;
@ -33,6 +35,7 @@ public class Players implements Player.Listener {
private Formatter formatter;
private ExoPlayer exoPlayer;
private Handler handler;
private String key;
private static class Loader {
static volatile Players INSTANCE = new Players();
@ -55,6 +58,14 @@ public class Players implements Player.Listener {
return exoPlayer;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getSpeed() {
return String.format(Locale.getDefault(), "%.2f", exoPlayer.getPlaybackParameters().speed);
}
@ -127,7 +138,9 @@ public class Players implements Player.Listener {
}
private void checkPosition() {
History history = AppDatabase.get().getHistoryDao().find(getKey());
if (history == null) return;
seekTo(history.getDuration());
}
public void pause() {

Loading…
Cancel
Save