This commit is contained in:
fengjignqi
2026-07-10 15:22:01 +08:00
parent ed9c825bc7
commit 3f0260a37a
11 changed files with 81 additions and 35 deletions

View File

@@ -4,10 +4,10 @@
<selectionStates> <selectionStates>
<SelectionState runConfigName="app"> <SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" /> <option name="selectionMode" value="DROPDOWN" />
<DropdownSelection timestamp="2026-07-03T09:58:25.938181100Z"> <DropdownSelection timestamp="2026-07-10T01:12:18.170652300Z">
<Target type="DEFAULT_BOOT"> <Target type="DEFAULT_BOOT">
<handle> <handle>
<DeviceId pluginId="Default" identifier="serial=emulator-5554;connection=a12bc17f" /> <DeviceId pluginId="PhysicalDevice" identifier="serial=D122222104A9" />
</handle> </handle>
</Target> </Target>
</DropdownSelection> </DropdownSelection>

View File

@@ -21,7 +21,8 @@ public class AppConfig {
// public static boolean IS_TEST_REQUEST = true; // public static boolean IS_TEST_REQUEST = true;
/**************************本地*******************************/ /**************************本地*******************************/
public static String BASE_URL = "http://192.168.1.217:8081/";//测试 public static String BASE_URL = "http://192.168.1.217:8081/";//后端本地测试
// public static String BASE_URL = "http://47.97.217.123:8081/";//服务器测试
public static String BASE_URL_TWO = BASE_URL;//测试 public static String BASE_URL_TWO = BASE_URL;//测试
public static String BASE_URL_THREE = BASE_URL;//测试 public static String BASE_URL_THREE = BASE_URL;//测试
public static boolean IS_TEST_REQUEST = true; public static boolean IS_TEST_REQUEST = true;

View File

@@ -1,6 +1,8 @@
package com.ckkj.water.guide; package com.ckkj.water.guide;
import android.content.Intent; import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.view.View; import android.view.View;
@@ -24,6 +26,8 @@ import com.ckkj.water.network.BaseBean;
import com.ckkj.water.utils.dataUtil.SharePreUtil; import com.ckkj.water.utils.dataUtil.SharePreUtil;
import com.ckkj.water.utils.manager.ActivityManager; import com.ckkj.water.utils.manager.ActivityManager;
import java.util.Locale;
import me.jessyan.autosize.internal.CancelAdapt; import me.jessyan.autosize.internal.CancelAdapt;
/** /**
@@ -54,11 +58,11 @@ public class LaunchActivity extends BaseActivity<GuideLayoutBinding, MainPresent
if (mIsFirstEnterApp) { if (mIsFirstEnterApp) {
//首次进入 //首次进入
showDialogtext( showDialogtext(
getString(R.string.tip_text), getSystemLanguageString(R.string.tip_text),
getString(R.string.tips_yinsizhengce_dialog), getSystemLanguageString(R.string.tips_yinsizhengce_dialog),
getString(R.string.agree), getSystemLanguageString(R.string.agree),
getString(R.string.reject), getSystemLanguageString(R.string.reject),
getString(R.string.user_agreement) getSystemLanguageString(R.string.user_agreement)
, new OnDialogClick() { , new OnDialogClick() {
@Override @Override
@@ -118,6 +122,16 @@ public class LaunchActivity extends BaseActivity<GuideLayoutBinding, MainPresent
finish(); finish();
} }
private String getSystemLanguageString(int resId) {
Locale systemLocale = Resources.getSystem().getConfiguration().getLocales().get(0);
Locale targetLocale = Locale.CHINESE.getLanguage().equals(systemLocale.getLanguage())
? Locale.SIMPLIFIED_CHINESE
: Locale.ENGLISH;
Configuration configuration = new Configuration(getResources().getConfiguration());
configuration.setLocale(targetLocale);
return createConfigurationContext(configuration).getString(resId);
}
@Override @Override
public MainPresenter createPresenter() { public MainPresenter createPresenter() {

View File

@@ -160,13 +160,13 @@ public class IndexFragment extends BaseFragment<IndexFragmentLayoutBinding, Inde
ArrayList<String> results = data.getStringArrayListExtra(MNScanManager.INTENT_KEY_RESULT_SUCCESS); ArrayList<String> results = data.getStringArrayListExtra(MNScanManager.INTENT_KEY_RESULT_SUCCESS);
if (results == null || results.isEmpty()) { if (results == null || results.isEmpty()) {
ToastUtil.showShort(mContext, "二维码内容不能为空"); ToastUtil.showShort(mContext, getString(R.string.qr_content_empty));
return; return;
} }
String scanContent = results.get(0); String scanContent = results.get(0);
if (TextUtils.isEmpty(scanContent)) { if (TextUtils.isEmpty(scanContent)) {
ToastUtil.showShort(mContext, "二维码内容不能为空"); ToastUtil.showShort(mContext, getString(R.string.qr_content_empty));
return; return;
} }
@@ -174,14 +174,14 @@ public class IndexFragment extends BaseFragment<IndexFragmentLayoutBinding, Inde
try { try {
json = new JSONObject(scanContent); json = new JSONObject(scanContent);
} catch (JSONException e) { } catch (JSONException e) {
ToastUtil.showShort(mContext, "二维码格式错误"); ToastUtil.showShort(mContext, getString(R.string.qr_format_error));
return; return;
} }
try { try {
WaterDeviceEntity entity = new WaterDeviceEntity(); WaterDeviceEntity entity = new WaterDeviceEntity();
if(TextUtils.isEmpty(json.getString("mac")) if(TextUtils.isEmpty(json.getString("mac"))
|| TextUtils.isEmpty(json.getString("name"))){ || TextUtils.isEmpty(json.getString("name"))){
ToastUtil.showShort(mContext,"请扫描正确的二维码"); ToastUtil.showShort(mContext,getString(R.string.scan_correct_qr));
return; return;
} }
entity.setMacAddress(json.getString("mac")); entity.setMacAddress(json.getString("mac"));
@@ -191,7 +191,7 @@ public class IndexFragment extends BaseFragment<IndexFragmentLayoutBinding, Inde
mPresenter.bindDeviceStatus(entity); mPresenter.bindDeviceStatus(entity);
} }
} catch (JSONException e) { } catch (JSONException e) {
ToastUtil.showShort(mContext, "二维码格式错误"); ToastUtil.showShort(mContext, getString(R.string.scan_correct_qr));
return; return;
} }
break; break;
@@ -199,7 +199,7 @@ public class IndexFragment extends BaseFragment<IndexFragmentLayoutBinding, Inde
String resultError = data.getStringExtra(MNScanManager.INTENT_KEY_RESULT_ERROR); String resultError = data.getStringExtra(MNScanManager.INTENT_KEY_RESULT_ERROR);
break; break;
case MNScanManager.RESULT_CANCLE: case MNScanManager.RESULT_CANCLE:
ToastUtil.showShort(mContext,"取消扫码"); ToastUtil.showShort(mContext,getString(R.string.cancel_scan));
break; break;
} }
} }
@@ -259,6 +259,7 @@ public class IndexFragment extends BaseFragment<IndexFragmentLayoutBinding, Inde
*/ */
@Override @Override
public void queryDeviceBindStatusSuccess(WaterDeviceEntity entity) { public void queryDeviceBindStatusSuccess(WaterDeviceEntity entity) {
pendingDeviceEntity = entity.getBindDevice();
switch (entity.getBindDeviceStatus()){ switch (entity.getBindDeviceStatus()){
case 200: case 200:
@@ -269,6 +270,7 @@ public class IndexFragment extends BaseFragment<IndexFragmentLayoutBinding, Inde
break; break;
case 302: case 302:
case 305:
// 这是一台没有在mqtt中注册的设备需要通过蓝牙连接配网,(可理解为新设备,走蓝牙,配网) // 这是一台没有在mqtt中注册的设备需要通过蓝牙连接配网,(可理解为新设备,走蓝牙,配网)
// 先检查蓝牙权限和开启状态 // 先检查蓝牙权限和开启状态
@@ -423,7 +425,7 @@ public class IndexFragment extends BaseFragment<IndexFragmentLayoutBinding, Inde
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) { public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
hidePermissionDialog(); hidePermissionDialog();
if (requestCode == REQUEST_EVENT_CODE_BLUETOOTH_PERMISSION) { if (requestCode == REQUEST_EVENT_CODE_BLUETOOTH_PERMISSION) {
ToastUtil.showShort(mContext, "需要蓝牙权限才能添加设备"); ToastUtil.showShort(mContext, getString(R.string.bluetooth_permission_required));
} }
} }
@@ -451,7 +453,7 @@ public class IndexFragment extends BaseFragment<IndexFragmentLayoutBinding, Inde
goToDeviceProvisioning(); goToDeviceProvisioning();
} }
} else { } else {
ToastUtil.showShort(mContext, "需要蓝牙权限才能添加设备"); ToastUtil.showShort(mContext, getString(R.string.bluetooth_permission_required));
} }
} }
} }
@@ -461,13 +463,13 @@ public class IndexFragment extends BaseFragment<IndexFragmentLayoutBinding, Inde
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_ENABLE_BT) { if (requestCode == REQUEST_ENABLE_BT) {
if (resultCode == -1) { // RESULT_OK if (resultCode == -1) { // RESULT_OK
ToastUtil.showShort(mContext, "蓝牙已开启"); ToastUtil.showShort(mContext, getString(R.string.bluetooth_enabled));
bluetoothReady = true; bluetoothReady = true;
if (pendingDeviceEntity != null) { if (pendingDeviceEntity != null) {
goToDeviceProvisioning(); goToDeviceProvisioning();
} }
} else { } else {
ToastUtil.showShort(mContext, "请开启蓝牙以添加设备"); ToastUtil.showShort(mContext, getString(R.string.enable_bluetooth_to_add_device));
} }
} }
} }

