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 70d6a7d51..16681d658 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 @@ -480,7 +480,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick private void showControl(View view) { mBinding.control.getRoot().setVisibility(View.VISIBLE); mBinding.widget.top.setVisibility(View.VISIBLE); - view.requestFocus(); + App.post(view::requestFocus, 25); setR1Callback(); hideInfo(); hideEpg(); @@ -732,7 +732,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick mBinding.widget.size.setText(mPlayers.getSizeText()); break; case Player.STATE_ENDED: - nextEpg(); + checkNext(); break; } } @@ -814,10 +814,11 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick if (!mGroup.isEmpty()) setChannel(mGroup.current()); } - public void nextEpg() { + private void checkNext() { + int current = mChannel.getData().getInRange(); int position = mChannel.getData().getSelected() + 1; - boolean limit = position > mEpgDataAdapter.size() - 1; - if (!limit) onItemClick(mChannel.getData().getList().get(position)); + boolean hasNext = position <= current && position > 0; + if (hasNext) onItemClick(mChannel.getData().getList().get(position)); else nextChannel(); } 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 5414f8c08..3144294dc 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 @@ -94,6 +94,7 @@ 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))); return isDefault() ? result : format(url, result); diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Epg.java b/app/src/main/java/com/fongmi/android/tv/bean/Epg.java index e5f1b977e..4ccdadaaf 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Epg.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Epg.java @@ -90,4 +90,9 @@ public class Epg { for (int i = 0; i < getList().size(); i++) if (getList().get(i).isSelected()) return i; return -1; } + + public int getInRange() { + for (int i = 0; i < getList().size(); i++) if (getList().get(i).isInRange()) return i; + return -1; + } } 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 d61d68cd7..297ee6fc0 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 @@ -798,7 +798,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List if (isVisible(mBinding.control.getRoot())) showControl(); break; case Player.STATE_ENDED: - nextEpg(); + checkNext(); break; } } @@ -905,10 +905,11 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List if (!mGroup.isEmpty()) onItemClick(mGroup.current()); } - public void nextEpg() { + private void checkNext() { + int current = mChannel.getData().getInRange(); int position = mChannel.getData().getSelected() + 1; - boolean limit = position > mEpgDataAdapter.getItemCount() - 1; - if (!limit) onItemClick(mChannel.getData().getList().get(position)); + boolean hasNext = position <= current && position > 0; + if (hasNext) onItemClick(mChannel.getData().getList().get(position)); else nextChannel(); }