wjc
2025-05-07 b9cc7390e8e8ce64c41c26fb369c98ce669d660c
app/src/main/java/com/hdl/photovoltaic/ui/CPowerStationActivity.java
@@ -1,11 +1,14 @@
package com.hdl.photovoltaic.ui;
import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.os.Process;
import android.os.SystemClock;
import android.text.TextUtils;
import android.util.Log;
import com.google.gson.Gson;
@@ -20,17 +23,17 @@
import com.hdl.photovoltaic.config.ConstantManage;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.databinding.ActivityCpowerStationBinding;
import com.hdl.photovoltaic.enums.LowerTagType;
import com.hdl.photovoltaic.enums.NetworkType;
import com.hdl.photovoltaic.listener.CloudCallBeak;
import com.hdl.photovoltaic.other.HdlCommonLogic;
import com.hdl.photovoltaic.other.HdlDeviceLogic;
import com.hdl.photovoltaic.other.HdlESLocalJsonLogic;
import com.hdl.photovoltaic.other.HdlLogLogic;
import com.hdl.photovoltaic.other.HdlMqttLogic;
import com.hdl.photovoltaic.other.HdlOtaLogic;
import com.hdl.photovoltaic.other.HdlResidenceLogic;
import com.hdl.photovoltaic.other.HdlThreadLogic;
import com.hdl.photovoltaic.other.HdlUniLogic;
import com.hdl.photovoltaic.services.ForeService;
import com.hdl.photovoltaic.ui.bean.DeviceRemoteInfo;
import com.hdl.photovoltaic.ui.bean.HouseIdBean;
import com.hdl.photovoltaic.ui.bean.OidBean;
@@ -45,15 +48,12 @@
import com.hdl.sdk.link.core.bean.gateway.GatewayBean;
import com.hdl.sdk.link.core.config.HDLLinkConfig;
import com.hdl.sdk.link.core.utils.mqtt.MqttRecvClient;
import com.umeng.analytics.MobclickAgent;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import cn.jpush.android.api.JPushInterface;
@@ -76,9 +76,8 @@
    @Override
    public void onBindView(Bundle savedInstanceState) {
//        setNotificationBarBackgroundColor(CustomColor.white);
        getWindow().setStatusBarColor(getColor(R.color.text_FFFFFFFF));
        setStatusBarTextColor();
        setStatusBarTranslucent();
        getWindow().setNavigationBarColor(getColor(R.color.text_FF000000));
        //C端启动App自动打开小程序电站详情界面
        startAppAutomaticallyOpenUni();
        //注册监听
@@ -87,6 +86,21 @@
        this.initMqttClient();
        //上传极光注册ID到云端
        this.pushTokens();
        //获取云端脚本
        HdlESLocalJsonLogic.getInstance().getAllHdlESLocalJson();
//        mForegroundService= new Intent(this, ForeService.class);
//        startService();
    }
    Intent mForegroundService;
    private void startService() {
        // Android 8.0使用startForegroundService在前台启动新服务
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            startForegroundService(mForegroundService);
        } else {
            startService(mForegroundService);
        }
    }
    @Override
@@ -105,12 +119,13 @@
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        //低于安卓14版本
                        if (android.os.Build.VERSION.SDK_INT < 34) {
                            startAppAutomaticallyOpenUni(false);
                        } else {
                            startAppAutomaticallyOpenUni(true);
                        }
                        startAppAutomaticallyOpenUni(false);
//                        //低于安卓14版本
//                        if (android.os.Build.VERSION.SDK_INT < 34) {
//                            startAppAutomaticallyOpenUni(false);
//                        } else {
//                            startAppAutomaticallyOpenUni(false);
//                        }
                    }
                });
            }
