111
hxb
2022-11-24 0a3e07f10937484145f33c7560607b4b2353cb81
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package com.mm.android.deviceaddmodule.presenter;
 
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import com.lechange.common.log.Logger;
import com.lechange.opensdk.media.DeviceInitInfo;
import com.mm.android.deviceaddmodule.SearchDeviceManager;
import com.mm.android.deviceaddmodule.contract.SecurityCheckConstract;
import com.mm.android.deviceaddmodule.helper.DeviceAddHelper;
import com.mm.android.deviceaddmodule.helper.Utils4AddDevice;
import com.mm.android.deviceaddmodule.mobilecommon.AppConsume.ProviderManager;
import com.mm.android.deviceaddmodule.mobilecommon.common.LCConfiguration;
import com.mm.android.deviceaddmodule.mobilecommon.entity.deviceadd.DeviceAddInfo;
import com.mm.android.deviceaddmodule.model.DeviceAddModel;
 
import java.lang.ref.WeakReference;
 
public class SecurityCheckPresenter implements SecurityCheckConstract.Presenter, SearchDeviceManager.ISearchDeviceListener {
    private static final int SEARCH_SUCCESS = 1;                            //搜索成功
    WeakReference<SecurityCheckConstract.View> mView;
    String mDeviceSn;
    DeviceInitInfo mDeviceNetInfoEx;
 
    private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            if (mView.get() != null &&
                    mView.get().isViewActive()) {
                stopSearchDevice();
                switch (msg.what) {
                    case SEARCH_SUCCESS:
                        DeviceAddInfo deviceAddInfo = DeviceAddModel.newInstance().getDeviceInfoCache();
                        if (DeviceAddHelper.isDeviceNeedInit(mDeviceNetInfoEx)) {
                            // 支持sc码的软ap,未初始化时,走netSDK不需要登陆的获取wifi列表和配网接口
                            if (DeviceAddHelper.isSupportAddBySc(deviceAddInfo) && DeviceAddInfo.DeviceAddType.SOFTAP.equals(deviceAddInfo.getCurDeviceAddType())) {
                                mView.get().goSoftApWifiListPage(true);
                            } else {
                                mView.get().goInitPage(mDeviceNetInfoEx);
                            }
                        } else {
                            if (DeviceAddInfo.DeviceAddType.SOFTAP.equals(deviceAddInfo.getCurDeviceAddType())) {
                                String devPwd = DeviceAddModel.newInstance().getDeviceInfoCache().getDevicePwd();
                                //不支持初始化的密码默认为admin(目前仅国内K5设备是不支持初始化,需要用admin登录)
                                if (ProviderManager.getAppProvider().getAppType() != LCConfiguration.APP_LECHANGE_OVERSEA && !DeviceAddHelper.isDeviceSupportInit(mDeviceNetInfoEx)){
                                    devPwd = "admin";
                                    DeviceAddModel.newInstance().getDeviceInfoCache().setDevicePwd(devPwd);
                                }
                                if (TextUtils.isEmpty(devPwd)) {
                                    mView.get().goDevLoginPage();
                                } else {
                                    mView.get().goSoftApWifiListPage(false);
                                }
                            } else {
                                mView.get().goCloudConnetPage();
                            }
 
                        }
                        break;
                    default:
                        break;
                }
            }
        }
    };
 
    public SecurityCheckPresenter(SecurityCheckConstract.View view) {
        mView = new WeakReference<>(view);
        mDeviceSn = DeviceAddModel.newInstance().getDeviceInfoCache().getDeviceSn();
        mDeviceNetInfoEx = SearchDeviceManager.getInstance().getDeviceNetInfo(mDeviceSn);
    }
 
    @Override
    public void checkDevice() {
        if (mDeviceNetInfoEx == null
                ||(mDeviceNetInfoEx!=null && Utils4AddDevice.checkDeviceVersion(mDeviceNetInfoEx)
                &&!Utils4AddDevice.checkEffectiveIP(mDeviceNetInfoEx))) {//未搜索到设备或新设备且其IP无效,重新搜索
            Logger.d("SecurityCheckPresenter","search-again::");
            startSearchDevice();
        } else {
            mHandler.obtainMessage(SEARCH_SUCCESS).sendToTarget();
        }
 
    }
 
    @Override
    public void recyle() {
        stopSearchDevice();
    }
 
    private void startSearchDevice() {
        SearchDeviceManager searchDeviceManager = SearchDeviceManager.getInstance();
        searchDeviceManager.registerListener(this);
        searchDeviceManager.startSearch();
    }
 
    private void stopSearchDevice() {
        SearchDeviceManager searchDeviceManager = SearchDeviceManager.getInstance();
        searchDeviceManager.unRegisterListener(this);
        searchDeviceManager.stopSearch();
    }
 
    @Override
    public void onDeviceSearched(String sncode, DeviceInitInfo device_net_info_ex) {
        if (device_net_info_ex == null) {
            return;
        }
        String szSerialNo = device_net_info_ex.mSerialNo;
        if (szSerialNo.equalsIgnoreCase(mDeviceSn)) {
            mDeviceNetInfoEx = device_net_info_ex;
            mHandler.obtainMessage(SEARCH_SUCCESS).sendToTarget();
        }
    }
}