电池电量icon优化
@@ -56,9 +56,9 @@
|
|||||||
<application
|
<application
|
||||||
android:name="com.ckkj.water.MyApplication"
|
android:name="com.ckkj.water.MyApplication"
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/app_logo"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:roundIcon="@mipmap/ic_launcher"
|
android:roundIcon="@mipmap/app_logo"
|
||||||
android:requestLegacyExternalStorage="true"
|
android:requestLegacyExternalStorage="true"
|
||||||
android:theme="@style/custom_app_theme"
|
android:theme="@style/custom_app_theme"
|
||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
@@ -111,10 +111,6 @@
|
|||||||
android:launchMode="singleTask"
|
android:launchMode="singleTask"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:windowSoftInputMode="adjustResize"/>
|
android:windowSoftInputMode="adjustResize"/>
|
||||||
<activity
|
|
||||||
android:name="com.ckkj.water.chat.ChatHistoryActivity"
|
|
||||||
android:screenOrientation="portrait"
|
|
||||||
android:windowSoftInputMode="adjustResize"/>
|
|
||||||
<activity
|
<activity
|
||||||
android:name="com.ckkj.water.login.LoginActivity"
|
android:name="com.ckkj.water.login.LoginActivity"
|
||||||
android:theme="@style/AppTheme.FullScreen"
|
android:theme="@style/AppTheme.FullScreen"
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import com.ckkj.water.device.mvp.DevicePresenter;
|
|||||||
import com.ckkj.water.index.entity.WaterDeviceEntity;
|
import com.ckkj.water.index.entity.WaterDeviceEntity;
|
||||||
import com.ckkj.water.network.BaseBean;
|
import com.ckkj.water.network.BaseBean;
|
||||||
import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
|
import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
|
||||||
|
import com.ckkj.water.utils.manager.PowerIconManage;
|
||||||
import com.ckkj.water.utils.show.ToastUtil;
|
import com.ckkj.water.utils.show.ToastUtil;
|
||||||
import com.gyf.immersionbar.ImmersionBar;
|
import com.gyf.immersionbar.ImmersionBar;
|
||||||
import com.lxj.xpopup.XPopup;
|
import com.lxj.xpopup.XPopup;
|
||||||
@@ -40,6 +41,7 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
|
|||||||
|
|
||||||
private List<String> mTimeList = new ArrayList<>();
|
private List<String> mTimeList = new ArrayList<>();
|
||||||
private WaterDeviceEntity mDeviceEntity;
|
private WaterDeviceEntity mDeviceEntity;
|
||||||
|
private WaterDeviceEntity mRemoteDeviceEntity;
|
||||||
private DeviceTimeSelectAdapter mAdapter;
|
private DeviceTimeSelectAdapter mAdapter;
|
||||||
//用户自定义的浇水时长
|
//用户自定义的浇水时长
|
||||||
private int mCustomDuration = 0;
|
private int mCustomDuration = 0;
|
||||||
@@ -58,6 +60,15 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
|
|||||||
showLoadingDialog();
|
showLoadingDialog();
|
||||||
mPresenter.getDeviceDetailInfo(mDeviceEntity.getId());
|
mPresenter.getDeviceDetailInfo(mDeviceEntity.getId());
|
||||||
viewBinding.includedTitle.tvTitle.setText(mDeviceEntity.getDeviceName());
|
viewBinding.includedTitle.tvTitle.setText(mDeviceEntity.getDeviceName());
|
||||||
|
if(mDeviceEntity.getWorkStatus().equals("1")){
|
||||||
|
viewBinding.tvDeviceStatus.setText(getString(R.string.device_status_working));
|
||||||
|
viewBinding.tvDeviceStatus.setTextColor(mContext.getResources().getColor(R.color.color_zhu));
|
||||||
|
viewBinding.tvConfirm.setText(getString(R.string.device_control_stop));
|
||||||
|
}else{
|
||||||
|
viewBinding.tvDeviceStatus.setText(getString(R.string.device_status_not_working));
|
||||||
|
viewBinding.tvDeviceStatus.setTextColor(mContext.getResources().getColor(R.color.color_999999));
|
||||||
|
viewBinding.tvConfirm.setText(getString(R.string.device_control_start));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mTimeList.add("1min");
|
mTimeList.add("1min");
|
||||||
@@ -139,7 +150,9 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
|
|||||||
.isDestroyOnDismiss(true) //对于只使用一次的弹窗,推荐设置这个
|
.isDestroyOnDismiss(true) //对于只使用一次的弹窗,推荐设置这个
|
||||||
.atView(viewBinding.linearBat)
|
.atView(viewBinding.linearBat)
|
||||||
.hasShadowBg(false) // 去掉半透明背景
|
.hasShadowBg(false) // 去掉半透明背景
|
||||||
.asCustom(new CustomBubbleAttachPopup(mContext,"设备电量:40% 更新时间: 05- 11 18:00"))
|
.asCustom(new CustomBubbleAttachPopup(mContext,"设备电量:"+
|
||||||
|
mDeviceEntity.getPowerLevel() + "%" +
|
||||||
|
" 更新时间: 05- 11 18:00"))
|
||||||
.show();
|
.show();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -271,7 +284,9 @@ public class DeviceControlActivity extends BaseActivity<DeviceControlLayoutBindi
|
|||||||
@Override
|
@Override
|
||||||
public void getDeviceDetailInfo(WaterDeviceEntity bean) {
|
public void getDeviceDetailInfo(WaterDeviceEntity bean) {
|
||||||
hideDialogLoading();
|
hideDialogLoading();
|
||||||
|
viewBinding.imgBatStatus.setImageResource(PowerIconManage.getInstance().
|
||||||
|
getPowerVerIcon(Integer.parseInt(bean.getPowerLevel())));
|
||||||
|
mRemoteDeviceEntity = bean;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.ckkj.water.index;
|
|||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.Handler;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
@@ -15,6 +16,7 @@ import com.ckkj.water.custom.view.CustomRefreshHeader;
|
|||||||
import com.ckkj.water.databinding.IndexFragmentLayoutBinding;
|
import com.ckkj.water.databinding.IndexFragmentLayoutBinding;
|
||||||
import com.ckkj.water.device.AddDeviceActivity;
|
import com.ckkj.water.device.AddDeviceActivity;
|
||||||
import com.ckkj.water.device.DeviceControlActivity;
|
import com.ckkj.water.device.DeviceControlActivity;
|
||||||
|
import com.ckkj.water.history.entity.WateringRecord;
|
||||||
import com.ckkj.water.index.adapter.DeviceAdapter;
|
import com.ckkj.water.index.adapter.DeviceAdapter;
|
||||||
import com.ckkj.water.index.entity.WaterDeviceEntity;
|
import com.ckkj.water.index.entity.WaterDeviceEntity;
|
||||||
import com.ckkj.water.index.mvp.IndexContract;
|
import com.ckkj.water.index.mvp.IndexContract;
|
||||||
@@ -155,7 +157,6 @@ public class IndexFragment extends BaseFragment<IndexFragmentLayoutBinding, Inde
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void getDeviceListSuccess(List<WaterDeviceEntity> list, int total) {
|
public void getDeviceListSuccess(List<WaterDeviceEntity> list, int total) {
|
||||||
|
|
||||||
hideDialogLoading();
|
hideDialogLoading();
|
||||||
List<WaterDeviceEntity> pageList = list == null ? new ArrayList<>() : list;
|
List<WaterDeviceEntity> pageList = list == null ? new ArrayList<>() : list;
|
||||||
if (mCurrentPage == 1) {
|
if (mCurrentPage == 1) {
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.ckkj.water.index.adapter;
|
package com.ckkj.water.index.adapter;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
@@ -8,6 +10,8 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
|
|||||||
import com.chad.library.adapter.base.BaseViewHolder;
|
import com.chad.library.adapter.base.BaseViewHolder;
|
||||||
import com.ckkj.water.R;
|
import com.ckkj.water.R;
|
||||||
import com.ckkj.water.index.entity.WaterDeviceEntity;
|
import com.ckkj.water.index.entity.WaterDeviceEntity;
|
||||||
|
import com.ckkj.water.utils.manager.PowerIconManage;
|
||||||
|
import com.esafirm.imagepicker.model.Image;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -21,10 +25,21 @@ public class DeviceAdapter extends BaseQuickAdapter<WaterDeviceEntity, BaseViewH
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void convert(BaseViewHolder holder, WaterDeviceEntity item) {
|
protected void convert(BaseViewHolder holder, WaterDeviceEntity item) {
|
||||||
|
ImageView imgPower = holder.getView(R.id.img_battery);
|
||||||
|
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());
|
||||||
holder.setText(R.id.tv_device_status,"工作中");
|
holder.setText(R.id.tv_device_status,item.getWorkStatus().equals("0") ?
|
||||||
holder.setText(R.id.tv_battery_level,"80");
|
mContext.getString(R.string.device_status_not_working) :
|
||||||
|
mContext.getString(R.string.device_status_working));
|
||||||
|
holder.setTextColor(R.id.tv_device_status,item.getWorkStatus().equals("0") ?
|
||||||
|
mContext.getResources().getColor(R.color.color_999999) :
|
||||||
|
mContext.getResources().getColor(R.color.color_24B326));
|
||||||
|
viewStatus.setBackground(item.getWorkStatus().equals("0") ?
|
||||||
|
mContext.getResources().getDrawable(R.drawable.shape_status_dot_999999)
|
||||||
|
: mContext.getResources().getDrawable(R.drawable.shape_status_dot_green));
|
||||||
|
holder.setText(R.id.tv_battery_level,item.getPowerLevel());
|
||||||
|
imgPower.setImageResource(PowerIconManage.getInstance().getPowerIcon(Integer.parseInt(item.getPowerLevel())));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,8 @@ public class WaterDeviceEntity implements Serializable {
|
|||||||
private String deviceName;
|
private String deviceName;
|
||||||
private Object deviceImg;
|
private Object deviceImg;
|
||||||
private String status;
|
private String status;
|
||||||
private Object powerLevel;
|
private String workStatus;
|
||||||
|
private String powerLevel;
|
||||||
private Object powerLevelUpdatatime;
|
private Object powerLevelUpdatatime;
|
||||||
private String wifiName;
|
private String wifiName;
|
||||||
private String wifiPassword;
|
private String wifiPassword;
|
||||||
@@ -55,7 +56,7 @@ public class WaterDeviceEntity implements Serializable {
|
|||||||
private Object deviceImg;
|
private Object deviceImg;
|
||||||
private String status;
|
private String status;
|
||||||
private String workStatus;
|
private String workStatus;
|
||||||
private Object powerLevel;
|
private String powerLevel;
|
||||||
private Object powerLevelUpdatatime;
|
private Object powerLevelUpdatatime;
|
||||||
private String wifiName;
|
private String wifiName;
|
||||||
private String wifiPassword;
|
private String wifiPassword;
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ public class LoginContract {
|
|||||||
void loginBySmsCode(JSONObject json, CallBack callBack);
|
void loginBySmsCode(JSONObject json, CallBack callBack);
|
||||||
//通过账户+验证码 修改密码
|
//通过账户+验证码 修改密码
|
||||||
void updatePsdByVerifyCode(JSONObject json, CallBack callBack);
|
void updatePsdByVerifyCode(JSONObject json, CallBack callBack);
|
||||||
|
//退出登录
|
||||||
|
void logout(JSONObject json, CallBack callBack);
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface LoginView extends IView{
|
public interface LoginView extends IView{
|
||||||
|
|||||||
@@ -105,6 +105,11 @@ public class LoginImpl implements LoginContract.DataModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 使用验证码登录
|
||||||
|
* @param json
|
||||||
|
* @param callBack
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void loginBySmsCode(JSONObject json, LoginContract.CallBack callBack) {
|
public void loginBySmsCode(JSONObject json, LoginContract.CallBack callBack) {
|
||||||
try {
|
try {
|
||||||
@@ -181,4 +186,44 @@ public class LoginImpl implements LoginContract.DataModel {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退出登录
|
||||||
|
* @param json
|
||||||
|
* @param callBack
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void logout(JSONObject json, LoginContract.CallBack callBack) {
|
||||||
|
try {
|
||||||
|
NetWorkManager.getRequest().logout(NetWorkManager.toRequestBody(json))
|
||||||
|
.subscribeOn(Schedulers.io())
|
||||||
|
.unsubscribeOn(Schedulers.io())
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe(new Observer<BaseBean>() {
|
||||||
|
@Override
|
||||||
|
public void onSubscribe(@NonNull Disposable d) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNext(@NonNull BaseBean bean) {
|
||||||
|
if (bean.getCode() == 200) {
|
||||||
|
callBack.success(bean.getData());
|
||||||
|
} else {
|
||||||
|
callBack.fail(bean.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(@NonNull Throwable e) {
|
||||||
|
callBack.fail(e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onComplete() {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,4 +112,9 @@ public class AppThemActivity extends BaseActivity<AppThemeChangeLayoutBinding, M
|
|||||||
public void updateUserPasswordSuccess(BaseBean bean) {
|
public void updateUserPasswordSuccess(BaseBean bean) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void logOutSuccess(BaseBean bean) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -146,4 +146,9 @@ public class ChangePhoneActivity extends BaseActivity<ChangePhoneActivityBinding
|
|||||||
public void updateUserPasswordSuccess(BaseBean bean) {
|
public void updateUserPasswordSuccess(BaseBean bean) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void logOutSuccess(BaseBean bean) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -13,6 +13,7 @@ import com.ckkj.water.base.BaseFragment;
|
|||||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||||
import com.ckkj.water.databinding.MineFragmentBinding;
|
import com.ckkj.water.databinding.MineFragmentBinding;
|
||||||
import com.ckkj.water.databinding.MineFragmentLayoutBinding;
|
import com.ckkj.water.databinding.MineFragmentLayoutBinding;
|
||||||
|
import com.ckkj.water.login.LoginActivity;
|
||||||
import com.ckkj.water.main.entity.CheckVersionEntity;
|
import com.ckkj.water.main.entity.CheckVersionEntity;
|
||||||
import com.ckkj.water.mine.entity.MemberComboEntity;
|
import com.ckkj.water.mine.entity.MemberComboEntity;
|
||||||
import com.ckkj.water.mine.mvp.MineContract;
|
import com.ckkj.water.mine.mvp.MineContract;
|
||||||
@@ -20,6 +21,7 @@ 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.dataUtil.SharePreUtil;
|
import com.ckkj.water.utils.dataUtil.SharePreUtil;
|
||||||
|
import com.ckkj.water.utils.manager.ActivityManager;
|
||||||
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;
|
||||||
import com.ckkj.water.utils.show.ToastUtil;
|
import com.ckkj.water.utils.show.ToastUtil;
|
||||||
@@ -30,6 +32,8 @@ import com.lxj.xpopup.interfaces.OnSelectListener;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import de.greenrobot.event.EventBus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author fengxiaoyang
|
* @author fengxiaoyang
|
||||||
* @date 2026/5/16
|
* @date 2026/5/16
|
||||||
@@ -63,6 +67,7 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
|
|||||||
setClick(viewBinding.linearLanguage);
|
setClick(viewBinding.linearLanguage);
|
||||||
setClick(viewBinding.linearPsdManage);
|
setClick(viewBinding.linearPsdManage);
|
||||||
setClick(viewBinding.linearTheme);
|
setClick(viewBinding.linearTheme);
|
||||||
|
setClick(viewBinding.btnDelete);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setClick(View view) {
|
private void setClick(View view) {
|
||||||
@@ -105,6 +110,26 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
|
|||||||
case R.id.linear_psd_manage:
|
case R.id.linear_psd_manage:
|
||||||
goTo(mContext, PsdManageActivity.class,null);
|
goTo(mContext, PsdManageActivity.class,null);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case R.id.btn_delete:
|
||||||
|
showDialogtext(null,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
getString(R.string.tip_text),
|
||||||
|
getString(R.string.logout_tips),
|
||||||
|
getString(R.string.cancel_text),
|
||||||
|
getString(R.string.confirm_text),
|
||||||
|
new OnDialogClick() {
|
||||||
|
@Override
|
||||||
|
public void onCancelClick() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onConfirmClick() {
|
||||||
|
mPresenter.logout();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -125,7 +150,17 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
|
|||||||
}else{
|
}else{
|
||||||
viewBinding.tvUserAccount.setText(bean.getUser().getPhonenumber());
|
viewBinding.tvUserAccount.setText(bean.getUser().getPhonenumber());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退出登录
|
||||||
|
* @param bean
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void logOutSuccess(BaseBean bean) {
|
||||||
|
WaterUserInfoManager.getInstance().clearUser(mContext);
|
||||||
|
ActivityManager.removeAllActivity();
|
||||||
|
goTo(mContext, LoginActivity.class,null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -138,6 +173,8 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MinePresenter createPresenter() {
|
public MinePresenter createPresenter() {
|
||||||
return new MinePresenter(new MineImpl());
|
return new MinePresenter(new MineImpl());
|
||||||
|
|||||||
@@ -276,4 +276,9 @@ public class MineFragment extends BaseFragment<MineFragmentBinding, MinePresente
|
|||||||
public void updateUserPasswordSuccess(BaseBean bean) {
|
public void updateUserPasswordSuccess(BaseBean bean) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void logOutSuccess(BaseBean bean) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -184,6 +184,11 @@ public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBi
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void logOutSuccess(BaseBean bean) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void getCompressFile(File file) {
|
private void getCompressFile(File file) {
|
||||||
LubanCompressUtil.getInstance().getCompressFile(mContext, file, new LubanCompressUtil.CompressCallback() {
|
LubanCompressUtil.getInstance().getCompressFile(mContext, file, new LubanCompressUtil.CompressCallback() {
|
||||||
|
|||||||
@@ -95,4 +95,9 @@ public class PsdManageActivity extends BaseActivity<PasswordManLayoutBinding, Mi
|
|||||||
public void updateUserPasswordSuccess(BaseBean bean) {
|
public void updateUserPasswordSuccess(BaseBean bean) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void logOutSuccess(BaseBean bean) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,6 +90,11 @@ public class ResetPsdActivity extends BaseActivity<ResetPsdLayoutBinding, MinePr
|
|||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void logOutSuccess(BaseBean bean) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MinePresenter createPresenter() {
|
public MinePresenter createPresenter() {
|
||||||
return new MinePresenter(new MineImpl());
|
return new MinePresenter(new MineImpl());
|
||||||
|
|||||||
@@ -216,4 +216,9 @@ public class SettingsActivity extends BaseActivity<ActivitySettingsLayoutBinding
|
|||||||
public void updateUserPasswordSuccess(BaseBean bean) {
|
public void updateUserPasswordSuccess(BaseBean bean) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void logOutSuccess(BaseBean bean) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -126,4 +126,9 @@ public class UserLogOffAccountActivity extends BaseActivity<UserLogOffActivityBi
|
|||||||
public void updateUserPasswordSuccess(BaseBean bean) {
|
public void updateUserPasswordSuccess(BaseBean bean) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void logOutSuccess(BaseBean bean) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -45,6 +45,8 @@ public class MineContract {
|
|||||||
void updateUserInfoSuccess(BaseBean bean);
|
void updateUserInfoSuccess(BaseBean bean);
|
||||||
//密码重设完成
|
//密码重设完成
|
||||||
void updateUserPasswordSuccess(BaseBean bean);
|
void updateUserPasswordSuccess(BaseBean bean);
|
||||||
|
//退出登录
|
||||||
|
void logOutSuccess(BaseBean bean);
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface RecommendModel{
|
public interface RecommendModel{
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import com.ckkj.water.ConstantUtil;
|
|||||||
import com.ckkj.water.base.BasePresenter;
|
import com.ckkj.water.base.BasePresenter;
|
||||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||||
import com.ckkj.water.base.entity.UserInfoEntity;
|
import com.ckkj.water.base.entity.UserInfoEntity;
|
||||||
|
import com.ckkj.water.login.mvp.LoginContract;
|
||||||
|
import com.ckkj.water.login.mvp.LoginImpl;
|
||||||
import com.ckkj.water.network.BaseBean;
|
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.WaterUserInfoManager;
|
import com.ckkj.water.utils.manager.WaterUserInfoManager;
|
||||||
@@ -111,4 +113,26 @@ public class MinePresenter extends BasePresenter<MineContract.MineView> {
|
|||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退出登录
|
||||||
|
*/
|
||||||
|
public void logout() {
|
||||||
|
JSONObject json = new JSONObject();
|
||||||
|
new LoginImpl().logout(json, new LoginContract.CallBack<BaseBean>() {
|
||||||
|
@Override
|
||||||
|
public void success(BaseBean bean) {
|
||||||
|
if(MinePresenter.this.getView() != null){
|
||||||
|
MinePresenter.this.getView().logOutSuccess(bean);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void fail(String msg) {
|
||||||
|
if(MinePresenter.this.getView() != null){
|
||||||
|
MinePresenter.this.getView().showError(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,11 @@ public interface Request {
|
|||||||
//注册
|
//注册
|
||||||
@POST("auth/register")
|
@POST("auth/register")
|
||||||
Observable<BaseBean> register(@Body RequestBody requestBody);
|
Observable<BaseBean> register(@Body RequestBody requestBody);
|
||||||
|
|
||||||
|
//退出登录
|
||||||
|
@POST("auth/logout")
|
||||||
|
Observable<BaseBean> logout(@Body RequestBody requestBody);
|
||||||
|
|
||||||
//登录
|
//登录
|
||||||
@POST("auth/login")
|
@POST("auth/login")
|
||||||
Observable<BaseBean<LoginEntity>> loginBySmsCode(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody);
|
Observable<BaseBean<LoginEntity>> loginBySmsCode(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody);
|
||||||
|
|||||||
@@ -200,6 +200,13 @@ public class PlanDetailActivity extends BaseActivity<WaterPlanDetailLayoutBindin
|
|||||||
//设备显示
|
//设备显示
|
||||||
if(deviceAdapter != null){
|
if(deviceAdapter != null){
|
||||||
deviceAdapter.setNewData(entity.getDeviceIds());
|
deviceAdapter.setNewData(entity.getDeviceIds());
|
||||||
|
if(deviceAdapter.getItemCount() == 0){
|
||||||
|
viewBinding.rvBindDevices.setVisibility(View.GONE);
|
||||||
|
viewBinding.tvNoDevice.setVisibility(View.VISIBLE);
|
||||||
|
}else{
|
||||||
|
viewBinding.rvBindDevices.setVisibility(View.VISIBLE);
|
||||||
|
viewBinding.tvNoDevice.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,66 @@
|
|||||||
|
package com.ckkj.water.utils.manager;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import com.ckkj.water.R;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author fengxiaoyang
|
||||||
|
* @date 2026/6/2
|
||||||
|
* @description 电池图标管理,根据电量值返回对应的图标资源
|
||||||
|
*/
|
||||||
|
public class PowerIconManage {
|
||||||
|
private static PowerIconManage instance;
|
||||||
|
private int[] horIconRes = {R.mipmap.hor_0, R.mipmap.hor_10, R.mipmap.hor_20, R.mipmap.hor_30,
|
||||||
|
R.mipmap.hor_40, R.mipmap.hor_50, R.mipmap.hor_60, R.mipmap.hor_70,
|
||||||
|
R.mipmap.hor_80, R.mipmap.hor_90, R.mipmap.hor_100};
|
||||||
|
|
||||||
|
private int [] verIconRes = {R.mipmap.ver_0, R.mipmap.ver_10, R.mipmap.ver_20, R.mipmap.ver_30,
|
||||||
|
R.mipmap.ver_40, R.mipmap.ver_50, R.mipmap.ver_60, R.mipmap.ver_70,
|
||||||
|
R.mipmap.ver_80, R.mipmap.ver_90, R.mipmap.ver_100};
|
||||||
|
|
||||||
|
public static PowerIconManage getInstance() {
|
||||||
|
if (instance == null) {
|
||||||
|
synchronized (PowerIconManage.class) {
|
||||||
|
if (instance == null) {
|
||||||
|
instance = new PowerIconManage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据电量值获取对应的电池图标
|
||||||
|
* @param power 电量值 (0-100)
|
||||||
|
* @return 电池图标资源ID
|
||||||
|
*/
|
||||||
|
public int getPowerIcon(int power) {
|
||||||
|
if (power <= 0) {
|
||||||
|
return horIconRes[0];
|
||||||
|
}
|
||||||
|
if (power >= 100) {
|
||||||
|
return horIconRes[10];
|
||||||
|
}
|
||||||
|
// 计算对应的数组索引,电量1~10对应索引1,11~20对应索引2...
|
||||||
|
int index = (power + 9) / 10;
|
||||||
|
return horIconRes[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据电量值获取对应的电池图标
|
||||||
|
* @param power 电量值 (0-100)
|
||||||
|
* @return 电池图标资源ID
|
||||||
|
*/
|
||||||
|
public int getPowerVerIcon(int power) {
|
||||||
|
if (power <= 0) {
|
||||||
|
return verIconRes[0];
|
||||||
|
}
|
||||||
|
if (power >= 100) {
|
||||||
|
return verIconRes[10];
|
||||||
|
}
|
||||||
|
// 计算对应的数组索引,电量1~10对应索引1,11~20对应索引2...
|
||||||
|
int index = (power + 9) / 10;
|
||||||
|
return verIconRes[index];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<corners android:radius="@dimen/dp_12"/>
|
<corners android:radius="@dimen/dp_12"/>
|
||||||
<solid android:color="@color/white"/>
|
<solid android:color="@color/color_gray2"/>
|
||||||
</shape>
|
</shape>
|
||||||
5
app/src/main/res/drawable/shape_status_dot_999999.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="oval">
|
||||||
|
<solid android:color="@color/color_999999" />
|
||||||
|
</shape>
|
||||||
@@ -93,11 +93,9 @@
|
|||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/rv_devices"
|
android:id="@+id/rv_devices"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
|
||||||
android:clipToPadding="false"
|
android:clipToPadding="false"
|
||||||
android:paddingHorizontal="@dimen/dp_15"
|
android:paddingHorizontal="@dimen/dp_15"
|
||||||
android:paddingBottom="@dimen/dp_20"
|
|
||||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
tools:listitem="@layout/index_device_list_item" />
|
tools:listitem="@layout/index_device_list_item" />
|
||||||
|
|
||||||
|
|||||||
@@ -110,7 +110,17 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
tools:listitem="@layout/plan_detail_bind_device_item"
|
tools:listitem="@layout/plan_detail_bind_device_item"
|
||||||
tools:itemCount="2"
|
tools:itemCount="2"
|
||||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
|
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
|
android:visibility="visible"/>
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_no_device"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:text="@string/no_bound_devices_tips"
|
||||||
|
android:textColor="@color/color_999999"
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:visibility="gone"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -118,7 +128,8 @@
|
|||||||
<View
|
<View
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/dp_1"
|
android:layout_height="@dimen/dp_1"
|
||||||
android:background="@color/color_f5f5f5" />
|
android:background="@color/color_f5f5f5"
|
||||||
|
android:layout_marginTop="@dimen/dp_20"/>
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|||||||
BIN
app/src/main/res/mipmap-xxhdpi/app_logo.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/hor_0.png
Normal file
|
After Width: | Height: | Size: 570 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_10.png
Normal file
|
After Width: | Height: | Size: 577 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_100.png
Normal file
|
After Width: | Height: | Size: 580 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_20.png
Normal file
|
After Width: | Height: | Size: 598 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_30.png
Normal file
|
After Width: | Height: | Size: 587 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_40.png
Normal file
|
After Width: | Height: | Size: 580 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_50.png
Normal file
|
After Width: | Height: | Size: 583 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_60.png
Normal file
|
After Width: | Height: | Size: 581 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_70.png
Normal file
|
After Width: | Height: | Size: 577 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_80.png
Normal file
|
After Width: | Height: | Size: 580 B |
BIN
app/src/main/res/mipmap-xxhdpi/hor_90.png
Normal file
|
After Width: | Height: | Size: 585 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_0.png
Normal file
|
After Width: | Height: | Size: 569 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_10.png
Normal file
|
After Width: | Height: | Size: 578 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_100.png
Normal file
|
After Width: | Height: | Size: 594 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_20.png
Normal file
|
After Width: | Height: | Size: 586 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_30.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_40.png
Normal file
|
After Width: | Height: | Size: 594 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_50.png
Normal file
|
After Width: | Height: | Size: 595 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_60.png
Normal file
|
After Width: | Height: | Size: 595 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_70.png
Normal file
|
After Width: | Height: | Size: 590 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_80.png
Normal file
|
After Width: | Height: | Size: 593 B |
BIN
app/src/main/res/mipmap-xxhdpi/ver_90.png
Normal file
|
After Width: | Height: | Size: 598 B |
@@ -83,6 +83,8 @@
|
|||||||
<string name="device_info_type">设备型号</string>
|
<string name="device_info_type">设备型号</string>
|
||||||
<string name="device_info_serial_number">序列号</string>
|
<string name="device_info_serial_number">序列号</string>
|
||||||
<string name="device_info_firmware_version">固件版本</string>
|
<string name="device_info_firmware_version">固件版本</string>
|
||||||
|
<string name="device_status_working">工作中</string>
|
||||||
|
<string name="device_status_not_working">待机中</string>
|
||||||
|
|
||||||
|
|
||||||
<!--排程-->
|
<!--排程-->
|
||||||
@@ -101,6 +103,7 @@
|
|||||||
<string name="delete_plan_tip">确定要删除该排程任务?</string>
|
<string name="delete_plan_tip">确定要删除该排程任务?</string>
|
||||||
<string name="delete_plan_success">删除成功</string>
|
<string name="delete_plan_success">删除成功</string>
|
||||||
<string name="close_plan_dialog_tip">确定关闭该排程任务?</string>
|
<string name="close_plan_dialog_tip">确定关闭该排程任务?</string>
|
||||||
|
<string name="no_bound_devices_tips">暂无绑定设备</string>
|
||||||
<string name="plan_period">浇水周期</string>
|
<string name="plan_period">浇水周期</string>
|
||||||
<string name="plan_time">浇水时长</string>
|
<string name="plan_time">浇水时长</string>
|
||||||
<string name="plan_start_time">开始时间</string>
|
<string name="plan_start_time">开始时间</string>
|
||||||
@@ -152,6 +155,7 @@
|
|||||||
<string name="mine_psd_manager">密码管理</string>
|
<string name="mine_psd_manager">密码管理</string>
|
||||||
<string name="mine_psd_reset">重置密码</string>
|
<string name="mine_psd_reset">重置密码</string>
|
||||||
<string name="mine_find_psd">找回密码</string>
|
<string name="mine_find_psd">找回密码</string>
|
||||||
|
<string name="logout_tips">退出当前账号</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||