diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index 1e5a2f9f0..191709426 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -3,6 +3,7 @@ package com.fongmi.android.tv.ui.activity; import android.app.Activity; import android.content.Intent; import android.os.Handler; +import android.os.Looper; import android.text.Html; import android.view.KeyEvent; import android.view.View; @@ -55,19 +56,19 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { private ArrayObjectAdapter mGroupAdapter; private ArrayObjectAdapter mEpisodeAdapter; private EpisodePresenter mEpisodePresenter; + private FlagPresenter mFlagPresenter; private SiteViewModel mSiteViewModel; private boolean mFullscreen; private KeyDown mKeyDown; - private History mHistory; - private View mOldView; + private Handler mHandler; private int mCurrent; - private String getId() { - return getIntent().getStringExtra("id"); + private String getKey() { + return getIntent().getStringExtra("key"); } - private String getVodKey() { - return ApiConfig.get().getHome().getKey() + "_" + getVodFlag().getFlag() + "_" + getId(); + private String getId() { + return getIntent().getStringExtra("id"); } private Vod.Flag getVodFlag() { @@ -84,7 +85,12 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { } public static void start(Activity activity, String id) { + start(activity, ApiConfig.get().getHome().getKey(), id); + } + + public static void start(Activity activity, String key, String id) { Intent intent = new Intent(activity, DetailActivity.class); + intent.putExtra("key", key); intent.putExtra("id", id); activity.startActivity(intent); } @@ -96,8 +102,8 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { @Override protected void initView() { - mHistory = new History(); mKeyDown = KeyDown.create(this); + mHandler = new Handler(Looper.getMainLooper()); mFrameParams = mBinding.video.getLayoutParams(); mBinding.progressLayout.showProgress(); setRecyclerView(); @@ -112,12 +118,12 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { mControl.next.setOnClickListener(view -> onNext()); mControl.prev.setOnClickListener(view -> onPrev()); mControl.scale.setOnClickListener(view -> onScale()); - mControl.reset.setOnClickListener(view -> getPlayer(getEpisode())); + mControl.reset.setOnClickListener(view -> getPlayer()); mControl.speed.setOnClickListener(view -> mControl.speed.setText(Players.get().addSpeed())); mBinding.flag.addOnChildViewHolderSelectedListener(new OnChildViewHolderSelectedListener() { @Override public void onChildViewHolderSelected(@NonNull RecyclerView parent, @Nullable RecyclerView.ViewHolder child, int position, int subposition) { - setFlagActivated(child, position); + setFlagActivated((Vod.Flag) mFlagAdapter.get(position)); } }); mBinding.group.addOnChildViewHolderSelectedListener(new OnChildViewHolderSelectedListener() { @@ -127,13 +133,14 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { } }); mBinding.video.setOnClickListener(view -> enterFullscreen()); - mEpisodePresenter.setOnClickListener(this::getPlayer); + mFlagPresenter.setOnClickListener(this::setFlagActivated); + mEpisodePresenter.setOnClickListener(this::setEpisodeActivated); } private void setRecyclerView() { mBinding.flag.setHorizontalSpacing(ResUtil.dp2px(8)); mBinding.flag.setRowHeight(ViewGroup.LayoutParams.WRAP_CONTENT); - mBinding.flag.setAdapter(new ItemBridgeAdapter(mFlagAdapter = new ArrayObjectAdapter(new FlagPresenter()))); + mBinding.flag.setAdapter(new ItemBridgeAdapter(mFlagAdapter = new ArrayObjectAdapter(mFlagPresenter = new FlagPresenter()))); mBinding.episode.setHorizontalSpacing(ResUtil.dp2px(8)); mBinding.episode.setRowHeight(ViewGroup.LayoutParams.WRAP_CONTENT); mBinding.episode.setAdapter(new ItemBridgeAdapter(mEpisodeAdapter = new ArrayObjectAdapter(mEpisodePresenter = new EpisodePresenter()))); @@ -151,14 +158,15 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { } private void getDetail() { - mSiteViewModel.detailContent(getId()); + mSiteViewModel.detailContent(getKey(), getId()); } - private void getPlayer(Vod.Flag.Episode item) { - setEpisodeActivated(item); - mBinding.progress.getRoot().setVisibility(View.VISIBLE); - mSiteViewModel.playerContent(getVodFlag().getFlag(), item.getUrl()); + private void getPlayer() { + Vod.Flag.Episode item = getEpisode(); 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); } private void setViewModel() { @@ -177,14 +185,16 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { mBinding.progressLayout.showContent(); mBinding.video.setTag(item.getVodPic()); mBinding.name.setText(item.getVodName()); - setText(mBinding.site, R.string.detail_site, ApiConfig.get().getHome().getName()); setText(mBinding.year, R.string.detail_year, item.getVodYear()); setText(mBinding.area, R.string.detail_area, item.getVodArea()); setText(mBinding.type, R.string.detail_type, item.getTypeName()); setText(mBinding.actor, R.string.detail_actor, item.getVodActor()); + setText(mBinding.site, R.string.detail_site, ApiConfig.getSiteName(getKey())); setText(mBinding.director, R.string.detail_director, item.getVodDirector()); setText(mBinding.content, R.string.detail_content, Html.fromHtml(item.getVodContent()).toString()); mFlagAdapter.addAll(0, item.getVodFlags()); + mBinding.video.requestFocus(); + checkHistory(); } private void setText(TextView view, int resId, String text) { @@ -192,12 +202,29 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { else view.setText(ResUtil.getString(resId, text)); } - private void setFlagActivated(RecyclerView.ViewHolder child, int position) { - if (mOldView != null) mOldView.setActivated(false); - if (child == null) return; - mOldView = child.itemView; - mOldView.setActivated(true); - setEpisode((Vod.Flag) mFlagAdapter.get(position)); + 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++) { + Vod.Flag flag = (Vod.Flag) mFlagAdapter.get(i); + flag.setActivated(flag.equals(item)); + if (flag.isActivated()) { + mBinding.flag.setSelectedPosition(i); + mEpisodeAdapter.setItems(flag.getEpisodes(), null); + setGroup(flag.getEpisodes().size()); + } + } + mFlagAdapter.notifyArrayItemRangeChanged(0, mFlagAdapter.size()); } private void setEpisodeActivated(Vod.Flag.Episode item) { @@ -208,13 +235,8 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { else flag.deactivated(); } mEpisodeAdapter.notifyArrayItemRangeChanged(0, mEpisodeAdapter.size()); - } - - private void setEpisode(Vod.Flag item) { - mEpisodeAdapter.clear(); - mEpisodeAdapter.addAll(0, item.getEpisodes()); - if (mEpisodeAdapter.size() > 0) mEpisodePresenter.performClick((Vod.Flag.Episode) mEpisodeAdapter.get(0)); - setGroup(item.getEpisodes().size()); + mHandler.post(() -> mBinding.episode.setSelectedPosition(getEpisodePosition())); + getPlayer(); } private void setGroup(int size) { @@ -222,14 +244,13 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { int itemSize = (int) Math.ceil(size / 20.0f); for (int i = 0; i < itemSize; i++) items.add(String.valueOf(i * 20 + 1)); mBinding.group.setVisibility(itemSize > 1 ? View.VISIBLE : View.GONE); - mGroupAdapter.clear(); - mGroupAdapter.addAll(0, items); + mGroupAdapter.setItems(items, null); } private void enterFullscreen() { mBinding.video.setForeground(null); mBinding.video.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)); - new Handler().postDelayed(() -> mBinding.video.setUseController(true), 250); + mHandler.postDelayed(() -> mBinding.video.setUseController(true), 250); mBinding.flag.setSelectedPosition(mCurrent); mFullscreen = true; } @@ -247,7 +268,7 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { current = ++current > max ? max : current; Vod.Flag.Episode item = (Vod.Flag.Episode) mEpisodeAdapter.get(current); if (item.isActivated()) Notify.show(R.string.error_play_next); - else getPlayer(item); + else setEpisodeActivated(item); } private void onPrev() { @@ -255,7 +276,7 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { current = --current < 0 ? 0 : current; Vod.Flag.Episode item = (Vod.Flag.Episode) mEpisodeAdapter.get(current); if (item.isActivated()) Notify.show(R.string.error_play_prev); - else getPlayer(item); + else setEpisodeActivated(item); } private void onScale() { @@ -265,14 +286,16 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { Prefers.putScale(scale); } - private void newHistory() { - mHistory.setKey(getVodKey()); - mHistory.setEpisodeUrl(getEpisode().getUrl()); - mHistory.setVodRemarks(getEpisode().getName()); - mHistory.setCreateTime(System.currentTimeMillis()); - mHistory.setVodPic(mBinding.video.getTag().toString()); - mHistory.setVodName(mBinding.name.getText().toString()); - AppDatabase.get().getHistoryDao().insertOrUpdate(mHistory); + private void addHistory(Vod.Flag.Episode item) { + History history = new History(); + history.setKey(getKey() + "_" + getId()); + 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); EventBus.getDefault().post(RefreshEvent.recent()); } @@ -280,7 +303,6 @@ public class DetailActivity extends BaseActivity implements KeyDown.Listener { public void onPlaybackStateChanged(PlayerEvent event) { mBinding.progress.getRoot().setVisibility(event.getState() == Player.STATE_BUFFERING ? View.VISIBLE : View.GONE); if (event.getState() == -1) Notify.show(R.string.error_play_parse); - if (event.getState() == Player.STATE_READY) newHistory(); } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java index 13bb3003e..c823f7630 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java @@ -178,12 +178,12 @@ public class HomeActivity extends BaseActivity implements VodPresenter.OnClickLi @Override public void onItemClick(Vod item) { - DetailActivity.start(getActivity(), item.getVodId()); + DetailActivity.start(this, item.getVodId()); } @Override public void onItemClick(History item) { - + DetailActivity.start(this, item.getSiteKey(), item.getVodId()); } @Subscribe(threadMode = ThreadMode.MAIN) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java index 5f064616f..a000e9d09 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java @@ -55,7 +55,7 @@ public class SettingActivity extends BaseActivity { @Override protected void initView() { mBinding.url.setText(Prefers.getUrl()); - mBinding.home.setText(ApiConfig.get().getHome().getName()); + mBinding.home.setText(ApiConfig.getHomeName()); mBinding.compress.setText(ResUtil.getStringArray(R.array.select_thumbnail)[Prefers.getThumbnail()]); } @@ -98,7 +98,7 @@ public class SettingActivity extends BaseActivity { ApiConfig.get().clear().loadConfig(new Callback() { @Override public void success() { - mBinding.home.setText(ApiConfig.get().getHome().getName()); + mBinding.home.setText(ApiConfig.getHomeName()); EventBus.getDefault().post(RefreshEvent.recent()); EventBus.getDefault().post(RefreshEvent.video()); Notify.dismiss(); @@ -106,7 +106,7 @@ public class SettingActivity extends BaseActivity { @Override public void error(int resId) { - mBinding.home.setText(ApiConfig.get().getHome().getName()); + mBinding.home.setText(ApiConfig.getHomeName()); EventBus.getDefault().post(RefreshEvent.recent()); EventBus.getDefault().post(RefreshEvent.video()); Notify.dismiss(); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/EpisodePresenter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/EpisodePresenter.java index c040ddd29..a0d62c2c2 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/EpisodePresenter.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/EpisodePresenter.java @@ -12,7 +12,6 @@ import com.fongmi.android.tv.databinding.AdapterEpisodeBinding; public class EpisodePresenter extends Presenter { private OnClickListener mListener; - private boolean firstOpen; public interface OnClickListener { void onItemClick(Vod.Flag.Episode item); @@ -27,12 +26,6 @@ public class EpisodePresenter extends Presenter { return new ViewHolder(AdapterEpisodeBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); } - public void performClick(Vod.Flag.Episode item) { - if (firstOpen) return; - firstOpen = true; - mListener.onItemClick(item); - } - @Override public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object object) { Vod.Flag.Episode item = (Vod.Flag.Episode) object; diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/FlagPresenter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/FlagPresenter.java index a478696ce..5daef9adf 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/FlagPresenter.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/FlagPresenter.java @@ -11,6 +11,16 @@ import com.fongmi.android.tv.databinding.AdapterFlagBinding; public class FlagPresenter extends Presenter { + private OnClickListener mListener; + + public interface OnClickListener { + void onItemClick(Vod.Flag item); + } + + public void setOnClickListener(OnClickListener listener) { + this.mListener = listener; + } + @Override public Presenter.ViewHolder onCreateViewHolder(ViewGroup parent) { return new ViewHolder(AdapterFlagBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); @@ -21,6 +31,8 @@ public class FlagPresenter extends Presenter { Vod.Flag item = (Vod.Flag) object; ViewHolder holder = (ViewHolder) viewHolder; holder.binding.text.setText(item.getFlag()); + holder.binding.text.setActivated(item.isActivated()); + setOnClickListener(holder, view -> mListener.onItemClick(item)); } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/HistoryPresenter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/HistoryPresenter.java index 26ecaf646..64f8741d5 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/HistoryPresenter.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/HistoryPresenter.java @@ -52,7 +52,7 @@ public class HistoryPresenter extends Presenter { ViewHolder holder = (ViewHolder) viewHolder; holder.binding.name.setText(item.getVodName()); holder.binding.site.setVisibility(View.VISIBLE); - holder.binding.site.setText(ApiConfig.get().getSite(item.getSiteKey()).getName()); + holder.binding.site.setText(ApiConfig.getSiteName(item.getSiteKey())); holder.binding.remark.setText(ResUtil.getString(R.string.vod_last, item.getVodRemarks())); ImgUtil.load(item.getVodName(), item.getVodPic(), holder.binding.image); setOnClickListener(holder, view -> mListener.onItemClick(item)); diff --git a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java index feb56a31d..c07a93c20 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java @@ -22,7 +22,6 @@ import com.google.gson.stream.JsonReader; import org.json.JSONObject; import java.io.FileReader; -import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; @@ -51,6 +50,14 @@ public class ApiConfig { return Loader.INSTANCE; } + public static String getHomeName() { + return get().getHome().getName(); + } + + public static String getSiteName(String key) { + return get().getSite(key).getName(); + } + public ApiConfig init() { this.ads = new ArrayList<>(); this.sites = new ArrayList<>(); diff --git a/app/src/main/java/com/fongmi/android/tv/bean/History.java b/app/src/main/java/com/fongmi/android/tv/bean/History.java index d15908ede..83aa05423 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/History.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/History.java @@ -12,6 +12,7 @@ public class History { private String key; private String vodPic; private String vodName; + private String vodFlag; private String vodRemarks; private String episodeUrl; private long createTime; @@ -45,6 +46,14 @@ public class History { this.vodName = vodName; } + public String getVodFlag() { + return vodFlag; + } + + public void setVodFlag(String vodFlag) { + this.vodFlag = vodFlag; + } + public String getVodRemarks() { return vodRemarks; } @@ -81,11 +90,15 @@ public class History { return getKey().split("_")[0]; } - public String getFlag() { + public String getVodId() { return getKey().split("_")[1]; } - public String getVodId() { - return getKey().split("_")[2]; + public Vod.Flag getFlag() { + return new Vod.Flag(getVodFlag()); + } + + public Vod.Flag.Episode getEpisode() { + return new Vod.Flag.Episode(getEpisodeUrl()); } } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Vod.java b/app/src/main/java/com/fongmi/android/tv/bean/Vod.java index c53bb4216..1c7937e10 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Vod.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Vod.java @@ -156,6 +156,8 @@ public class Vod { @SerializedName("episodes") private List episodes; + private boolean activated; + public static Flag objectFrom(String str) { return new Gson().fromJson(str, Flag.class); } @@ -190,6 +192,14 @@ public class Vod { } } + public boolean isActivated() { + return activated; + } + + public void setActivated(boolean activated) { + this.activated = activated; + } + public void deactivated() { for (Episode item : getEpisodes()) item.deactivated(); } @@ -198,6 +208,14 @@ public class Vod { for (Episode item : getEpisodes()) item.setActivated(episode); } + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (!(obj instanceof Flag)) return false; + Flag it = (Flag) obj; + return getFlag().equals(it.getFlag()); + } + @NonNull @Override public String toString() { @@ -210,9 +228,13 @@ public class Vod { private final String name; @SerializedName("url") private final String url; - @SerializedName("activated") + private boolean activated; + public Episode(String url) { + this("", url); + } + public Episode(String name, String url) { this.name = name; this.url = url; @@ -237,6 +259,14 @@ public class Vod { private void setActivated(Episode item) { this.activated = item.equals(this); } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (!(obj instanceof Episode)) return false; + Episode it = (Episode) obj; + return getUrl().equals(it.getUrl()); + } } } } diff --git a/app/src/main/java/com/fongmi/android/tv/db/AppDatabase.java b/app/src/main/java/com/fongmi/android/tv/db/AppDatabase.java index 1945684ae..1e57a53c7 100644 --- a/app/src/main/java/com/fongmi/android/tv/db/AppDatabase.java +++ b/app/src/main/java/com/fongmi/android/tv/db/AppDatabase.java @@ -13,7 +13,7 @@ import com.fongmi.android.tv.db.dao.HistoryDao; @Database(entities = {History.class}, version = AppDatabase.VERSION, exportSchema = false) public abstract class AppDatabase extends RoomDatabase { - public static final int VERSION = 1; + public static final int VERSION = 2; private static volatile AppDatabase instance; diff --git a/app/src/main/java/com/fongmi/android/tv/db/dao/HistoryDao.java b/app/src/main/java/com/fongmi/android/tv/db/dao/HistoryDao.java index 077a10209..30f35dec9 100644 --- a/app/src/main/java/com/fongmi/android/tv/db/dao/HistoryDao.java +++ b/app/src/main/java/com/fongmi/android/tv/db/dao/HistoryDao.java @@ -13,6 +13,9 @@ public abstract class HistoryDao extends BaseDao { @Query("SELECT * FROM history ORDER BY createTime DESC") public abstract List getAll(); + @Query("SELECT * FROM history WHERE `key` = :key") + public abstract History find(String key); + @Query("DELETE FROM history") public abstract void delete(); } diff --git a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java index dafcaff93..b8717f08d 100644 --- a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java +++ b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java @@ -79,23 +79,23 @@ public class SiteViewModel extends ViewModel { }); } - public void detailContent(String id) { - Site home = ApiConfig.get().getHome(); + public void detailContent(String key, String id) { + Site site = ApiConfig.get().getSite(key); execute(result, () -> { - if (home.getType() == 3) { - Spider spider = ApiConfig.get().getCSP(home); + if (site.getType() == 3) { + Spider spider = ApiConfig.get().getCSP(site); String detailContent = spider.detailContent(List.of(id)); SpiderDebug.log(detailContent); Result result = Result.fromJson(detailContent); if (!result.getList().isEmpty()) result.getList().get(0).setVodFlags(); return result; } else { - HttpUrl url = HttpUrl.parse(home.getApi()).newBuilder().addQueryParameter("ac", home.getType() == 0 ? "videolist" : "detail").addQueryParameter("ids", id).build(); + HttpUrl url = HttpUrl.parse(site.getApi()).newBuilder().addQueryParameter("ac", site.getType() == 0 ? "videolist" : "detail").addQueryParameter("ids", id).build(); String body = OKHttp.newCall(url).execute().body().string(); SpiderDebug.log(body); Result result; - if (home.getType() == 0) result = Result.fromXml(body); - else if (home.getType() == 1) result = Result.fromJson(body); + if (site.getType() == 0) result = Result.fromXml(body); + else if (site.getType() == 1) result = Result.fromJson(body); else result = new Result(); if (!result.getList().isEmpty()) result.getList().get(0).setVodFlags(); return result; @@ -103,11 +103,11 @@ public class SiteViewModel extends ViewModel { }); } - public void playerContent(String flag, String id) { - Site home = ApiConfig.get().getHome(); + public void playerContent(String key, String flag, String id) { + Site site = ApiConfig.get().getSite(key); execute(player, () -> { - if (home.getType() == 3) { - Spider spider = ApiConfig.get().getCSP(home); + if (site.getType() == 3) { + Spider spider = ApiConfig.get().getCSP(site); String playerContent = spider.playerContent(flag, id, ApiConfig.get().getFlags()); SpiderDebug.log(playerContent); JsonObject object = JsonParser.parseString(playerContent).getAsJsonObject(); @@ -117,7 +117,7 @@ public class SiteViewModel extends ViewModel { JsonObject object = new JsonObject(); object.addProperty("url", id); object.addProperty("flag", flag); - object.addProperty("playUrl", home.getPlayerUrl()); + object.addProperty("playUrl", site.getPlayerUrl()); object.addProperty("parse", Utils.isVideoFormat(id) ? "0" : "1"); return object; } diff --git a/app/src/main/java/com/fongmi/android/tv/player/Players.java b/app/src/main/java/com/fongmi/android/tv/player/Players.java index 7491e1a8d..8f4bc7b89 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/Players.java +++ b/app/src/main/java/com/fongmi/android/tv/player/Players.java @@ -126,6 +126,9 @@ public class Players implements Player.Listener { exoPlayer.seekTo(0); exoPlayer.setPlaybackSpeed(1.0f); } + if (webView != null) { + webView.stop(); + } } public void play() {