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;