mac
2023-12-21 f9956641e92cce3ece4cdff523a6e453f159d268
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
package com.hdl.photovoltaic;
 
import android.app.Application;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.IBinder;
import android.text.TextUtils;
import android.util.DisplayMetrics;
 
 
import com.hdl.hdlhttp.HxHttpConfig;
import com.hdl.linkpm.sdk.HDLLinkPMSdk;
import com.hdl.linkpm.sdk.user.HDLLinkPMUser;
import com.hdl.linkpm.sdk.user.callback.IOnReloginListener;
import com.hdl.linkpm.sdk.utils.HDLSDKSPUtils;
import com.hdl.photovoltaic.config.AppConfigManage;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpServer;
import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpService;
import com.hdl.photovoltaic.other.HdlFileLogic;
import com.hdl.photovoltaic.other.HdlOtaLogic;
import com.hdl.photovoltaic.other.HdlThreadLogic;
import com.hdl.photovoltaic.ui.HomeLoginActivity;
import com.hdl.photovoltaic.uni.HDLUniMPSDKManager;
import com.hdl.photovoltaic.utils.AppManagerUtils;
import com.hdl.photovoltaic.utils.LocalManageUtil;
import com.hdl.photovoltaic.utils.SharedPreUtils;
import com.hdl.sdk.link.HDLLinkLocalSdk;
import com.hdl.sdk.link.core.connect.HDLUdpConnect;
import com.hdl.sdk.link.core.utils.QueueUtils;
import com.hdl.sdk.link.core.utils.mqtt.MqttRecvClient;
 
import java.util.HashMap;
import java.util.Locale;
import java.util.Objects;
 
import cn.jpush.android.api.JPushInterface;
import io.dcloud.common.util.RuningAcitvityUtil;
import okhttp3.logging.HttpLoggingInterceptor;
 
public class HDLApp extends Application {
 
    //控制打印 Debug模式打印
    private Boolean isLogEnabled = true;
    //三方sdk初始化标识
    private Boolean isInitThirdSDK = false;
    //声明一个当前应用的实例
    private static HDLApp mHDLApp;
    //声明一个公共的信息映射,可当作全局变量使用;
    public HashMap<String, String> mInfoMap = new HashMap<>();
 
    //利用单例模式获取当前应用的唯一实例
    public static HDLApp getInstance() {
        return mHDLApp;
    }
 
    @Override
    public void onCreate() {
 
        super.onCreate();
        mHDLApp = this;
        SharedPreUtils.init(this);
        getAppLanguage();
        initThirdSDK();
    }
 
    public void getAppLanguage() {
        String language = UserConfigManage.getInstance().getCurrentAppLanguage();
        if (TextUtils.isEmpty(language)) {
            //从内存里面获取不到语言,获取当前系统的;
            String str = getResources().getConfiguration().locale.getCountry();
            if (str.equals("CN") || str.equals("TW")) {
                UserConfigManage.getInstance().setCurrentAppLanguage(LocalManageUtil.zh);
            } else {
                UserConfigManage.getInstance().setCurrentAppLanguage(LocalManageUtil.en);
            }
        }
    }
 
    public void setInfoMap(String key, String value) {
        mInfoMap.put(key, value);
    }
 
    public String getValue(String key) {
        if (mInfoMap.containsKey(key)) {
            return mInfoMap.get(key);
        }
        return "";
    }
 
    public String getKey(String value) {
        if (mInfoMap.containsValue(value)) {
            for (String key : mInfoMap.keySet()) {
                if (Objects.equals(mInfoMap.get(key), value)) {
                    return key;
                }
            }
        }
        return "";
    }
 
    /**
     * 初始化三方相关SDK
     */
    public void initThirdSDK() {
        // 小程序进程
        if (RuningAcitvityUtil.getAppName(getBaseContext()).contains("unimp")) {
            return;
        }
        if (isInitThirdSDK) {
            return;
        }
        isInitThirdSDK = true;
 
//        //5.初始化Bugly
//        CrashReport.initCrashReport(this, Constant.BUGLY_APP_ID, true);
        //6.初始化DCUniMPSDK
        initDCUniMPSDK();
 
//        //7.初始化自定义IconToast
//        ToastUtils.getInstance().initIconToast(this);
//        //8.对fastjson进行设置,解决fastjosn转换成字符串时首字母大小写问题
//        TypeUtils.compatibleWithFieldName = true;
//        //9.初始化网络工具
//        NetWorkUtil.init(this);
//        //10.初始化极光推送
        initJPush();
        initHDLLinkPMSdk();
        HDLLinkLocalSdk.getInstance().init(getInstance());
        initSocket();
        //4.初始化OKHttpLog 是否开启
        setOKHttpLogOpen(isLogEnabled);
 
 
    }
 