View File

@@ -29,6 +29,8 @@ public class DeviceAdapter extends BaseQuickAdapter<WaterDeviceEntity, BaseViewH
View viewStatus = holder.getView(R.id.view_status_dot); View viewStatus = holder.getView(R.id.view_status_dot);
holder.setText(R.id.tv_device_name,item.getDeviceName()); holder.setText(R.id.tv_device_name,item.getDeviceName());
holder.setText(R.id.tv_device_serial,item.getDeviceSn()); holder.setText(R.id.tv_device_serial,item.getDeviceSn());
//设备联网在线
if(item.getStatus().equals("1")){
switch (item.getWorkStatus()){ switch (item.getWorkStatus()){
case "0"://待机 case "0"://待机
holder.setText(R.id.tv_device_status,mContext.getString(R.string.device_status_not_working)); holder.setText(R.id.tv_device_status,mContext.getString(R.string.device_status_not_working));
@@ -42,6 +44,12 @@ public class DeviceAdapter extends BaseQuickAdapter<WaterDeviceEntity, BaseViewH
viewStatus.setBackground(mContext.getResources().getDrawable(R.drawable.shape_status_dot_green)); viewStatus.setBackground(mContext.getResources().getDrawable(R.drawable.shape_status_dot_green));
break; break;
} }
}else{
holder.setText(R.id.tv_device_status,mContext.getString(R.string.device_status_offline));
holder.setTextColor(R.id.tv_device_status,mContext.getResources().getColor(R.color.color_999999));
viewStatus.setBackground(mContext.getResources().getDrawable(R.drawable.shape_status_dot_999999));
}
// if(item.getStatus().equals("1") || item.getStatus().equals("2")){ // if(item.getStatus().equals("1") || item.getStatus().equals("2")){
// }else{ // }else{
// holder.setText(R.id.tv_device_status,mContext.getString(R.string.device_status_offline)); // holder.setText(R.id.tv_device_status,mContext.getString(R.string.device_status_offline));

