From 4bc924d0ce29560a5e1ad1adf1042de032d954a1 Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期四, 04 十二月 2025 14:50:56 +0800
Subject: [PATCH] 2025年12月04日14:50:54

---
 app/src/main/java/com/hdl/photovoltaic/HDLApp.java |  257 +++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 245 insertions(+), 12 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/HDLApp.java b/app/src/main/java/com/hdl/photovoltaic/HDLApp.java
index 17b3b7d..92eb85a 100644
--- a/app/src/main/java/com/hdl/photovoltaic/HDLApp.java
+++ b/app/src/main/java/com/hdl/photovoltaic/HDLApp.java
@@ -1,11 +1,13 @@
 package com.hdl.photovoltaic;
 
 import android.app.Activity;
-import android.app.ActivityManager;
 import android.app.Application;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.Configuration;
+import android.graphics.Color;
 import android.os.Build;
 import android.os.Handler;
 import android.os.LocaleList;
@@ -17,17 +19,31 @@
 
 import androidx.multidex.MultiDex;
 
+import com.alibaba.sdk.android.push.CloudPushService;
+import com.alibaba.sdk.android.push.CommonCallback;
+import com.alibaba.sdk.android.push.noonesdk.PushInitConfig;
+import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory;
+import com.alibaba.sdk.android.push.register.MiPushRegister;
+import com.alibaba.sdk.android.push.register.OppoRegister;
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.GoogleApiAvailability;
+import com.google.firebase.messaging.FirebaseMessaging;
 import com.google.gson.Gson;
 import com.hdl.hdlhttp.HxHttpConfig;
 import com.hdl.linkpm.sdk.HDLLinkPMSdk;
+import com.hdl.linkpm.sdk.core.exception.HDLException;
 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.ConstantManage;
 import com.hdl.photovoltaic.config.UserConfigManage;
+import com.hdl.photovoltaic.enums.Languages;
+import com.hdl.photovoltaic.enums.LogoutType;
 import com.hdl.photovoltaic.enums.LowerTagType;
 import com.hdl.photovoltaic.enums.NetworkType;
+import com.hdl.photovoltaic.listener.CloudCallBeak;
+import com.hdl.photovoltaic.other.HdlAccountLogic;
 import com.hdl.photovoltaic.other.HdlDeviceLogic;
 import com.hdl.photovoltaic.other.HdlFileLogic;
 import com.hdl.photovoltaic.other.HdlLogLogic;
@@ -38,6 +54,7 @@
 import com.hdl.photovoltaic.ui.StartActivity;
 import com.hdl.photovoltaic.uni.HDLUniMPSDKManager;
 import com.hdl.photovoltaic.utils.AppManagerUtils;
+import com.hdl.photovoltaic.utils.BadgeUtils;
 import com.hdl.photovoltaic.utils.LocalManageUtil;
 import com.hdl.photovoltaic.utils.NetworkUtils;
 import com.hdl.photovoltaic.utils.SharedPreUtils;
