From 56af5855244a421c1fd631bd34969f8a98483bed Mon Sep 17 00:00:00 2001 From: fengjignqi <15192412330@163.com> Date: Fri, 12 Jun 2026 08:37:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=AB=E6=8F=8F=E8=93=9D=E7=89=99=E4=BA=8C?= =?UTF-8?q?=E7=BB=B4=E7=A0=81=EF=BC=8C=E5=87=86=E5=A4=87=E9=85=8D=E7=BD=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../water/device/AddDeviceActivity_copy.java | 2 +- .../water/device/DeviceConnectActivity.java | 6 +- .../water/device/DeviceReNameActivity.java | 19 +++++- .../ckkj/water/device/SelectWifiActivity.java | 2 +- .../water/device/mvp/DevicePresenter.java | 21 ++++--- .../com/ckkj/water/index/IndexFragment.java | 58 ++++++++++++++++++- .../water/index/entity/WaterDeviceEntity.java | 2 + .../ckkj/water/index/mvp/IndexContract.java | 6 ++ .../com/ckkj/water/index/mvp/IndexImpl.java | 42 ++++++++++++++ .../ckkj/water/index/mvp/IndexPresenter.java | 35 +++++++++++ .../java/com/ckkj/water/network/Request.java | 6 ++ 11 files changed, 182 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/ckkj/water/device/AddDeviceActivity_copy.java b/app/src/main/java/com/ckkj/water/device/AddDeviceActivity_copy.java index 8785fe7..30345c1 100644 --- a/app/src/main/java/com/ckkj/water/device/AddDeviceActivity_copy.java +++ b/app/src/main/java/com/ckkj/water/device/AddDeviceActivity_copy.java @@ -220,7 +220,7 @@ public class AddDeviceActivity_copy extends BaseActivity implements DeviceContract.DeviceView { + + private String mWifiName; + private String mWifiPassword; + private WaterDeviceEntity mBleDeviceEntity; + @Override public DevicePresenter createPresenter() { return new DevicePresenter(new DeviceImpl()); @@ -31,6 +36,13 @@ public class DeviceReNameActivity extends BaseActivity { /** * 添加设备 + * @param mWifiName + * @param mWifiPassword + * @param mBleDeviceEntity */ - public void addDevice() { + public void addDevice(String deviceName,String mWifiName, String mWifiPassword, WaterDeviceEntity mBleDeviceEntity) { try { JSONObject json = new JSONObject(); - json.put("deviceNo",System.currentTimeMillis() + ""); - json.put("deviceName",new Random().nextInt(99) + "号设备"); - json.put("wifiName","橙空科技WiFi"); - json.put("wifiPassword","12321212"); - json.put("deviceEm","213123123123"); - json.put("deviceSn","sdfsd32423gdfgdf3"); - json.put("fwVer","fwVer-56565644"); - json.put("macAddress","2E:8H:00:KK:N7"); + json.put("deviceName",deviceName); + json.put("wifiName",mWifiName); + json.put("wifiPassword",mWifiPassword); + json.put("macAddress",mBleDeviceEntity.getMacAddress()); + json.put("deviceNo", "01"); +// json.put("deviceEm","213123123123"); +// json.put("deviceSn","sdfsd32423gdfgdf3"); +// json.put("fwVer","fwVer-56565644"); impl.addDevice(json, new IndexContract.CallBack() { @Override public void success(BaseBean bean,int total) { diff --git a/app/src/main/java/com/ckkj/water/index/IndexFragment.java b/app/src/main/java/com/ckkj/water/index/IndexFragment.java index 92b0781..778ad7e 100644 --- a/app/src/main/java/com/ckkj/water/index/IndexFragment.java +++ b/app/src/main/java/com/ckkj/water/index/IndexFragment.java @@ -4,6 +4,7 @@ import android.Manifest; import android.content.Intent; import android.os.Bundle; import android.os.Handler; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; @@ -27,11 +28,15 @@ import com.ckkj.water.network.BaseBean; import com.ckkj.water.permission.PermissionActivity; import com.ckkj.water.plan.entity.WaterPlanWeekEntity; import com.ckkj.water.utils.show.ToastUtil; +import com.google.gson.Gson; import com.maning.mlkitscanner.scan.MNScanManager; import com.maning.mlkitscanner.scan.callback.act.MNScanCallback; import com.scwang.smart.refresh.footer.ClassicsFooter; import com.scwang.smart.refresh.layout.api.RefreshHeader; +import org.json.JSONException; +import org.json.JSONObject; + import java.util.ArrayList; import java.util.List; @@ -135,9 +140,41 @@ public class IndexFragment extends BaseFragment results = data.getStringArrayListExtra(MNScanManager.INTENT_KEY_RESULT_SUCCESS); - if(results != null){ - ToastUtil.showShort(mContext,results.get(0).toString()); + try { + ArrayList results = data.getStringArrayListExtra(MNScanManager.INTENT_KEY_RESULT_SUCCESS); + + if (results == null || results.isEmpty()) { + ToastUtil.showShort(mContext, "二维码内容不能为空"); + return; + } + + String scanContent = results.get(0); + if (TextUtils.isEmpty(scanContent)) { + ToastUtil.showShort(mContext, "二维码内容不能为空"); + return; + } + + JSONObject json; + try { + json = new JSONObject(scanContent); + } catch (JSONException e) { + ToastUtil.showShort(mContext, "二维码格式错误"); + return; + } + WaterDeviceEntity entity = new WaterDeviceEntity(); + if(TextUtils.isEmpty(json.getString("mac")) + || TextUtils.isEmpty(json.getString("name"))){ + ToastUtil.showShort(mContext,"请扫描正确的二维码"); + return; + } + entity.setMacAddress(json.getString("mac")); + entity.setDeviceName(json.getString("name")); + if(entity != null){ + //这里拿到Mac地址,需要去服务器查询当前Mac的绑定状态 + mPresenter.bindDeviceStatus(entity); + } + } catch (JSONException e) { + throw new RuntimeException(e); } break; case MNScanManager.RESULT_FAIL: @@ -198,6 +235,21 @@ public class IndexFragment extends BaseFragment deviceList; + private int bindDeviceStatus; + private String bindDeviceStatusName; @NoArgsConstructor @Data diff --git a/app/src/main/java/com/ckkj/water/index/mvp/IndexContract.java b/app/src/main/java/com/ckkj/water/index/mvp/IndexContract.java index 777fd1f..a277b24 100644 --- a/app/src/main/java/com/ckkj/water/index/mvp/IndexContract.java +++ b/app/src/main/java/com/ckkj/water/index/mvp/IndexContract.java @@ -3,6 +3,8 @@ package com.ckkj.water.index.mvp; import com.ckkj.water.base.IView; import com.ckkj.water.index.entity.WaterDeviceEntity; +import org.json.JSONObject; + import java.util.List; import java.util.Map; @@ -21,10 +23,14 @@ public class IndexContract { //获取设备列表 void getDeviceList(Map map,CallBack callBack); + //查询二维码当前设备绑定状态 + void queryDeviceBindStatus(JSONObject json, CallBack callBack); } public interface IndexView extends IView{ void getDeviceListSuccess(List list, int total); + //查询二维码当前设备绑定状态 + void queryDeviceBindStatusSuccess(WaterDeviceEntity entity); } } diff --git a/app/src/main/java/com/ckkj/water/index/mvp/IndexImpl.java b/app/src/main/java/com/ckkj/water/index/mvp/IndexImpl.java index e507528..18be734 100644 --- a/app/src/main/java/com/ckkj/water/index/mvp/IndexImpl.java +++ b/app/src/main/java/com/ckkj/water/index/mvp/IndexImpl.java @@ -4,6 +4,8 @@ import com.ckkj.water.index.entity.WaterDeviceEntity; import com.ckkj.water.network.BaseBean; import com.ckkj.water.network.NetWorkManager; +import org.json.JSONObject; + import java.util.List; import java.util.Map; @@ -49,4 +51,44 @@ public class IndexImpl implements IndexContract.DataModel{ }); } + /** + * 查询当前设备绑定状态 + * @param json + * @param callBack + */ + @Override + public void queryDeviceBindStatus(JSONObject json, IndexContract.CallBack callBack) { + try { + NetWorkManager.getRequest().bindDeviceStatus(NetWorkManager.getToken(),NetWorkManager.toRequestBody(json)) + .subscribeOn(Schedulers.io()) + .unsubscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + } + + @Override + public void onNext(@NonNull BaseBean bean) { + if (bean.getCode() == 200) { + callBack.success(bean.getData(),0); + } 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(); + } + } + } diff --git a/app/src/main/java/com/ckkj/water/index/mvp/IndexPresenter.java b/app/src/main/java/com/ckkj/water/index/mvp/IndexPresenter.java index a306cd7..c64ebb3 100644 --- a/app/src/main/java/com/ckkj/water/index/mvp/IndexPresenter.java +++ b/app/src/main/java/com/ckkj/water/index/mvp/IndexPresenter.java @@ -2,6 +2,10 @@ package com.ckkj.water.index.mvp; import com.ckkj.water.base.BasePresenter; import com.ckkj.water.index.entity.WaterDeviceEntity; +import com.ckkj.water.network.BaseBean; + +import org.json.JSONException; +import org.json.JSONObject; import java.util.HashMap; import java.util.List; @@ -35,4 +39,35 @@ public class IndexPresenter extends BasePresenter{ } }); } + + /** + * 绑定设备状态 + * @param entity + */ + public void bindDeviceStatus(WaterDeviceEntity entity) { + try { + JSONObject json = new JSONObject(); + json.put("macAddress",entity.getMacAddress()); + mImpl.queryDeviceBindStatus(json, new IndexContract.CallBack() { + @Override + public void success(WaterDeviceEntity bean, int total) { + entity.setBindDeviceStatus(bean.getBindDeviceStatus()); + entity.setBindDeviceStatusName(bean.getBindDeviceStatusName()); + if(IndexPresenter.this.getView() != null){ + IndexPresenter.this.getView().queryDeviceBindStatusSuccess(entity); + } + } + + @Override + public void fail(String msg) { + if(IndexPresenter.this.getView() != null){ + IndexPresenter.this.getView().showError(msg); + } + } + }); + } catch (JSONException e) { + throw new RuntimeException(e); + } + + } } diff --git a/app/src/main/java/com/ckkj/water/network/Request.java b/app/src/main/java/com/ckkj/water/network/Request.java index 4cf6492..af8315b 100644 --- a/app/src/main/java/com/ckkj/water/network/Request.java +++ b/app/src/main/java/com/ckkj/water/network/Request.java @@ -57,6 +57,12 @@ public interface Request { //首页设备列表 @GET("app/v1/deviceList") Observable>> getIndexDeviceList(@HeaderMap Map headMap); + + //查询设备编码,是否被绑定过,即当前设备状态 + @POST("app/v1/bindDeviceStatus") + Observable> bindDeviceStatus(@HeaderMap Map headMap, @Body RequestBody requestBody); + + //添加设备 @POST("app/v1/addDevice") Observable addDevice(@HeaderMap Map headMap, @Body RequestBody requestBody);