View File

@@ -153,7 +153,7 @@ public class ForgetPasswordActivity extends BaseActivity<RegisterLayoutBinding,
} }
private CountDownTimer cdTimer = new CountDownTimer(6000, 1000) { private CountDownTimer cdTimer = new CountDownTimer(60000, 1000) {
@Override @Override
public void onTick(long millisUntilFinished) { public void onTick(long millisUntilFinished) {
viewBinding.tvGetVerifiCode.setText("(" + millisUntilFinished / 1000 + ") " + getString(R.string.login_resend)); viewBinding.tvGetVerifiCode.setText("(" + millisUntilFinished / 1000 + ") " + getString(R.string.login_resend));
@@ -191,7 +191,9 @@ public class ForgetPasswordActivity extends BaseActivity<RegisterLayoutBinding,
@Override @Override
public void getPhoneCodeSuccess(BaseBean bean) { public void getPhoneCodeSuccess(BaseBean bean) {
hideDialogLoading();
ToastUtil.showLong(mContext, getString(R.string.login_code_sent));
cdTimer.start();
} }
@Override @Override

View File

@@ -21,6 +21,8 @@ import com.ckkj.water.mine.mvp.MineImpl;
import com.ckkj.water.mine.mvp.MinePresenter; import com.ckkj.water.mine.mvp.MinePresenter;
import com.ckkj.water.network.BaseBean; import com.ckkj.water.network.BaseBean;
import com.ckkj.water.utils.LubanCompressUtil; import com.ckkj.water.utils.LubanCompressUtil;
import com.ckkj.water.utils.PreviewFileUtil;
import com.ckkj.water.utils.dataUtil.FileUtil;
import com.ckkj.water.utils.dataUtil.SharePreUtil; import com.ckkj.water.utils.dataUtil.SharePreUtil;
import com.ckkj.water.utils.manager.ThemeManager; import com.ckkj.water.utils.manager.ThemeManager;
import com.ckkj.water.utils.manager.WaterUserInfoManager; import com.ckkj.water.utils.manager.WaterUserInfoManager;
@@ -119,8 +121,8 @@ public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBi
} }
break; break;
case 1: case 1:
// String suffix = FileUtil.getFileSuffixWithQuestion(WaterUserInfoManager.getInstance().getUserInfo().getAvatar()); String suffix = FileUtil.getFileSuffixWithQuestion(mUserBean.getUser().getAvatar());
// PreviewFileUtil.previewFiles(mContext, suffix, WaterUserInfoManager.getInstance().getUserInfo().getAvatar()); PreviewFileUtil.previewFiles(mContext, suffix, mUserBean.getUser().getAvatar());
break; break;
} }
} }

