mac
2024-07-02 d7ff801372431e64aee8f68ece4b8532cffb2207
app/src/main/java/com/hdl/photovoltaic/ui/BPowerStationActivity.java
@@ -2,6 +2,9 @@
import androidx.annotation.NonNull;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import android.Manifest;
import android.content.Context;
@@ -14,6 +17,7 @@
import android.provider.Settings;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
@@ -27,10 +31,14 @@
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.databinding.ActivityMyPowerStationBinding;
import com.hdl.photovoltaic.enums.HomepageTitleTabSwitch;
import com.hdl.photovoltaic.enums.LowerTagType;
import com.hdl.photovoltaic.enums.NetworkType;
import com.hdl.photovoltaic.enums.PowerStationStatusType;
import com.hdl.photovoltaic.listener.CloudCallBeak;
import com.hdl.photovoltaic.other.HdlCommonLogic;
import com.hdl.photovoltaic.other.HdlDeviceLogic;
import com.hdl.photovoltaic.other.HdlLogLogic;
import com.hdl.photovoltaic.other.HdlMessageLogic;
import com.hdl.photovoltaic.other.HdlMqttLogic;
import com.hdl.photovoltaic.other.HdlOtaLogic;
import com.hdl.photovoltaic.other.HdlResidenceLogic;
@@ -38,6 +46,11 @@
import com.hdl.photovoltaic.other.HdlUniLogic;
import com.hdl.photovoltaic.ui.bean.DeviceRemoteInfo;
import com.hdl.photovoltaic.ui.bean.OidBean;
import com.hdl.photovoltaic.ui.bean.UnCountBean;
import com.hdl.photovoltaic.ui.home.HomePageFragment;
import com.hdl.photovoltaic.ui.me.MeFragment;
import com.hdl.photovoltaic.ui.message.MessageFragment;
import com.hdl.photovoltaic.ui.powerstation.HouseAndDeviceFragment;
import com.hdl.photovoltaic.uni.HDLUniMP;
import com.hdl.photovoltaic.utils.AppManagerUtils;
import com.hdl.photovoltaic.utils.GPSManagerUtils;
@@ -59,6 +72,7 @@
import org.greenrobot.eventbus.ThreadMode;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import cn.jpush.android.api.JPushInterface;
@@ -69,9 +83,13 @@
 */