@@ -134,7 +149,7 @@
                return;
            }
            int index = -1;
            List<GatewayBean> list = HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(UserConfigManage.getInstance().getHomeId());
            List<GatewayBean> list = HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(UserConfigManage.getInstance().getHomeId(), null);
            for (int i = 0; i < list.size(); i++) {
                GatewayBean gatewayBean = list.get(i);
                if (gatewayBean.getGatewayId().equals(topics[2])) {
@@ -172,7 +187,7 @@
            HdlLogLogic.print(event.getTopic() + new Gson().toJson(event.getData()), true);
        } else if (event.getTopic().contains(ConstantManage.network_change_post)) {
//            String wifi_ssid = WifiUtils.getInstance().getCurrentConnectWifiSsid();//获取WiFi的ssid需要位置权限的
            HdlLogLogic.print("监听网络状态--->" + event.getData().toString() + "(" + event.getType() + ")", true);
            HdlLogLogic.print("监听网络状态---" + event.getData().toString() + "(" + event.getType() + ")", true);
            //第一次启动App,以及切换网络的时候更新
            if (TextUtils.isEmpty(UserConfigManage.getInstance().getHomeId())) {
                return;
@@ -208,8 +223,8 @@
            }
            String homeId = event.getData().toString();
            //进去住宅详情uni读取逆变器列表成功后通知
            for (int i = 0; i < HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(homeId).size(); i++) {
                String gatewayId = HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(homeId).get(i).getGatewayId();
            for (int i = 0; i < HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(homeId, null).size(); i++) {
                String gatewayId = HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(homeId, null).get(i).getGatewayId();
                //字符串是自己按规则拼接的,里面注册主题时会解析字符串,只拿getGatewayId()值;
                String topic = "/user/" + gatewayId + "/#";
                //进去住宅详情开始订阅主题
@@ -229,15 +244,17 @@
     */
    private void startAppAutomaticallyOpenUni(boolean delay) {
        if (delay) {
            SystemClock.sleep(2000);
        }
//        if (delay) {
//            SystemClock.sleep(2000);
//        }
        if (TextUtils.isEmpty(HDLLinkPMUser.getInstance().getAccessToken())) {
            //其实刷新token失败已通知退出登录,数据已经清空,因为等2s uni加载慢导致请求链接的时候出现token为空
            HdlLogLogic.print("返回去---",true);
            return;
        }
        UserConfigManage.getInstance().setUniBottomSafeDistanceBackgroundColor(0);
        List<HouseIdBean> HouseIdList = HdlResidenceLogic.getInstance().getHouseIdList();
        if (HouseIdList.size() == 0) {
        if (HouseIdList.isEmpty()) {
            if (TextUtils.isEmpty(UserConfigManage.getInstance().getHomeId())) {
                String path = HDLUniMP.UNI_EVENT_OPEN_HOME_Null_C;
                HdlUniLogic.getInstance().openUniMP(path, null);
@@ -255,11 +272,13 @@
                }
            }
            HouseIdBean houseIdBean = HouseIdList.get(select_home);
            HdlResidenceLogic.getInstance().switchHouse(houseIdBean);
            HdlResidenceLogic.getInstance().switchHouse(houseIdBean, false);
            String path = HDLUniMP.UNI_EVENT_OPEN_HOME_DETAILS_C + "?homeId=" + houseIdBean.getHomeId() + "&homeName=" + houseIdBean.getHomeName() + "&powerStationStatus=" + houseIdBean.getPowerStationStatus();
            HdlUniLogic.getInstance().openUniMP(path, null);
        }
    }
//    /**
//     * 物理按键返回事件(包括左滑移除事件)
@@ -295,6 +314,8 @@
                    HDLUniMPSDKManager.getInstance().getUniMP().closeUniMP();
                }
                AppManagerUtils.getAppManager().finishAllActivity();
                //如果开发者调用kill或者exit之类的方法杀死进程,或者双击back键会杀死进程,请务必在此之前调用MobclickAgent.onKillProcess方法,用来保存统计数据。
                MobclickAgent.onKillProcess(_mActivity);
                Process.killProcess(Process.myPid());
            }
        }
@@ -307,6 +328,7 @@
        HdlUniLogic.getInstance().checkRemoveOtherUniMPEventCallBack();
        //移除监听
        HDLLinkLocalSdk.getInstance().removeAllTopicsListener(allTopicsListener);
//        stopService(mForegroundService);
    }
    /**
@@ -347,14 +369,14 @@
                                UserConfigManage.getInstance().Save();
                            }
                            HDLApp.getInstance().setInfoMap(registrationId_tag, "true");//记录一下状态,后台杀死app会清空;
                            HdlLogLogic.print("C端--->添加极光ID到云端--->registrationID:" + UserConfigManage.getInstance().getUserName() + "--->" + finalRegistrationID, true);
                            HdlLogLogic.print("C端---添加极光ID到云端---registrationID:" + UserConfigManage.getInstance().getUserName() + "--->" + finalRegistrationID, true);
                        }
                        @Override
                        public void onFailure(HDLException e) {
                            HDLApp.getInstance().setInfoMap(registrationId_tag, "false");//记录一下状态,后台杀死app会清空;
                            HdlLogLogic.print("C端--->添加极光ID到云端失败--->registrationID:" + UserConfigManage.getInstance().getUserName() + "--->" + finalRegistrationID, true);
                            HdlLogLogic.print("C端---添加极光ID到云端失败---registrationID:" + UserConfigManage.getInstance().getUserName() + "--->" + finalRegistrationID, true);
                        }
                    });
@@ -380,13 +402,13 @@
                    if (info != null) {
                        MqttRecvClient.getInstance().setConnectParam(info.getUrl(), info.getClientId(), info.getUserName(), info.getPassWord());
                        MqttRecvClient.getInstance().connect();
                        HdlLogLogic.print("mqtt链接成功--->ClientId--->" + info.getClientId(), true);
                        HdlLogLogic.print("mqtt链接成功---ClientId---" + info.getClientId(), true);
                    }
                }
                @Override
                public void onFailure(HDLException e) {
                    HdlLogLogic.print("读取mqtt远程信息失败--->" + e.getMessage(), e.getCode(), true);
                    HdlLogLogic.print("读取mqtt远程信息失败---" + e.getMessage(), e.getCode(), true);
                }
            });
        }
@@ -408,7 +430,7 @@
                    if (response.getTopic() == null) {
                        return;
                    }
                    HdlLogLogic.print("C端--->监听到Modbus数据--->" + new Gson().toJson(response), false);
                    HdlLogLogic.print("C端---监听到Modbus数据---" + new Gson().toJson(response), false);
//                    if (response.getTopic().endsWith("custom/native/inverter/up")) {
                    HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean();
                    uniCallBackBaseBean.setType(response.getTopic());
@@ -453,7 +475,18 @@
                        }
                    } else if (linkResponse.getTopic().endsWith("/app/thing/property/send")) {
                        //设备状态变更topic:/user/${homeId}/app/thing/property/send
                        if (linkResponse.getData() == null) {
                            HdlLogLogic.print("设备状态变更--->数据为空", false);
                            return;
                        }
                        HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean();
                        uniCallBackBaseBean.setType(linkResponse.getTopic());
                        uniCallBackBaseBean.setData(linkResponse.getData());
                        HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, uniCallBackBaseBean);
                    }
                }
            }
        };