package com.mm.android.deviceaddmodule.presenter; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import com.lechange.opensdk.media.DeviceInitInfo; import com.mm.android.deviceaddmodule.R; import com.mm.android.deviceaddmodule.SearchDeviceManager; import com.mm.android.deviceaddmodule.contract.DeviceAddConstract; import com.mm.android.deviceaddmodule.event.DeviceAddEvent; import com.mm.android.deviceaddmodule.helper.DeviceAddHelper; import com.mm.android.deviceaddmodule.mobilecommon.common.LCConfiguration; import com.mm.android.deviceaddmodule.mobilecommon.entity.deviceadd.DeviceAddInfo; import com.mm.android.deviceaddmodule.mobilecommon.utils.CommonHelper; import com.mm.android.deviceaddmodule.mobilecommon.utils.LogUtil; import com.mm.android.deviceaddmodule.model.DeviceAddModel; import com.zxing.Extras; import org.greenrobot.eventbus.EventBus; import java.lang.ref.WeakReference; public class DeviceAddPresenter implements DeviceAddConstract.Presenter { WeakReference mView; private SearchDeviceManager mServiceManager; private String curTitleMode = DeviceAddHelper.TitleMode.BLANK.name(); //当前标题模式 public DeviceAddPresenter(DeviceAddConstract.View view) { mView = new WeakReference<>(view); // 启动搜索设备的服务 mServiceManager = SearchDeviceManager.getInstance(); mServiceManager.connectService(); } @Override public String getCurTitleMode() { return curTitleMode; } @Override public void setCurTitleMode(String titleMode) { curTitleMode = titleMode; } @Override public void dispatchIntentData(Intent intent) { Bundle bundle = intent.getExtras(); String sn = ""; boolean offlineConfigType = false; String deviceModelName = ""; boolean isDeviceDetail = false; String imeiCode = ""; String scCode = ""; String devPwd = ""; boolean isFromDeviceDispatch = false; DeviceAddInfo dispatch = null; if (bundle != null) { isFromDeviceDispatch = bundle.getBoolean(Extras.device.EXTRAS_FROM_DISPATCH, false); dispatch = (DeviceAddInfo) bundle.getSerializable(Extras.device.EXTRAS_DEVICE_DISPATCH); sn = bundle.getString(LCConfiguration.DEVICESN_PARAM); isDeviceDetail = bundle.getBoolean(LCConfiguration.IS_DEVICE_DETAIL_PARAM); DeviceAddInfo.GatewayInfo gatewayInfo = new DeviceAddInfo.GatewayInfo(); gatewayInfo.setSn(sn); DeviceAddModel.newInstance().getDeviceInfoCache().setGatewayInfo(gatewayInfo); // 是否为中间页添加 DeviceAddModel.newInstance().getDeviceInfoCache().setDeviceDetail(isDeviceDetail); offlineConfigType = bundle.getBoolean(LCConfiguration.OFFLINE_CONFIG_TYPE_PARAM); deviceModelName = bundle.getString(DeviceAddHelper.DEVICE_MODEL_NAME_PARAM); imeiCode = bundle.getString(LCConfiguration.DEVICE_IMEI_PARAM); scCode = bundle.getString(LCConfiguration.SC_CODE_PARAM); devPwd = bundle.getString(LCConfiguration.DEVICE_PWD_PARAM); } if (offlineConfigType) { DeviceAddInfo deviceAddInfo = DeviceAddModel.newInstance().getDeviceInfoCache(); deviceAddInfo.setWifiOfflineMode(true); deviceAddInfo.setDeviceSn(sn); deviceAddInfo.setSc(scCode); deviceAddInfo.setDevicePwd(devPwd); deviceAddInfo.setDeviceModel(deviceModelName); LogUtil.debugLog("DeviceAddPresenter", "offlineConfigType deviceAddModel: " + DeviceAddModel.newInstance()); LogUtil.debugLog("DeviceAddPresenter", "offlineConfigType deviceAddInfo: " + deviceAddInfo); mView.get().setTitle(R.string.mobile_common_network_config); deviceAddInfo.setStartTime(System.currentTimeMillis()); mView.get().goOfflineConfigPage(sn, deviceModelName, imeiCode); return; } if (isFromDeviceDispatch && dispatch != null) { DeviceAddModel.newInstance().updateDeviceAllCache(dispatch); mView.get().goDispatchPage(); } else { mView.get().goScanPage(); } } @Override public void getGPSLocation() { double[] gps = CommonHelper.getGpsInfo(mView.get().getContextInfo()); DeviceAddInfo.GPSInfo gpsInfo = DeviceAddModel.newInstance().getDeviceInfoCache().getGpsInfo(); gpsInfo.setLongitude(String.valueOf(gps[0])); gpsInfo.setLatitude(String.valueOf(gps[1])); } @Override public void dispatchPageNavigation() { DeviceAddInfo deviceAddInfo = DeviceAddModel.newInstance().getDeviceInfoCache(); if (DeviceAddModel.newInstance().getDeviceInfoCache().isWifiConfigModeOptional()) { EventBus.getDefault().post(new DeviceAddEvent(DeviceAddEvent.SHOW_TYPE_CHOSE_ACTION)); return; } if (DeviceAddInfo.DeviceType.ap.name().equals(deviceAddInfo.getType())) { //不支持配件添加,直接提示返回 mView.get().goNotSupportBindTipPage(); return; } else { //设备 if (TextUtils.isEmpty(deviceAddInfo.getModelName()) && TextUtils.isEmpty(deviceAddInfo.getNc())) {//modelName 为空的情况 进入设备选择页 V3.9+ mView.get().goTypeChoosePage(); } else { if (TextUtils.isEmpty(deviceAddInfo.getConfigMode())) { deviceAddInfo.setCurDeviceAddType(DeviceAddInfo.DeviceAddType.LAN); mView.get().goWiredwirelessPage(false); } else { if (deviceAddInfo.getConfigMode().contains(DeviceAddInfo.ConfigMode.SoftAP.name())) { //软AP // 局域网内搜索到则直接走初始化或连接云平台流程 DeviceInitInfo deviceNetInfoEx = SearchDeviceManager.getInstance().getDeviceNetInfo(deviceAddInfo.getDeviceSn()); if (deviceNetInfoEx != null) { // 支持sc码,进入云配置流程 if (DeviceAddHelper.isSupportAddBySc(deviceAddInfo)) { mView.get().goCloudConnetPage(); } else if (DeviceAddHelper.isDeviceNeedInit(deviceNetInfoEx)) { mView.get().goInitPage(deviceNetInfoEx); } else { mView.get().goCloudConnetPage(); } } else { deviceAddInfo.setCurDeviceAddType(DeviceAddInfo.DeviceAddType.SOFTAP); mView.get().goSoftApPage(); } }else if (deviceAddInfo.getConfigMode().contains(DeviceAddInfo.ConfigMode.SoundWave.name()) || deviceAddInfo.getConfigMode().contains(DeviceAddInfo.ConfigMode.SmartConfig.name())) { //无线 deviceAddInfo.setCurDeviceAddType(DeviceAddInfo.DeviceAddType.WLAN); mView.get().goWiredwirelessPage(true); } else if (deviceAddInfo.getConfigMode().contains(DeviceAddInfo.ConfigMode.LAN.name())) { //有线 deviceAddInfo.setCurDeviceAddType(DeviceAddInfo.DeviceAddType.LAN); mView.get().goWiredwirelessPage(false); } else { deviceAddInfo.setCurDeviceAddType(DeviceAddInfo.DeviceAddType.LAN); mView.get().goWiredwirelessPage(false); } } } } } @Override public void uninit() { mServiceManager = SearchDeviceManager.getInstance(); if (mServiceManager.checkSearchDeviceServiceIsExist()) { mServiceManager = SearchDeviceManager.getInstance(); mServiceManager.checkSearchDeviceServiceDestory(); } DeviceAddModel.newInstance().recyle(); DeviceAddHelper.clearNetWork(); } @Override public void getDeviceShareInfo() { } @Override public boolean canBeShare() { DeviceAddInfo deviceAddInfo = DeviceAddModel.newInstance().getDeviceInfoCache(); //配件不能共享 if (DeviceAddInfo.DeviceType.ap.name().equals(deviceAddInfo.getType())) { return false; } //DS11不能共享 if ("DS11".equalsIgnoreCase(deviceAddInfo.getDeviceModel())) { return false; } //H1G不能共享 if ("ARC2000E-GSW".equalsIgnoreCase(deviceAddInfo.getDeviceModel())) { return false; } return true; } @Override public void changeToWireless() { mView.get().goWiredwirelessPageNoAnim(true); } @Override public void changeToWired() { // 软ap与有线流程切换后,设备密码会被清掉,故需要重新将sc码设置成设备密码 DeviceAddHelper.setDevicePwdBySc(); mView.get().goWiredwirelessPageNoAnim(false); } @Override public void changeToSoftAp() { // 软ap与有线流程切换后,设备密码会被清掉,故需要重新将sc码设置成设备密码 DeviceAddHelper.setDevicePwdBySc(); mView.get().goSoftApPageNoAnim(); } @Override public void startSearchService() { // 启动搜索设备的服务 mServiceManager = SearchDeviceManager.getInstance(); mServiceManager.connectService(); } }