public class BPowerStationActivity extends CustomBaseActivity {
    private static final String CURRENT_FRAGMENT = "state_fragment_show";
    private FragmentManager mFragmentManager;
    private Fragment currentFragment = new Fragment();
    private final List<Fragment> fragmentList = new ArrayList<>();
    private int currentFragmentIndex = 0;
    private ActivityMyPowerStationBinding viewBinding;
    private int currentFragmentIndex = 0;
    private EventListener allTopicsListener;
    private int backPressTimes;
@@ -85,6 +103,8 @@
    public void onBindView(Bundle savedInstanceState) {
//        setNotificationBarBackgroundColor(CustomColor.blue);
        setStatusBarTranslucent();
        //初始化碎片
        initFragment(savedInstanceState);
        //初始化
        this.initView();
        //初始化界面监听器
@@ -99,6 +119,81 @@
        this.clickJpushNotificationMessage();
        //初始化权限
        this.requestPermissions();
        //读取消息未读数量
        this.getUnreadCount();
    }
    /**
     * 初始化Fragment
     *
     * @param savedInstanceState -
     */
    private void initFragment(Bundle savedInstanceState) {
        mFragmentManager = getSupportFragmentManager();
        //碎片初始化
        HomePageFragment mHomePageFragment = new HomePageFragment();
        HouseAndDeviceFragment mHouseAndDeviceFragment = new HouseAndDeviceFragment();
        MessageFragment mMessageFragment = new MessageFragment();
        MeFragment mMeFragment = new MeFragment();
        if (savedInstanceState != null) {
            //“内存重启”时调用 获取“内存重启”时保存的索引下标
            currentFragmentIndex = savedInstanceState.getInt(CURRENT_FRAGMENT, 0);
            if (fragmentList.size() != 0) {
                fragmentList.clear();
            }
            fragmentList.add(mFragmentManager.findFragmentByTag(0 + ""));
            fragmentList.add(mFragmentManager.findFragmentByTag(1 + ""));
            fragmentList.add(mFragmentManager.findFragmentByTag(2 + ""));
            fragmentList.add(mFragmentManager.findFragmentByTag(3 + ""));
            restoreFragment();//恢复fragment页面
        } else {
            //正常启动时调用
            fragmentList.add(mHomePageFragment);
            fragmentList.add(mHouseAndDeviceFragment);
            fragmentList.add(mMessageFragment);
            fragmentList.add(mMeFragment);
            showFragment();
        }
    }
    /**
     * 使用show() hide()切换页面
     * 显示fragment
     */
    private void showFragment() {
        FragmentTransaction ft = mFragmentManager.beginTransaction();
        //如果之前没有添加过
        if (!fragmentList.get(currentFragmentIndex).isAdded()) {
            //第三个参数为添加当前的fragment时绑定一个tag
            ft.hide(currentFragment).add(R.id.module_fcv, fragmentList.get(currentFragmentIndex), currentFragmentIndex + "");
        } else {
            ft.hide(currentFragment).show(fragmentList.get(currentFragmentIndex));
        }
        currentFragment = fragmentList.get(currentFragmentIndex);
        ft.commit();
        //把当前显示的fragment记录下来
        currentFragment = fragmentList.get(currentFragmentIndex);
    }
    /**
     * 恢复fragment
     */
    private void restoreFragment() {
        FragmentTransaction ft = mFragmentManager.beginTransaction();
        for (int i = 0; i < fragmentList.size(); i++) {
            if (i == currentFragmentIndex) {
                ft.show(fragmentList.get(i));
            } else {
                ft.hide(fragmentList.get(i));
            }
        }
        ft.commit();
    }
@@ -213,7 +308,9 @@
                }
                currentFragmentIndex = 0;
                bottomViewChangeOfStyle();
                postEventBus(HomepageTitleTabSwitch.homepage);
                showFragment();
                HdlCommonLogic.lowerTagType = LowerTagType.home;
                HdlCommonLogic.getInstance().postEventBusSticky(ConstantManage.homepage_title_tab_switch, HomepageTitleTabSwitch.homepage.toString());
            }
        });
        viewBinding.myPowerStationBottomIl1.clickTv.setOnClickListener(new View.OnClickListener() {
@@ -224,7 +321,9 @@
                }
                currentFragmentIndex = 1;
                bottomViewChangeOfStyle();
                postEventBus(HomepageTitleTabSwitch.powerstation);
                showFragment();
                HdlCommonLogic.lowerTagType = LowerTagType.power_station;
                HdlCommonLogic.getInstance().postEventBusSticky(ConstantManage.homepage_title_tab_switch, HomepageTitleTabSwitch.powerstation.toString());
            }
        });
        viewBinding.myMessageBottomIl2.clickTv.setOnClickListener(new View.OnClickListener() {
@@ -235,7 +334,9 @@
                }
                currentFragmentIndex = 2;
                bottomViewChangeOfStyle();
                postEventBus(HomepageTitleTabSwitch.message);
                showFragment();
                HdlCommonLogic.lowerTagType = LowerTagType.message;
                HdlCommonLogic.getInstance().postEventBusSticky(ConstantManage.homepage_title_tab_switch, HomepageTitleTabSwitch.message.toString());
            }
        });
        viewBinding.myMeBottomIl3.clickTv.setOnClickListener(new View.OnClickListener() {
@@ -246,7 +347,9 @@
                }
                currentFragmentIndex = 3;
                bottomViewChangeOfStyle();
                postEventBus(HomepageTitleTabSwitch.me);
                showFragment();
                HdlCommonLogic.lowerTagType = LowerTagType.me;
                HdlCommonLogic.getInstance().postEventBusSticky(ConstantManage.homepage_title_tab_switch, HomepageTitleTabSwitch.me.toString());
            }
        });
@@ -263,21 +366,21 @@
    }
    private void initView() {
        viewBinding.myPowerStationBottomIl0.titleTv.setText(R.string.power_shome_page);
        viewBinding.myPowerStationBottomIl0.titleTv.setText(R.string.summarize);
        viewBinding.myPowerStationBottomIl1.titleTv.setText(R.string.power_station);
        viewBinding.myMessageBottomIl2.titleTv.setText(R.string.message);
        viewBinding.myMessageBottomIl2.titleTv.setText(R.string.alarm);
        viewBinding.myMeBottomIl3.titleTv.setText(R.string.power_station_me);
        this.bottomViewChangeOfStyle();
    }
    /**
     * 底部模块样式改变
     */
    private void bottomViewChangeOfStyle() {
        if (this.currentFragmentIndex == 0) {
            viewBinding.myHomePageFcv0.setVisibility(View.VISIBLE);//显示首页界面
            viewBinding.myPowerStationFcv1.setVisibility(View.GONE);//显示电站界面
            viewBinding.myMessageFcv2.setVisibility(View.GONE);//隐藏消息界面
            viewBinding.myMeFcv3.setVisibility(View.GONE);//隐藏我的界面
            //概览界面
            viewBinding.myPowerStationBottomIl0.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.home_page_selected));
            viewBinding.myPowerStationBottomIl0.titleTv.setTextColor(getColor(R.color.text_90000000));
            viewBinding.myPowerStationBottomIl0.titleTv.setTextColor(getColor(R.color.text_E6000000));
            viewBinding.myPowerStationBottomIl1.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.power_station_unselected));
            viewBinding.myPowerStationBottomIl1.titleTv.setTextColor(getColor(R.color.text_65000000));
            viewBinding.myMessageBottomIl2.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.message_unselected));
