Merge pull request #469 from okcaptain/dev

Dev
pull/470/head^2
okcaptain 2 years ago committed by GitHub
commit fb33926aa0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 5
      app/build.gradle
  2. 12
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  3. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java
  4. 7
      app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseActivity.java
  5. 4
      app/src/leanback/java/com/fongmi/android/tv/ui/fragment/HomeFragment.java
  6. 9
      app/src/main/java/com/fongmi/android/tv/App.java
  7. 7
      app/src/main/java/com/fongmi/android/tv/player/ParseJob.java
  8. 21
      app/src/main/java/com/fongmi/android/tv/utils/LanguageUtil.java
  9. 21
      app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java
  10. 2
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingCustomFragment.java
  11. 6
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java
  12. 5
      catvod/src/main/java/com/github/catvod/utils/Util.java

@ -11,7 +11,7 @@ android {
minSdk 21 minSdk 21
targetSdk 28 targetSdk 28
versionCode 235 versionCode 235
versionName "2.3.5" versionName "0601"
javaCompileOptions { javaCompileOptions {
annotationProcessorOptions { annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()] arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
@ -132,6 +132,8 @@ dependencies {
implementation 'com.google.zxing:core:3.3.0' implementation 'com.google.zxing:core:3.3.0'
implementation 'com.guolindev.permissionx:permissionx:1.7.1' implementation 'com.guolindev.permissionx:permissionx:1.7.1'
implementation 'com.hierynomus:smbj:0.13.0' implementation 'com.hierynomus:smbj:0.13.0'
implementation 'com.tencent.tbs:tbssdk:44286'
implementation 'com.github.YarikSOffice:lingver:1.3.0'
implementation 'org.chromium.net:cronet-embedded:76.3809.111' implementation 'org.chromium.net:cronet-embedded:76.3809.111'
implementation 'org.eclipse.jetty:jetty-client:8.1.21.v20160908' implementation 'org.eclipse.jetty:jetty-client:8.1.21.v20160908'
implementation 'org.eclipse.jetty:jetty-server:8.1.21.v20160908' implementation 'org.eclipse.jetty:jetty-server:8.1.21.v20160908'
@ -139,7 +141,6 @@ dependencies {
implementation 'org.fourthline.cling:cling-core:2.1.1' implementation 'org.fourthline.cling:cling-core:2.1.1'
implementation 'org.fourthline.cling:cling-support:2.1.1' implementation 'org.fourthline.cling:cling-support:2.1.1'
implementation 'org.greenrobot:eventbus:3.3.1' implementation 'org.greenrobot:eventbus:3.3.1'
implementation 'com.tencent.tbs:tbssdk:44286'
implementation('org.simpleframework:simple-xml:2.7.1') { exclude group: 'stax', module: 'stax-api' exclude group: 'xpp3', module: 'xpp3' } implementation('org.simpleframework:simple-xml:2.7.1') { exclude group: 'stax', module: 'stax-api' exclude group: 'xpp3', module: 'xpp3' }
implementation(ext: 'aar', name: 'dlna-core', group: 'fongmi', version: 'release') implementation(ext: 'aar', name: 'dlna-core', group: 'fongmi', version: 'release')
leanbackImplementation(ext: 'aar', name: 'dlna-dmr', group: 'fongmi', version: 'release') leanbackImplementation(ext: 'aar', name: 'dlna-dmr', group: 'fongmi', version: 'release')

@ -329,7 +329,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
@Override @Override
public void error(String msg) { public void error(String msg) {
if (getHomeFragment().init) getHomeFragment().mBinding.progressLayout.showContent(); if (getHomeFragment().inited) getHomeFragment().mBinding.progressLayout.showContent();
else App.post(() -> getHomeFragment().mBinding.progressLayout.showContent(), 1000); else App.post(() -> getHomeFragment().mBinding.progressLayout.showContent(), 1000);
mResult = Result.empty(); mResult = Result.empty();
Notify.show(msg); Notify.show(msg);
@ -471,11 +471,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
} }
private void setLogo() { private void setLogo() {
try { Glide.with(this).load(UrlUtil.convert(VodConfig.get().getConfig().getLogo())).circleCrop().override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL).listener(getListener()).into(mBinding.logo);
Glide.with(this).load(UrlUtil.convert(VodConfig.get().getConfig().getLogo())).circleCrop().override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL).listener(getListener()).into(mBinding.logo);
} catch (Exception e) {
e.printStackTrace();
}
} }
private RequestListener<Drawable> getListener() { private RequestListener<Drawable> getListener() {
@ -545,9 +541,9 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
protected void onBackPress() { protected void onBackPress() {
if (isVisible(mBinding.recycler) && mBinding.recycler.getSelectedPosition() != 0) { if (isVisible(mBinding.recycler) && mBinding.recycler.getSelectedPosition() != 0) {
mBinding.recycler.scrollToPosition(0); mBinding.recycler.scrollToPosition(0);
} else if (mPageAdapter != null && getHomeFragment().init && getHomeFragment().mBinding.progressLayout.isProgress()) { } else if (mPageAdapter != null && getHomeFragment().inited && getHomeFragment().mBinding.progressLayout.isProgress()) {
getHomeFragment().mBinding.progressLayout.showContent(); getHomeFragment().mBinding.progressLayout.showContent();
} else if (mPageAdapter != null && getHomeFragment().init && getHomeFragment().mPresenter != null && getHomeFragment().mPresenter.isDelete()) { } else if (mPageAdapter != null && getHomeFragment().inited && getHomeFragment().mPresenter != null && getHomeFragment().mPresenter.isDelete()) {
getHomeFragment().setHistoryDelete(false); getHomeFragment().setHistoryDelete(false);
} else if (getHomeFragment().canBack()) { } else if (getHomeFragment().canBack()) {
getHomeFragment().goBack(); getHomeFragment().goBack();

@ -23,6 +23,7 @@ import com.fongmi.android.tv.ui.dialog.DisplayDialog;
import com.fongmi.android.tv.ui.dialog.LanguageDialog; import com.fongmi.android.tv.ui.dialog.LanguageDialog;
import com.fongmi.android.tv.ui.dialog.MenuKeyDialog; import com.fongmi.android.tv.ui.dialog.MenuKeyDialog;
import com.fongmi.android.tv.ui.dialog.X5WebViewDialog; import com.fongmi.android.tv.ui.dialog.X5WebViewDialog;
import com.fongmi.android.tv.utils.LanguageUtil;
import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Util; import com.fongmi.android.tv.utils.Util;
import com.github.catvod.utils.Shell; import com.github.catvod.utils.Shell;
@ -240,6 +241,7 @@ public class SettingCustomActivity extends BaseActivity implements MenuKeyCallba
@Override @Override
public void setLanguage(int lang) { public void setLanguage(int lang) {
Setting.putLanguage(lang); Setting.putLanguage(lang);
LanguageUtil.setLocale(LanguageUtil.getLocale(Setting.getLanguage()));
mBinding.languageText.setText((ResUtil.getStringArray(R.array.select_language))[Setting.getLanguage()]); mBinding.languageText.setText((ResUtil.getStringArray(R.array.select_language))[Setting.getLanguage()]);
Util.restartApp(this); Util.restartApp(this);
} }

@ -16,16 +16,14 @@ import androidx.recyclerview.widget.RecyclerView;
import androidx.viewbinding.ViewBinding; import androidx.viewbinding.ViewBinding;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition; import com.bumptech.glide.request.transition.Transition;
import com.bumptech.glide.signature.ObjectKey;
import com.fongmi.android.tv.App; import com.fongmi.android.tv.App;
import com.fongmi.android.tv.R; import com.fongmi.android.tv.R;
import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.event.RefreshEvent; import com.fongmi.android.tv.event.RefreshEvent;
import com.fongmi.android.tv.utils.FileUtil; import com.fongmi.android.tv.utils.FileUtil;
import com.fongmi.android.tv.utils.LanguageUtil;
import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Util; import com.fongmi.android.tv.utils.Util;
@ -116,7 +114,7 @@ public abstract class BaseActivity extends AppCompatActivity {
} }
private void loadWall(File file) { private void loadWall(File file) {
Glide.with(App.get()).load(file).centerCrop().skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE).apply(new RequestOptions().override(ResUtil.getScreenWidth(), ResUtil.getScreenHeight())).into(new CustomTarget<Drawable>() { Glide.with(App.get()).load(file).centerCrop().override(ResUtil.getScreenWidth(), ResUtil.getScreenHeight()).signature(new ObjectKey(com.github.catvod.utils.Util.md5(file))).into(new CustomTarget<Drawable>() {
@Override @Override
public void onResourceReady(@NonNull Drawable drawable, @Nullable Transition<? super Drawable> transition) { public void onResourceReady(@NonNull Drawable drawable, @Nullable Transition<? super Drawable> transition) {
getWindow().setBackgroundDrawable(drawable); getWindow().setBackgroundDrawable(drawable);
@ -135,7 +133,6 @@ public abstract class BaseActivity extends AppCompatActivity {
private Resources hackResources(Resources resources) { private Resources hackResources(Resources resources) {
try { try {
LanguageUtil.setLanguage(resources, Setting.getLanguage());
AutoSizeCompat.autoConvertDensityOfGlobal(resources); AutoSizeCompat.autoConvertDensityOfGlobal(resources);
return resources; return resources;
} catch (Exception ignored) { } catch (Exception ignored) {

@ -58,7 +58,7 @@ public class HomeFragment extends BaseFragment implements VodPresenter.OnClickLi
private ArrayObjectAdapter mHistoryAdapter; private ArrayObjectAdapter mHistoryAdapter;
public HistoryPresenter mPresenter; public HistoryPresenter mPresenter;
private ArrayObjectAdapter mAdapter; private ArrayObjectAdapter mAdapter;
public boolean init; public boolean inited;
private int homeUI; private int homeUI;
private String button; private String button;
@ -77,7 +77,7 @@ public class HomeFragment extends BaseFragment implements VodPresenter.OnClickLi
setRecyclerView(); setRecyclerView();
setAdapter(); setAdapter();
initEvent(); initEvent();
init = true; inited = true;
} }
@Override @Override

@ -4,7 +4,6 @@ import android.app.Activity;
import android.app.Application; import android.app.Application;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
@ -107,6 +106,7 @@ public class App extends Application {
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
Notify.createChannel(); Notify.createChannel();
LanguageUtil.init(this);
Logger.addLogAdapter(getLogAdapter()); Logger.addLogAdapter(getLogAdapter());
OkHttp.get().setProxy(Setting.getProxy()); OkHttp.get().setProxy(Setting.getProxy());
OkHttp.get().setDoh(Doh.objectFrom(Setting.getDoh())); OkHttp.get().setDoh(Doh.objectFrom(Setting.getDoh()));
@ -149,13 +149,6 @@ public class App extends Application {
} }
@Override
public Resources getResources() {
Resources resources = super.getResources();
LanguageUtil.setLanguage(resources, Setting.getLanguage());
return resources;
}
@Override @Override
public PackageManager getPackageManager() { public PackageManager getPackageManager() {
if (!hook) return getBaseContext().getPackageManager(); if (!hook) return getBaseContext().getPackageManager();

@ -1,5 +1,7 @@
package com.fongmi.android.tv.player; package com.fongmi.android.tv.player;
import android.text.TextUtils;
import com.fongmi.android.tv.App; import com.fongmi.android.tv.App;
import com.fongmi.android.tv.Constant; import com.fongmi.android.tv.Constant;
import com.fongmi.android.tv.api.config.VodConfig; import com.fongmi.android.tv.api.config.VodConfig;
@ -61,8 +63,9 @@ public class ParseJob implements ParseCallback {
} }
private String getClick(Result result) { private String getClick(Result result) {
if (result.getClick().length() > 0) return result.getClick(); String click = VodConfig.get().getSite(result.getKey()).getClick();
return VodConfig.get().getSite(result.getKey()).getClick(); if (!TextUtils.isEmpty(click)) return click;
return result.getClick();
} }
private void execute(Result result) { private void execute(Result result) {

@ -1,22 +1,29 @@
package com.fongmi.android.tv.utils; package com.fongmi.android.tv.utils;
import android.content.res.Resources; import android.app.Application;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.Setting;
import com.yariksoffice.lingver.Lingver;
import java.util.Locale; import java.util.Locale;
public class LanguageUtil { public class LanguageUtil {
public static void setLanguage(Resources resources, int lang) {
resources.getConfiguration().locale = getLocale(lang); public static void init(Application application) {
resources.updateConfiguration(resources.getConfiguration(), resources.getDisplayMetrics()); Lingver.init(application, getLocale(Setting.getLanguage()));
}
public static void setLocale(Locale locale) {
Lingver.getInstance().setLocale(App.get(), locale);
} }
public static int locale() { public static int locale() {
if (!Locale.getDefault().getLanguage().equals("zh")) return 0; if (!Locale.getDefault().getLanguage().equals("zh")) return 0;
if (Locale.getDefault().getCountry().equals("TW")) return 2; if (Locale.getDefault().getCountry().equals("CN")) return 1;
return 1; return 2;
} }
private static Locale getLocale(int lang) { public static Locale getLocale(int lang) {
if (lang == 1) return Locale.SIMPLIFIED_CHINESE; if (lang == 1) return Locale.SIMPLIFIED_CHINESE;
else if (lang == 2) return Locale.TRADITIONAL_CHINESE; else if (lang == 2) return Locale.TRADITIONAL_CHINESE;
else return Locale.ENGLISH; else return Locale.ENGLISH;

@ -2,7 +2,6 @@ package com.fongmi.android.tv.ui.base;
import android.app.Activity; import android.app.Activity;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Build; import android.os.Build;
@ -19,17 +18,15 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.viewbinding.ViewBinding; import androidx.viewbinding.ViewBinding;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition; import com.bumptech.glide.request.transition.Transition;
import com.bumptech.glide.signature.ObjectKey;
import com.fongmi.android.tv.App; import com.fongmi.android.tv.App;
import com.fongmi.android.tv.R; import com.fongmi.android.tv.R;
import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.api.config.WallConfig;
import com.fongmi.android.tv.event.RefreshEvent; import com.fongmi.android.tv.event.RefreshEvent;
import com.fongmi.android.tv.utils.FileUtil; import com.fongmi.android.tv.utils.FileUtil;
import com.fongmi.android.tv.utils.LanguageUtil;
import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.ResUtil;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
@ -139,22 +136,8 @@ public abstract class BaseActivity extends AppCompatActivity {
} }
} }
private Resources hackResources(Resources resources) {
try {
LanguageUtil.setLanguage(resources, Setting.getLanguage());
return resources;
} catch (Exception ignored) {
return resources;
}
}
@Override
public Resources getResources() {
return hackResources(super.getResources());
}
private void loadWall(File file) { private void loadWall(File file) {
Glide.with(App.get()).load(file).centerCrop().skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE).apply(new RequestOptions().override(ResUtil.getScreenWidth(), ResUtil.getScreenHeight())).into(new CustomTarget<Drawable>() { Glide.with(App.get()).load(file).centerCrop().signature(new ObjectKey(file.lastModified())).apply(new RequestOptions().override(ResUtil.getScreenWidth(), ResUtil.getScreenHeight())).into(new CustomTarget<Drawable>() {
@Override @Override
public void onResourceReady(@NonNull Drawable drawable, @Nullable Transition<? super Drawable> transition) { public void onResourceReady(@NonNull Drawable drawable, @Nullable Transition<? super Drawable> transition) {
getWindow().setBackgroundDrawable(drawable); getWindow().setBackgroundDrawable(drawable);

@ -14,6 +14,7 @@ import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.databinding.FragmentSettingCustomBinding; import com.fongmi.android.tv.databinding.FragmentSettingCustomBinding;
import com.fongmi.android.tv.event.RefreshEvent; import com.fongmi.android.tv.event.RefreshEvent;
import com.fongmi.android.tv.ui.base.BaseFragment; import com.fongmi.android.tv.ui.base.BaseFragment;
import com.fongmi.android.tv.utils.LanguageUtil;
import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Util; import com.fongmi.android.tv.utils.Util;
import com.github.catvod.utils.Shell; import com.github.catvod.utils.Shell;
@ -133,6 +134,7 @@ public class SettingCustomFragment extends BaseFragment {
new MaterialAlertDialogBuilder(getActivity()).setTitle(R.string.setting_language).setNegativeButton(R.string.dialog_negative, null).setSingleChoiceItems(lang, Setting.getLanguage(), (dialog, which) -> { new MaterialAlertDialogBuilder(getActivity()).setTitle(R.string.setting_language).setNegativeButton(R.string.dialog_negative, null).setSingleChoiceItems(lang, Setting.getLanguage(), (dialog, which) -> {
mBinding.languageText.setText(lang[which]); mBinding.languageText.setText(lang[which]);
Setting.putLanguage(which); Setting.putLanguage(which);
LanguageUtil.setLocale(LanguageUtil.getLocale(Setting.getLanguage()));
dialog.dismiss(); dialog.dismiss();
Util.restartApp(getActivity()); Util.restartApp(getActivity());
}).show(); }).show();

@ -294,11 +294,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
} }
private void setLogo() { private void setLogo() {
try { Glide.with(this).load(UrlUtil.convert(VodConfig.get().getConfig().getLogo())).circleCrop().override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL).error(R.drawable.ic_logo).listener(getListener()).into(mBinding.logo);
Glide.with(this).load(UrlUtil.convert(VodConfig.get().getConfig().getLogo())).circleCrop().override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL).error(R.drawable.ic_logo).listener(getListener()).into(mBinding.logo);
} catch (Exception e) {
e.printStackTrace();
}
} }
private RequestListener<Drawable> getListener() { private RequestListener<Drawable> getListener() {

@ -75,12 +75,11 @@ public class Util {
public static String md5(File file) { public static String md5(File file) {
try { try {
if (!file.exists()) return "";
MessageDigest digest = MessageDigest.getInstance("MD5"); MessageDigest digest = MessageDigest.getInstance("MD5");
FileInputStream fis = new FileInputStream(file); FileInputStream fis = new FileInputStream(file);
byte[] byteArray = new byte[1024]; byte[] bytes = new byte[4096];
int count; int count;
while ((count = fis.read(byteArray)) != -1) digest.update(byteArray, 0, count); while ((count = fis.read(bytes)) != -1) digest.update(bytes, 0, count);
fis.close(); fis.close();
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
for (byte b : digest.digest()) sb.append(Integer.toString((b & 0xff) + 0x100, 16).substring(1)); for (byte b : digest.digest()) sb.append(Integer.toString((b & 0xff) + 0x100, 16).substring(1));

Loading…
Cancel
Save