diff --git a/app/build.gradle b/app/build.gradle index b150df7e9..48e7fbd2e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -132,6 +132,8 @@ dependencies { implementation 'com.google.zxing:core:3.3.0' implementation 'com.guolindev.permissionx:permissionx:1.7.1' 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.eclipse.jetty:jetty-client: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-support:2.1.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(ext: 'aar', name: 'dlna-core', group: 'fongmi', version: 'release') leanbackImplementation(ext: 'aar', name: 'dlna-dmr', group: 'fongmi', version: 'release') diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java index 0ed4f4337..119542300 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java @@ -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.MenuKeyDialog; 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.Util; import com.github.catvod.utils.Shell; @@ -240,6 +241,7 @@ public class SettingCustomActivity extends BaseActivity implements MenuKeyCallba @Override public void setLanguage(int lang) { Setting.putLanguage(lang); + LanguageUtil.setLocale(LanguageUtil.getLocale(Setting.getLanguage())); mBinding.languageText.setText((ResUtil.getStringArray(R.array.select_language))[Setting.getLanguage()]); Util.restartApp(this); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseActivity.java index 3847eddcd..76e9c4068 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseActivity.java @@ -25,7 +25,6 @@ import com.fongmi.android.tv.R; import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.event.RefreshEvent; 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.Util; @@ -135,7 +134,6 @@ public abstract class BaseActivity extends AppCompatActivity { private Resources hackResources(Resources resources) { try { - LanguageUtil.setLanguage(resources, Setting.getLanguage()); AutoSizeCompat.autoConvertDensityOfGlobal(resources); return resources; } catch (Exception ignored) { diff --git a/app/src/main/java/com/fongmi/android/tv/App.java b/app/src/main/java/com/fongmi/android/tv/App.java index 78164c771..51e7bdba6 100644 --- a/app/src/main/java/com/fongmi/android/tv/App.java +++ b/app/src/main/java/com/fongmi/android/tv/App.java @@ -4,7 +4,6 @@ import android.app.Activity; import android.app.Application; import android.content.Context; import android.content.pm.PackageManager; -import android.content.res.Resources; import android.os.Bundle; import android.os.Handler; import android.os.Looper; @@ -107,6 +106,7 @@ public class App extends Application { public void onCreate() { super.onCreate(); Notify.createChannel(); + LanguageUtil.init(this); Logger.addLogAdapter(getLogAdapter()); OkHttp.get().setProxy(Setting.getProxy()); 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 public PackageManager getPackageManager() { if (!hook) return getBaseContext().getPackageManager(); diff --git a/app/src/main/java/com/fongmi/android/tv/utils/LanguageUtil.java b/app/src/main/java/com/fongmi/android/tv/utils/LanguageUtil.java index bcbe9e0ef..85db43d22 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/LanguageUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/LanguageUtil.java @@ -1,22 +1,29 @@ 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; public class LanguageUtil { - public static void setLanguage(Resources resources, int lang) { - resources.getConfiguration().locale = getLocale(lang); - resources.updateConfiguration(resources.getConfiguration(), resources.getDisplayMetrics()); + + public static void init(Application application) { + Lingver.init(application, getLocale(Setting.getLanguage())); + } + + public static void setLocale(Locale locale) { + Lingver.getInstance().setLocale(App.get(), locale); } public static int locale() { if (!Locale.getDefault().getLanguage().equals("zh")) return 0; - if (Locale.getDefault().getCountry().equals("TW")) return 2; - return 1; + if (Locale.getDefault().getCountry().equals("CN")) return 1; + return 2; } - private static Locale getLocale(int lang) { + public static Locale getLocale(int lang) { if (lang == 1) return Locale.SIMPLIFIED_CHINESE; else if (lang == 2) return Locale.TRADITIONAL_CHINESE; else return Locale.ENGLISH; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java index bc6f3bee3..dec7cb2b3 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java @@ -2,7 +2,6 @@ package com.fongmi.android.tv.ui.base; import android.app.Activity; import android.content.res.Configuration; -import android.content.res.Resources; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Build; @@ -26,10 +25,8 @@ import com.bumptech.glide.request.transition.Transition; import com.fongmi.android.tv.App; import com.fongmi.android.tv.R; 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.utils.FileUtil; -import com.fongmi.android.tv.utils.LanguageUtil; import com.fongmi.android.tv.utils.ResUtil; import org.greenrobot.eventbus.EventBus; @@ -139,20 +136,6 @@ 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) { Glide.with(App.get()).load(file).centerCrop().skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE).apply(new RequestOptions().override(ResUtil.getScreenWidth(), ResUtil.getScreenHeight())).into(new CustomTarget() { @Override diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingCustomFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingCustomFragment.java index 6beebcd39..9e103adc3 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingCustomFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingCustomFragment.java @@ -14,6 +14,7 @@ import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.databinding.FragmentSettingCustomBinding; import com.fongmi.android.tv.event.RefreshEvent; 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.Util; 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) -> { mBinding.languageText.setText(lang[which]); Setting.putLanguage(which); + LanguageUtil.setLocale(LanguageUtil.getLocale(Setting.getLanguage())); dialog.dismiss(); Util.restartApp(getActivity()); }).show();