    /**
     * 初始化HDLLinkPMSdk
     */
    private void initHDLLinkPMSdk() {
        //1.初始化SDK
        HDLLinkPMSdk.initWithAppKey(getInstance(), AppConfigManage.getAppKey(), AppConfigManage.getAppSecret(), AppConfigManage.getAPPRegionUrl());
        //2.设置打印
        HDLLinkPMSdk.setLogEnabled(isLogEnabled);
        //3.配置接口请求语言
        Locale locale = LocalManageUtil.getSystemLocale(this);
        if (!locale.getLanguage().equals("zh")) {
            HDLLinkPMSdk.setLanguage("en");
        } else {
            HDLLinkPMSdk.setLanguage("cn");
        }
//        HDLLinkPMSdk.setLanguage("en");//强制使用英文
        //4.监听登出处理
        HDLLinkPMUser.getInstance().setOnReloginListener(new IOnReloginListener() {
            @Override
            public void onReLogin(int type) {
                //type:  0:正常退出   1:极光推送强制退出
                //收到登录处理通知,关闭所有页面并打开登录页面
                AppManagerUtils.getAppManager().finishAllActivity();
                HDLSDKSPUtils.clear();
 
                //重新登陆,默认同意隐私政策
                UserConfigManage.getInstance().setAcceiptPolicy(true);
                //重新设定一个时间
                UserConfigManage.getInstance().setLoginDateTime(0);
                UserConfigManage.getInstance().Save();
 
                //断开mqtt连接
                if (MqttRecvClient.getInstance() != null) {
                    MqttRecvClient.getInstance().stop();
                }
                //断开所有tcp连接且清空连接缓存
                // TODO: 10/10/23
//                TcpSocketBoot.stopAllConnectLinkGateway();
//                    if(null!=HDLUniMPSDKManager.getInstance().getUniMP()){
//                        LogUtils.d("asdfasdfasdfsdf我被删除啦");
//                        HDLUniMPSDKManager.getInstance().getUniMP().closeUniMP();
//                    }
//                    initDCUniMPSDK();
                Intent intent = new Intent(getInstance(), HomeLoginActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                if (type == 1) {
                    intent.putExtra("isJpush", true);
                }
                startActivity(intent);
 
            }
        });
 
    }
 
    /**
     * 初始化UniMPSDK 小程序SDK
     */
    private void initDCUniMPSDK() {
        HDLUniMPSDKManager.getInstance().initDCUniMPSDK(this);
    }
 
    //初始化socket及启动处理接收到数据的处理方法
    private void initSocket() {
        QueueUtils.getInstance().start();
        HDLUdpConnect.getInstance().initUdp();
    }
 
    /**
     * 初始化OKHttpLog
     */
    private void setOKHttpLogOpen(Boolean isOpen) {
        if (isOpen) {
            HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
            httpLoggingInterceptor.level(HttpLoggingInterceptor.Level.BODY);
            HxHttpConfig.getInstance().addInterceptor(httpLoggingInterceptor);
        }
    }
 
    private void initJPush() {
        JPushInterface.setDebugMode(true);
        JPushInterface.init(getBaseContext());
    }
 
 
//    /**
//     * 初始化uni app mqtt
//     */
//    private void initUniMqtt() {
//        try {
//            Through.getInstance().setUni(false);
//            //IP 地址要根据实际的更改
//            UniAppMqtt.getInstance().initMqtt(this, "tcp://192.168.3.124:1883", "Android_" + android.os.Build.BRAND + "_" + this.hashCode(), new String[]{"PCToAndroid/#"});
//        } catch (Exception e) {
//            LogUtils.e("测试Mqtt连接服务端失败");
//        }
//    }
 
 
}