From a01be747a1499a40cd62658b807e3cefdb6fe210 Mon Sep 17 00:00:00 2001 From: FongMi Date: Fri, 27 Mar 2026 01:34:10 +0800 Subject: [PATCH] Fix epg time zone --- .../fongmi/android/tv/ui/activity/LiveActivity.java | 12 ++++++------ .../java/com/fongmi/android/tv/bean/Channel.java | 7 ++++++- .../com/fongmi/android/tv/model/LiveViewModel.java | 4 ++++ .../fongmi/android/tv/ui/activity/LiveActivity.java | 12 ++++++------ 4 files changed, 22 insertions(+), 13 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 a8d9ca558..b326996c9 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 @@ -435,8 +435,8 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick @Override public void showEpg(Channel item) { - if (mChannel == null || mChannel.getData().getList().isEmpty() || mEpgDataAdapter.size() == 0 || !mChannel.equals(item) || !mChannel.getGroup().equals(mGroup)) return; - mBinding.epgData.setSelectedPosition(mChannel.getData().getSelected()); + if (mChannel == null || mChannel.getData(mViewModel.getZoneId()).getList().isEmpty() || mEpgDataAdapter.size() == 0 || !mChannel.equals(item) || !mChannel.getGroup().equals(mGroup)) return; + mBinding.epgData.setSelectedPosition(mChannel.getData(mViewModel.getZoneId()).getSelected()); mBinding.epgData.setVisibility(View.VISIBLE); mBinding.channel.setVisibility(View.GONE); mBinding.group.setVisibility(View.GONE); @@ -554,7 +554,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick @Override public void onItemClick(Channel item) { - if (!item.getData().getList().isEmpty() && item.isSelected() && mChannel != null && mChannel.equals(item) && mChannel.getGroup().equals(mGroup)) { + if (!item.getData(mViewModel.getZoneId()).getList().isEmpty() && item.isSelected() && mChannel != null && mChannel.equals(item) && mChannel.getGroup().equals(mGroup)) { showEpg(item); } else if (mGroup != null) { mGroup.setPosition(mBinding.channel.getSelectedPosition()); @@ -877,10 +877,10 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick } private void checkNext() { - int current = mChannel.getData().getInRange(); - int position = mChannel.getData().getSelected() + 1; + int current = mChannel.getData(mViewModel.getZoneId()).getInRange(); + int position = mChannel.getData(mViewModel.getZoneId()).getSelected() + 1; boolean hasNext = position <= current && position > 0; - if (hasNext) onItemClick(mChannel.getData().getList().get(position)); + if (hasNext) onItemClick(mChannel.getData(mViewModel.getZoneId()).getList().get(position)); else fetch(); } 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 544efabcf..2b30e64de 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 @@ -20,6 +20,7 @@ import com.google.gson.annotations.SerializedName; import com.fongmi.android.tv.utils.Formatters; import java.time.LocalDate; +import java.time.ZoneId; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -238,7 +239,11 @@ public class Channel { } public Epg getData() { - String today = LocalDate.now().format(Formatters.DATE); + return getData(ZoneId.systemDefault()); + } + + public Epg getData(ZoneId zoneId) { + String today = LocalDate.now(zoneId).format(Formatters.DATE); if (dataList == null) return new Epg(); return dataList.stream().filter(e -> e.equal(today)).findFirst().orElse(new Epg()); } 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 fbedd3f0b..6bd13c82e 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 @@ -72,6 +72,10 @@ public class LiveViewModel extends ViewModel { return live; } + public ZoneId getZoneId() { + return formats.zoneId(); + } + public void getLive(Live item) { execute(TaskType.LIVE, () -> { LiveParser.start(item.recent()); 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 893ed7a63..387b4f97b 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 @@ -461,8 +461,8 @@ public class LiveActivity extends BaseActivity implements CustomKeyDown.Listener } private void showEpg(Channel item) { - if (mChannel == null || mChannel.getData().getList().isEmpty() || mEpgDataAdapter.getItemCount() == 0 || !mChannel.equals(item) || !mChannel.getGroup().equals(mGroup)) return; - scrollToPosition(mBinding.epgData, item.getData().getSelected()); + if (mChannel == null || mChannel.getData(mViewModel.getZoneId()).getList().isEmpty() || mEpgDataAdapter.getItemCount() == 0 || !mChannel.equals(item) || !mChannel.getGroup().equals(mGroup)) return; + scrollToPosition(mBinding.epgData, item.getData(mViewModel.getZoneId()).getSelected()); mBinding.epgData.setVisibility(View.VISIBLE); mBinding.channel.setVisibility(View.GONE); mBinding.group.setVisibility(View.GONE); @@ -582,7 +582,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDown.Listener @Override public void onItemClick(Channel item) { - if (!item.getData().getList().isEmpty() && item.isSelected() && mChannel != null && mChannel.equals(item) && mChannel.getGroup().equals(mGroup)) { + if (!item.getData(mViewModel.getZoneId()).getList().isEmpty() && item.isSelected() && mChannel != null && mChannel.equals(item) && mChannel.getGroup().equals(mGroup)) { showEpg(item); } else if (mGroup != null) { mGroup.setPosition(mChannelAdapter.setSelected(item.group(mGroup))); @@ -915,10 +915,10 @@ public class LiveActivity extends BaseActivity implements CustomKeyDown.Listener } private void checkNext() { - int current = mChannel.getData().getInRange(); - int position = mChannel.getData().getSelected() + 1; + int current = mChannel.getData(mViewModel.getZoneId()).getInRange(); + int position = mChannel.getData(mViewModel.getZoneId()).getSelected() + 1; boolean hasNext = position <= current && position > 0; - if (hasNext) onItemClick(mChannel.getData().getList().get(position)); + if (hasNext) onItemClick(mChannel.getData(mViewModel.getZoneId()).getList().get(position)); else fetch(); }