diff --git a/app/src/main/java/com/ckkj/water/AppConfig.java b/app/src/main/java/com/ckkj/water/AppConfig.java index 22d7c4a..401a2d0 100644 --- a/app/src/main/java/com/ckkj/water/AppConfig.java +++ b/app/src/main/java/com/ckkj/water/AppConfig.java @@ -1,7 +1,10 @@ package com.ckkj.water; public class AppConfig { - + //用户当前保存的语言状态,用于接口请求头传参 + //zh_CN 中文 + //en_US 英文 + public static String LOCAL_LANUAGE = "zh_CN"; /**************************生产*******************************/ diff --git a/app/src/main/java/com/ckkj/water/login/LoginActivity.java b/app/src/main/java/com/ckkj/water/login/LoginActivity.java index d5bd0ca..73672e6 100644 --- a/app/src/main/java/com/ckkj/water/login/LoginActivity.java +++ b/app/src/main/java/com/ckkj/water/login/LoginActivity.java @@ -87,60 +87,83 @@ public class LoginActivity extends BaseActivity { + ToastUtil.showShort(mContext, "用户协议"); + } + ); + + addClickableSpan( + spannableString, + content, + privacyPolicyText, + () -> { + ToastUtil.showShort(mContext, "隐私政策"); + } + ); + + tvAgreement.setText(spannableString); + tvAgreement.setMovementMethod(LinkMovementMethod.getInstance()); + tvAgreement.setHighlightColor(Color.TRANSPARENT); + } + + private void addClickableSpan( + SpannableString spannableString, + String content, + String target, + Runnable action) { + + int start = content.indexOf(target); + + if (start < 0) { + return; + } + + int end = start + target.length(); + + ClickableSpan clickableSpan = new ClickableSpan() { + @Override public void onClick(@NonNull View widget) { - // 跳转用户协议 -// Bundle bundle = new Bundle(); -// bundle.putInt("from_requse_code", WebviewUserAgreement.AGREEMENT_CODE); -// goToWihoutNoPresent(mContext, WebviewUserAgreement.class,bundle); - ToastUtil.showShort(mContext,"用户协议"); + action.run(); } @Override public void updateDrawState(@NonNull TextPaint ds) { super.updateDrawState(ds); - ds.setColor(ContextCompat.getColor(mContext, R.color.color_zhu)); // 设置颜色 - ds.setUnderlineText(false); // 去掉下划线 - } - }; - int start1 = content.indexOf("《用户协议》"); - int end1 = start1 + "《用户协议》".length(); - spannableString.setSpan(userAgreementSpan, start1, end1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - // 设置“隐私政策”可点击 - ClickableSpan privacyPolicySpan = new ClickableSpan() { - @Override - public void onClick(@NonNull View widget) { - // 跳转隐私政策 -// Bundle bundleYS = new Bundle(); -// bundleYS.putInt("from_requse_code",WebviewUserAgreement.PRIVACY_CODE); -// goToWihoutNoPresent(mContext, WebviewUserAgreement.class,bundleYS); - ToastUtil.showShort(mContext,"跳转隐私政策"); - } + ds.setColor( + ContextCompat.getColor( + mContext, + R.color.color_zhu + ) + ); - @Override - public void updateDrawState(@NonNull TextPaint ds) { - super.updateDrawState(ds); - ds.setColor(ContextCompat.getColor(mContext, R.color.color_zhu)); // 设置颜色 ds.setUnderlineText(false); } }; - int start2 = content.indexOf("《隐私政策》"); - int end2 = start2 + "《隐私政策》".length(); - spannableString.setSpan(privacyPolicySpan, start2, end2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - tvAgreement.setText(spannableString); - tvAgreement.setMovementMethod(LinkMovementMethod.getInstance()); // 开启点击事件 - tvAgreement.setHighlightColor(Color.TRANSPARENT); + spannableString.setSpan( + clickableSpan, + start, + end, + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE + ); } public void onClick(View v) { diff --git a/app/src/main/java/com/ckkj/water/network/NetWorkManager.java b/app/src/main/java/com/ckkj/water/network/NetWorkManager.java index 072f4c0..7c1c6a1 100644 --- a/app/src/main/java/com/ckkj/water/network/NetWorkManager.java +++ b/app/src/main/java/com/ckkj/water/network/NetWorkManager.java @@ -13,6 +13,7 @@ import com.ckkj.water.EventMessage; import com.ckkj.water.MyApplication; import com.ckkj.water.R; import com.ckkj.water.utils.AppInfoUtil; +import com.ckkj.water.utils.manager.LanguageManager; import org.json.JSONArray; import org.json.JSONException; @@ -338,7 +339,7 @@ public class NetWorkManager { try { map.put("Authorization", "Bearer " + AppConfig.USER_TOKEN); map.put("clientId", AppConfig.APP_CLIENT_ID); -// map.put("Authorization", "Bearer " + "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoxOTI1NzYwMTgxMTMyNzI2MDIyLCJ1c2VyX2tleSI6IjY0YjVmMjRjLTIyM2ItNDRkZC1iMDJlLTI0ZTRiNzNmODgxZCIsInVzZXJuYW1lIjoiMTg2NDU5MDQzMDIifQ.PiIjBZlQ9UtOuotfhd5mZZO2e8SbMpbXU7VDvVeiWZIecsFDUd51Rae09EFxQ_MJmBUEvIdyysnyqYiBC2AEfw"); + map.put("content-language", LanguageManager.getCurrentRequestLanguage()); } catch (Exception e) { e.printStackTrace(); } diff --git a/app/src/main/java/com/ckkj/water/utils/manager/LanguageManager.java b/app/src/main/java/com/ckkj/water/utils/manager/LanguageManager.java index 47dcccf..88ec903 100644 --- a/app/src/main/java/com/ckkj/water/utils/manager/LanguageManager.java +++ b/app/src/main/java/com/ckkj/water/utils/manager/LanguageManager.java @@ -23,6 +23,8 @@ import com.ckkj.water.utils.show.ToastUtil; public class LanguageManager { private static final String TAG = "LanguageManager"; + private static final String LANGUAGE_ZH_CN = "zh_CN"; + private static final String LANGUAGE_EN_US = "en_US"; /** * 语言类型枚举 @@ -77,6 +79,20 @@ public class LanguageManager { return getCurrentLanguageType().index; } + /** + * 获取接口请求头需要的语言值 + */ + public static String getCurrentRequestLanguage() { + return getCurrentLanguageType() == LanguageType.ENGLISH ? LANGUAGE_EN_US : LANGUAGE_ZH_CN; + } + + /** + * 同步当前语言到全局配置 + */ + public static void syncCurrentLanguageToAppConfig() { + AppConfig.LOCAL_LANUAGE = getCurrentRequestLanguage(); + } + /** * 切换语言 * @param languageType 要切换到的语言类型 @@ -97,6 +113,7 @@ public class LanguageManager { // 设置应用语言 LocaleListCompat localeList = LocaleListCompat.forLanguageTags(languageType.languageTag); AppCompatDelegate.setApplicationLocales(localeList); + AppConfig.LOCAL_LANUAGE = languageType == LanguageType.ENGLISH ? LANGUAGE_EN_US : LANGUAGE_ZH_CN; // 如果传入了Activity,则重启应用 if (activity != null) { @@ -163,6 +180,7 @@ public class LanguageManager { LocaleListCompat localeList = LocaleListCompat.forLanguageTags(savedLocale); AppCompatDelegate.setApplicationLocales(localeList); } + syncCurrentLanguageToAppConfig(); } /** diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 058dd29..c02fd8d 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -1,154 +1,177 @@ - - 验证码登录 - 密码登录 - 请输入手机号或邮箱账号 - 请输入验证码 - 获取验证码 - 登录 - 立即注册 + + Sign In with Code + Sign In with Password + Enter your phone number or email + Enter verification code + Get Code + Sign In + Sign Up Now Language 中文 English - Language changed - 忘记密码 - 请输入原密码 - 请输入密码 - 请再次输入密码 - 请输入新密码 - 请再次输入新密码 - 手机号不能为空 - 两次输入的密码不一致 - 请输入正确的手机号或邮箱 - 手机号或邮箱不能为空 - 请再次输入密码 - 注册用户 - 注册 - 注册成功 - 提交 - 保存 - 进入平台 - 进入平台(%1$d) - 倒计时结束 - 找回密码 - 设置权限 - 使用智溉管家,需要给予以下访问权限 - 蓝牙 - 用于连接设备 - WIFI - 继续 - 首页 - 排程 - 历史 - 我的 - 扫描附近设备 - 持续自动搜索中... - 请将手机尽量靠近要添加的设备 - 扫描添加 - 添加设备 - 选择WI-FI - 请输入WIFI名称 - 请输入WIFI密码 - 请先开启WiFi - 未扫描到WiFi - WiFi扫描失败 - 下一步 - 请选择要连接的Wifi - 请输入Wifi密码 - 连接设备 - 请保持手机蓝牙开启并将手机尽量靠近设备 - 向设备传输信息 - 设备连接网络 - 完成 - 重置 - 设置名称 - 请输入设备名称 - 工作进度 - 进程结束后自动停止 - 浇水时长 - 自定义时间 - 开启浇水 - 关闭浇水 - 基本设置 - 设备名称 - 设备信息 - WiFi管理 - 解绑设备 - 设备解绑成功 - 设置 - 确定 - 取消 - 提示 - 确定解除该绑定的设备 - 设备编码 - 设备型号 - 序列号 - 固件版本 + Language updated + Forgot Password? + Enter password + Enter current password + Confirm password + Enter new password + Confirm new password + Passwords do not match + Phone number or email is required + Password is required + Please confirm your password + Enter a valid phone number or email + Password reset successfully + Create Account + Sign Up + Registration Successful + Submit + Save + Get Started + Get Started (%1$d) + Countdown Finished + Reset Password + Permissions + Smart Irrigation requires the following permissions + Bluetooth + Used to connect devices + Wi-Fi + Continue + + Home + Schedules + History + Profile + + Scan Nearby Devices + Searching for devices... + Move your phone closer to the device + Add Device + Add Device + + Select Wi-Fi + Enter Wi-Fi name + Enter Wi-Fi password + Please enable Wi-Fi first + No Wi-Fi networks found + Failed to scan Wi-Fi networks + + Next + Select a Wi-Fi network + Enter the Wi-Fi password + + Connect Device + Keep Bluetooth enabled and stay close to the device + Sending information to device + Connecting device to network + + Finish + Reset + Set Name + Enter device name + + Watering Progress + Will stop automatically when completed + Watering Duration + Custom Duration + Start Watering + Stop Watering + + General Settings + Device Name + Device Info + Wi-Fi Settings + Remove Device + Device removed successfully + + Settings + Confirm + Cancel + Notice + Are you sure you want to remove this device? + + Device ID + Model + Serial Number + Firmware Version + Running + Idle + + + Enter schedule name + + New Schedule + Schedules + Watering Settings + Linked Devices + Available Devices + New Schedule + Edit Schedule + Schedule Name + Schedule name cannot be empty + Select watering days + Select a device to link + Delete this schedule? + Deleted successfully + Disable this schedule? + No devices linked + Repeat + Duration + Start Time + Select watering time + Enter watering duration + Duration cannot be less than 0 + Status + Delete + Edit + Schedule Details + Refresh + + + History + Watering History + Statistics + Date Range + Trigger Type + Date Range + Select start date + Select end date + Start date is required + End date is required + End date cannot be earlier than start date + Manual + Scheduled + Select a trigger type + Watering Time + + Total Watering Sessions + This Week + This Month + Scheduled Sessions + Manual Sessions + Total Watering Time + Average Duration + times + + + Profile + Sign Out + Nickname + Phone Number + Profile Information + Password Settings + Change Password + Forgot Password + Sign out of your account - - 输入排程名称 - +新增排程 - 排程 - 浇水配置 - 已关联设备 - 关联设备 - 新增排程 - Edit Plan - 排程名称 - 浇水周期 - 浇水时长 - 开始时间 - 请选择浇水时间 - 浇水时长不能小于0 - 请输入浇水时长 - 状态 - 删除 - 编辑 - 排程详情 - - - - 历史 - 浇水历史 - 数据统计 - 时间筛选 - 触发方式 - 时间 - 选择开始时间 - 选择结束时间 - 开始时间不能为空 - 结束时间不能为空 - 结束时间不能早于开始时间 - 手动 - 排程 - 请选择一种触发方式 - 浇水时间 - - 总浇水次数 - 本周浇水次数 - 本月浇水次数 - 排程浇水次数 - 手动浇水次数 - 总浇水时间 - 平均浇水时间 - - - - - - - - 个人中心 - 退出登录 - 昵称 - 绑定手机 - 个人资料 - 密码管理 - 重置密码 - 找回密码 + + I have read and agree to the Smart Irrigation User Agreement and Privacy Policy + User Agreement + Privacy Policy + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c85de1e..d0aed5e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,7 @@ + 验证码登录 密码登录 请输入手机号或邮箱账号 @@ -147,6 +148,11 @@ + + 我已阅读并同意智能浇灌《用户协议》《隐私政策》 + 《用户协议》 + 《隐私政策》 + @@ -163,7 +169,7 @@ - +