package com.mm.android.deviceaddmodule.presenter; import android.os.Message; import android.text.TextUtils; import com.dahua.mobile.utility.network.DHWifiUtil; import com.lechange.opensdk.searchwifi.LCOpenSDK_SearchWiFi; import com.mm.android.deviceaddmodule.R; import com.mm.android.deviceaddmodule.contract.HiddenWifiPwdConstract; import com.lechange.opensdk.searchwifi.WlanInfo; import com.mm.android.deviceaddmodule.helper.DeviceAddHelper; import com.mm.android.deviceaddmodule.mobilecommon.base.LCBusinessHandler; import com.mm.android.deviceaddmodule.mobilecommon.businesstip.HandleMessageCode; import com.mm.android.deviceaddmodule.mobilecommon.entity.deviceadd.DeviceAddInfo; import com.mm.android.deviceaddmodule.model.DeviceAddModel; import java.lang.ref.WeakReference; public class HiddenWifiPresenter implements HiddenWifiPwdConstract.Presenter { WeakReference mView; DHWifiUtil mDHWifiUtil; WlanInfo mCurWlanInfo; protected String mDeviceId; private boolean mIsNotNeedLogin; protected boolean isSupport5G = false; public HiddenWifiPresenter(HiddenWifiPwdConstract.View view) { mView = new WeakReference<>(view); mDHWifiUtil = new DHWifiUtil(mView.get().getContextInfo().getApplicationContext()); mCurWlanInfo = new WlanInfo(); String wifiMode = DeviceAddModel.newInstance().getDeviceInfoCache().getWifiTransferMode(); if (!TextUtils.isEmpty(wifiMode)) { isSupport5G = wifiMode.toUpperCase().contains("5GHZ"); } } @Override public boolean isDevSupport5G() { return isSupport5G; } @Override public void setIsNotNeedLogin(boolean isNotNeedLogin){ mIsNotNeedLogin = isNotNeedLogin; } @Override public String getCurWifiName() { return mCurWlanInfo.getWlanSSID(); } @Override public void updateWifiCache() { DeviceAddInfo.WifiInfo wifiInfo = DeviceAddModel.newInstance().getDeviceInfoCache().getWifiInfo(); wifiInfo.setSsid(getCurWifiName()); wifiInfo.setPwd(mView.get().getWifiPwd()); } @Override public void connectWifi() { mCurWlanInfo.setWlanSSID(mView.get().getWifiSSID()); mView.get().showProgressDialog(); updateWifiCache();//更新wifi信息到缓存 String gatwayip = mDHWifiUtil.getGatewayIp(); final DeviceAddInfo deviceAddInfo = DeviceAddModel.newInstance().getDeviceInfoCache(); String pwd = deviceAddInfo.getDevicePwd(); String wifiPwd = deviceAddInfo.getWifiInfo().getPwd(); LCBusinessHandler connectWifiHandler = new LCBusinessHandler() { @Override public void handleBusiness(Message msg) { if (mView.get() != null && mView.get().isViewActive()) { mView.get().cancelProgressDialog(); if (msg.what == HandleMessageCode.HMC_SUCCESS) { dispatchConnectResult(msg); } } else { mView.get().showToastInfo(R.string.device_disturb_state_failed); } } }; if(mIsNotNeedLogin) { mCurWlanInfo.setWlanEncry(12); LCOpenSDK_SearchWiFi.connectWifi4Sc(gatwayip,mCurWlanInfo,wifiPwd,connectWifiHandler); // DeviceAddModel.newInstance().connectWifi4Sc(gatwayip, mCurWlanInfo, wifiPwd, connectWifiHandler); } else { LCOpenSDK_SearchWiFi.connectWifi4Hidden(gatwayip,pwd,mCurWlanInfo,wifiPwd,connectWifiHandler); // DeviceAddModel.newInstance().connectWifi4Hidden(gatwayip, pwd, mCurWlanInfo, wifiPwd, connectWifiHandler); } } private void dispatchConnectResult(Message message) { mView.get().cancelProgressDialog(); //恢复网络 DeviceAddHelper.clearNetWork(); DeviceAddHelper.connectPreviousWifi(); mView.get().goCloudConnectPage(); } }