@@ -285,36 +388,27 @@
            viewBinding.myMeBottomIl3.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.me_unselected));
            viewBinding.myMeBottomIl3.titleTv.setTextColor(getColor(R.color.text_65000000));
        } else if (this.currentFragmentIndex == 1) {
            viewBinding.myHomePageFcv0.setVisibility(View.GONE);//隐藏首页界面
            viewBinding.myPowerStationFcv1.setVisibility(View.VISIBLE);//显示电站界面
            viewBinding.myMessageFcv2.setVisibility(View.GONE);//隐藏消息界面
            viewBinding.myMeFcv3.setVisibility(View.GONE);//隐藏我的界面
            //电站界面
            viewBinding.myPowerStationBottomIl0.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.home_page_unselected));
            viewBinding.myPowerStationBottomIl0.titleTv.setTextColor(getColor(R.color.text_65000000));
            viewBinding.myPowerStationBottomIl1.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.power_station_selected));
            viewBinding.myPowerStationBottomIl1.titleTv.setTextColor(getColor(R.color.text_90000000));
            viewBinding.myPowerStationBottomIl1.titleTv.setTextColor(getColor(R.color.text_E6000000));
            viewBinding.myMessageBottomIl2.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.message_unselected));
            viewBinding.myMessageBottomIl2.titleTv.setTextColor(getColor(R.color.text_65000000));
            viewBinding.myMeBottomIl3.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.me_unselected));
            viewBinding.myMeBottomIl3.titleTv.setTextColor(getColor(R.color.text_65000000));
        } else if (this.currentFragmentIndex == 2) {
            viewBinding.myHomePageFcv0.setVisibility(View.GONE);//隐藏首页界面
            viewBinding.myPowerStationFcv1.setVisibility(View.GONE);//隐藏电站界面
            viewBinding.myMessageFcv2.setVisibility(View.VISIBLE);//显示消息界面
            viewBinding.myMeFcv3.setVisibility(View.GONE);//隐藏我的界面
            //消息界面
            viewBinding.myPowerStationBottomIl0.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.home_page_unselected));
            viewBinding.myPowerStationBottomIl0.titleTv.setTextColor(getColor(R.color.text_65000000));
            viewBinding.myPowerStationBottomIl1.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.power_station_unselected));
            viewBinding.myPowerStationBottomIl1.titleTv.setTextColor(getColor(R.color.text_65000000));
            viewBinding.myMessageBottomIl2.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.message_select));
            viewBinding.myMessageBottomIl2.titleTv.setTextColor(getColor(R.color.text_90000000));
            viewBinding.myMessageBottomIl2.titleTv.setTextColor(getColor(R.color.text_E6000000));
            viewBinding.myMeBottomIl3.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.me_unselected));
            viewBinding.myMeBottomIl3.titleTv.setTextColor(getColor(R.color.text_65000000));
        } else if (this.currentFragmentIndex == 3) {
            viewBinding.myHomePageFcv0.setVisibility(View.GONE);//隐藏首页界面
            viewBinding.myPowerStationFcv1.setVisibility(View.GONE);//隐藏电站界面
            viewBinding.myMessageFcv2.setVisibility(View.GONE);//隐藏消息界面
            viewBinding.myMeFcv3.setVisibility(View.VISIBLE);//显示我的界面
            //我的界面
            viewBinding.myPowerStationBottomIl0.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.home_page_unselected));
            viewBinding.myPowerStationBottomIl0.titleTv.setTextColor(getColor(R.color.text_65000000));
            viewBinding.myPowerStationBottomIl1.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.power_station_unselected));