@@ -92,9 +109,10 @@
     @Override
     public void onCreate() {
         super.onCreate();
-        Log.d("=======", "11111111");
+
 //        // 鑾峰彇褰撳墠杩涚▼鐨凱ID
-//        String processMessage= "杩涚▼ID:"+Process.myPid()+" 杩涚▼鍚嶏細"+RuningAcitvityUtil.getAppName(getBaseContext());
+//        String processMessage = "杩涚▼Uid:" + Process.myUid() + "杩涚▼ID:" + Process.myPid() + " 杩涚▼鍚嶏細" + RuningAcitvityUtil.getAppName(getBaseContext());
+        Log.d("Application==onCreate", "onCreate");
 //        Log.d(TAG, processMessage);
 //        if (RuningAcitvityUtil.getAppName(getBaseContext()).contains(":")) {
 //            //闈炲師鐢熻繘绋嬶紝鐢ㄥ垵濮嬪寲鍚庨潰鐨�
@@ -104,7 +122,7 @@
         SharedPreUtils.init(this);
         getAppLanguage();
         //棰勫垱寤鸿剼鏈琷son鏂囦欢澶�
-        HdlFileLogic.getInstance().createHdlESLocalJsonDirectory();
+        HdlFileLogic.getInstance().createHdlDeviceModelLocalJsonDirectory();
         init();
 
 
@@ -115,10 +133,12 @@
         if (TextUtils.isEmpty(language)) {
             //浠庡唴瀛橀噷闈㈣幏鍙栦笉鍒拌瑷�,鑾峰彇褰撳墠绯荤粺鐨�;
             String str = getResources().getConfiguration().locale.getLanguage();
-            if (str.equals(LocalManageUtil.zh)) {
-                UserConfigManage.getInstance().setCurrentAppLanguage(LocalManageUtil.zh);
+            if (str.equals(Languages.zh)) {
+                UserConfigManage.getInstance().setCurrentAppLanguage(Languages.zh);
+            } else if (str.equals(Languages.ar)) {
+                UserConfigManage.getInstance().setCurrentAppLanguage(Languages.ar);
             } else {
-                UserConfigManage.getInstance().setCurrentAppLanguage(LocalManageUtil.en);
+                UserConfigManage.getInstance().setCurrentAppLanguage(Languages.en);
             }
         }
     }
@@ -175,6 +195,16 @@
         initAutoSize();
 //        //鍒濆鍖栨瀬鍏夋帹閫�
 //        initJPush();
+//        //璋锋瓕鍘熺敓fcm鎺ㄩ��
+//        // 妫�鏌� Google Play Services 鍚庡啀鍒濆鍖� FCM
+//        if (isGooglePlayServicesAvailable(this)) {
+//            initFCM();
+//        } else {
+//            HdlLogLogic.print("Google Play Services 涓嶅彲鐢紝鏃犳硶浣跨敤 FCM", true);
+//            // 鍙互鍦ㄨ繖閲屽垵濮嬪寲澶囬�夋帹閫佹柟妗堬紙濡傞樋閲屼簯鑷缓閫氶亾锛�
+//        }
+        //闃块噷浜戞帹閫�
+        initAliYunPush();
         initHDLLinkPMSdk();
         HDLLinkLocalSdk.getInstance().init(getInstance());
         initSocket();
@@ -188,6 +218,46 @@
 //        //鍒濆鍖栧弸鐩烻DK锛屾斁鍦⊿tartActivity閲岄潰鍒濆鍖�
 //        initUMengSDK();
 
+
+    }
+
+    /**
+     * 鍒濆鍖栭樋閲屼簯鎺ㄩ��
+     */
+    private void initAliYunPush() {
+        PushInitConfig pushInitConfig = new PushInitConfig.Builder()
+                .application(this)
+                .appKey("335628427") //璇峰~鍐欎綘鑷繁鐨刟ppKey锛屼簯绔粰鐨�
+                .appSecret("fd1dabe7ec494c878a5970d8646c83bc") //璇峰~鍐欎綘鑷繁鐨刟ppSecret,浜戠缁欑殑
+                .build();
+        PushServiceFactory.init(pushInitConfig);
+        CloudPushService pushService = PushServiceFactory.getCloudPushService();
+        pushService.register(this, new CommonCallback() {
+            @Override
+            public void onSuccess(String success) {
+                String deviceId = pushService.getDeviceId();
+                Log.d("com.aliyun.emas.pocdemo", "鑾峰彇deviceId " + deviceId);
+                saveToken(deviceId);
+
+            }
+
+            @Override
+            public void onFailed(String errorCode, String errorMessage) {
+                //閿欒鐮佽繛鎺ワ細https://help.aliyun.com/document_detail/434686.html?spm=a2c4g.11186623.0.0.62d3556dC2DqKJ#topic-1824037
+                Log.d("com.aliyun.emas.pocdemo", "鍒濆鍖栧け璐�,閿欒鐮�: " + errorCode + "閿欒淇℃伅: " + errorMessage);
+
+            }
+        });
+        if (AppConfigManage.isDebug()) {
+            //浠呴�傜敤浜嶥ebug鍖咃紝姝e紡鍖呬笉闇�瑕佹琛�
+            pushService.setLogLevel(CloudPushService.LOG_DEBUG);
+        }
+        //灏忕背
+        //appKey/appSecret鍦ㄥ皬绫冲紑鍙戣�呭钩鍙拌幏鍙�
+        MiPushRegister.register(this, "2882303761520382032", "5612038223032");
+        // OPPO閫氶亾娉ㄥ唽
+        //appKey/appSecret鍦∣PPO寮�鍙戣�呭钩鍙拌幏鍙�
+        OppoRegister.register(this, "d80747c83e38442aaa2e5183c310bae0", "86afce21417b49a4984816024b15d4b9");
 
     }
 
