package com.hdl.sdk.ttl_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.ttl.HDLAppliances.Config.HDLApConfig;
|
import com.hdl.sdk.ttl.HDLAppliances.HDLSecurity.Parser.SecurityParser;
|
import com.hdl.sdk.ttl.HDLAppliances.HDLSecurity.SecurityArmingStateBackInfo;
|
import com.hdl.sdk.ttl.HDLAppliances.HDLSecurity.SecurityBackInfo;
|
import com.hdl.sdk.ttl.HDLDeviceManger.Bean.AppliancesInfo;
|
import com.hdl.sdk.ttl.HDLDeviceManger.Bean.SecurityStateBean;
|
import com.hdl.sdk.ttl.HDLDeviceManger.Core.HDLCommand;
|
import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.DeviceStateEvent;
|
import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.SecurityAlarmFeedBackEvent;
|
import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.SecurityArmingFeedBackEvent;
|
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;
|
|
/**
|
* 安防模块控制页面
|
*/
|
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<String> sp_CheckBitAdapter = new ArrayAdapter<String>(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.Log(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(), "温度报警"));
|
|
|
}
|
}
|