@@ -322,21 +416,10 @@
            viewBinding.myMessageBottomIl2.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.message_unselected));
            viewBinding.myMessageBottomIl2.titleTv.setTextColor(getColor(R.color.text_65000000));
            viewBinding.myMeBottomIl3.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.me_selected));
            viewBinding.myMeBottomIl3.titleTv.setTextColor(getColor(R.color.text_90000000));
            viewBinding.myMeBottomIl3.titleTv.setTextColor(getColor(R.color.text_E6000000));
        }
    }
    /**
     * 发布点击事件
     *
     * @param tabSwitch -
     */
    private void postEventBus(HomepageTitleTabSwitch tabSwitch) {
        BaseEventBus baseEventBus = new BaseEventBus();
        baseEventBus.setTopic(ConstantManage.homepage_title_tab_switch);
        baseEventBus.setType(tabSwitch.toString());
        EventBus.getDefault().postSticky(baseEventBus);
    }
    public void requestPermissions() {
        //消息通知限权
@@ -433,6 +516,37 @@
                        }
                    } else if (linkResponse.getTopic().endsWith("custom/wifi/notify")) {
                        //逆变器连接路由状态通知
                        HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean();
                        uniCallBackBaseBean.setType(linkResponse.getTopic());
                        uniCallBackBaseBean.setData(linkResponse.getData());
                        HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, uniCallBackBaseBean);
                        HdlLogLogic.print(linkResponse.getTopic() + new Gson().toJson(linkResponse.getData()), true);
                    } else if (linkResponse.getTopic().endsWith("/app/thing/event/appHomeRemoveRefresh/up")) {
                        String[] topicArray = linkResponse.getTopic().split("/");
                        //住宅删除通知
                        HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean();
                        uniCallBackBaseBean.setType(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_home_remove_refresh);
                        uniCallBackBaseBean.setData(topicArray[1]);
                        HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, uniCallBackBaseBean);
                        HdlLogLogic.print(linkResponse.getTopic() + new Gson().toJson(linkResponse.getData()), true);
                    } else if (linkResponse.getTopic().endsWith("/app/thing/event/appHomeDebugRefresh/up")) {
                        String[] topicArray = linkResponse.getTopic().split("/");
                        //住宅二次调试(授权状态)刷新通知
                        HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean();
                        uniCallBackBaseBean.setType(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_home_debug_refresh);
                        uniCallBackBaseBean.setData(topicArray[1]);
                        HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, uniCallBackBaseBean);
                        HdlLogLogic.print(linkResponse.getTopic() + new Gson().toJson(linkResponse.getData()), true);
                    } else if (linkResponse.getTopic().endsWith("/app/thing/event/appHomeDeliverRefresh/up")) {
                        String[] topicArray = linkResponse.getTopic().split("/");
                        //住宅交付状态变更刷新通知
                        HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean();
                        uniCallBackBaseBean.setType(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_home_delivery_refresh);
                        uniCallBackBaseBean.setData(topicArray[1]);
                        HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, uniCallBackBaseBean);
                        HdlLogLogic.print(linkResponse.getTopic() + new Gson().toJson(linkResponse.getData()), true);
                    }
                }
            }
@@ -545,8 +659,64 @@
                    }
                });
            }
        } else if (event.getTopic().contains(ConstantManage.station_status)) {
            currentFragmentIndex = 1;
            bottomViewChangeOfStyle();
            showFragment();
            HdlCommonLogic.getInstance().postEventBusSticky(ConstantManage.homepage_title_tab_switch, event.getType());
        }
    }
    /**
     * 读取消息【未读数量,未处理总数量,已处理总数量】
     */
    private void getUnreadCount() {
        HdlMessageLogic.getInstance().getMessageUntreatedCount("", new CloudCallBeak<UnCountBean>() {
            @Override
            public void onSuccess(UnCountBean unCountBean) {
                HdlThreadLogic.runMainThread(new Runnable() {
                    @Override
                    public void run() {
                        if (unCountBean == null) {
                            return;
                        }
                        //刷新【消息模块】下角标数值
                        TextView textView = _mActivity.findViewById(R.id.my_message_bottom_il2).findViewById(R.id.red_count_tv);
                        if (textView != null) {
                            if (unCountBean.getUnreadCount() == 0) {
                                textView.setVisibility(View.GONE);
                            } else {
                                textView.setVisibility(View.VISIBLE);
                                if (unCountBean.getUnreadCount() > 99) {
                                    textView.setText("99+");
                                } else {
                                    textView.setText(unCountBean.getUnreadCount() + "");
                                }
                            }
                        }
                    }
                });
            }
            @Override
            public void onFailure(HDLException e) {
                HdlThreadLogic.runMainThread(new Runnable() {
                    @Override
                    public void run() {
                        TextView textView = _mActivity.findViewById(R.id.my_message_bottom_il2).findViewById(R.id.red_count_tv);
                        if (textView != null) {
                            textView.setVisibility(View.GONE);
                        }
                    }
                });
            }
        });
    }
    /**
     * 点击极光通知栏消息进来
@@ -649,4 +819,5 @@
        }
    }
}