View File

@@ -282,6 +282,8 @@ public class SettingsActivity extends BaseActivity<ActivitySettingsLayoutBinding
}); });
} }
}); });
}else{
ToastUtil.showShort(mContext,"当前已是最新版本");
} }
} }

View File

@@ -297,6 +297,13 @@
<string name="tips_yinsizhengce_dialog">Thank you for using WaterX Smart Irrigation!\n\nTo better protect your personal information, we have updated our Privacy Policy and User Agreement. Please read the following:\n1. We may collect the personal information necessary to provide our services.\n2. You can view, correct, delete your personal information or withdraw your authorization at any time.\n3. We will not use your personal information for other purposes without your consent.\n4. We protect minors\' personal information in accordance with applicable laws.\n5. We reserve the right to restrict or terminate services if your account is used in violation of applicable rules.\n\nBy tapping &quot;Agree&quot;, you confirm that you have read and agree to the Privacy Policy and User Agreement.</string> <string name="tips_yinsizhengce_dialog">Thank you for using WaterX Smart Irrigation!\n\nTo better protect your personal information, we have updated our Privacy Policy and User Agreement. Please read the following:\n1. We may collect the personal information necessary to provide our services.\n2. You can view, correct, delete your personal information or withdraw your authorization at any time.\n3. We will not use your personal information for other purposes without your consent.\n4. We protect minors\' personal information in accordance with applicable laws.\n5. We reserve the right to restrict or terminate services if your account is used in violation of applicable rules.\n\nBy tapping &quot;Agree&quot;, you confirm that you have read and agree to the Privacy Policy and User Agreement.</string>
<string name="qr_content_empty">QR code content cannot be empty.</string>
<string name="qr_format_error">Invalid QR code format.</string>
<string name="scan_correct_qr">Please scan the correct QR code.</string>
<string name="cancel_scan">Cancel Scan</string>
<string name="bluetooth_permission_required">Bluetooth permission is required to add a device.</string>
<string name="bluetooth_enabled">Bluetooth is enabled.</string>
<string name="enable_bluetooth_to_add_device">Please enable Bluetooth to add a device.</string>
<!-- End --> <!-- End -->

