diff --git a/app/build.gradle b/app/build.gradle index 47233e0bc..84ce514d6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -52,6 +52,9 @@ android { dependencies { implementation project(':catvod') + implementation project(':exoplayer-library') + implementation project(':exoplayer-extension-rtmp') + implementation project(':exoplayer-extension-ffmpeg') implementation 'androidx.appcompat:appcompat:1.5.1' implementation 'androidx.core:core-splashscreen:1.0.0' implementation 'androidx.preference:preference:1.2.0' @@ -62,8 +65,6 @@ dependencies { implementation 'com.github.bassaer:materialdesigncolors:1.0.0' implementation 'com.github.bumptech.glide:glide:4.14.1' implementation 'com.google.android.material:material:1.6.1' - implementation 'com.google.android.exoplayer:exoplayer:2.18.1' - implementation 'com.google.android.exoplayer:extension-rtmp:2.18.1' implementation 'com.google.code.gson:gson:2.9.1' implementation 'com.google.zxing:core:3.5.0' implementation 'com.makeramen:roundedimageview:2.3.0' 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 6f2deee91..e3fc85a2c 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 @@ -352,7 +352,8 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen } private void onDesc() { - DescDialog.show(this, mBinding.content.getTag().toString()); + String desc = mBinding.content.getTag().toString().trim(); + if (desc.length() > 0) DescDialog.show(this, desc); } private void onKeep() { @@ -520,6 +521,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen Keep keep = new Keep(); keep.setKey(getHistoryKey()); keep.setCid(ApiConfig.getCid()); + keep.setSiteName(ApiConfig.getSiteName(getKey())); keep.setVodPic(mBinding.video.getTag().toString()); keep.setVodName(mBinding.name.getText().toString()); keep.setCreateTime(System.currentTimeMillis()); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/KeepActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/KeepActivity.java index fc70b6178..2b88cd966 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/KeepActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/KeepActivity.java @@ -8,8 +8,12 @@ import androidx.leanback.widget.ItemBridgeAdapter; import androidx.leanback.widget.ListRow; import androidx.viewbinding.ViewBinding; +import com.fongmi.android.tv.api.ApiConfig; +import com.fongmi.android.tv.bean.Config; import com.fongmi.android.tv.bean.Keep; import com.fongmi.android.tv.databinding.ActivityKeepBinding; +import com.fongmi.android.tv.event.RefreshEvent; +import com.fongmi.android.tv.net.Callback; import com.fongmi.android.tv.ui.custom.CustomRowPresenter; import com.fongmi.android.tv.ui.custom.CustomSelector; import com.fongmi.android.tv.ui.presenter.KeepPresenter; @@ -58,9 +62,34 @@ public class KeepActivity extends BaseActivity implements KeepPresenter.OnClickL mAdapter.addAll(0, rows); } + private void loadConfig(Config config, Keep item) { + Prefers.putUrl(config.getUrl()); + ApiConfig.get().setCid(config.update().getId()); + ApiConfig.get().clear().loadConfig(new Callback() { + @Override + public void success(String json) { + DetailActivity.start(getActivity(), item.getSiteKey(), item.getVodId()); + RefreshEvent.history(); + RefreshEvent.video(); + } + + @Override + public void error(int resId) { + CollectActivity.start(getActivity(), item.getVodName()); + } + }); + } + @Override public void onItemClick(Keep item) { - + Config config = Config.find(item.getCid()); + if (item.getCid() == ApiConfig.getCid()) { + DetailActivity.start(this, item.getSiteKey(), item.getVodId()); + } else if (config == null) { + CollectActivity.start(this, item.getVodName()); + } else { + loadConfig(config, item); + } } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/KeepPresenter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/KeepPresenter.java index e2af87391..052c55fbd 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/KeepPresenter.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/KeepPresenter.java @@ -10,7 +10,6 @@ import androidx.leanback.widget.Presenter; import com.bumptech.glide.Glide; import com.fongmi.android.tv.App; import com.fongmi.android.tv.R; -import com.fongmi.android.tv.api.ApiConfig; import com.fongmi.android.tv.bean.Keep; import com.fongmi.android.tv.databinding.AdapterVodBinding; import com.fongmi.android.tv.utils.Prefers; @@ -67,7 +66,7 @@ public class KeepPresenter extends Presenter { holder.binding.name.setText(item.getVodName()); holder.binding.remark.setVisibility(View.GONE); holder.binding.site.setVisibility(View.VISIBLE); - holder.binding.site.setText(ApiConfig.getSiteName(item.getSiteKey())); + holder.binding.site.setText(item.getSiteName()); holder.binding.delete.setVisibility(!delete ? View.GONE : View.VISIBLE); Glide.with(App.get()).load(item.getVodPic()).centerCrop().error(R.drawable.ic_img_error).placeholder(R.drawable.ic_img_loading).into(holder.binding.image); } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Config.java b/app/src/main/java/com/fongmi/android/tv/bean/Config.java index b8b48be27..0533472b8 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Config.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Config.java @@ -67,6 +67,10 @@ public class Config { return items; } + public static Config find(int id) { + return AppDatabase.get().getConfigDao().find(id); + } + public static Config find(String url) { Config item = AppDatabase.get().getConfigDao().find(url); return item == null ? Config.create() : item.newTime(); @@ -98,7 +102,7 @@ public class Config { public void delete() { AppDatabase.get().getConfigDao().delete(getUrl()); - //TODO DELETE KEEP History.delete(getId()); + Keep.delete(getId()); } } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Keep.java b/app/src/main/java/com/fongmi/android/tv/bean/Keep.java index 1f8d002dd..2289b61cd 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Keep.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Keep.java @@ -15,6 +15,7 @@ public class Keep { @NonNull @PrimaryKey private String key; + private String siteName; private String vodName; private String vodPic; private long createTime; @@ -29,6 +30,14 @@ public class Keep { this.key = key; } + public String getSiteName() { + return siteName; + } + + public void setSiteName(String siteName) { + this.siteName = siteName; + } + public String getVodName() { return vodName; } @@ -73,13 +82,16 @@ public class Keep { return AppDatabase.get().getKeepDao().find(ApiConfig.getCid(), key); } + public static void delete(int cid) { + AppDatabase.get().getKeepDao().delete(cid); + } + public static List getAll() { return AppDatabase.get().getKeepDao().getAll(); } - public Keep save() { + public void save() { AppDatabase.get().getKeepDao().insert(this); - return this; } public void delete() { diff --git a/app/src/main/java/com/fongmi/android/tv/db/dao/ConfigDao.java b/app/src/main/java/com/fongmi/android/tv/db/dao/ConfigDao.java index 641381729..f6513a788 100644 --- a/app/src/main/java/com/fongmi/android/tv/db/dao/ConfigDao.java +++ b/app/src/main/java/com/fongmi/android/tv/db/dao/ConfigDao.java @@ -13,6 +13,9 @@ public abstract class ConfigDao extends BaseDao { @Query("SELECT * FROM Config ORDER BY time DESC") public abstract List getAll(); + @Query("SELECT * FROM Config WHERE id = :id") + public abstract Config find(int id); + @Query("SELECT * FROM Config WHERE url = :url") public abstract Config find(String url); diff --git a/settings.gradle b/settings.gradle index c921c6036..244507fc6 100644 --- a/settings.gradle +++ b/settings.gradle @@ -17,3 +17,5 @@ dependencyResolutionManagement { include ':app' include ':catvod' rootProject.name = "TV" +gradle.ext.exoplayerModulePrefix = 'exoplayer-' +apply from: file("/exo/core_settings.gradle") \ No newline at end of file