From eb5dbbbb655aa18f31afebb478aaf3e4ff6c88f9 Mon Sep 17 00:00:00 2001 From: okjack Date: Sat, 1 Jun 2024 19:31:24 +0800 Subject: [PATCH] [leanback] live support seek --- .../android/tv/ui/activity/CastActivity.java | 2 +- .../android/tv/ui/activity/HomeActivity.java | 6 ++-- .../android/tv/ui/activity/LiveActivity.java | 30 +++++++++---------- .../android/tv/ui/activity/VideoActivity.java | 6 ++-- app/src/leanback/res/layout/activity_home.xml | 2 +- .../leanback/res/layout/view_widget_cast.xml | 4 +-- .../res/layout/view_widget_display.xml | 2 +- .../leanback/res/layout/view_widget_live.xml | 2 +- 8 files changed, 27 insertions(+), 27 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java index af762725d..f51815d6f 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java @@ -91,7 +91,7 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List @Override protected void initView() { bindService(new Intent(this, DLNARendererService.class), this, Context.BIND_AUTO_CREATE); - mClock = Clock.create(mBinding.widget.time); + mClock = Clock.create(mBinding.widget.clock); mKeyDown = CustomKeyDownCast.create(this); mPlayers = new Players().init(this); mParser = new DIDLParser(); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java index 179936335..ee21ab5af 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java @@ -109,7 +109,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen @Override protected void initView() { DLNARendererService.Companion.start(this, R.drawable.ic_logo); - mClock = Clock.create(mBinding.time).format("MM/dd HH:mm:ss"); + mClock = Clock.create(mBinding.clock).format("MM/dd HH:mm:ss"); Updater.get().release().start(this); Server.get().start(); Tbs.init(); @@ -154,10 +154,10 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen mBinding.homeSiteLock.setVisibility(Setting.isHomeSiteLock() ? View.VISIBLE : View.GONE); if (Setting.getHomeUI() == 0) { mBinding.title.setTextSize(24); - mBinding.time.setTextSize(24); + mBinding.clock.setTextSize(24); } else { mBinding.title.setTextSize(20); - mBinding.time.setTextSize(20); + mBinding.clock.setTextSize(20); } } 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 9414fad56..cbaf51147 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 @@ -140,7 +140,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP @Override protected void initView() { - mClock = Clock.create(Arrays.asList(mBinding.widget.time, mBinding.display.time)); + mClock = Clock.create(Arrays.asList(mBinding.widget.clock, mBinding.display.clock)); mKeyDown = CustomKeyDownLive.create(this); mPlayers = new Players().init(this); mHides = new ArrayList<>(); @@ -488,6 +488,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP private void showControl(View view) { mBinding.control.getRoot().setVisibility(View.VISIBLE); mBinding.widget.top.setVisibility(View.VISIBLE); + App.post(view::requestFocus, 25); view.requestFocus(); setR1Callback(); hideInfo(); @@ -503,7 +504,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP private void showDisplayInfo() { boolean controlVisible = isVisible(mBinding.control.getRoot()); boolean visible = !controlVisible; - mBinding.display.time.setVisibility(Setting.isDisplayTime() && visible ? View.VISIBLE : View.GONE); + mBinding.display.clock.setVisibility(Setting.isDisplayTime() && visible ? View.VISIBLE : View.GONE); mBinding.display.netspeed.setVisibility(Setting.isDisplaySpeed() && visible ? View.VISIBLE : View.GONE); mBinding.display.duration.setVisibility(View.GONE); } @@ -851,14 +852,14 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP } private void prevLine() { - if (mChannel == null) return; + if (mChannel == null || mChannel.isOnly()) return; mChannel.prevLine(); showInfo(); fetch(); } private void nextLine(boolean show) { - if (mChannel == null) return; + if (mChannel == null || mChannel.isOnly()) return; mChannel.nextLine(); if (show) showInfo(); else setInfo(); @@ -867,6 +868,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP private void seekTo(int time) { mPlayers.seekTo(time); + mKeyDown.resetTime(); showProgress(); hideCenter(); } @@ -936,7 +938,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP @Override public void onSeeking(int time) { - if (!mPlayers.isVod() || !mChannel.isOnly()) return; + if (!mPlayers.isVod()) return; mBinding.widget.exoDuration.setText(mPlayers.getDurationTime()); mBinding.widget.exoPosition.setText(mPlayers.getPositionTime(time)); mBinding.widget.action.setImageResource(time > 0 ? R.drawable.ic_widget_forward : R.drawable.ic_widget_rewind); @@ -946,28 +948,26 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP @Override public void onKeyUp() { - prevChannel(); + if (!mPlayers.isVod()) prevChannel(); + else showControl(mBinding.control.player); } @Override public void onKeyDown() { - nextChannel(); + if (!mPlayers.isVod()) nextChannel(); + else showControl(mBinding.control.player); } @Override public void onKeyLeft(int time) { - if (mChannel == null) return; - if (mChannel.isOnly() && mPlayers.isVod()) App.post(() -> seekTo(time), 250); - else if (!mChannel.isOnly()) prevLine(); - mKeyDown.resetTime(); + if (!mPlayers.isVod()) prevLine(); + else App.post(() -> seekTo(time), 250); } @Override public void onKeyRight(int time) { - if (mChannel == null) return; - if (mChannel.isOnly() && mPlayers.isVod()) App.post(() -> seekTo(time), 250); - else if (!mChannel.isOnly()) nextLine(true); - mKeyDown.resetTime(); + if (!mPlayers.isVod()) nextLine(true); + else App.post(() -> seekTo(time), 250); } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 662e3f7e6..ae856add9 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -319,7 +319,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List protected void initView() { mKeyDown = CustomKeyDownVod.create(this, mBinding.video); mFrameParams = mBinding.video.getLayoutParams(); - mClock = Clock.create(mBinding.display.time); + mClock = Clock.create(mBinding.display.clock); mDanmakuContext = DanmakuContext.create(); mPlayers = new Players().init(this); mBroken = new ArrayList<>(); @@ -784,7 +784,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List } private void showDisplayInfo() { - mBinding.display.time.setVisibility(Setting.isDisplayTime() || isVisible(mBinding.widget.info) ? View.VISIBLE : View.GONE); + mBinding.display.clock.setVisibility(Setting.isDisplayTime() || isVisible(mBinding.widget.info) ? View.VISIBLE : View.GONE); mBinding.display.netspeed.setVisibility(Setting.isDisplaySpeed() && !isVisible(mBinding.control.getRoot()) ? View.VISIBLE : View.GONE); mBinding.display.duration.setVisibility(Setting.isDisplayDuration() && !isVisible(mBinding.control.getRoot()) ? View.VISIBLE : View.GONE); mBinding.display.progress.setVisibility(Setting.isDisplayMiniProgress() && !isVisible(mBinding.control.getRoot()) && (mPlayers.getDuration() > 60000) ? View.VISIBLE : View.GONE); @@ -1666,8 +1666,8 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List @Override public void onSeekTo(int time) { - mKeyDown.resetTime(); mPlayers.seekTo(time); + mKeyDown.resetTime(); showProgress(); onPlay(); } diff --git a/app/src/leanback/res/layout/activity_home.xml b/app/src/leanback/res/layout/activity_home.xml index 54c6af5df..1dc533755 100644 --- a/app/src/leanback/res/layout/activity_home.xml +++ b/app/src/leanback/res/layout/activity_home.xml @@ -71,7 +71,7 @@ android:layout_weight="1" android:orientation="vertical">