hxb
2022-11-22 b3513b1713bb979d0a69c5a8c4ddcd038f184e6e
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
package com.mm.android.deviceaddmodule;
 
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
 
import com.lechange.opensdk.api.InitParams;
import com.lechange.opensdk.api.LCOpenSDK_Api;
import com.lechange.opensdk.device.LCOpenSDK_DeviceInit;
import com.mm.android.deviceaddmodule.device_wifi.CurWifiInfo;
import com.mm.android.deviceaddmodule.device_wifi.DeviceWifiListActivity;
import com.mm.android.deviceaddmodule.mobilecommon.AppConsume.BusinessException;
import com.mm.android.deviceaddmodule.mobilecommon.AppConsume.EnvironmentConfig;
import com.mm.android.deviceaddmodule.mobilecommon.entity.device.DHDevice;
import com.mm.android.deviceaddmodule.openapi.CONST;
import com.mm.android.deviceaddmodule.openapi.DeviceAddOpenApiManager;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
import com.zxing.ContextHelper;
 
import static com.mm.android.deviceaddmodule.device_wifi.DeviceConstant.IntentCode.DEVICE_SETTING_WIFI_LIST;
 
/**
 * 添加设备组件 唯一入口
 */
public class LCDeviceEngine {
    private boolean sdkHasInit = false;
    private volatile static LCDeviceEngine lcDeviceEngine;
    public String accessToken;
    public String subAccessToken;
    public String openid;
    private Throwable throwable;
    public CommonParam commonParam;
    public String userId = "";
 
    public static LCDeviceEngine newInstance() {
        if (lcDeviceEngine == null) {
            synchronized (LCDeviceEngine.class) {
                if (lcDeviceEngine == null) {
                    lcDeviceEngine = new LCDeviceEngine();
                }
            }
        }
        return lcDeviceEngine;
    }
 
    public boolean init(CommonParam commonParam) throws Throwable {
        this.commonParam = commonParam;
        this.accessToken = "";
        this.userId = "";
        this.sdkHasInit = false;
        if (commonParam == null) {
            throw new Exception("commonParam must not null");
        }
        //参数校验
        commonParam.checkParam();
        //初始化参数
        initParam(commonParam);
        if(!CONST.HOST.contains("hdlcontrol.com")) {
            //获取开放平台token
            initToken();
            if (TextUtils.isEmpty(accessToken)) {
                throw throwable;
            }
        }else{
            accessToken="St_0000c3e2e772d5f74bfca2d86eaa18a6";
        }
        //组件初始化
        InitParams initParams = new InitParams(commonParam.getContext(), CONST.Envirment.OVERSEAS_PRO.url.replace("https://", ""), accessToken);
        LCOpenSDK_Api.initOpenApi(initParams);
        LCOpenSDK_DeviceInit.getInstance();
        sdkHasInit = true;
        return true;
    }
 
    public void addDevice(Activity activity) throws Exception {
        if (!sdkHasInit) {
            throw new Exception("not init");
        }
        //开启添加页面
        activity.startActivity(new Intent(commonParam.getContext(), DeviceAddActivity.class));
    }
    public void setSubAccessToken(String subAccessToken){
        this.subAccessToken = subAccessToken;
    }
 
    public boolean deviceOnlineChangeNet(Activity activity,DHDevice device, CurWifiInfo wifiInfo)  {
        if (!sdkHasInit) {
            return false;
        }
        //开启设备在线配网
        Intent intent = new Intent(commonParam.getContext(), DeviceWifiListActivity.class);
        Bundle bundle = new Bundle();
        bundle.putSerializable("DHDEVICE_INFO", device);
        bundle.putSerializable("DEVICE_CURRENT_WIFI_INFO", wifiInfo);
        intent.putExtras(bundle);
        activity.startActivityForResult(intent, DEVICE_SETTING_WIFI_LIST);
        return true;
    }
 
    private String initToken() {
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    accessToken = DeviceAddOpenApiManager.getToken();
                } catch (BusinessException e) {
                    throwable = new Throwable(e.errorDescription);
                }
            }
        });
        try {
            thread.start();
            thread.join(4000);
        } catch (InterruptedException e) {
            throwable = e;
        }
        return accessToken;
    }
 
    private void initParam(CommonParam commonParam) throws Exception {
        userId = TextUtils.isEmpty(commonParam.getUserId()) ? commonParam.getAppId() : commonParam.getUserId();
        //传入参数 AppId SecretKey  环境切换
        CONST.makeEnv(commonParam.getEnvirment(), commonParam.getAppId(), commonParam.getAppSecret());
        ContextHelper.init(commonParam.getContext());
        new EnvironmentConfig.Builder().setContext(commonParam.getContext()).build();
        initImageLoader(commonParam.getContext());
    }
 
    private void initImageLoader(Context context) {
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
                .threadPriority(Thread.NORM_PRIORITY - 2).threadPoolSize(3)
                .tasksProcessingOrder(QueueProcessingType.LIFO)
                .memoryCache(new LruMemoryCache((int) (Runtime.getRuntime().maxMemory() / 16)))
                .memoryCacheExtraOptions(600, 400)
                .diskCacheExtraOptions(600, 400, null).diskCacheSize(50 * 1024 * 1024)
                .diskCacheFileNameGenerator(new Md5FileNameGenerator())
                .imageDownloader(new BaseImageDownloader(context))
                .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
                .writeDebugLogs()
                .build();
        ImageLoader.getInstance().init(config);
    }
 
}