app/src/main/java/com/driver/igotrip/base/MyApplication.kt
@@ -10,7 +10,6 @@ import android.app.Application import android.content.Intent import android.os.* import android.text.TextUtils import android.util.Log import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager @@ -18,7 +17,6 @@ import cn.sinata.rxnetty.LogHelper.logRecord import cn.sinata.rxnetty.NettyClient import cn.sinata.xldutils.BaseApplication import cn.sinata.xldutils.utils.SPUtils import cn.sinata.xldutils.utils.sysErr import com.driver.igotrip.R import com.driver.igotrip.bean.OrderBean @@ -31,7 +29,6 @@ import com.driver.igotrip.utils.AudioRecoderUtils import com.driver.igotrip.utils.Cache.CacheKey import com.driver.igotrip.utils.Cache.CacheUtil import com.driver.igotrip.utils.LanguageSP import com.driver.igotrip.utils.LogUtils import com.google.android.gms.maps.model.LatLng import com.google.cloud.texttospeech.v1.* @@ -71,7 +68,6 @@ appContext = this // Places.initialize(applicationContext, Const.google_key) // handleSSLHandshake() setDefaultLanguage() //如果是主进程 XUI.init(this) // UMConfigure.init( @@ -91,21 +87,6 @@ // JPushInterface.setDebugMode(true) // JPushInterface.init(this) setAlisa() } //设置默认语言 private fun setDefaultLanguage() { val language = SPUtils.getString(Const.language) if (TextUtils.isEmpty(language)) { SPUtils.save(Const.language, Const.Language.DEFAULT_LANGUAGE) val appLa = when (Const.Language.DEFAULT_LANGUAGE) { Const.Language.FRENCH -> LanguageSP.LanguageConst.FR_FR Const.Language.CHINESE -> LanguageSP.LanguageConst.ZH_CN else -> LanguageSP.LanguageConst.EN_US } // 保存新语言到 SP LanguageSP.saveLanguage(this, appLa) } } public fun setAlisa() { app/src/main/java/com/driver/igotrip/base/local/BaseLoginActivity.kt
@@ -1,4 +1,4 @@ package com.driver.emanagercar.ui.base.Local package com.driver.igotrip.base.local import android.annotation.SuppressLint import android.os.Bundle @@ -28,7 +28,6 @@ import io.reactivex.schedulers.Schedulers import org.greenrobot.eventbus.EventBus import org.jetbrains.anko.find import org.w3c.dom.Text import java.util.concurrent.TimeUnit abstract class BaseLoginActivity : MyBaseActivity() { app/src/main/java/com/driver/igotrip/base/local/BasePhotoActivity.kt
@@ -25,7 +25,6 @@ import androidx.activity.ComponentActivity import androidx.loader.content.CursorLoader import cn.sinata.xldutils.utils.sysErr import com.driver.emanagercar.ui.base.Local.BaseLoginActivity import com.driver.igotrip.R import com.driver.igotrip.bean.StringBean import com.driver.igotrip.netUtls.Api app/src/main/java/com/driver/igotrip/bean/websocket/HeartBean.java
@@ -1,11 +1,9 @@ package com.driver.igotrip.bean.websocket; import com.driver.igotrip.BuildConfig; import com.driver.igotrip.base.Const; import com.driver.igotrip.netUtls.HttpManager; import com.driver.igotrip.netUtls.NetKitKt; import com.driver.igotrip.utils.Cache.CacheKey; import cn.sinata.xldutils.utils.SPUtils; public class HeartBean { private int code = 200; @@ -45,7 +43,7 @@ this.data = data; } public static class DataBean{ public static class DataBean { private int type = 2; private int language = 2; private int userId = NetKitKt.getUserId(); @@ -55,26 +53,11 @@ public DataBean() { type = 2; language = getTypeByLanguage(); userId = NetKitKt.getUserId(); language = HttpManager.getTypeByLanguage(); userId = NetKitKt.getUserId(); token = CacheKey.INSTANCE.getToken(); device = "phoneDevice"; version = BuildConfig.VERSION_NAME; } } public static int getTypeByLanguage() { String lang = SPUtils.getString(Const.language); int type = 0; if (lang == null || lang.isEmpty() || lang.equals(Const.Language.ENGLISH)){ type = 2; } else if (lang.equals(Const.Language.CHINESE) || lang.equals("zh")){ type = 1; } else if (lang.equals(Const.Language.FRENCH)){ type = 3; } return type; } } app/src/main/java/com/driver/igotrip/netUtls/HttpManager.java
@@ -1,6 +1,8 @@ package com.driver.igotrip.netUtls; import static com.driver.igotrip.netUtls.NetKitKt.getToken; import android.util.Log; import com.driver.igotrip.BuildConfig; @@ -38,8 +40,6 @@ import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; import static com.driver.igotrip.netUtls.NetKitKt.getToken; /** * 网络请求管理类 @@ -70,7 +70,7 @@ map = new HashMap<>(); // 传参方式为json // headerParams.put("Content-Type", "application/json"); headerParams.put("Authorization", "Bearer "+getToken()); headerParams.put("Authorization", "Bearer " + getToken()); } public HashMap<String, Object> getMap() { @@ -106,8 +106,8 @@ // 监听请求条件 OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.connectTimeout(3, TimeUnit.MINUTES); builder.readTimeout(3,TimeUnit.MINUTES); builder.writeTimeout(3,TimeUnit.MINUTES); builder.readTimeout(3, TimeUnit.MINUTES); builder.writeTimeout(3, TimeUnit.MINUTES); // builder.addInterceptor(new Interceptor() { // @Override // public Response intercept(Chain chain) throws IOException { @@ -154,12 +154,12 @@ * @param observer observer */ // public <T extends BaseBean> void get(final String action, public void get(final String action, Map<String, String> params, Observer<ResponseBody> observer) { public void get(final String action, Map<String, String> params, Observer<ResponseBody> observer) { if (params == null) { params = new HashMap<>(); } int type = getTypeByLanguage(); params.put(Const.language,type+""); // 1 中文 2 英文 3 法文 params.put(Const.language, type + ""); // 1 中文 2 英文 3 法文 if (gson == null) { gson = new Gson(); } @@ -178,14 +178,12 @@ public static int getTypeByLanguage() { String lang = SPUtils.getString(Const.language, Const.Language.DEFAULT_LANGUAGE); int type = 0; if (lang == null || lang.isEmpty() || lang.equals(Const.Language.ENGLISH)){ type = 2; } else if (lang.equals(Const.Language.CHINESE) || lang.equals("zh")){ type = 1; } else if (lang.equals(Const.Language.FRENCH)){ if (lang == null || lang.isEmpty() || lang.equals(Const.Language.FRENCH)) { type = 3; } else if (lang.equals(Const.Language.CHINESE) || lang.equals("zh")) { type = 1; } else if (lang.equals(Const.Language.ENGLISH)) { type = 2; } return type; } @@ -198,22 +196,22 @@ */ // public <T extends BaseBean> void post(final String action, Map<String, Object> params, public void post(final String action, Map<String, Object> params, Observer<ResponseBody> observer) { Observer<ResponseBody> observer) { if (params == null) { params = new HashMap<>(); } int type = getTypeByLanguage(); params.put(Const.language,type); // 1 中文 2 英文 3 法文 params.put(Const.language, type); // 1 中文 2 英文 3 法文 StringBuilder pwd = new StringBuilder(); pwd.append(action); if (params.size() != 0){ if (params.size() != 0) { pwd.append("?"); } Iterator<Map.Entry<String,Object>> iterator = params.entrySet().iterator(); while (iterator.hasNext()){ Iterator<Map.Entry<String, Object>> iterator = params.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, Object> entry = iterator.next(); pwd.append(entry.getKey()).append("=").append(entry.getValue()); if (iterator.hasNext()){ if (iterator.hasNext()) { pwd.append("&"); } } @@ -221,7 +219,7 @@ Map<String, Object> par = new HashMap<>(); ApiServics jsonService = initBaseData(action).create(ApiServics.class); LogUtils.d("post", params.toString()); jsonService.postResult(action,headerParams, params) jsonService.postResult(action, headerParams, params) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(observer); @@ -229,10 +227,11 @@ /** * 将map数据转换为 普通的 json RequestBody * * @param map 以前的请求参数 * @return */ public static RequestBody convertMapToBody(Map<?,?> map) { public static RequestBody convertMapToBody(Map<?, ?> map) { return RequestBody.create(MediaType.parse("application/json; charset=utf-8"), new JSONObject(map).toString()); } app/src/main/java/com/driver/igotrip/ui/mine/SafeVerifyActivity.kt
@@ -7,7 +7,7 @@ import cn.sinata.xldutils.utils.SPUtils import cn.sinata.xldutils.utils.clickDelay import cn.sinata.xldutils.utils.getContent import com.driver.emanagercar.ui.base.Local.BaseLoginActivity import com.driver.igotrip.base.local.BaseLoginActivity import com.driver.igotrip.R import com.driver.igotrip.base.BaseEvent import com.driver.igotrip.base.Const @@ -15,7 +15,6 @@ import com.driver.igotrip.netUtls.callNet import com.driver.igotrip.netUtls.getMapByAny import com.driver.igotrip.utils.Cache.CacheKey import com.google.recaptcha.sample.RecaptchaVisual import com.google.recaptcha.sample.RecaptchaVisualException import com.lljjcoder.style.citylist.Toast.ToastUtils import kotlinx.coroutines.launch app/src/main/java/com/driver/igotrip/ui/mine/SettingLoginPwdActivity.kt
@@ -1,12 +1,11 @@ package com.driver.igotrip.ui.mine import android.view.View import android.widget.EditText import android.widget.ImageView import android.widget.TextView import cn.sinata.xldutils.utils.clickDelay import cn.sinata.xldutils.utils.getContent import com.driver.emanagercar.ui.base.Local.BaseLoginActivity import com.driver.igotrip.base.local.BaseLoginActivity import com.driver.igotrip.R import com.driver.igotrip.base.BaseEvent import com.driver.igotrip.netUtls.Api app/src/main/java/com/driver/igotrip/ui/mine/setting/LanghActivity.kt
@@ -1,8 +1,6 @@ package com.driver.igotrip.ui.mine.setting import android.util.Log import android.widget.TextView import cn.sinata.xldutils.utils.SPUtils import cn.sinata.xldutils.utils.clickDelay import cn.sinata.xldutils.utils.setDrawableNull import cn.sinata.xldutils.utils.setDrawableRight @@ -13,8 +11,6 @@ import com.driver.igotrip.netUtls.callNet import com.driver.igotrip.netUtls.getMapByAny import com.driver.igotrip.ui.DialogUtil import com.driver.igotrip.ui.pub.StartActivity import com.driver.igotrip.utils.LanguageManager import com.driver.igotrip.utils.LanguageSP import com.driver.igotrip.utils.LanguageSP.LanguageConst import com.driver.igotrip.utils.LanguageSP.LanguageConst.EN_US @@ -43,16 +39,8 @@ override fun setOnclick() { tv_china.clickDelay { DialogUtil.getDelAndSureDialog(this, getString(R.string.确定切换语言吗), {}) { /* SPUtils.save(Const.language,Const.Language.CHINESE) changeServerLanguage() LanguageUtil.changeAppLanguage(this,Const.Language.CHINESE,"")*/ SPUtils.save(Const.language, Const.Language.CHINESE) LanguageManager.switchLanguage( this, LanguageConst.ZH_CN, StartActivity::class.java ) // 保存新语言到 SP LanguageSP.saveLanguage(this, LanguageConst.ZH_CN) changeServerLanguage { LanguageUtil.reApp(this) } @@ -62,16 +50,7 @@ tv_en.clickDelay { DialogUtil.getDelAndSureDialog(this, getString(R.string.确定切换语言吗), {}) { /* SPUtils.save(Const.language,Const.Language.ENGLISH) changeServerLanguage() LanguageUtil.changeAppLanguage(this,Const.Language.ENGLISH,"") LanguageUtil.reApp(this)*/ SPUtils.save(Const.language, Const.Language.ENGLISH) LanguageManager.switchLanguage( this, LanguageConst.EN_US, StartActivity::class.java ) LanguageSP.saveLanguage(this, LanguageConst.EN_US) changeServerLanguage { LanguageUtil.reApp(this) } @@ -80,16 +59,7 @@ tv_fr.clickDelay { DialogUtil.getDelAndSureDialog(this, getString(R.string.确定切换语言吗), {}) { /* SPUtils.save(Const.language,Const.Language.FRENCH) changeServerLanguage() LanguageUtil.changeAppLanguage(this,Const.Language.FRENCH,"") LanguageUtil.reApp(this)*/ SPUtils.save(Const.language, Const.Language.FRENCH) LanguageManager.switchLanguage( this, LanguageConst.FR_FR, StartActivity::class.java ) LanguageSP.saveLanguage(this, LanguageConst.FR_FR) changeServerLanguage { LanguageUtil.reApp(this) } app/src/main/java/com/driver/igotrip/ui/pub/ForgetPwdActivity.kt
@@ -8,10 +8,8 @@ import cn.sinata.xldutils.utils.clickDelay import cn.sinata.xldutils.utils.getAreaCode import cn.sinata.xldutils.utils.getString import com.driver.emanagercar.ui.base.Local.BaseLoginActivity import com.driver.igotrip.base.local.BaseLoginActivity import com.driver.igotrip.R import com.driver.igotrip.base.MyApplication import com.driver.igotrip.base.gaode.AMapKit import com.driver.igotrip.bean.QueryPhoneBean import com.driver.igotrip.netUtls.Api import com.driver.igotrip.netUtls.callNet app/src/main/java/com/driver/igotrip/ui/pub/LoginActivity.kt
@@ -3,30 +3,24 @@ import android.annotation.SuppressLint import android.app.Activity import android.content.Intent import android.util.Log import android.view.Gravity import android.view.View import android.widget.EditText import android.widget.ImageView import android.widget.TextView import android.widget.Toast import cn.sinata.xldutils.utils.SPUtils import cn.sinata.xldutils.utils.clickDelay import cn.sinata.xldutils.utils.getAreaCode import cn.sinata.xldutils.utils.getString import com.driver.emanagercar.ui.base.Local.BaseLoginActivity import com.driver.igotrip.base.local.BaseLoginActivity import com.driver.igotrip.R import com.driver.igotrip.base.MyApplication import com.driver.igotrip.base.gaode.AMapKit import com.driver.igotrip.bean.AgreeBean import com.driver.igotrip.bean.LoginBean import com.driver.igotrip.netUtls.Api import com.driver.igotrip.netUtls.callNet import com.driver.igotrip.netUtls.getMapByAny import com.driver.igotrip.ui.main.GetOrderFragment import com.driver.igotrip.ui.main.MainActivity import com.driver.igotrip.utils.Cache.CacheKey import com.driver.igotrip.utils.LanguageUtil import com.driver.igotrip.utils.PhoneCheckUtil import com.lzf.easyfloat.EasyFloat import com.lzf.easyfloat.enums.ShowPattern @@ -37,7 +31,6 @@ import org.jetbrains.anko.startActivity import org.jetbrains.anko.startActivityForResult import org.jetbrains.anko.toast import java.util.* class LoginActivity : BaseLoginActivity() { override fun setContentView() { app/src/main/java/com/driver/igotrip/utils/LanguageManager.java
@@ -1,8 +1,6 @@ package com.driver.igotrip.utils; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.os.Build; import android.os.LocaleList; @@ -19,7 +17,7 @@ */ public static Context wrapContext(Context context) { String language = LanguageSP.getLanguage(context); Log.e( "语言: ",language ); Log.e("语言: ", language); // 否则根据保存的语言配置 Context return updateContextLocale(context, language); } @@ -53,7 +51,7 @@ */ private static Locale getLocaleFromLanguage(String language) { if (TextUtils.isEmpty(language)) { return Locale.getDefault(); return Locale.FRENCH; } String[] parts = language.split("-"); if (parts.length == 1) { @@ -61,35 +59,5 @@ } else { return new Locale(parts[0], parts[1]); // 如 "zh-CN" -> Locale("zh", "CN") } } /** * 切换语言并重启应用(确保所有页面生效) * @param context 上下文 * @param newLanguage 新语言(如 LanguageConst.ZH_CN) * @param launcherActivityClass 应用的启动页 Activity */ public static void switchLanguage(Context context, String newLanguage, Class<?> launcherActivityClass) { // 保存新语言到 SP LanguageSP.saveLanguage(context, newLanguage); // 重启应用(清除旧栈,启动新栈) // restartApp(context, launcherActivityClass); } /** * 重启应用(无缝切换) */ private static void restartApp(Context context, Class<?> launcherActivityClass) { Intent intent = new Intent(context, launcherActivityClass); // 清除所有旧 Activity,创建新任务栈 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); context.startActivity(intent); // 关闭当前页面(如果是 Activity 调用) if (context instanceof Activity) { ((Activity) context).overridePendingTransition(0, 0); // 无动画,避免闪屏 ((Activity) context).finish(); } // 杀死旧进程(确保资源重新加载) android.os.Process.killProcess(android.os.Process.myPid()); } } app/src/main/java/com/driver/igotrip/utils/LanguageSP.java
@@ -3,12 +3,28 @@ import android.content.Context; import android.content.SharedPreferences; import com.driver.igotrip.base.Const; import cn.sinata.xldutils.utils.SPUtils; public class LanguageSP { private static final String SP_NAME = "app_language"; private static final String KEY_LANGUAGE = "current_language"; // 保存当前选择的语言 public static void saveLanguage(Context context, String language) { String l = Const.Language.DEFAULT_LANGUAGE; switch (language) { case LanguageConst.EN_US: l = Const.Language.ENGLISH; break; case LanguageConst.ZH_CN: l = Const.Language.CHINESE; break; default: break; } SPUtils.save(Const.language, l); SharedPreferences sp = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE); sp.edit().putString(KEY_LANGUAGE, language).apply(); } @@ -16,10 +32,22 @@ // 获取保存的语言(默认英文) public static String getLanguage(Context context) { SharedPreferences sp = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE); return sp.getString(KEY_LANGUAGE, LanguageConst.EN_US); String language = SPUtils.getString(Const.language, Const.Language.DEFAULT_LANGUAGE); String l = LanguageConst.FR_FR; switch (language) { case Const.Language.ENGLISH: l = LanguageConst.EN_US; break; case Const.Language.CHINESE: l = LanguageConst.ZH_CN; break; default: break; } return sp.getString(KEY_LANGUAGE, l); } public static class LanguageConst { public static class LanguageConst { // 中文(简体) public static final String ZH_CN = "zh-CN"; // 英文(美国)