@@ -209,7 +279,6 @@
      * 鍒濆鍖朒DLLinkPMSdk
      */
     private void initHDLLinkPMSdk() {
-        Log.d("===1====", "2222222");
         //1.鍒濆鍖朣DK
         HDLLinkPMSdk.initWithAppKey(this, AppConfigManage.getAppKey(), AppConfigManage.getAppSecret(), AppConfigManage.getAPPRegionUrl());
         //2.璁剧疆鎵撳嵃
@@ -217,7 +286,7 @@
 
         if (TextUtils.isEmpty(UserConfigManage.getInstance().getCurrentAppLanguage())) {
             //榛樿閰嶇疆鎺ュ彛璇锋眰璇█鏄嫳鏂�
-            UserConfigManage.getInstance().setCurrentAppLanguage(LocalManageUtil.en);
+            UserConfigManage.getInstance().setCurrentAppLanguage(Languages.en);
         }
         //3.閰嶇疆鎺ュ彛璇锋眰璇█
         HDLLinkPMSdk.setLanguage(UserConfigManage.getInstance().getCurrentAppLanguage());
@@ -234,22 +303,71 @@
         HDLLinkPMUser.getInstance().setOnReloginListener(new IOnReloginListener() {
             @Override
             public void onReLogin(int type) {
-                if (100 == type) {
+                if (type == LogoutType.ServerSwitchingLogout.getValue()) {
                     new Handler().postDelayed(new Runnable() {
                         @Override
                         public void run() {
+                            BadgeUtils.cancelAllNotifications(getApplicationContext());
+                            BadgeUtils.clearBadge(getApplicationContext());
                             //鍒囨崲鏈嶅姟鍣ㄥ湴鍧�鐢ㄧ殑
                             UserConfigManage.getInstance().setOnlineServer(!UserConfigManage.getInstance().isOnlineServer());
                             UserConfigManage.getInstance().Save();
                             restartApp(mHDLApp);
                         }
                     }, 500);
+                } else if (type == LogoutType.AbnormalLogout.getValue()) {
+                    //寮傚父鎯呭喌-寮哄埗閲嶅惎搴旂敤
+                    new Handler().postDelayed(new Runnable() {
+                        @Override
+                        public void run() {
+                            BadgeUtils.cancelAllNotifications(getApplicationContext());
+                            BadgeUtils.clearBadge(getApplicationContext());
+                            restartApp(mHDLApp);
+                        }
+                    }, 500);
+                } else if (type == LogoutType.UniLogout.getValue()) {
+                    AppManagerUtils.getAppManager().finishAllActivity();
+                    //娓呯┖浣忓畢id
+                    UserConfigManage.getInstance().setHomeId("");
+                    UserConfigManage.getInstance().setAutomaticSkipNoNetworkFlag(true);
+                    //閲嶆柊璁惧畾涓�涓椂闂�
+                    UserConfigManage.getInstance().setLoginDateTime(0);
+                    UserConfigManage.getInstance().Save();
+                    //娓呯┖娑堟伅缂撳瓨鏁版嵁
+                    HdlMessageLogic.getInstance().clearListMessage();
+                    //娓呯┖鐢电珯缂撳瓨鏁版嵁
+                    HdlResidenceLogic.getInstance().clearHouseList();
+                    //娓呯┖璁惧缂撳瓨鏁版嵁
+                    HdlDeviceLogic.getInstance().clearDeviceList();
+                    //娓呯┖缂撳瓨鏁版嵁
+                    if (mInfoMap != null) {
+                        mInfoMap.clear();
+                    }
+                    //鏂紑mqtt杩炴帴
+                    if (MqttRecvClient.getInstance() != null) {
+                        MqttRecvClient.getInstance().disConnect();
+                    }
+                    //鏂紑鎵�鏈塼cp杩炴帴涓旀竻绌鸿繛鎺ョ紦瀛�
+                    // TODO: 10/10/23
+//                TcpSocketBoot.stopAllConnectLinkGateway();
+                    if (null != HDLUniMPSDKManager.getInstance().getUniMP()) {
+                        HDLUniMPSDKManager.getInstance().getUniMP().closeUniMP();
+                    }
+                    SystemClock.sleep(200);
+                    initDCUniMPSDK();
+                    BadgeUtils.cancelAllNotifications(getApplicationContext());
+                    BadgeUtils.clearBadge(getApplicationContext());
+                    Intent intent = new Intent(getInstance(), LoginActivity.class);
+                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+                    startActivity(intent);
                 } else {
                     HdlLogLogic.print("鐩戝惉鍒扮櫥褰曢��鍑�---" + type, true);
+                    //鍒犻櫎鎺ㄩ�乀oken
+//                    HdlResidenceLogic.getInstance().pushDel(null);
                     //type:  0:姝e父閫�鍑�   1锛氭瀬鍏夋帹閫佸己鍒堕��鍑�
                     //鏀跺埌鐧诲綍澶勭悊閫氱煡锛屽叧闂墍鏈夐〉闈㈠苟鎵撳紑鐧诲綍椤甸潰
                     AppManagerUtils.getAppManager().finishAllActivity();
-//                HDLSDKSPUtils.clear();//搴曞眰鑷繁娓呯┖
+                    // HDLSDKSPUtils.clear();//搴曞眰鑷繁娓呯┖
 
                     //娓呯┖浣忓畢id
                     UserConfigManage.getInstance().setHomeId("");
@@ -281,6 +399,8 @@
                     }
                     SystemClock.sleep(200);
                     initDCUniMPSDK();
+                    BadgeUtils.cancelAllNotifications(getApplicationContext());
+                    BadgeUtils.clearBadge(getApplicationContext());
                     Intent intent = new Intent(getInstance(), LoginActivity.class);
                     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
                     if (type == 1) {
@@ -293,6 +413,41 @@
         });
 
     }
+
+    public void test(Context context) {
+//        new Handler().postDelayed(() -> {
+//            // 1. 璁剧疆寤惰繜閲嶅惎
+//            Intent restartIntent = new Intent(context, StartActivity.class);
+//            restartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+//
+//            PendingIntent pendingIntent = PendingIntent.getActivity(
+//                    context, 0, restartIntent, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_CANCEL_CURRENT
+//            );
+//
+//            AlarmManager am1 = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
+//            am1.set(AlarmManager.RTC, System.currentTimeMillis() + 300, pendingIntent);
+//
+//            int myUid = android.os.Process.myUid();
+//            ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+//            String packageName = context.getPackageName();
+//
+//            for (ActivityManager.RunningAppProcessInfo proc : am.getRunningAppProcesses()) {
+//                if (proc.uid == myUid && proc.processName.startsWith(packageName)) {
+//                    if (proc.pid != android.os.Process.myPid()) {
+//                        try {
+//                            android.os.Process.killProcess(proc.pid);
+//                        } catch (Exception e) {
+//                            e.printStackTrace();
+//                        }
+//                    }
+//                }
+//            }
+//
+//            // 3. 閫�鍑哄綋鍓嶈繘绋�
+//            android.os.Process.killProcess(android.os.Process.myPid());
+//        }, 500);
+    }
+
 
     /**
      * 鍒濆鍖朥niMPSDK 灏忕▼搴廠DK
@@ -325,6 +480,56 @@
 //        JPushInterface.setDebugMode(true);
 //        JPushInterface.init(getBaseContext());
     }
+
+    private void initFCM() {
+        // 鑾峰彇 FCM Token
+        FirebaseMessaging.getInstance().getToken()
+                .addOnCompleteListener(task -> {
+                    if (!task.isSuccessful()) {
+                        Log.w("FCM", "鑾峰彇 FCM Token 澶辫触", task.getException());
+                        return;
+                    }
+                    // 鑾峰彇鏂扮殑 FCM Token
+                    String token = task.getResult();
+                    Log.d("FCM", "FCM Token: " + token);
+
+                    // 淇濆瓨 token
+                    saveToken(token);
+                });
+
+//        // 璁㈤槄涓婚锛堝彲閫夛級
+//        FirebaseMessaging.getInstance().subscribeToTopic("all_users")
+//                .addOnCompleteListener(task -> {
+//                    String msg = "璁㈤槄涓婚鎴愬姛";
+//                    if (!task.isSuccessful()) {
+//                        msg = "璁㈤槄涓婚澶辫触";
+//                    }
+//                    Log.d("FCM", msg);
+//                });
+    }
+
+    /**
+     * 妫�鏌� Google Play Services 鏄惁鍙敤
+     */
+    private boolean isGooglePlayServicesAvailable(Context context) {
+        GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance();
+        int resultCode = googleApiAvailability.isGooglePlayServicesAvailable(context);
+        return resultCode == ConnectionResult.SUCCESS;
+    }
+
+    /**
+     * 淇濆瓨浠ょ墝
+     *
+     * @param token 浠ょ墝
+     */
+    public void saveToken(String token) {
+        if (TextUtils.isEmpty(token.trim())) {
+            return;
+        }
+        UserConfigManage.getInstance().setPushToken(token);
+        UserConfigManage.getInstance().Save();
+    }
+
 
     /**
      * 鐩戝惉缃戠粶鐘舵�佸彉鍖�
@@ -452,6 +657,29 @@
             return this;
         }
     }
+//    private void createNotificationChannel() {
+//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+//            NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+//            // 閫氱煡娓犻亾鐨刬d銆�
+//            String id = "ali_push_channel";
+//            // 鐢ㄦ埛鍙互鐪嬪埌鐨勯�氱煡娓犻亾鐨勫悕瀛椼��
+//            CharSequence name = "notification channel";
+//            // 鐢ㄦ埛鍙互鐪嬪埌鐨勯�氱煡娓犻亾鐨勬弿杩般��
+//            String description = "notification description";
+//            int importance = NotificationManager.IMPORTANCE_HIGH;
+//            NotificationChannel mChannel = new NotificationChannel(id, name, importance);
+//            // 閰嶇疆閫氱煡娓犻亾鐨勫睘鎬с��
+//            mChannel.setDescription(description);
+//            // 璁剧疆閫氱煡鍑虹幇鏃剁殑闂伅锛堝鏋淎ndroid璁惧鏀寔鐨勮瘽锛夈��
+//            mChannel.enableLights(true);
+//            mChannel.setLightColor(Color.RED);
+//            // 璁剧疆閫氱煡鍑虹幇鏃剁殑闇囧姩锛堝鏋淎ndroid璁惧鏀寔鐨勮瘽锛夈��
+//            mChannel.enableVibration(true);
+//            mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
+//            // 鏈�鍚庡湪notificationmanager涓垱寤鸿閫氱煡娓犻亾銆�
+//            mNotificationManager.createNotificationChannel(mChannel);
+//        }
+//    }
 
     /**
      * 閲嶅惎app
@@ -468,6 +696,11 @@
         }
     }
 
+    /**
+     * 鍏虫帀app鎵�鏈夎繘绋�
+     *
+     * @param context 涓婁笅鏂�
+     */
     private void killAppProcess(Context context) {
 //        AppManagerUtils.getAppManager().finishAllActivity();
         try {
@@ -475,7 +708,7 @@
             List<android.app.ActivityManager.RunningAppProcessInfo> processInfos = manager.getRunningAppProcesses();
             // 鍏堟潃鎺夌浉鍏宠繘绋嬶紝鏈�鍚庡啀鏉�鎺変富杩涚▼
             for (android.app.ActivityManager.RunningAppProcessInfo runningAppProcessInfo : processInfos) {
-                if (runningAppProcessInfo.pid != android.os.Process.myPid()) {
+                if ((runningAppProcessInfo.uid == android.os.Process.myUid()) && (runningAppProcessInfo.pid != android.os.Process.myPid())) {
                     try {
                         android.os.Process.killProcess(runningAppProcessInfo.pid);
                     } catch (Exception e) {

--
Gitblit v1.8.0