diff --git a/app/src/leanback/res/layout/view_widget_live.xml b/app/src/leanback/res/layout/view_widget_live.xml
index 2ef0369e3..910812b22 100644
--- a/app/src/leanback/res/layout/view_widget_live.xml
+++ b/app/src/leanback/res/layout/view_widget_live.xml
@@ -34,7 +34,6 @@
android:layout_height="wrap_content"
android:layout_below="@+id/title"
android:layout_alignStart="@+id/title"
- android:layout_marginBottom="16dp"
android:shadowColor="@color/grey_900"
android:shadowDx="2"
android:shadowDy="2"
diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Catchup.java b/app/src/main/java/com/fongmi/android/tv/bean/Catchup.java
index 0ca08e964..9fadee74d 100644
--- a/app/src/main/java/com/fongmi/android/tv/bean/Catchup.java
+++ b/app/src/main/java/com/fongmi/android/tv/bean/Catchup.java
@@ -5,6 +5,8 @@ import android.text.TextUtils;
import com.google.gson.annotations.SerializedName;
import java.net.URI;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -107,8 +109,19 @@ public class Catchup {
public String format(String url, EpgData data) {
String result = getSource();
if (data.isInRange()) return url;
- Matcher matcher = Pattern.compile("(\\$\\{[^}]*\\})").matcher(result);
- while (matcher.find()) result = result.replace(matcher.group(1), data.format(matcher.group(1)));
+ Matcher matcher = Pattern.compile("(\\$?\\{[^}]*\\})").matcher(result);
+ while (matcher.find()) result = result.replace(matcher.group(1), format(matcher.group(1), data.getStartTime(), data.getEndTime()));
return isDefault() ? result : append(url, result);
}
+
+ private String format(String group, long start, long end) {
+ Matcher matcher = Pattern.compile("\\{([^}]+)\\}").matcher(group);
+ if (!matcher.find()) return "";
+ String tag = matcher.group(1);
+ if (tag.startsWith("(b")) return new SimpleDateFormat(tag.split("\\)")[1], Locale.getDefault()).format(start);
+ if (tag.startsWith("(e")) return new SimpleDateFormat(tag.split("\\)")[1], Locale.getDefault()).format(end);
+ if (tag.startsWith("utcend:")) return String.valueOf(end / 1000);
+ if (tag.startsWith("utc:")) return String.valueOf(start / 1000);
+ return "";
+ }
}
diff --git a/app/src/main/java/com/fongmi/android/tv/bean/EpgData.java b/app/src/main/java/com/fongmi/android/tv/bean/EpgData.java
index e9fc22c3b..4fe73d9c9 100644
--- a/app/src/main/java/com/fongmi/android/tv/bean/EpgData.java
+++ b/app/src/main/java/com/fongmi/android/tv/bean/EpgData.java
@@ -8,9 +8,6 @@ import com.fongmi.android.tv.R;
import com.fongmi.android.tv.utils.ResUtil;
import com.google.gson.annotations.SerializedName;
-import java.text.SimpleDateFormat;
-import java.util.Locale;
-
public class EpgData {
@SerializedName("title")
@@ -84,13 +81,6 @@ public class EpgData {
return getStartTime() > System.currentTimeMillis();
}
- public String format(String group) {
- String pattern = group.split("\\)")[1].split("\\}")[0];
- if (group.contains("(b")) return pattern.equals("UNIX") ? String.valueOf(getStartTime() / 1000) : new SimpleDateFormat(pattern, Locale.getDefault()).format(getStartTime());
- if (group.contains("(e")) return pattern.equals("UNIX") ? String.valueOf(getEndTime() / 1000) : new SimpleDateFormat(pattern, Locale.getDefault()).format(getEndTime());
- return "";
- }
-
public String format() {
if (getTitle().isEmpty()) return "";
if (getStart().isEmpty() && getEnd().isEmpty()) return ResUtil.getString(R.string.play_now, getTitle());
diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
index e05a5a76c..0ee3a19aa 100644
--- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
+++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
@@ -580,6 +580,8 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
fetch(item);
} else if (mChannel.hasCatchup()) {
Notify.show(getString(R.string.play_ready, item.getTitle()));
+ mBinding.control.epg.setVisibility(View.VISIBLE);
+ mBinding.control.epg.setText(item.getTitle());
mEpgDataAdapter.setSelected(item);
fetch(item);
}
@@ -604,6 +606,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
mBinding.widget.play.setText("");
mChannel.loadLogo(mBinding.widget.logo);
mBinding.control.title.setSelected(true);
+ mBinding.control.epg.setVisibility(View.GONE);
mBinding.widget.name.setText(mChannel.getName());
mBinding.control.title.setText(mChannel.getName());
mBinding.widget.namePip.setText(mChannel.getName());
diff --git a/app/src/mobile/res/layout/view_control_live.xml b/app/src/mobile/res/layout/view_control_live.xml
index e44512fd4..357933460 100644
--- a/app/src/mobile/res/layout/view_control_live.xml
+++ b/app/src/mobile/res/layout/view_control_live.xml
@@ -31,6 +31,15 @@
android:textSize="14sp"
tools:text="CCTV-1" />
+
+