diff --git a/app/build.gradle b/app/build.gradle index 1e00bee16..95691ade9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,7 +11,7 @@ android { minSdk 21 targetSdk 28 versionCode 233 - versionName "2.3.3" + versionName "0502" javaCompileOptions { annotationProcessorOptions { arguments = ["room.schemaLocation": "$projectDir/schemas".toString()] @@ -124,7 +124,7 @@ dependencies { implementation 'com.github.bumptech.glide:okhttp3-integration:4.16.0' implementation 'com.github.ctiao:DanmakuFlameMaster:0.9.25' implementation 'com.github.jahirfiquitiva:TextDrawable:1.0.3' - implementation('com.github.TeamNewPipe:NewPipeExtractor:v0.23.1') { exclude group: 'org.jsoup', module: 'jsoup' } + implementation('com.github.teamnewpipe:NewPipeExtractor:v0.23.1') { exclude group: 'org.jsoup', module: 'jsoup' } implementation 'com.github.thegrizzlylabs:sardine-android:0.9' implementation 'com.google.android.material:material:1.11.0' implementation 'com.google.net.cronet:cronet-okhttp:0.1.0' 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 109c28f17..8797569f2 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 @@ -145,7 +145,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List private boolean initAuto; private boolean autoMode; private boolean useParse; - private int currentFlag; private int toggleCount; private int groupSize; private Runnable mR1; @@ -250,13 +249,18 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List } private Flag getFlag() { - return (Flag) mFlagAdapter.get(mBinding.flag.getSelectedPosition()); + return (Flag) mFlagAdapter.get(getFlagPosition()); } private Episode getEpisode() { return (Episode) mEpisodeAdapter.get(getEpisodePosition()); } + private int getFlagPosition() { + for (int i = 0; i < mFlagAdapter.size(); i++) if (((Flag) mFlagAdapter.get(i)).isActivated()) return i; + return 0; + } + private int getEpisodePosition() { for (int i = 0; i < mEpisodeAdapter.size(); i++) if (((Episode) mEpisodeAdapter.get(i)).isActivated()) return i; return 0; @@ -699,13 +703,12 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List } public void setEpisodeActivated(Episode item) { + int flagPosition = getFlagPosition(); if (shouldEnterFullscreen(item)) return; - setCurrentFlag(mBinding.flag.getSelectedPosition()); - for (int i = 0; i < mFlagAdapter.size(); i++) ((Flag) mFlagAdapter.get(i)).toggle(getCurrentFlag() == i, item); + if (isFullscreen()) Notify.show(getString(R.string.play_ready, item.getName())); + for (int i = 0; i < mFlagAdapter.size(); i++) ((Flag) mFlagAdapter.get(i)).toggle(flagPosition == i, item); setEpisodeSelectedPosition(getEpisodePosition()); notifyItemChanged(getEpisodeView(), mEpisodeAdapter); - if (mEpisodeAdapter.size() == 0) return; - if (isFullscreen()) Notify.show(getString(R.string.play_ready, item.getName())); onRefresh(); } @@ -824,7 +827,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List mBinding.video.requestFocus(); mBinding.video.setForeground(null); mBinding.video.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)); - mBinding.flag.setSelectedPosition(getCurrentFlag()); + mBinding.flag.setSelectedPosition(getFlagPosition()); mDanmakuContext.setScaleTextSize(1.2f * Setting.getDanmuSize()); setSubtitle(Setting.getSubtitle()); mKeyDown.setFull(true); @@ -1431,7 +1434,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List } private void checkFlag() { - int position = isGone(mBinding.flag) ? -1 : mBinding.flag.getSelectedPosition(); + int position = isGone(mBinding.flag) ? -1 : getFlagPosition(); if (position == mFlagAdapter.size() - 1) checkSearch(false); else nextFlag(position); } @@ -1582,14 +1585,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List this.useParse = useParse; } - public int getCurrentFlag() { - return currentFlag; - } - - public void setCurrentFlag(int currentFlag) { - this.currentFlag = currentFlag; - } - public int getToggleCount() { return toggleCount; } diff --git a/app/src/leanback/res/layout/adapter_type.xml b/app/src/leanback/res/layout/adapter_type.xml index 3d796fae6..bcc8f5848 100644 --- a/app/src/leanback/res/layout/adapter_type.xml +++ b/app/src/leanback/res/layout/adapter_type.xml @@ -9,5 +9,5 @@ android:focusableInTouchMode="true" android:gravity="center" android:textColor="@color/white" - android:textSize="18sp" + android:textSize="16sp" tools:text="電影" /> \ No newline at end of file diff --git a/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java b/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java index f0ab70358..758ccc384 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java @@ -14,7 +14,6 @@ import com.tencent.smtt.export.external.interfaces.SslError; import com.tencent.smtt.export.external.interfaces.SslErrorHandler; import com.tencent.smtt.export.external.interfaces.WebResourceRequest; import com.tencent.smtt.export.external.interfaces.WebResourceResponse; -import com.tencent.smtt.sdk.CookieManager; import com.tencent.smtt.sdk.QbSdk; import com.tencent.smtt.sdk.WebChromeClient; import com.tencent.smtt.sdk.WebView; diff --git a/app/src/main/java/com/fongmi/android/tv/utils/Util.java b/app/src/main/java/com/fongmi/android/tv/utils/Util.java index fcba1a90c..bb6f81973 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/Util.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/Util.java @@ -10,6 +10,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Configuration; +import android.os.BatteryManager; import android.os.Build; import android.os.IBinder; import android.os.Parcelable; @@ -180,4 +181,9 @@ public class Util { return false; } + public static int batteryLevel() { + BatteryManager batteryManager = (BatteryManager) App.get().getSystemService(Context.BATTERY_SERVICE); + return batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY); + } + } 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 41092c9b2..3f2ed76f9 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 @@ -107,6 +107,7 @@ import org.greenrobot.eventbus.ThreadMode; import java.io.File; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -310,7 +311,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mObserveSearch = this::setSearch; mDialogs = new ArrayList<>(); mBroken = new ArrayList<>(); - mClock = Clock.create(mBinding.display.time); + mClock = Clock.create(Arrays.asList(mBinding.display.time, mBinding.control.time)); mR0 = this::stopService; mR1 = this::hideControl; mR2 = this::setTraffic; @@ -1029,6 +1030,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mBinding.control.danmu.setVisibility(isLock() || !mBinding.danmaku.isPrepared() ? View.GONE : View.VISIBLE); mBinding.control.danmuSetting.setVisibility(isLock() || !Setting.isDanmuLoad() || !isVisible(mBinding.danmaku) ? View.GONE : View.VISIBLE); mBinding.control.setting.setVisibility(mHistory == null || isFullscreen() ? View.GONE : View.VISIBLE); + mBinding.control.batteryInfo.setVisibility(isFullscreen() ? View.VISIBLE : View.GONE); mBinding.control.right.rotate.setVisibility(isFullscreen() && !isLock() ? View.VISIBLE : View.GONE); mBinding.control.keep.setVisibility(mHistory == null ? View.GONE : View.VISIBLE); mBinding.control.right.back.setVisibility(isFullscreen() && !isLock() ? View.VISIBLE : View.GONE); @@ -1043,6 +1045,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mBinding.control.getRoot().setVisibility(View.VISIBLE); showDisplayInfo(); checkPlayImg(mPlayers.isPlaying()); + checkBatteryImg(); setR1Callback(); } @@ -1173,6 +1176,16 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mBinding.control.danmu.setImageResource(Setting.isDanmu() ? R.drawable.ic_control_danmu_on : R.drawable.ic_control_danmu_off); } + private void checkBatteryImg() { + int batteryLevel = Util.batteryLevel(); + int resId = R.drawable.ic_battery_00; + if (batteryLevel >= 90) resId = R.drawable.ic_battery_full; + else if (batteryLevel >= 60) resId = R.drawable.ic_battery_75; + else if (batteryLevel >= 40) resId = R.drawable.ic_battery_50; + else if (batteryLevel >= 10) resId = R.drawable.ic_battery_25; + mBinding.control.battery.setImageResource(resId); + } + private void createKeep() { Keep keep = new Keep(); keep.setKey(getHistoryKey()); diff --git a/app/src/mobile/res/drawable/ic_battery_00.xml b/app/src/mobile/res/drawable/ic_battery_00.xml new file mode 100644 index 000000000..9cb1ef3a5 --- /dev/null +++ b/app/src/mobile/res/drawable/ic_battery_00.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/app/src/mobile/res/drawable/ic_battery_25.xml b/app/src/mobile/res/drawable/ic_battery_25.xml new file mode 100644 index 000000000..8490e2603 --- /dev/null +++ b/app/src/mobile/res/drawable/ic_battery_25.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/mobile/res/drawable/ic_battery_50.xml b/app/src/mobile/res/drawable/ic_battery_50.xml new file mode 100644 index 000000000..13bc71137 --- /dev/null +++ b/app/src/mobile/res/drawable/ic_battery_50.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/mobile/res/drawable/ic_battery_75.xml b/app/src/mobile/res/drawable/ic_battery_75.xml new file mode 100644 index 000000000..06ebe8156 --- /dev/null +++ b/app/src/mobile/res/drawable/ic_battery_75.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/mobile/res/drawable/ic_battery_full.xml b/app/src/mobile/res/drawable/ic_battery_full.xml new file mode 100644 index 000000000..b05185351 --- /dev/null +++ b/app/src/mobile/res/drawable/ic_battery_full.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/mobile/res/layout/view_control_vod.xml b/app/src/mobile/res/layout/view_control_vod.xml index 29db0a64f..9b1180c3f 100644 --- a/app/src/mobile/res/layout/view_control_vod.xml +++ b/app/src/mobile/res/layout/view_control_vod.xml @@ -79,6 +79,37 @@ android:padding="8dp" android:src="@drawable/ic_control_setting" /> + + + + + + + + + diff --git a/catvod/build.gradle b/catvod/build.gradle index 8d26bb222..e60588173 100644 --- a/catvod/build.gradle +++ b/catvod/build.gradle @@ -20,4 +20,5 @@ dependencies { api 'com.squareup.okhttp3:okhttp:' + okhttpVersion api 'com.squareup.okhttp3:okhttp-dnsoverhttps:' + okhttpVersion api 'org.nanohttpd:nanohttpd:2.3.1' + api 'com.tencent.tbs:tbssdk:44286' } \ No newline at end of file diff --git a/catvod/src/main/java/com/github/catvod/net/OkCookieJar.java b/catvod/src/main/java/com/github/catvod/net/OkCookieJar.java index 48451aa0e..5c4e51944 100644 --- a/catvod/src/main/java/com/github/catvod/net/OkCookieJar.java +++ b/catvod/src/main/java/com/github/catvod/net/OkCookieJar.java @@ -1,8 +1,8 @@ package com.github.catvod.net; import android.text.TextUtils; -import android.webkit.CookieManager; -import android.webkit.WebView; +import com.tencent.smtt.sdk.CookieManager; +import com.tencent.smtt.sdk.WebView; import androidx.annotation.NonNull;