package com.hdl.sdk.hdl_sdk.activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.RelativeLayout; import android.widget.Spinner; import android.widget.TextView; import com.hdl.sdk.hdl_core.HDLAppliances.Config.HDLApConfig; import com.hdl.sdk.hdl_core.HDLAppliances.HDLSecurity.Parser.SecurityParser; import com.hdl.sdk.hdl_core.HDLAppliances.HDLSecurity.SecurityArmingStateBackInfo; import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.AppliancesInfo; import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.SecurityStateBean; import com.hdl.sdk.hdl_core.HDLDeviceManger.Core.HDLCommand; import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.DeviceStateEvent; import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.SecurityAlarmFeedBackEvent; import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.SecurityArmingFeedBackEvent; import com.hdl.sdk.hdl_sdk.R; import com.hdl.sdk.hdl_sdk.base.BaseActivity; import com.hdl.sdk.hdl_sdk.utlis.HDLLog; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; /** * 安防模块控制页面 */ public class CtrlSecurityActivity extends BaseActivity { /** * Topbar */ // private RelativeLayout topBarBack; // private TextView topBarTitle; private AppliancesInfo appliancesInfo; private Button btn_read_config, btn_set_arming, btn_send_alarm; private Spinner spinner_arming; // private TextView tv_alarmFire, tv_alarmGas, tv_alarmSudden, tv_alarmEmergency, tv_alarmCurrent, tv_alarmSilent, tv_alarmPower, tv_alarmTemperature; private TextView tv_mes; private static final String[] armingTypeItems = {"假期布防", "离开布防", "夜间布防", "晚上有客布防", "白天布防", "撤防"}; private int armingState;//布防状态 6 = 撤防 5 = 白天布防 4 = 晚上有客布防 3 = 夜间布防 2 = 离开布防 1 = 假期布防 private SecurityStateBean mSecurityStateBean; private int alarmSendState;//发送测试报警 /** * 复写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_security); initToolbar(); initView(); initOnClick(); initcurState(); //读布防状态 HDLCommand.getSecurityStateFromNetwork(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(); // } // }); // topBarTitle.setText("安防模块演示"); } /** * initView */ private void initView() { btn_read_config = findViewById(R.id.btn_read_config); btn_set_arming = findViewById(R.id.btn_set_arming); btn_send_alarm = findViewById(R.id.btn_send_alarm); spinner_arming = findViewById(R.id.spinner_arming); // tv_alarmFire = findViewById(R.id.tv_alarmFire); // tv_alarmGas = findViewById(R.id.tv_alarmGas); // tv_alarmSudden = findViewById(R.id.tv_alarmSudden); // // tv_alarmEmergency = findViewById(R.id.tv_alarmEmergency); // tv_alarmCurrent = findViewById(R.id.tv_alarmCurrent); // tv_alarmSilent = findViewById(R.id.tv_alarmSilent); // tv_alarmPower = findViewById(R.id.tv_alarmPower); // tv_alarmTemperature = findViewById(R.id.tv_alarmTemperature); tv_mes = findViewById(R.id.tv_mes); } /** * initOnClick */ private void initOnClick() { /** * 读布防状态 */ btn_read_config.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { HDLCommand.getSecurityStateFromNetwork(appliancesInfo); } }); /** * 布防 */ btn_set_arming.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { /** * 要先撤防后布防 */ HDLCommand.securityArmingCtrl(appliancesInfo, armingState); } }); // btn_send_alarm.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View view) { // alarmSendState++; // if (alarmSendState > 7) { // alarmSendState = 0; // } // HDLCommand.securitySendAlarm(appliancesInfo, alarmSendState); // } // }); ArrayAdapter sp_CheckBitAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, armingTypeItems); sp_CheckBitAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner_arming.setAdapter(sp_CheckBitAdapter); spinner_arming.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() { public void onItemSelected(AdapterView arg0, View arg1, int arg2, long arg3) { armingState = arg2 + 1; } public void onNothingSelected(AdapterView arg0) { } }); } /** * initcurState */ private void initcurState() { appliancesInfo = (AppliancesInfo) getIntent().getSerializableExtra("hdl"); // String titleStr = ""; // try { // titleStr = appliancesInfo.getRemarks(); // } catch (Exception e) { // e.printStackTrace(); // } // if (titleStr != null) { // topBarTitle.setText(titleStr); // } mSecurityStateBean = new SecurityStateBean(); } /** * 布防设置回调Event * * @param event */ @Subscribe(threadMode = ThreadMode.MAIN) public void onSecurityArmingFeedBackEventMain(SecurityArmingFeedBackEvent event) { if (event.getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID() && event.getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID() && event.getAppliancesInfo().getChannelNum() == appliancesInfo.getChannelNum() ) { //先判断是否超时 if (!event.isSuccess()) { tv_mesSetText("布防设置超时,请重新再试"); return; } int armingStateGet = event.getArmingState(); if (armingStateGet >= 1 && armingStateGet <= 6) { armingState = armingStateGet; spinner_arming.setSelection(armingState - 1, true); tv_mesSetText("布防成功,当前状态:" + armingTypeItems[armingState - 1]); } else if (armingState == SecurityParser.ARMING_FAIL) { tv_mesSetText("布防失败"); } else { tv_mesSetText("未知布防状态"); } } } /** * 查询布防状态 回调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_SECURITY_MODULE: if (appliancesInfo.getChannelNum() == event.getAppliancesInfo().getChannelNum()) { if (!event.isSuccess()) { tv_mesSetText("获取布防状态失败,请重新再试"); return; } SecurityArmingStateBackInfo mSecurityArmingStateBackInfo = new SecurityArmingStateBackInfo(event.getAppliancesInfo().getArrCurState()); if (mSecurityArmingStateBackInfo == null) { tv_mesSetText("获取布防状态失败,请重新再试"); return; } int armingStateBack = mSecurityArmingStateBackInfo.getArmingState(); if (armingStateBack == 0) { //读取返回0为撤防 armingState = SecurityParser.ARMING_DISARMING; spinner_arming.setSelection(armingState - 1, true); tv_mesSetText("获取成功,当前状态:" + armingTypeItems[armingState - 1]); } else if (armingStateBack >= 1 && armingStateBack <= 6) { armingState = armingStateBack;//更新状态值 spinner_arming.setSelection(armingState - 1, true); tv_mesSetText("获取成功,当前状态:" + armingTypeItems[armingState - 1]); } else { tv_mesSetText("获取成功,未知布防状态"); } } break; } } } /** * 报警回调Event * * @param event */ @Subscribe(threadMode = ThreadMode.MAIN) public void onSecurityAlarmFeedBackEventMain(SecurityAlarmFeedBackEvent event) { if (event.getSecurityBackInfo().getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID() && event.getSecurityBackInfo().getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID() && event.getSecurityBackInfo().getAppliancesInfo().getChannelNum() == appliancesInfo.getChannelNum() ) { // //先判断是否超时 // if (!event.isSuccess()) { // tv_mesSetText("报警设置超时,请重新再试"); // return; // } mSecurityStateBean = event.getSecurityBackInfo().getSecurityStateBean(); if (mSecurityStateBean != null) { setAllAlarmStateTextView(); } } } /** * TextView 显示信息并且showToast提示 * * @param mes */ private void tv_mesSetText(String mes) { tv_mes.setText(mes); showToast(mes); } private String getAlarmStateString(int state, String alarmName) { if (state == 0) { return "正常"; } else { HDLLog.I(alarmName + ", 报警状态!"); return "警告,报警状态!"; } } private void setAllAlarmStateTextView() { // tv_alarmFire.setText(getAlarmStateString(mSecurityStateBean.getAlarmFire(), "火警")); // tv_alarmGas.setText(getAlarmStateString(mSecurityStateBean.getAlarmGas(), "煤气报警")); // tv_alarmSudden.setText(getAlarmStateString(mSecurityStateBean.getAlarmSudden(), "突发报警")); // tv_alarmEmergency.setText(getAlarmStateString(mSecurityStateBean.getAlarmEmergency(), "紧急报警")); // tv_alarmCurrent.setText(getAlarmStateString(mSecurityStateBean.getAlarmCurrent(), "电流报警")); // tv_alarmSilent.setText(getAlarmStateString(mSecurityStateBean.getAlarmSilent(), "无声报警")); // tv_alarmPower.setText(getAlarmStateString(mSecurityStateBean.getAlarmPower(), "功率报警")); // tv_alarmTemperature.setText(getAlarmStateString(mSecurityStateBean.getAlarmTemperature(), "温度报警")); } }