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 75bb13c07..6a8001f12 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 @@ -286,7 +286,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mViewModel.player.observe(this, result -> { boolean useParse = (result.getPlayUrl().isEmpty() && ApiConfig.get().getFlags().contains(result.getFlag())) || result.getJx() == 1; mBinding.control.parseLayout.setVisibility(useParse ? View.VISIBLE : View.GONE); - mPlayers.start(result, useParse); + startPlay(result, useParse); resetFocus(useParse); }); mViewModel.result.observe(this, result -> { @@ -325,11 +325,19 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mViewModel.playerContent(getKey(), getVodFlag().getFlag(), item.getUrl()); Clock.get().setCallback(null); updateHistory(item, replay); - setR3Callback(); showProgress(); hideError(); } + private void startPlay(Result result, boolean useParse) { + if (result != null) { + mPlayers.start(result, useParse); + setR3Callback(); + } else { + ErrorEvent.url(); + } + } + private void setEmpty() { if (getName().isEmpty()) { mBinding.progressLayout.showEmpty(); @@ -413,9 +421,8 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis private void setParseActivated(Parse item) { ApiConfig.get().setParse(item); - Result result = mViewModel.getPlayer().getValue(); - if (result != null) mPlayers.start(result, true); notifyItemChanged(mBinding.control.parse, mParseAdapter); + startPlay(mViewModel.getPlayer().getValue(), true); showProgress(); hideError(); } diff --git a/app/src/main/java/com/fongmi/android/tv/Constant.java b/app/src/main/java/com/fongmi/android/tv/Constant.java index 6dd1406c1..1f6e2094d 100644 --- a/app/src/main/java/com/fongmi/android/tv/Constant.java +++ b/app/src/main/java/com/fongmi/android/tv/Constant.java @@ -9,7 +9,7 @@ public class Constant { //網路偵測間隔 0.5 秒 public static final int INTERVAL_TRAFFIC = 500; //點播超時時間 30 秒 - public static final int TIMEOUT_VOD = 30 * 1000; + public static final int TIMEOUT_VOD = 10 * 1000; //直播超時時間 10 秒 public static final int TIMEOUT_LIVE = 10 * 1000; //解析超時時間 5 秒 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 b111030e2..1f5eb521e 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 @@ -146,7 +146,7 @@ public class ApiConfig { } for (JsonElement element : Json.safeListElement(object, "parses")) { Parse parse = Parse.objectFrom(element); - if (parse.getName().equals(Prefers.getParse())) setParse(parse); + if (parse.getName().equals(config.getParse())) setParse(parse); if (!parses.contains(parse)) parses.add(parse); } if (home == null) setHome(sites.isEmpty() ? new Site() : sites.get(0)); @@ -241,7 +241,7 @@ public class ApiConfig { public void setParse(Parse parse) { this.parse = parse; this.parse.setActivated(true); - Prefers.putParse(parse.getName()); + config.parse(parse.getName()).update(); for (Parse item : parses) item.setActivated(parse); } 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 cefc05ec4..1cba39756 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 @@ -19,6 +19,7 @@ public class Config { private String url; private String json; private String home; + private String parse; public static Config create(String url, int type) { return new Config(url, type); @@ -70,6 +71,14 @@ public class Config { this.home = home; } + public String getParse() { + return parse; + } + + public void setParse(String parse) { + this.parse = parse; + } + public long getTime() { return time; } @@ -93,6 +102,11 @@ public class Config { return this; } + public Config parse(String parse) { + setParse(parse); + return this; + } + public static List getAll(int type) { return AppDatabase.get().getConfigDao().findByType(type); } 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 a38228bbe..8443b68af 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 @@ -24,7 +24,7 @@ import com.fongmi.android.tv.db.dao.TrackDao; @Database(entities = {Keep.class, Site.class, Track.class, Config.class, History.class}, version = AppDatabase.VERSION) public abstract class AppDatabase extends RoomDatabase { - public static final int VERSION = 17; + public static final int VERSION = 18; public static final String SYMBOL = "@@@"; private static volatile AppDatabase instance; @@ -42,6 +42,7 @@ public abstract class AppDatabase extends RoomDatabase { .addMigrations(MIGRATION_14_15) .addMigrations(MIGRATION_15_16) .addMigrations(MIGRATION_16_17) + .addMigrations(MIGRATION_17_18) .allowMainThreadQueries() .fallbackToDestructiveMigration() .build(); @@ -102,4 +103,11 @@ public abstract class AppDatabase extends RoomDatabase { database.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS `index_Track_key_player_type` ON `Track` (`key`, `player`, `type`)"); } }; + + static final Migration MIGRATION_17_18 = new Migration(17, 18) { + @Override + public void migrate(@NonNull SupportSQLiteDatabase database) { + database.execSQL("ALTER TABLE Config ADD COLUMN parse TEXT DEFAULT NULL"); + } + }; } diff --git a/app/src/main/java/com/fongmi/android/tv/utils/Prefers.java b/app/src/main/java/com/fongmi/android/tv/utils/Prefers.java index fd5c51857..14c1f5ba4 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/Prefers.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/Prefers.java @@ -123,14 +123,6 @@ public class Prefers { put("size", size); } - public static String getParse() { - return getString("parse"); - } - - public static void putParse(String parse) { - put("parse", parse); - } - public static String getKeyword() { return getString("keyword"); }