mac
2023-10-26 de2d3696f975cf6e6df2e580bab305fa9859feea
app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java
@@ -6,25 +6,37 @@
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import android.view.MotionEvent;
import android.view.View;
import com.google.gson.Gson;
import com.hdl.linkpm.sdk.core.exception.HDLException;
import com.hdl.linkpm.sdk.home.type.HomeType;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.base.CustomBaseActivity;
import com.hdl.photovoltaic.bean.MqttInfo;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.databinding.ActivityMyPowerStationBinding;
import com.hdl.photovoltaic.listener.CloudCallBeak;
import com.hdl.photovoltaic.other.HdlDeviceLogic;
import com.hdl.photovoltaic.other.HdlLogLogic;
import com.hdl.photovoltaic.other.HdlMqttLogic;
import com.hdl.photovoltaic.other.HdlUniLogic;
import com.hdl.photovoltaic.ui.bean.DeviceRemoteInfo;
import com.hdl.photovoltaic.uni.HDLUniMP;
import com.hdl.photovoltaic.utils.PermissionUtils;
import com.hdl.sdk.link.HDLLinkLocalSdk;
import com.hdl.sdk.link.common.event.EventListener;
import com.hdl.sdk.link.core.bean.LinkResponse;
import com.hdl.sdk.link.core.bean.ModbusResponse;
import com.hdl.sdk.link.core.bean.eventbus.EventNotifyRefreshGatewayAesKeyInfo;
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 java.nio.charset.StandardCharsets;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.List;
/**
 * 我的电站界面
@@ -45,13 +57,17 @@
    @Override
    public void onBindView(Bundle savedInstanceState) {
        getWindow().setStatusBarColor(getColor(R.color.text_245EC3));
        //初始化
        initView();
        //初始化界面监听器
        initEvent();
        //注册监听
        registerAllTopicsListener();
        //初始化mqtt客户端
        initMqttClient();
    }
    private void initEvent() {
@@ -90,9 +106,9 @@
    }
    private void initView() {
        viewBinding.myPowerStationBottomIl1.titleTv.setText(R.string.my_power_station_电站);
        viewBinding.myMessageBottomIl2.titleTv.setText(R.string.message_消息);
        viewBinding.myMeBottomIl3.titleTv.setText(R.string.my_power_station_我的);
        viewBinding.myPowerStationBottomIl1.titleTv.setText(R.string.power_station);
        viewBinding.myMessageBottomIl2.titleTv.setText(R.string.message);
        viewBinding.myMeBottomIl3.titleTv.setText(R.string.power_station_me);
        this.bottomViewChangeOfStyle();
    }
@@ -202,5 +218,62 @@
        HDLLinkLocalSdk.getInstance().registerAllTopicsListener(allTopicsListener);
    }
    /**
     * 初始化mqtt客户端
     */
    public void initMqttClient() {
        HdlMqttLogic.getInstance().getMqttRemoteInfo(HomeType.A, new CloudCallBeak<MqttInfo>() {
            @Override
            public void onSuccess(MqttInfo info) {
                if (info != null) {
                    MqttRecvClient.init(_mActivity, info.getUrl(), info.getClientId(), info.getUserName(), info.getPassWord());
                }
            }
            @Override
            public void onFailure(HDLException e) {
                HdlLogLogic.print("读取mqtt远程信息失败", e.getMessage(), e.getCode());
            }
        });
    }
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onEventMessage(EventNotifyRefreshGatewayAesKeyInfo event) {
        //网关更新mqtt秘钥更新通知
        if (event == null) {
            return;
        }
        int index = -1;
        List<GatewayBean> list = HdlDeviceLogic.getInstance().getCurrentHomeGatewayList();
        for (int i = 0; i < list.size(); i++) {
            GatewayBean gatewayBean = list.get(i);
            if (gatewayBean.getGatewayId().equals(event.getGatewayId())) {
                index = i;
                break;
            }
        }
        if (index > -1) {
            GatewayBean gatewayBean = list.get(index);
            HdlDeviceLogic.getInstance().getDeviceRemoteInfo(UserConfigManage.getInstance().getHomeId(), gatewayBean.getSpk(), gatewayBean.getDevice_mac(), new CloudCallBeak<DeviceRemoteInfo>() {
                @Override
                public void onSuccess(DeviceRemoteInfo deviceRemoteInfo) {
                    if (deviceRemoteInfo != null) {
                        //更新mqtt通讯的新秘钥
                        gatewayBean.setAesKey(deviceRemoteInfo.getSecret());
                        //用之前的库,底层mqtt订阅,加解密会用到该参数;
                        HDLLinkConfig.getInstance().setAesKey(deviceRemoteInfo.getSecret());//设置mqtt通讯秘钥库
                    }
                }
                @Override
                public void onFailure(HDLException e) {
                }
            });
        }
    }
}