From eb5dbbbb655aa18f31afebb478aaf3e4ff6c88f9 Mon Sep 17 00:00:00 2001 From: okjack Date: Sat, 1 Jun 2024 19:31:24 +0800 Subject: [PATCH 1/3] [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"> Date: Sat, 1 Jun 2024 19:40:07 +0800 Subject: [PATCH 2/3] [mobile] live support speed and seek --- .../com/fongmi/android/tv/bean/Catchup.java | 1 + .../java/com/fongmi/android/tv/bean/Epg.java | 5 ++ .../android/tv/ui/activity/LiveActivity.java | 67 +++++++++++++------ .../android/tv/ui/activity/VideoActivity.java | 6 +- .../tv/ui/custom/CustomKeyDownLive.java | 31 +++++++++ .../android/tv/ui/dialog/ControlDialog.java | 2 +- .../mobile/res/layout/view_widget_display.xml | 2 +- .../mobile/res/layout/view_widget_live.xml | 40 ++++++++++- 8 files changed, 127 insertions(+), 27 deletions(-) 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 0cf0aa83e..46cfb4d55 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 @@ -159,7 +159,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom @Override protected void initView(Bundle savedInstanceState) { mKeyDown = CustomKeyDownLive.create(this, mBinding.video); - mClock = Clock.create(Arrays.asList(mBinding.widget.time, mBinding.display.time)); + mClock = Clock.create(Arrays.asList(mBinding.widget.clock, mBinding.display.clock)); setPadding(mBinding.control.getRoot()); setPadding(mBinding.widget.epg, true); setPadding(mBinding.recycler, true); @@ -551,7 +551,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom private void showDisplayInfo() { boolean controlVisible = isVisible(mBinding.control.getRoot()) || isVisible(mBinding.widget.info); boolean visible = (!controlVisible && !isLock()); - 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); } @@ -827,7 +827,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom if (isVisible(mBinding.control.getRoot())) showControl(); break; case Player.STATE_ENDED: - nextEpg(); + checkNext(); break; } } @@ -934,33 +934,29 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom 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(); } 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(); fetch(); } - private void seekTo() { - mPlayers.seekTo(Constant.INTERVAL_SEEK * 3); - showProgress(); - } - private void onPaused() { checkPlayImg(false); mPlayers.pause(); @@ -1036,6 +1032,21 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom public void onCasted() { } + @Override + public void onSpeedUp() { + if (!mPlayers.isVod() || !mPlayers.isPlaying() || !mPlayers.canAdjustSpeed()) return; + mBinding.control.action.speed.setText(mPlayers.setSpeed(mPlayers.getSpeed() < 3 ? 3 : 5)); + mBinding.widget.speed.startAnimation(ResUtil.getAnim(R.anim.forward)); + mBinding.widget.speed.setVisibility(View.VISIBLE); + } + + @Override + public void onSpeedEnd() { + mBinding.control.action.speed.setText(mPlayers.setSpeed(1.0f)); + mBinding.widget.speed.setVisibility(View.GONE); + mBinding.widget.speed.clearAnimation(); + } + @Override public void onBright(int progress) { mBinding.widget.bright.setVisibility(View.VISIBLE); @@ -1066,26 +1077,40 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom @Override public void onFlingUp() { - prevChannel(); + if (!mPlayers.isVod()) prevChannel(); } @Override public void onFlingDown() { - nextChannel(); + if (!mPlayers.isVod()) nextChannel(); } @Override public void onFlingLeft() { - if (mChannel == null) return; - if (mChannel.isOnly() && mPlayers.isVod()) App.post(this::seekTo, 250); - else if (!mChannel.isOnly()) prevLine(); + if (!mPlayers.isVod()) prevLine(); } @Override public void onFlingRight() { - if (mChannel == null) return; - if (mChannel.isOnly() && mPlayers.isVod()) App.post(this::seekTo, 250); - else if (!mChannel.isOnly()) nextLine(true); + if (!mPlayers.isVod()) nextLine(true); + } + + @Override + public void onSeek(int time) { + if (!mPlayers.isVod()) return; + mBinding.widget.action.setImageResource(time > 0 ? R.drawable.ic_widget_forward : R.drawable.ic_widget_rewind); + mBinding.widget.time.setText(mPlayers.getPositionTime(time)); + mBinding.widget.seek.setVisibility(View.VISIBLE); + hideProgress(); + } + + @Override + public void onSeekEnd(int time) { + if (!mPlayers.isVod()) return; + mBinding.widget.seek.setVisibility(View.GONE); + mPlayers.seekTo(time); + showProgress(); + onPlay(); } @Override diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 80abf5af3..7adb95db6 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -311,7 +311,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mObserveSearch = this::setSearch; mDialogs = new ArrayList<>(); mBroken = new ArrayList<>(); - mClock = Clock.create(Arrays.asList(mBinding.display.time, mBinding.control.time)); + mClock = Clock.create(Arrays.asList(mBinding.display.clock, mBinding.control.time)); mR0 = this::stopService; mR1 = this::hideControl; mR2 = this::setTraffic; @@ -939,7 +939,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && isInPictureInPictureMode()) pictureMode = true; boolean controlVisible = isVisible(mBinding.control.getRoot()); boolean visible = (!controlVisible || isLock()) && !pictureMode; - 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(Setting.isDisplayDuration() && visible ? View.VISIBLE : View.GONE); mBinding.display.progress.setVisibility(Setting.isDisplayMiniProgress() && visible && (mPlayers.getDuration() > 60000) ? View.VISIBLE : View.GONE); @@ -1645,8 +1645,8 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo @Override public void onSeek(int time) { mBinding.widget.action.setImageResource(time > 0 ? R.drawable.ic_widget_forward : R.drawable.ic_widget_rewind); - mBinding.widget.seek.setVisibility(View.VISIBLE); mBinding.widget.time.setText(mPlayers.getPositionTime(time)); + mBinding.widget.seek.setVisibility(View.VISIBLE); hideProgress(); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomKeyDownLive.java b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomKeyDownLive.java index 604b3c7ee..fe473112e 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomKeyDownLive.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomKeyDownLive.java @@ -26,11 +26,14 @@ public class CustomKeyDownLive extends GestureDetector.SimpleOnGestureListener { private final View videoView; private boolean changeBright; private boolean changeVolume; + private boolean changeSpeed; + private boolean changeTime; private boolean center; private boolean touch; private boolean lock; private float bright; private float volume; + private int time; public static CustomKeyDownLive create(Activity activity, View videoView) { return new CustomKeyDownLive(activity, videoView); @@ -45,6 +48,8 @@ public class CustomKeyDownLive extends GestureDetector.SimpleOnGestureListener { } public boolean onTouchEvent(MotionEvent e) { + if (changeTime && e.getAction() == MotionEvent.ACTION_UP) onSeekEnd(); + if (changeSpeed && e.getAction() == MotionEvent.ACTION_UP) listener.onSpeedEnd(); if (changeBright && e.getAction() == MotionEvent.ACTION_UP) listener.onBrightEnd(); if (changeVolume && e.getAction() == MotionEvent.ACTION_UP) listener.onVolumeEnd(); return e.getPointerCount() == 1 && detector.onTouchEvent(e); @@ -65,16 +70,27 @@ public class CustomKeyDownLive extends GestureDetector.SimpleOnGestureListener { bright = Util.getBrightness(activity); changeBright = false; changeVolume = false; + changeSpeed = false; + changeTime = false; center = false; touch = true; return true; } + @Override + public void onLongPress(@NonNull MotionEvent e) { + if (isEdge(e) || lock) return; + changeSpeed = true; + listener.onSpeedUp(); + } + @Override public boolean onScroll(@NonNull MotionEvent e1, @NonNull MotionEvent e2, float distanceX, float distanceY) { if (isEdge(e1) || lock) return true; + float deltaX = e2.getX() - e1.getX(); float deltaY = e1.getY() - e2.getY(); if (touch) checkFunc(distanceX, distanceY, e2); + if (changeTime) listener.onSeek(time = (int) deltaX * 50); if (changeBright) setBright(deltaY); if (changeVolume) setVolume(deltaY); return true; @@ -101,10 +117,17 @@ public class CustomKeyDownLive extends GestureDetector.SimpleOnGestureListener { return true; } + private void onSeekEnd() { + listener.onSeekEnd(time); + changeTime = false; + time = 0; + } + private void checkFunc(float distanceX, float distanceY, MotionEvent e2) { int four = ResUtil.getScreenWidthNav() / 4; if (e2.getX() > four && e2.getX() < four * 3) center = true; else if (Math.abs(distanceX) < Math.abs(distanceY)) checkSide(e2); + if (Math.abs(distanceX) >= Math.abs(distanceY)) changeTime = true; touch = false; } @@ -153,6 +176,10 @@ public class CustomKeyDownLive extends GestureDetector.SimpleOnGestureListener { public interface Listener { + void onSpeedUp(); + + void onSpeedEnd(); + void onBright(int progress); void onBrightEnd(); @@ -169,6 +196,10 @@ public class CustomKeyDownLive extends GestureDetector.SimpleOnGestureListener { void onFlingRight(); + void onSeek(int time); + + void onSeekEnd(int time); + void onSingleTap(); void onDoubleTap(); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java index a39a24f44..7f4291a8a 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java @@ -129,7 +129,7 @@ public class ControlDialog extends BaseDialog implements ParseAdapter.OnClickLis private void displayTime() { boolean display = Setting.isDisplayTime(); - parent.display.time.setVisibility(!display ? View.VISIBLE : View.GONE); + parent.display.clock.setVisibility(!display ? View.VISIBLE : View.GONE); Setting.putDisplayTime(!display); binding.dptime.setActivated(!display); } diff --git a/app/src/mobile/res/layout/view_widget_display.xml b/app/src/mobile/res/layout/view_widget_display.xml index da856e54f..06b503fde 100644 --- a/app/src/mobile/res/layout/view_widget_display.xml +++ b/app/src/mobile/res/layout/view_widget_display.xml @@ -5,7 +5,7 @@ android:layout_height="match_parent"> + + + + + + + + + + Date: Sat, 1 Jun 2024 19:49:30 +0800 Subject: [PATCH 3/3] Update gradle --- app/build.gradle | 6 +++++- app/proguard-rules.pro | 12 +++++++++++- build.gradle | 10 +++++----- catvod/build.gradle | 2 ++ forcetech/build.gradle | 2 ++ gradle.properties | 8 ++++---- gradle/wrapper/gradle-wrapper.properties | 2 +- hook/build.gradle | 2 ++ ijkplayer/build.gradle | 2 ++ jianpian/build.gradle | 2 ++ pyramid/build.gradle | 2 ++ quickjs/build.gradle | 2 ++ thunder/build.gradle | 2 ++ thunder/src/main/AndroidManifest.xml | 1 + tvbus/build.gradle | 2 ++ youtube/build.gradle | 2 ++ 16 files changed, 47 insertions(+), 12 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e6e909126..ad9bfce0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,12 +3,15 @@ plugins { } android { + namespace 'com.fongmi.android.tv' + compileSdk 34 flavorDimensions = ["mode", "api", "abi"] defaultConfig { applicationId "com.fongmi.android.tv" minSdk 21 + //noinspection ExpiredTargetSdkVersion targetSdk 28 versionCode 235 versionName "0601" @@ -47,6 +50,7 @@ android { } buildFeatures { + buildConfig true viewBinding true } @@ -115,7 +119,6 @@ dependencies { implementation project(':media-lib-ui') implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.biometric:biometric:1.1.0' - implementation 'androidx.lifecycle:lifecycle-viewmodel:2.7.0' implementation 'androidx.room:room-runtime:2.6.1' implementation 'androidx.media:media:1.7.0' implementation 'cat.ereza:customactivityoncrash:2.4.0' @@ -134,6 +137,7 @@ dependencies { implementation 'com.hierynomus:smbj:0.13.0' implementation 'com.tencent.tbs:tbssdk:44286' implementation 'com.github.YarikSOffice:lingver:1.3.0' + implementation 'javax.servlet:javax.servlet-api:3.1.0' implementation 'org.chromium.net:cronet-embedded:76.3809.111' implementation 'org.eclipse.jetty:jetty-client:8.1.21.v20160908' implementation 'org.eclipse.jetty:jetty-server:8.1.21.v20160908' diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index df6ca28be..52592a5e8 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -34,13 +34,23 @@ # Cling -keep class org.fourthline.cling.** { *; } -keep class javax.xml.** { *; } +-dontwarn org.ietf.jgss.** +-dontwarn com.sun.net.** +-dontwarn sun.net.** +-dontwarn java.awt.** +-dontwarn javax.** # Cronet -keep class org.chromium.net.** { *; } -keep class com.google.net.cronet.** { *; } # EXO --keep class org.xmlpull.v1.** { *; } +-dontwarn org.xmlpull.v1.** +-dontwarn org.kxml2.io.** +-dontwarn android.content.res.** +-dontwarn org.slf4j.impl.StaticLoggerBinder +-keep class org.xmlpull.** { *; } +-keepclassmembers class org.xmlpull.** { *; } -keep class androidx.media3.** { *; } # IJK diff --git a/build.gradle b/build.gradle index a70c26ddb..793442f38 100644 --- a/build.gradle +++ b/build.gradle @@ -1,16 +1,16 @@ plugins { - id 'org.jetbrains.kotlin.android' version '1.8.20' apply false - id 'com.android.application' version '7.2.2' apply false - id 'com.android.library' version '7.2.2' apply false + id 'org.jetbrains.kotlin.android' version '1.9.0' apply false + id 'com.android.application' version '8.0.1' apply false + id 'com.android.library' version '8.0.1' apply false id 'com.chaquo.python' version '14.0.2' apply false } tasks.register('clean', Delete) { - delete rootProject.buildDir + delete rootProject.layout.buildDirectory } project.ext { - gsonVersion = '2.10.1' + gsonVersion = '2.11.0' jsoupVersion = '1.15.3' okhttpVersion = '4.12.0' annotationVersion = '1.3.0' diff --git a/catvod/build.gradle b/catvod/build.gradle index 42dbf91b3..dd9cc64d9 100644 --- a/catvod/build.gradle +++ b/catvod/build.gradle @@ -3,6 +3,8 @@ plugins { } android { + namespace 'com.github.catvod.crawler' + compileSdk 34 defaultConfig { diff --git a/forcetech/build.gradle b/forcetech/build.gradle index 7f685900b..fbef9b928 100644 --- a/forcetech/build.gradle +++ b/forcetech/build.gradle @@ -3,6 +3,8 @@ plugins { } android { + namespace 'com.forcetech' + compileSdk 34 defaultConfig { diff --git a/gradle.properties b/gradle.properties index 3129f3f7a..49ee7fd76 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,13 +6,11 @@ # http://www.gradle.org/docs/current/userguide/build_environment.html # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -org.gradle.daemon=true -org.gradle.parallel=true org.gradle.jvmargs=-Xmx4096m -Dfile.encoding=UTF-8 # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true +org.gradle.parallel=true # AndroidX package structure to make it clearer which packages are bundled with the # Android operating system, and which are packaged with your app"s APK # https://developer.android.com/topic/libraries/support-library/androidx-rn @@ -21,4 +19,6 @@ android.enableJetifier=true # Enables namespacing of each library's R class so that its R class includes only the # resources declared in the library itself and none from the library's dependencies, # thereby reducing the size of the R class for that library -android.nonTransitiveRClass=true \ No newline at end of file +android.useFullClasspathForDexingTransform=true +android.nonTransitiveRClass=true +android.nonFinalResIds=false \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cbb33c1d4..f99022d23 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Wed Mar 29 12:54:35 CST 2023 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/hook/build.gradle b/hook/build.gradle index 1848250c1..14e3ccbac 100644 --- a/hook/build.gradle +++ b/hook/build.gradle @@ -3,6 +3,8 @@ plugins { } android { + namespace 'com.fongmi.hook' + compileSdk 34 defaultConfig { diff --git a/ijkplayer/build.gradle b/ijkplayer/build.gradle index 2d5929478..9124b4210 100644 --- a/ijkplayer/build.gradle +++ b/ijkplayer/build.gradle @@ -3,6 +3,8 @@ plugins { } android { + namespace 'tv.danmaku.ijk.media.player' + compileSdk 34 defaultConfig { diff --git a/jianpian/build.gradle b/jianpian/build.gradle index b9833212c..9dd61fd8f 100644 --- a/jianpian/build.gradle +++ b/jianpian/build.gradle @@ -3,6 +3,8 @@ plugins { } android { + namespace 'com.p2p' + compileSdk 34 defaultConfig { diff --git a/pyramid/build.gradle b/pyramid/build.gradle index dc864170a..117e6156d 100644 --- a/pyramid/build.gradle +++ b/pyramid/build.gradle @@ -4,6 +4,8 @@ plugins { } android { + namespace 'com.undcover.freedom.pyramid' + compileSdk 34 flavorDimensions = ["abi"] diff --git a/quickjs/build.gradle b/quickjs/build.gradle index 1097e0aa5..dd3a95737 100644 --- a/quickjs/build.gradle +++ b/quickjs/build.gradle @@ -3,6 +3,8 @@ plugins { } android { + namespace 'com.fongmi.android.tv.quickjs' + compileSdk 34 defaultConfig { diff --git a/thunder/build.gradle b/thunder/build.gradle index b9833212c..034004d3a 100644 --- a/thunder/build.gradle +++ b/thunder/build.gradle @@ -3,6 +3,8 @@ plugins { } android { + namespace 'com.ghost.thunder' + compileSdk 34 defaultConfig { diff --git a/thunder/src/main/AndroidManifest.xml b/thunder/src/main/AndroidManifest.xml index 658513ac3..f5a5cae6c 100644 --- a/thunder/src/main/AndroidManifest.xml +++ b/thunder/src/main/AndroidManifest.xml @@ -1 +1,2 @@ + diff --git a/tvbus/build.gradle b/tvbus/build.gradle index 7f685900b..1d86f69da 100644 --- a/tvbus/build.gradle +++ b/tvbus/build.gradle @@ -3,6 +3,8 @@ plugins { } android { + namespace 'com.tvbus.engine' + compileSdk 34 defaultConfig { diff --git a/youtube/build.gradle b/youtube/build.gradle index 1cc4b7c29..7a45fccbe 100644 --- a/youtube/build.gradle +++ b/youtube/build.gradle @@ -3,6 +3,8 @@ plugins { } android { + namespace 'com.github.kiulian.downloader' + compileSdk 34 defaultConfig {