From 4116d699d1a95a999f95cf3483c10d394a29643c Mon Sep 17 00:00:00 2001 From: FongMi Date: Wed, 16 Nov 2022 09:18:51 +0800 Subject: [PATCH] Add live load progress --- .../android/tv/ui/activity/LiveActivity.java | 20 +++++++++++++------ .../com/fongmi/android/tv/api/LiveParser.java | 10 ++++++---- .../com/fongmi/android/tv/bean/Channel.java | 1 + .../com/fongmi/android/tv/bean/Group.java | 6 ++++++ .../android/tv/model/LiveViewModel.java | 2 +- app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values-zh-rTW/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 8 files changed, 31 insertions(+), 11 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index 78e224065..d2c417d72 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -162,6 +162,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick private void getLive() { mViewModel.getLive(LiveConfig.get().getHome()); + showProgress(); } private void setVideoView() { @@ -177,12 +178,12 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick private void setGroup(Live home) { List items = new ArrayList<>(); - items.add(Group.create(ResUtil.getString(R.string.keep))); + items.add(Group.create(R.string.keep)); for (Group group : home.getGroups()) (group.isHidden() ? mHides : items).add(group); mGroupAdapter.setItems(items, null); setPosition(LiveConfig.get().find(items)); mControl.home.setText(home.getName()); - Notify.dismiss(); + hideProgress(); } private void setPosition(int[] position) { @@ -271,6 +272,14 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick setPosition(); } + private void showProgress() { + mBinding.widget.progress.getRoot().setVisibility(View.VISIBLE); + } + + private void hideProgress() { + mBinding.widget.progress.getRoot().setVisibility(View.GONE); + } + private void hideInfo() { mBinding.widget.info.setVisibility(View.GONE); } @@ -376,8 +385,8 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick } private void getUrl() { - mBinding.widget.progress.getRoot().setVisibility(View.VISIBLE); mViewModel.getUrl(mChannel); + showProgress(); } private void prevLine(boolean show) { @@ -518,7 +527,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick public void setLive(Live item) { getPlayerView().hideController(); LiveConfig.get().setHome(item); - Notify.progress(this); mHides.clear(); getLive(); } @@ -532,12 +540,12 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick case Player.STATE_IDLE: break; case Player.STATE_BUFFERING: - mBinding.widget.progress.getRoot().setVisibility(View.VISIBLE); + showProgress(); break; case Player.STATE_READY: + hideProgress(); mPlayers.reset(); App.removeCallbacks(mR4); - mBinding.widget.progress.getRoot().setVisibility(View.GONE); TrackSelectionDialog.setVisible(mPlayers.exo(), mControl.tracks); break; case Player.STATE_ENDED: diff --git a/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java b/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java index 8546da401..2b4a9ee2c 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java +++ b/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java @@ -2,6 +2,7 @@ package com.fongmi.android.tv.api; import android.util.Base64; +import com.fongmi.android.tv.R; import com.fongmi.android.tv.bean.Channel; import com.fongmi.android.tv.bean.Group; import com.fongmi.android.tv.bean.Live; @@ -32,7 +33,8 @@ public class LiveParser { public static void start(Live live, String text) { int number = 0; if (live.getGroups().size() > 0) return; - if (text.trim().startsWith("#EXTM3U")) m3u(live, text); else txt(live, text); + if (text.trim().startsWith("#EXTM3U")) m3u(live, text); + else txt(live, text); for (Group group : live.getGroups()) { for (Channel channel : group.getChannel()) { channel.setNumber(++number); @@ -55,11 +57,11 @@ public class LiveParser { private static void txt(Live live, String text) { for (String line : text.split("\n")) { + System.out.println(line); String[] split = line.split(","); if (split.length < 2) continue; - if (line.contains("#genre#")) { - live.getGroups().add(Group.create(split[0])); - } + if (line.contains("#genre#")) live.getGroups().add(Group.create(split[0])); + if (live.getGroups().isEmpty()) live.getGroups().add(Group.create(R.string.live_group)); if (split[1].contains("://")) { Group group = live.getGroups().get(live.getGroups().size() - 1); group.find(Channel.create(split[0]).epg(live)).addUrls(split[1].split("#")); diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Channel.java b/app/src/main/java/com/fongmi/android/tv/bean/Channel.java index 4d05a6a68..4590568a3 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Channel.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Channel.java @@ -199,6 +199,7 @@ public class Channel { } public Channel epg(Live live) { + if (live.getEpg().isEmpty()) return this; setEpg(live.getEpg().replace("{name}", getName()).replace("{epg}", getEpg())); return this; } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Group.java b/app/src/main/java/com/fongmi/android/tv/bean/Group.java index 78246de10..a31005cd5 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Group.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Group.java @@ -4,6 +4,8 @@ import android.text.TextUtils; import android.view.View; import android.widget.ImageView; +import androidx.annotation.StringRes; + import com.bumptech.glide.Glide; import com.fongmi.android.tv.App; import com.fongmi.android.tv.R; @@ -30,6 +32,10 @@ public class Group { return new Group(name); } + public static Group create(@StringRes int resId) { + return new Group(ResUtil.getString(resId)); + } + public Group(String name) { this.name = name; if (!name.contains("_")) return; diff --git a/app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java b/app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java index fb26e4052..b9bad132b 100644 --- a/app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java +++ b/app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java @@ -43,7 +43,7 @@ public class LiveViewModel extends ViewModel { executor = Executors.newFixedThreadPool(2); executor.execute(() -> { try { - if (!Thread.interrupted()) result.postValue(executor.submit(callable).get(10, TimeUnit.SECONDS)); + if (!Thread.interrupted()) result.postValue(executor.submit(callable).get(30, TimeUnit.SECONDS)); } catch (Throwable e) { e.printStackTrace(); } diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 8401d04e2..bfc414718 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -12,6 +12,7 @@ 密码 + 未分类 设定 正在播放:%s 线路 %s diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index bc0abdc18..9140bfd62 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -12,6 +12,7 @@ 密碼 + 未分類 設定 正在播放:%s 來源 %s diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f873d1cb9..1348fcc72 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -12,6 +12,7 @@ Pass + Group Setting Playing: %s Line %s