View File

@@ -289,6 +289,14 @@
<string name="qr_content_empty">二维码内容不能为空</string>
<string name="qr_format_error">二维码格式错误</string>
<string name="scan_correct_qr">请扫描正确的二维码</string>
<string name="cancel_scan">取消扫码</string>
<string name="bluetooth_permission_required">需要蓝牙权限才能添加设备</string>
<string name="bluetooth_enabled">蓝牙已开启</string>
<string name="enable_bluetooth_to_add_device">请开启蓝牙以添加设备</string>
<!--结束--> <!--结束-->
@@ -322,7 +330,7 @@
</string> </string>
<string name="app_name">智能浇水</string> <string name="app_name">渥田氏</string>
<!-- ==================== 登录页 ==================== --> <!-- ==================== 登录页 ==================== -->
<string name="login_app_name">星语明灯</string> <string name="login_app_name">星语明灯</string>

View File

@@ -1,4 +1,4 @@
#Sun May 17 09:03:15 CST 2026 #Fri Jul 10 09:12:26 CST 2026
D\:\\AndroidWorkSpace\\WaterProject\\WaterProject\\imagepickerl\\src\\main\\res\\drawable-hdpi\\ef_ic_arrow_back.png=D\:\\AndroidWorkSpace\\WaterProject\\WaterProject\\imagepickerl\\build\\intermediates\\packaged_res\\debug\\drawable-hdpi-v4\\ef_ic_arrow_back.png D\:\\AndroidWorkSpace\\WaterProject\\WaterProject\\imagepickerl\\src\\main\\res\\drawable-hdpi\\ef_ic_arrow_back.png=D\:\\AndroidWorkSpace\\WaterProject\\WaterProject\\imagepickerl\\build\\intermediates\\packaged_res\\debug\\drawable-hdpi-v4\\ef_ic_arrow_back.png
D\:\\AndroidWorkSpace\\WaterProject\\WaterProject\\imagepickerl\\src\\main\\res\\drawable-hdpi\\ef_ic_arrow_forward.png=D\:\\AndroidWorkSpace\\WaterProject\\WaterProject\\imagepickerl\\build\\intermediates\\packaged_res\\debug\\drawable-hdpi-v4\\ef_ic_arrow_forward.png D\:\\AndroidWorkSpace\\WaterProject\\WaterProject\\imagepickerl\\src\\main\\res\\drawable-hdpi\\ef_ic_arrow_forward.png=D\:\\AndroidWorkSpace\\WaterProject\\WaterProject\\imagepickerl\\build\\intermediates\\packaged_res\\debug\\drawable-hdpi-v4\\ef_ic_arrow_forward.png
D\:\\AndroidWorkSpace\\WaterProject\\WaterProject\\imagepickerl\\src\\main\\res\\drawable-hdpi\\ef_ic_camera_white.png=D\:\\AndroidWorkSpace\\WaterProject\\WaterProject\\imagepickerl\\build\\intermediates\\packaged_res\\debug\\drawable-hdpi-v4\\ef_ic_camera_white.png D\:\\AndroidWorkSpace\\WaterProject\\WaterProject\\imagepickerl\\src\\main\\res\\drawable-hdpi\\ef_ic_camera_white.png=D\:\\AndroidWorkSpace\\WaterProject\\WaterProject\\imagepickerl\\build\\intermediates\\packaged_res\\debug\\drawable-hdpi-v4\\ef_ic_camera_white.png