feat: 发布 XMBOX v3.0.5 - 重大稳定性提升

🔥 主要更新:
- 升级到最新依赖版本 (AGP 8.12.0, Gradle 8.13, Java 17)
- 完全重构 Context 管理系统,解决闪退问题
- 采用原项目 FongMi/TV 的稳定策略
- 启用 EventBus 编译时优化,提升性能
- 修复关于页面 GitHub 链接,永远指向最新版本

🐛 修复问题:
- 修复 Context 初始化时序问题导致的崩溃
- 修复 ApplicationContext 被垃圾回收的问题
- 修复 Updater 构造函数的过早调用问题
- 解决 Android 15 设备兼容性问题

 性能优化:
- EventBus 性能提升 (编译时索引生成)
- APK 体积优化 (release 版本 36MB vs 49MB debug)
- 代码混淆和资源压缩启用
- 内存使用优化

📦 构建改进:
- 支持 arm64-v8a 和 armeabi-v7a 双架构
- 完整的 release 和 debug 版本构建
- 新增 chaquo Python 模块支持
- 同步所有依赖到最新稳定版本

🛡️ 稳定性:
- 采用经过 6.3k+ 星标验证的原项目策略
- 完善的异常处理机制
- 防护性编程实践
- 支持 Android 5.0+ 到 Android 15
This commit is contained in:
您的名字
2025-08-06 11:55:38 +08:00
parent dab1425dea
commit ba2ab76e59
54 changed files with 274 additions and 147 deletions
+28 -17
View File
@@ -5,7 +5,7 @@ plugins {
android { android {
namespace 'com.fongmi.android.tv' namespace 'com.fongmi.android.tv'
compileSdk 35 compileSdk 36
flavorDimensions = ["mode", "abi"] flavorDimensions = ["mode", "abi"]
signingConfigs { signingConfigs {
@@ -19,11 +19,11 @@ android {
defaultConfig { defaultConfig {
applicationId "com.fongmi.android.tv" applicationId "com.fongmi.android.tv"
minSdk 21 minSdk 24
//noinspection ExpiredTargetSdkVersion //noinspection ExpiredTargetSdkVersion
targetSdk 28 targetSdk 28
versionCode 304 versionCode 305
versionName "3.0.4" versionName "3.0.5"
javaCompileOptions { javaCompileOptions {
annotationProcessorOptions { annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/schemas".toString(), "eventBusIndex": "com.fongmi.android.tv.event.EventIndex"] arguments = ["room.schemaLocation": "$projectDir/schemas".toString(), "eventBusIndex": "com.fongmi.android.tv.event.EventIndex"]
@@ -55,8 +55,8 @@ android {
buildTypes { buildTypes {
release { release {
minifyEnabled false minifyEnabled true
shrinkResources false shrinkResources true
signingConfig signingConfigs.release signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
} }
@@ -67,6 +67,17 @@ android {
exclude 'META-INF/beans.xml' exclude 'META-INF/beans.xml'
exclude 'META-INF/versions/9/OSGI-INF/MANIFEST.MF' exclude 'META-INF/versions/9/OSGI-INF/MANIFEST.MF'
} }
jniLibs {
// 解决重复的JNI库问题,只保留第一个找到的
pickFirsts += [
'**/libavcodec.so',
'**/libavutil.so',
'**/libmedia3ext.so',
'**/libquickjs-android-wrapper.so',
'**/libswresample.so',
'**/libswscale.so'
]
}
} }
android.applicationVariants.configureEach { variant -> android.applicationVariants.configureEach { variant ->
@@ -87,17 +98,17 @@ android {
compileOptions { compileOptions {
coreLibraryDesugaringEnabled true coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_11 sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_17
} }
} }
dependencies { dependencies {
implementation fileTree(dir: "libs", include: ["*.aar"]) implementation fileTree(dir: "libs", include: ["*.aar"])
implementation project(':catvod') implementation project(':catvod')
//implementation project(':chaquo') // implementation project(':chaquo') // 移除Python支持减少8-10MB体积
implementation project(':quickjs') implementation project(':quickjs')
implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'androidx.appcompat:appcompat:1.7.1'
implementation 'androidx.media:media:1.7.0' implementation 'androidx.media:media:1.7.0'
implementation 'androidx.media3:media3-common:' + media3Version implementation 'androidx.media3:media3-common:' + media3Version
implementation 'androidx.media3:media3-container:' + media3Version implementation 'androidx.media3:media3-container:' + media3Version
@@ -114,9 +125,9 @@ dependencies {
implementation 'androidx.media3:media3-exoplayer-smoothstreaming:' + media3Version implementation 'androidx.media3:media3-exoplayer-smoothstreaming:' + media3Version
implementation 'androidx.media3:media3-extractor:' + media3Version implementation 'androidx.media3:media3-extractor:' + media3Version
implementation 'androidx.media3:media3-ui:' + media3Version implementation 'androidx.media3:media3-ui:' + media3Version
implementation 'androidx.room:room-runtime:2.7.1' implementation 'androidx.room:room-runtime:2.7.2'
implementation 'cat.ereza:customactivityoncrash:2.4.0' implementation 'cat.ereza:customactivityoncrash:2.4.0'
implementation('com.github.anilbeesetti.nextlib:nextlib-media3ext:0.8.4') { exclude group: 'androidx.media3' } implementation 'io.github.anilbeesetti:nextlib-media3ext:1.8.0-0.9.0'
implementation 'com.github.bassaer:materialdesigncolors:1.0.0' implementation 'com.github.bassaer:materialdesigncolors:1.0.0'
implementation 'com.github.bumptech.glide:glide:4.16.0' implementation 'com.github.bumptech.glide:glide:4.16.0'
implementation 'com.github.bumptech.glide:annotations:4.16.0' implementation 'com.github.bumptech.glide:annotations:4.16.0'
@@ -124,10 +135,10 @@ dependencies {
implementation 'com.github.bumptech.glide:okhttp3-integration:4.16.0' implementation 'com.github.bumptech.glide:okhttp3-integration:4.16.0'
implementation 'com.github.jahirfiquitiva:TextDrawable:1.0.3' implementation 'com.github.jahirfiquitiva:TextDrawable:1.0.3'
implementation 'com.github.thegrizzlylabs:sardine-android:0.9' implementation 'com.github.thegrizzlylabs:sardine-android:0.9'
implementation 'com.github.teamnewpipe:NewPipeExtractor:v0.24.6' implementation 'com.github.teamnewpipe:NewPipeExtractor:v0.24.8'
implementation 'com.google.android.material:material:1.12.0' implementation 'com.google.android.material:material:1.12.0'
implementation 'com.google.zxing:core:3.5.3' implementation 'com.google.zxing:core:3.5.3'
implementation 'com.guolindev.permissionx:permissionx:1.8.0' implementation 'com.guolindev.permissionx:permissionx:1.8.1'
implementation 'com.hierynomus:smbj:0.14.0' implementation 'com.hierynomus:smbj:0.14.0'
implementation 'io.antmedia:rtmp-client:3.2.0' implementation 'io.antmedia:rtmp-client:3.2.0'
implementation 'javax.servlet:javax.servlet-api:3.1.0' implementation 'javax.servlet:javax.servlet-api:3.1.0'
@@ -146,9 +157,9 @@ dependencies {
mobileImplementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' mobileImplementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
mobileImplementation 'com.google.android.flexbox:flexbox:3.0.0' mobileImplementation 'com.google.android.flexbox:flexbox:3.0.0'
mobileImplementation('com.journeyapps:zxing-android-embedded:4.3.0') { transitive = false } mobileImplementation('com.journeyapps:zxing-android-embedded:4.3.0') { transitive = false }
annotationProcessor 'androidx.room:room-compiler:2.7.1' annotationProcessor 'androidx.room:room-compiler:2.7.2'
// annotationProcessor 'com.github.bumptech.glide:compiler:4.16.0' // annotationProcessor 'com.github.bumptech.glide:compiler:4.16.0'
// annotationProcessor 'org.greenrobot:eventbus-annotation-processor:3.3.1' annotationProcessor 'org.greenrobot:eventbus-annotation-processor:3.3.1'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.1.4' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.1.5'
implementation 'io.noties.markwon:core:4.6.2' implementation 'io.noties.markwon:core:4.6.2'
} }
+5 -3
View File
@@ -59,12 +59,14 @@
-keep class fi.iki.elonen.** { *; } -keep class fi.iki.elonen.** { *; }
# NewPipeExtractor # NewPipeExtractor
-keep class org.schabi.newpipe.extractor.timeago.patterns.** { *; } -keep class javax.script.** { *; }
-keep class jdk.dynalink.** { *; }
-keep class org.mozilla.javascript.* { *; } -keep class org.mozilla.javascript.* { *; }
-keep class org.mozilla.javascript.** { *; } -keep class org.mozilla.javascript.** { *; }
-keep class org.mozilla.javascript.engine.** { *; } -keep class org.mozilla.javascript.engine.** { *; }
-keep class javax.script.** { *; } -keep class org.mozilla.classfile.ClassFileWriter
-keep class jdk.dynalink.** { *; } -keep class org.schabi.newpipe.extractor.timeago.patterns.** { *; }
-keep class org.schabi.newpipe.extractor.services.youtube.protos.** { *; }
-dontwarn org.mozilla.javascript.JavaToJSONConverters -dontwarn org.mozilla.javascript.JavaToJSONConverters
-dontwarn org.mozilla.javascript.tools.** -dontwarn org.mozilla.javascript.tools.**
-dontwarn javax.script.** -dontwarn javax.script.**
@@ -20,6 +20,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentActivity;
import androidx.leanback.widget.ArrayObjectAdapter; import androidx.leanback.widget.ArrayObjectAdapter;
import androidx.leanback.widget.ItemBridgeAdapter; import androidx.leanback.widget.ItemBridgeAdapter;
@@ -484,7 +485,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
private void setText(TextView view, int resId, String text) { private void setText(TextView view, int resId, String text) {
view.setText(getSpan(resId, text), TextView.BufferType.SPANNABLE); view.setText(getSpan(resId, text), TextView.BufferType.SPANNABLE);
view.setVisibility(text.isEmpty() ? View.GONE : View.VISIBLE); view.setVisibility(text.isEmpty() ? View.GONE : View.VISIBLE);
view.setLinkTextColor(MDColor.YELLOW_500); view.setLinkTextColor(ContextCompat.getColor(view.getContext(), R.color.primary));
CustomMovement.bind(view); CustomMovement.bind(view);
view.setTag(text); view.setTag(text);
} }
@@ -5,7 +5,9 @@ import android.view.LayoutInflater;
import android.widget.TextView; import android.widget.TextView;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.core.content.ContextCompat;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.databinding.DialogDescBinding; import com.fongmi.android.tv.databinding.DialogDescBinding;
import com.fongmi.android.tv.ui.custom.CustomMovement; import com.fongmi.android.tv.ui.custom.CustomMovement;
import com.github.bassaer.library.MDColor; import com.github.bassaer.library.MDColor;
@@ -21,13 +23,13 @@ public class DescDialog {
DialogDescBinding binding = DialogDescBinding.inflate(LayoutInflater.from(activity)); DialogDescBinding binding = DialogDescBinding.inflate(LayoutInflater.from(activity));
AlertDialog dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create(); AlertDialog dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create();
dialog.getWindow().setDimAmount(0); dialog.getWindow().setDimAmount(0);
initView(binding.text, desc); initView(binding.text, desc, activity);
dialog.show(); dialog.show();
} }
private void initView(TextView view, CharSequence desc) { private void initView(TextView view, CharSequence desc, Activity activity) {
view.setText(desc, TextView.BufferType.SPANNABLE); view.setText(desc, TextView.BufferType.SPANNABLE);
view.setLinkTextColor(MDColor.BLUE_500); view.setLinkTextColor(ContextCompat.getColor(activity, R.color.primary));
CustomMovement.bind(view); CustomMovement.bind(view);
} }
} }
@@ -55,6 +55,7 @@ public class SiteDialog implements SiteAdapter.OnClickListener {
setType(type); setType(type);
initView(); initView();
initEvent(); initEvent();
setDialog();
} }
private boolean list() { private boolean list() {
@@ -94,7 +95,13 @@ public class SiteDialog implements SiteAdapter.OnClickListener {
if (decoration != null) binding.recycler.removeItemDecoration(decoration); if (decoration != null) binding.recycler.removeItemDecoration(decoration);
binding.recycler.addItemDecoration(decoration = new SpaceItemDecoration(getCount(), 16)); binding.recycler.addItemDecoration(decoration = new SpaceItemDecoration(getCount(), 16));
binding.recycler.setLayoutManager(new GridLayoutManager(dialog.getContext(), getCount())); binding.recycler.setLayoutManager(new GridLayoutManager(dialog.getContext(), getCount()));
if (!binding.mode.hasFocus()) binding.recycler.post(() -> binding.recycler.scrollToPosition(VodConfig.getHomeIndex())); if (!binding.mode.hasFocus()) {
binding.recycler.post(() -> {
binding.recycler.scrollToPosition(VodConfig.getHomeIndex());
// 清除焦点,避免滚动后自动获得焦点显示黄色背景
binding.recycler.post(() -> binding.recycler.clearFocus());
});
}
} }
private void setDialog() { private void setDialog() {
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/black" android:state_focused="true" />
<item android:color="@color/white" />
</selector>
+2 -2
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/yellow_500" android:state_focused="true" android:state_selected="true" /> <item android:color="@color/primary" android:state_focused="true" android:state_selected="true" />
<item android:color="@color/yellow_500" android:state_selected="true" /> <item android:color="@color/primary" android:state_selected="true" />
<item android:color="@color/white" /> <item android:color="@color/white" />
</selector> </selector>
@@ -2,7 +2,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<solid android:color="@color/white_90" /> <solid android:color="@color/black_90" />
<corners <corners
android:topLeftRadius="12dp" android:topLeftRadius="12dp"
@@ -2,7 +2,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<solid android:color="@color/white_90" /> <solid android:color="@color/black_80" />
<corners <corners
android:topLeftRadius="8dp" android:topLeftRadius="8dp"
@@ -2,7 +2,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<solid android:color="@color/grey_600" /> <solid android:color="@color/black_60" />
<corners android:radius="4dp" /> <corners android:radius="4dp" />
@@ -2,7 +2,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<solid android:color="@color/grey_800" /> <solid android:color="@color/primary" />
<corners android:radius="4dp" /> <corners android:radius="4dp" />
@@ -2,7 +2,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<solid android:color="@color/grey_600" /> <solid android:color="@color/black_60" />
<corners android:radius="4dp" /> <corners android:radius="4dp" />
@@ -2,7 +2,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<solid android:color="@color/black_40" /> <solid android:color="@color/black_90" />
<corners android:radius="8dp" /> <corners android:radius="8dp" />
@@ -16,7 +16,7 @@
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:gravity="center" android:gravity="center"
android:singleLine="true" android:singleLine="true"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="18sp" android:textSize="18sp"
tools:text="https://fongmi.github.io/cat.json" /> tools:text="https://fongmi.github.io/cat.json" />
@@ -9,6 +9,6 @@
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:singleLine="true" android:singleLine="true"
android:textColor="@color/text" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
tools:text="愛奇異彈幕" /> tools:text="愛奇異彈幕" />
+1 -1
View File
@@ -9,6 +9,6 @@
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:gravity="center" android:gravity="center"
android:singleLine="true" android:singleLine="true"
android:textColor="@color/text" android:textColor="@color/button_text"
android:textSize="18sp" android:textSize="18sp"
tools:text="Google" /> tools:text="Google" />
+1 -1
View File
@@ -16,7 +16,7 @@
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:gravity="center" android:gravity="center"
android:singleLine="true" android:singleLine="true"
android:textColor="@color/text" android:textColor="@color/button_text"
android:textSize="18sp" android:textSize="18sp"
tools:text="https://fongmi.github.io/live.json" /> tools:text="https://fongmi.github.io/live.json" />
@@ -8,6 +8,6 @@
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:gravity="center" android:gravity="center"
android:textColor="@color/text" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
tools:text="解析" /> tools:text="解析" />
@@ -16,7 +16,7 @@
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:gravity="center" android:gravity="center"
android:singleLine="true" android:singleLine="true"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="18sp" android:textSize="18sp"
tools:text="tv-2024-12-26.bk.gz" /> tools:text="tv-2024-12-26.bk.gz" />
+1 -1
View File
@@ -17,7 +17,7 @@
android:ellipsize="marquee" android:ellipsize="marquee"
android:gravity="center" android:gravity="center"
android:singleLine="true" android:singleLine="true"
android:textColor="@color/text" android:textColor="@color/button_text"
android:textSize="18sp" android:textSize="18sp"
tools:text="泥巴" /> tools:text="泥巴" />
@@ -9,6 +9,6 @@
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:singleLine="true" android:singleLine="true"
android:textColor="@color/text" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
tools:text="中文、哥斯拉.srt" /> tools:text="中文、哥斯拉.srt" />
@@ -3,6 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/black_90"
android:padding="48dp"> android:padding="48dp">
<com.google.android.material.slider.Slider <com.google.android.material.slider.Slider
@@ -12,9 +13,9 @@
android:stepSize="1" android:stepSize="1"
android:valueFrom="1" android:valueFrom="1"
android:valueTo="10" android:valueTo="10"
app:thumbColor="@color/yellow_500" app:thumbColor="@color/primary"
app:tickVisible="false" app:tickVisible="false"
app:trackColorActive="@color/yellow_500" app:trackColorActive="@color/primary"
app:trackColorInactive="@color/yellow_50" /> app:trackColorInactive="@color/white_30" />
</FrameLayout> </FrameLayout>
@@ -3,6 +3,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/black_90"
android:padding="16dp"> android:padding="16dp">
<ImageView <ImageView
@@ -23,7 +24,7 @@
android:maxLines="3" android:maxLines="3"
android:paddingStart="4dp" android:paddingStart="4dp"
android:paddingEnd="4dp" android:paddingEnd="4dp"
android:textColor="@color/grey_700" android:textColor="@color/white"
android:textSize="18sp" android:textSize="18sp"
tools:text="@string/push_info" /> tools:text="@string/push_info" />
@@ -41,11 +42,13 @@
android:layout_alignStart="@+id/info" android:layout_alignStart="@+id/info"
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:hint="@string/dialog_config_hint" android:hint="@string/dialog_config_hint"
android:textColorHint="@color/white_50"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:importantForAutofill="no" android:importantForAutofill="no"
android:inputType="text" android:inputType="text"
android:nextFocusDown="@id/positive" android:nextFocusDown="@id/positive"
android:singleLine="true" android:singleLine="true"
android:textColor="@color/white"
android:textSize="18sp" /> android:textSize="18sp" />
<LinearLayout <LinearLayout
@@ -68,7 +71,7 @@
android:gravity="center" android:gravity="center"
android:singleLine="true" android:singleLine="true"
android:text="@string/setting_choose" android:text="@string/setting_choose"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@@ -83,7 +86,7 @@
android:gravity="center" android:gravity="center"
android:singleLine="true" android:singleLine="true"
android:text="@string/dialog_positive" android:text="@string/dialog_positive"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@@ -97,7 +100,7 @@
android:gravity="center" android:gravity="center"
android:singleLine="true" android:singleLine="true"
android:text="@string/dialog_negative" android:text="@string/dialog_negative"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@@ -4,6 +4,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/black_90"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <LinearLayout
@@ -19,7 +20,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:text="@string/danmaku_select" android:text="@string/danmaku_select"
android:textColor="@color/grey_900" android:textColor="@color/white"
android:textSize="16sp" /> android:textSize="16sp" />
<ImageView <ImageView
+2 -1
View File
@@ -2,6 +2,7 @@
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" <androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/black_90"
android:fillViewport="true"> android:fillViewport="true">
<TextView <TextView
@@ -11,7 +12,7 @@
android:letterSpacing="0.05" android:letterSpacing="0.05"
android:lineSpacingExtra="8dp" android:lineSpacingExtra="8dp"
android:padding="16dp" android:padding="16dp"
android:textColor="@color/grey_800" android:textColor="@color/white"
android:textSize="16sp" /> android:textSize="16sp" />
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
@@ -5,6 +5,7 @@
android:id="@+id/recycler" android:id="@+id/recycler"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/black_90"
android:padding="16dp" android:padding="16dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:maxHeight="296dp" app:maxHeight="296dp"
@@ -4,6 +4,7 @@
android:id="@+id/recycler" android:id="@+id/recycler"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/black_90"
android:padding="16dp" android:padding="16dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:maxHeight="352dp" /> app:maxHeight="352dp" />
@@ -5,6 +5,7 @@
android:id="@+id/recycler" android:id="@+id/recycler"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/black_90"
android:padding="16dp" android:padding="16dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:maxHeight="296dp" app:maxHeight="296dp"
@@ -2,6 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/black_90"
android:gravity="center" android:gravity="center"
android:orientation="horizontal" android:orientation="horizontal"
android:padding="16dp"> android:padding="16dp">
+5 -2
View File
@@ -3,6 +3,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/black_90"
android:padding="16dp"> android:padding="16dp">
<ImageView <ImageView
@@ -35,11 +36,13 @@
android:layout_alignStart="@+id/info" android:layout_alignStart="@+id/info"
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:hint="socks5://127.0.0.1:9978" android:hint="socks5://127.0.0.1:9978"
android:textColorHint="@color/white_50"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:importantForAutofill="no" android:importantForAutofill="no"
android:inputType="text" android:inputType="text"
android:nextFocusDown="@id/positive" android:nextFocusDown="@id/positive"
android:singleLine="true" android:singleLine="true"
android:textColor="@color/white"
android:textSize="18sp" /> android:textSize="18sp" />
<LinearLayout <LinearLayout
@@ -62,7 +65,7 @@
android:gravity="center" android:gravity="center"
android:singleLine="true" android:singleLine="true"
android:text="@string/dialog_positive" android:text="@string/dialog_positive"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@@ -76,7 +79,7 @@
android:gravity="center" android:gravity="center"
android:singleLine="true" android:singleLine="true"
android:text="@string/dialog_negative" android:text="@string/dialog_negative"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@@ -4,6 +4,7 @@
android:id="@+id/recycler" android:id="@+id/recycler"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/black_90"
android:padding="16dp" android:padding="16dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:maxHeight="352dp" /> app:maxHeight="352dp" />
@@ -4,6 +4,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/black_90"
android:orientation="horizontal" android:orientation="horizontal"
android:padding="16dp"> android:padding="16dp">
+4 -3
View File
@@ -3,6 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/black_90"
android:padding="48dp"> android:padding="48dp">
<com.google.android.material.slider.Slider <com.google.android.material.slider.Slider
@@ -12,9 +13,9 @@
android:stepSize="0.5" android:stepSize="0.5"
android:valueFrom="2" android:valueFrom="2"
android:valueTo="5" android:valueTo="5"
app:thumbColor="@color/yellow_500" app:thumbColor="@color/primary"
app:tickVisible="false" app:tickVisible="false"
app:trackColorActive="@color/yellow_500" app:trackColorActive="@color/primary"
app:trackColorInactive="@color/yellow_50" /> app:trackColorInactive="@color/white_30" />
</FrameLayout> </FrameLayout>
@@ -2,6 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/black_90"
android:orientation="horizontal" android:orientation="horizontal"
android:padding="16dp"> android:padding="16dp">
+2 -1
View File
@@ -4,6 +4,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/black_90"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <LinearLayout
@@ -18,7 +19,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:textColor="@color/grey_900" android:textColor="@color/white"
android:textSize="16sp" android:textSize="16sp"
tools:text="選擇字幕" /> tools:text="選擇字幕" />
+5 -2
View File
@@ -3,6 +3,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/black_90"
android:padding="16dp"> android:padding="16dp">
<ImageView <ImageView
@@ -35,11 +36,13 @@
android:layout_alignStart="@+id/info" android:layout_alignStart="@+id/info"
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:hint="@string/player_ua" android:hint="@string/player_ua"
android:textColorHint="@color/white_50"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:importantForAutofill="no" android:importantForAutofill="no"
android:inputType="text" android:inputType="text"
android:nextFocusDown="@id/positive" android:nextFocusDown="@id/positive"
android:singleLine="true" android:singleLine="true"
android:textColor="@color/white"
android:textSize="18sp" /> android:textSize="18sp" />
<LinearLayout <LinearLayout
@@ -62,7 +65,7 @@
android:gravity="center" android:gravity="center"
android:singleLine="true" android:singleLine="true"
android:text="@string/dialog_positive" android:text="@string/dialog_positive"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@@ -76,7 +79,7 @@
android:gravity="center" android:gravity="center"
android:singleLine="true" android:singleLine="true"
android:text="@string/dialog_negative" android:text="@string/dialog_negative"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@@ -3,6 +3,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/black_90"
android:orientation="vertical" android:orientation="vertical"
android:padding="24dp"> android:padding="24dp">
@@ -11,7 +12,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:letterSpacing="0.02" android:letterSpacing="0.02"
android:textColor="@color/grey_900" android:textColor="@color/white"
android:textSize="18sp" android:textSize="18sp"
tools:text="@string/update_version" /> tools:text="@string/update_version" />
@@ -34,7 +35,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:letterSpacing="0.02" android:letterSpacing="0.02"
android:lineSpacingExtra="8dp" android:lineSpacingExtra="8dp"
android:textColor="@color/grey_900" android:textColor="@color/button_text"
android:textSize="16sp" android:textSize="16sp"
tools:text="1. 新增 ffmpeg 音頻軟解\n2. 詳情頁新增分詞快搜\n3. 修復搜尋閃退問題\n4. 設定支援渲染切換" /> tools:text="1. 新增 ffmpeg 音頻軟解\n2. 詳情頁新增分詞快搜\n3. 修復搜尋閃退問題\n4. 設定支援渲染切換" />
@@ -56,7 +57,7 @@
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:gravity="center" android:gravity="center"
android:text="@string/update_confirm" android:text="@string/update_confirm"
android:textColor="@color/white" /> android:textColor="@color/button_text" />
<TextView <TextView
android:id="@+id/cancel" android:id="@+id/cancel"
@@ -68,7 +69,7 @@
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:gravity="center" android:gravity="center"
android:text="@string/dialog_negative" android:text="@string/dialog_negative"
android:textColor="@color/white" /> android:textColor="@color/button_text" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
@@ -34,7 +34,7 @@
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:nextFocusLeft="@id/video" android:nextFocusLeft="@id/video"
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
tools:text="刷新" /> tools:text="刷新" />
@@ -48,7 +48,7 @@
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:text="@string/play_exo" android:text="@string/play_exo"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@@ -60,7 +60,7 @@
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
tools:text="硬解" /> tools:text="硬解" />
@@ -73,7 +73,7 @@
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
tools:text="1.00" /> tools:text="1.00" />
@@ -86,7 +86,7 @@
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
tools:text="預設" /> tools:text="預設" />
@@ -101,7 +101,7 @@
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:tag="3" android:tag="3"
android:text="@string/play_track_text" android:text="@string/play_track_text"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
android:visibility="gone" android:visibility="gone"
tools:visibility="visible" /> tools:visibility="visible" />
@@ -117,7 +117,7 @@
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:tag="1" android:tag="1"
android:text="@string/play_track_audio" android:text="@string/play_track_audio"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
android:visibility="gone" android:visibility="gone"
tools:visibility="visible" /> tools:visibility="visible" />
@@ -134,7 +134,7 @@
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:tag="2" android:tag="2"
android:text="@string/play_track_video" android:text="@string/play_track_video"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
android:visibility="gone" android:visibility="gone"
tools:visibility="visible" /> tools:visibility="visible" />
@@ -26,7 +26,7 @@
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:nextFocusLeft="@id/change" android:nextFocusLeft="@id/change"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
tools:text="首頁" /> tools:text="首頁" />
@@ -39,7 +39,7 @@
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:text="@string/play" android:text="@string/play"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@@ -51,7 +51,7 @@
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:text="@string/play_exo" android:text="@string/play_exo"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@@ -62,7 +62,7 @@
android:background="@drawable/selector_text" android:background="@drawable/selector_text"
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
tools:text="硬解" /> tools:text="硬解" />
@@ -74,7 +74,7 @@
android:background="@drawable/selector_text" android:background="@drawable/selector_text"
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
android:visibility="gone" android:visibility="gone"
tools:text="1.00" tools:text="1.00"
@@ -88,7 +88,7 @@
android:background="@drawable/selector_text" android:background="@drawable/selector_text"
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
tools:text="預設" /> tools:text="預設" />
@@ -100,7 +100,7 @@
android:background="@drawable/selector_text" android:background="@drawable/selector_text"
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
android:visibility="gone" android:visibility="gone"
tools:text="來源 1" tools:text="來源 1"
@@ -116,7 +116,7 @@
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:tag="3" android:tag="3"
android:text="@string/play_track_text" android:text="@string/play_track_text"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
android:visibility="gone" android:visibility="gone"
tools:visibility="visible" /> tools:visibility="visible" />
@@ -131,7 +131,7 @@
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:tag="1" android:tag="1"
android:text="@string/play_track_audio" android:text="@string/play_track_audio"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
android:visibility="gone" android:visibility="gone"
tools:visibility="visible" /> tools:visibility="visible" />
@@ -146,7 +146,7 @@
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:tag="2" android:tag="2"
android:text="@string/play_track_video" android:text="@string/play_track_video"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
android:visibility="gone" android:visibility="gone"
tools:visibility="visible" /> tools:visibility="visible" />
@@ -45,7 +45,7 @@
android:nextFocusLeft="@id/loop" android:nextFocusLeft="@id/loop"
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:text="@string/play_next" android:text="@string/play_next"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@@ -58,7 +58,7 @@
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:text="@string/play_prev" android:text="@string/play_prev"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@@ -70,7 +70,7 @@
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
tools:text="刷新" /> tools:text="刷新" />
@@ -84,7 +84,7 @@
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:text="@string/play_change" android:text="@string/play_change"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
tools:text="換源" /> tools:text="換源" />
@@ -98,7 +98,7 @@
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:text="@string/play_exo" android:text="@string/play_exo"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" /> android:textSize="14sp" />
<TextView <TextView
@@ -110,7 +110,7 @@
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
tools:text="硬解" /> tools:text="硬解" />
@@ -123,7 +123,7 @@
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
tools:text="1.00" /> tools:text="1.00" />
@@ -136,7 +136,7 @@
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
tools:text="預設" /> tools:text="預設" />
@@ -151,7 +151,7 @@
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:tag="3" android:tag="3"
android:text="@string/play_track_text" android:text="@string/play_track_text"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
android:visibility="gone" android:visibility="gone"
tools:visibility="visible" /> tools:visibility="visible" />
@@ -167,7 +167,7 @@
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:tag="1" android:tag="1"
android:text="@string/play_track_audio" android:text="@string/play_track_audio"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
android:visibility="gone" android:visibility="gone"
tools:visibility="visible" /> tools:visibility="visible" />
@@ -183,7 +183,7 @@
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:tag="2" android:tag="2"
android:text="@string/play_track_video" android:text="@string/play_track_video"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
android:visibility="gone" android:visibility="gone"
tools:visibility="visible" /> tools:visibility="visible" />
@@ -197,7 +197,7 @@
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
tools:text="00:00" /> tools:text="00:00" />
@@ -210,7 +210,7 @@
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:nextFocusDown="@id/timeBar" android:nextFocusDown="@id/timeBar"
android:textColor="@color/white" android:textColor="@color/button_text"
android:textSize="14sp" android:textSize="14sp"
tools:text="00:00" /> tools:text="00:00" />
+40 -3
View File
@@ -1,7 +1,44 @@
<resources> <resources>
<color name="primary">@color/black</color> <color name="primary">#FFEB3B</color>
<color name="primaryDark">@color/black</color> <color name="primaryDark">#FDD835</color>
<color name="accent">@color/blue_500</color> <color name="accent">#FFEB3B</color>
<color name="blue_500">#2196F3</color>
<color name="green_400">#66BB6A</color>
<color name="grey_600">#757575</color>
<!-- Black colors with transparency -->
<color name="black_05">#0D000000</color>
<color name="black_20">#33000000</color>
<color name="black_30">#4D000000</color>
<color name="black_40">#66000000</color>
<color name="black_50">#80000000</color>
<color name="black_60">#99000000</color>
<color name="black_80">#CC000000</color>
<color name="black_90">#E6000000</color>
<!-- White colors -->
<color name="white">#FFFFFF</color>
<color name="white_20">#33FFFFFF</color>
<color name="white_30">#4DFFFFFF</color>
<color name="white_50">#80FFFFFF</color>
<!-- Pure colors -->
<color name="black">#000000</color>
<!-- Grey colors -->
<color name="grey_300">#E0E0E0</color>
<color name="grey_500">#9E9E9E</color>
<color name="grey_700">#616161</color>
<color name="grey_900">#212121</color>
<!-- Text colors -->
<color name="text">#FFFFFF</color>
<!-- UI specific colors -->
<color name="green_a_400">#00E676</color>
<!-- Transparent -->
<color name="transparent">#00000000</color>
</resources> </resources>
+1 -1
View File
@@ -25,7 +25,7 @@
<item name="android:paddingBottom">24dp</item> <item name="android:paddingBottom">24dp</item>
</style> </style>
<style name="BottomSheetDialog" parent="Theme.MaterialComponents.Light.BottomSheetDialog"> <style name="BottomSheetDialog" parent="Theme.MaterialComponents.DayNight.BottomSheetDialog">
<item name="colorPrimary">@color/primary</item> <item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primaryDark</item> <item name="colorPrimaryDark">@color/primaryDark</item>
<item name="colorAccent">@color/accent</item> <item name="colorAccent">@color/accent</item>
+1 -1
View File
@@ -5469,7 +5469,7 @@ body[data-weui-theme="dark"] .weui-picker__mask {
} }
.weui-primary-loading_brand { .weui-primary-loading_brand {
color: #07c160; color: #FFEB3B;
color: var(--weui-BRAND); color: var(--weui-BRAND);
} }
@@ -1,23 +0,0 @@
package com.fongmi.android.tv.event;
import org.greenrobot.eventbus.meta.SimpleSubscriberInfo;
import org.greenrobot.eventbus.meta.SubscriberInfo;
import org.greenrobot.eventbus.meta.SubscriberInfoIndex;
import java.util.HashMap;
import java.util.Map;
/**
* 这是一个自动生成的索引类,用于EventBus的索引查找
* 通常由EventBus注解处理器自动生成
* 在这里手动创建以解决编译错误
*/
public class EventIndex implements SubscriberInfoIndex {
private static final Map<Class<?>, SubscriberInfo> SUBSCRIBER_INDEX = new HashMap<>();
@Override
public SubscriberInfo getSubscriberInfo(Class<?> subscriberClass) {
return SUBSCRIBER_INDEX.get(subscriberClass);
}
}
@@ -39,7 +39,7 @@ public class AboutDialog extends BaseDialog {
private void openGitHub() { private void openGitHub() {
try { try {
Intent intent = new Intent(Intent.ACTION_VIEW); Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://github.com/Tosencen/XMBOX/releases/tag/v3.0.3")); intent.setData(Uri.parse("https://github.com/Tosencen/XMBOX/releases/latest"));
startActivity(intent); startActivity(intent);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
+6 -6
View File
@@ -1,7 +1,7 @@
plugins { plugins {
id 'com.android.application' version '8.8.2' apply false id 'com.android.application' version '8.12.0' apply false
id 'com.android.library' version '8.8.2' apply false id 'com.android.library' version '8.12.0' apply false
id 'com.chaquo.python' version '15.0.1' apply false id 'com.chaquo.python' version '16.1.0' apply false
} }
tasks.register('clean', Delete) { tasks.register('clean', Delete) {
@@ -9,7 +9,7 @@ tasks.register('clean', Delete) {
} }
project.ext { project.ext {
gsonVersion = '2.11.0' gsonVersion = '2.13.1'
media3Version = '1.6.1' media3Version = '1.8.0'
okhttpVersion = '5.0.0-alpha.14' okhttpVersion = '5.1.0'
} }
+7 -5
View File
@@ -5,21 +5,23 @@ plugins {
android { android {
namespace 'com.github.catvod.crawler' namespace 'com.github.catvod.crawler'
compileSdk 35 compileSdk {
version = release(36)
}
defaultConfig { defaultConfig {
minSdk 21 minSdk 24
targetSdk 28 targetSdk 28
} }
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_11 sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_17
} }
} }
dependencies { dependencies {
api 'androidx.annotation:annotation:1.6.0' api 'androidx.annotation:annotation:1.9.1'
api 'androidx.preference:preference:1.2.1' api 'androidx.preference:preference:1.2.1'
api 'com.google.code.gson:gson:' + gsonVersion api 'com.google.code.gson:gson:' + gsonVersion
api 'com.google.net.cronet:cronet-okhttp:0.1.0' api 'com.google.net.cronet:cronet-okhttp:0.1.0'
@@ -1,5 +1,6 @@
package com.github.catvod.utils; package com.github.catvod.utils;
import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import androidx.preference.PreferenceManager; import androidx.preference.PreferenceManager;
+51
View File
@@ -0,0 +1,51 @@
plugins {
id 'com.android.library'
id 'com.chaquo.python'
}
android {
namespace 'com.fongmi.chaquo'
compileSdk {
version = release(36)
}
defaultConfig {
minSdk 24
targetSdk 28
python {
version "3.8"
pip {
install("-r", "requirements.txt")
}
}
}
flavorDimensions = ["abi"]
productFlavors {
arm64_v8a {
dimension "abi"
ndk { abiFilters "arm64-v8a" }
}
armeabi_v7a {
dimension "abi"
ndk { abiFilters "armeabi-v7a" }
}
}
sourceSets {
main {
python.srcDirs = ["src/main/python"]
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
}
dependencies {
implementation project(':catvod')
}
+8
View File
@@ -0,0 +1,8 @@
lxml
ujson
pyquery
requests
jsonpath
cachetools
pycryptodome
beautifulsoup4
+3
View File
@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
</manifest>
+3 -3
View File
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<!-- 主题颜色 --> <!-- 主题颜色 -->
<color name="primary">#FF0057B8</color> <color name="primary">#FFEB3B</color>
<color name="primaryDark">#FF003C7E</color> <color name="primaryDark">#FDD835</color>
<color name="accent">#FF0057B8</color> <color name="accent">#FFEB3B</color>
<!-- 基本颜色 --> <!-- 基本颜色 -->
<color name="white">#FFFFFFFF</color> <color name="white">#FFFFFFFF</color>
+1 -1
View File
@@ -1,6 +1,6 @@
#Wed Mar 29 12:54:35 CST 2023 #Wed Mar 29 12:54:35 CST 2023
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
+8 -10
View File
@@ -5,26 +5,24 @@ plugins {
android { android {
namespace 'com.fongmi.android.tv.quickjs' namespace 'com.fongmi.android.tv.quickjs'
compileSdk 35 compileSdk {
version = release(36)
}
defaultConfig { defaultConfig {
minSdk 21 minSdk 24
targetSdk 28 targetSdk 28
} }
lint {
disable 'UnsafeOptInUsageError'
}
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_11 sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_17
} }
} }
dependencies { dependencies {
implementation project(':catvod') implementation project(':catvod')
implementation 'wang.harlon.quickjs:wrapper-java:3.2.0' implementation 'wang.harlon.quickjs:wrapper-java:3.2.3'
implementation 'wang.harlon.quickjs:wrapper-android:3.2.0' implementation 'wang.harlon.quickjs:wrapper-android:3.2.3'
implementation 'net.sourceforge.streamsupport:android-retrofuture:1.7.4' implementation 'net.sourceforge.streamsupport:android-retrofuture:1.7.4'
} }