package com.hdl.sdk.ttl_sdk.activity; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.RelativeLayout; import android.widget.TextView; import com.hdl.sdk.ttl.HDLAppliances.Config.HDLApConfig; import com.hdl.sdk.ttl.HDLAppliances.HDLAirCondition.AirTechSysBackInfo; import com.hdl.sdk.ttl.HDLAppliances.HDLAirCondition.Parser.AirCtrlParser; import com.hdl.sdk.ttl.HDLDeviceManger.Bean.AppliancesInfo; import com.hdl.sdk.ttl.HDLDeviceManger.Core.HDLCommand; import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.AirTechSysFeedBackEvent; import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.DeviceStateEvent; import com.hdl.sdk.ttl_sdk.R; import com.hdl.sdk.ttl_sdk.base.BaseActivity; import com.hdl.sdk.ttl_sdk.utlis.HDLLog; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; /** * Created by panlili on 2023/8/21 * 空调类模块控制页面 * 科技系统 类型空调模块 * 16~30摄氏度(℃) */ public class CtrlAirTechSysActivity extends BaseActivity { /** * Topbar */ private RelativeLayout topBarBack; private TextView topBarTitle; private Button airBtnMode, airBtnTemp; private TextView airText; private EditText airTempEd; private AppliancesInfo appliancesInfo; private int airSwitchState;//Demo仅以此作为演示,实际请根据需求开发设计 private int airModeState; private int airTempState; /** * 复写isRegisterEventBus() 要注册使用EventBus,这里要设置返回true * * @return true */ @Override protected boolean isRegisterEventBus() { return true; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ctrl_technology_system); initToolbar(); initView(); initOnClick(); initcurState(); showStateView(); HDLCommand.getTechSysDeviceStateFromNetwork(appliancesInfo); } /** * 初始化Toolbar */ private void initToolbar() { topBarBack = findViewById(R.id.ll_top_b_left); setViewVisible(topBarBack); topBarTitle = findViewById(R.id.tv_top_b_header_title); topBarBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finish(); } }); } private void initcurState() { appliancesInfo = (AppliancesInfo) getIntent().getSerializableExtra("hdl"); String titleStr = appliancesInfo.getRemarks(); topBarTitle.setText(titleStr); } private void initView() { airBtnMode = findViewById(R.id.airbtn_mode); airBtnTemp = findViewById(R.id.airbtn_tempBtn); airTempEd = findViewById(R.id.airet_tempet); airText = findViewById(R.id.airText); } private void initOnClick() { //科技系统不支持开关 /*airBtnSwitch.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //演示当前状态为关,设置为开。开,设置为关。 if (airSwitchState == 0) { HDLCommand.airCtrl(appliancesInfo, AirCtrlParser.airSwich, AirCtrlParser.airOn);//空调开 } else { HDLCommand.airCtrl(appliancesInfo, AirCtrlParser.airSwich, AirCtrlParser.airOff);//空调关 } } });*/ airBtnMode.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { switch (airModeState) { case 0: //若当前空调模式为制冷,则点击按钮设置为制热 HDLCommand.airCtrl(appliancesInfo, AirCtrlParser.airMode, AirCtrlParser.airModeHeatTem);//空调模式制热 break; case 1: //若当前空调模式为制热,则点击按钮设置为制冷 HDLCommand.airCtrl(appliancesInfo, AirCtrlParser.airMode, AirCtrlParser.airModeRefTem);//空调模式制冷 break; } } }); airBtnTemp.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String tempStr = airTempEd.getText().toString(); if (TextUtils.isEmpty(tempStr)) { showToast("设置的温度不能为空"); return; } int tempInt = Integer.parseInt(tempStr); if (tempInt < 16 || tempInt > 30) { showToast("温度设置范围为:16~30摄氏度(℃)"); return; } switch (airModeState) { case 0: //当前空调模式为制冷 HDLCommand.airCtrl(appliancesInfo, AirCtrlParser.refTem, tempInt);//制冷温度 break; case 1: //当前空调模式为制热 HDLCommand.airCtrl(appliancesInfo, AirCtrlParser.heatTem, tempInt);//制热温度 break; } } }); } private void showStateView() { if (appliancesInfo.getArrCurState() != null) { AirTechSysBackInfo mAirTechSysBackInfo = new AirTechSysBackInfo(appliancesInfo); String stringState = ""; if (mAirTechSysBackInfo.getIsOn() == AirCtrlParser.airOff) { stringState = "科技系统模块:关闭"; } else if (mAirTechSysBackInfo.getIsOn() == AirCtrlParser.airOn) { stringState = "科技系统模块:打开"; stringState += "\n" + getModeStateString(mAirTechSysBackInfo.getAirMode());//模式 stringState += "\n室内温度:" + mAirTechSysBackInfo.getIndoorTemp(); if (AirCtrlParser.airModeRefTem == mAirTechSysBackInfo.getAirMode()) { stringState += "\n制冷模式温度:" + mAirTechSysBackInfo.getRefTemp(); } else if (AirCtrlParser.airModeHeatTem == mAirTechSysBackInfo.getAirMode()) { stringState += "\n制热模式温度:" + mAirTechSysBackInfo.getHeatTemp(); } } else { stringState = "未知开关状态"; } airText.setText(stringState); } else { airText.setText("未获取到科技系统模块状态"); } } /** * getModeStateString * * @param mState * @return */ private String getModeStateString(int mState) { String mStrState = "未知"; airModeState = mState; //更新模式状态 switch (mState) { case AirCtrlParser.airModeRefTem: mStrState = "模式:制冷"; break; case AirCtrlParser.airModeHeatTem: mStrState = "模式:制热"; break; default: mStrState = "未知模式状态"; break; } return mStrState; } /** * getSwichStateString * * @param mState * @return */ private String getSwichStateString(int mState) { String mStrState = "未知"; airSwitchState = mState; //更新开关状态 switch (mState) { case AirCtrlParser.airOn: mStrState = "科技系统模块:打开"; break; case AirCtrlParser.airOff: mStrState = "科技系统模块:关闭"; break; default: mStrState = "未知状态"; break; } return mStrState; } private void showAirTechSysBackInfo(AirTechSysBackInfo mAirTechSysBackInfo) { String message = ""; if (mAirTechSysBackInfo.getIsOn() == AirCtrlParser.airOn) { message = getSwichStateString(mAirTechSysBackInfo.getIsOn()); message += "\n" + getModeStateString(mAirTechSysBackInfo.getAirMode());//模式 message += "\n室内温度:" + mAirTechSysBackInfo.getIndoorTemp(); if (AirCtrlParser.airModeRefTem == mAirTechSysBackInfo.getAirMode()) { message += "\n制冷模式温度:" + mAirTechSysBackInfo.getRefTemp(); } else if (AirCtrlParser.airModeHeatTem == mAirTechSysBackInfo.getAirMode()) { message += "\n制热模式温度:" + mAirTechSysBackInfo.getHeatTemp(); } } else { message = getSwichStateString(mAirTechSysBackInfo.getIsOn()); } airText.setText(message); showToast(message); HDLLog.Log(message); } /** * 科技系统模块控制回调Event * * @param event */ @Subscribe(threadMode = ThreadMode.MAIN) public void onAirTechSysFeedBackEventMain(AirTechSysFeedBackEvent event) { if (event.getAirTechSysBackInfo().getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID() && event.getAirTechSysBackInfo().getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID() && event.getAirTechSysBackInfo().getAppliancesInfo().getChannelNum() == appliancesInfo.getChannelNum() ) { // 先判断是否超时 if (!event.isSuccess()) { showToast("科技系统控制超时,请重新再试"); return; } AirTechSysBackInfo mAirTechSysBackInfo = event.getAirTechSysBackInfo(); showAirTechSysBackInfo(mAirTechSysBackInfo); } } /** * 获取单一设备状态回调Event * * @param event */ @Subscribe(threadMode = ThreadMode.MAIN) public void onDeviceStateEventMain(DeviceStateEvent event) { if (event.getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID() && event.getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID() ) { //这个返回的信息是当前状态的 switch (event.getAppliancesInfo().getDeviceType()) { case HDLApConfig.TYPE_AC_TECHSYS: if (appliancesInfo.getChannelNum() == event.getAppliancesInfo().getChannelNum()) { if (!event.isSuccess()) { showToast("获取科技系统状态失败,请重新再试"); return; } AirTechSysBackInfo mAirTechSysBackInfo = new AirTechSysBackInfo(event.getAppliancesInfo()); if (mAirTechSysBackInfo == null) { showToast("获取科技状态失败,请重新再试"); return; } showAirTechSysBackInfo(mAirTechSysBackInfo); } break; default: //不处理 break; } } } }