package com.hdl.sdk.ttl_sdk.activity;
|
|
|
import android.app.ProgressDialog;
|
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.Parser.AirCtrlParser;
|
import com.hdl.sdk.ttl.HDLAppliances.HDLDoorMachine.DoorMachineBackInfo;
|
import com.hdl.sdk.ttl.HDLAppliances.HDLDoorMachine.DoorMachineFristBackInfo;
|
import com.hdl.sdk.ttl.HDLAppliances.HDLDoorMachine.DoorMachineWaringBackInfo;
|
import com.hdl.sdk.ttl.HDLAppliances.HDLDoorMachine.Parser.DoorMachineParser;
|
import com.hdl.sdk.ttl.HDLDeviceManger.Bean.AppliancesInfo;
|
import com.hdl.sdk.ttl.HDLDeviceManger.Core.HDLCommand;
|
import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.DeviceStateEvent;
|
import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.DoorMachineFeedBackEvent;
|
import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.DoorMachineFeedFristBackEvent;
|
import com.hdl.sdk.ttl.Utils.LogUtils.HDLLog;
|
import com.hdl.sdk.ttl_sdk.R;
|
import com.hdl.sdk.ttl_sdk.base.BaseActivity;
|
import com.hdl.sdk.ttl_sdk.utlis.HDLUtlis;
|
|
import org.greenrobot.eventbus.Subscribe;
|
import org.greenrobot.eventbus.ThreadMode;
|
|
/**
|
* 门锁控制界面
|
*/
|
public class DoorMachineActivity extends BaseActivity {
|
/**
|
* Topbar
|
*/
|
private RelativeLayout topBarBack;
|
private TextView topBarTitle;
|
|
private Button btn_switch;
|
private EditText et_password;
|
private TextView mTextView;
|
private AppliancesInfo appliancesInfo;
|
|
private int gSwitchState;//Demo仅以此作为演示,实际请根据需求开发设计
|
|
private ProgressDialog proDialog;
|
private byte[] secretBytes = new byte[9];//这里是回路号+8byte密钥
|
private DoorMachineBackInfo doorMachineBackInfo;
|
|
/**
|
* 要注册使用EventBus,这里要设置返回true
|
*
|
* @return true
|
*/
|
@Override
|
protected boolean isRegisterEventBus() {
|
return true;
|
}
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
setContentView(R.layout.activity_door_machine);
|
initToolbar();
|
initcurState();
|
initView();
|
initClickOnEvent();
|
showStateView();
|
|
Log.d("panlili", "DoorMachineActivity.java:appliancesInfo-----> " + appliancesInfo.toString());
|
HDLCommand.getDoorMachineDeviceStateFromNetwork(appliancesInfo);
|
}
|
|
@Override
|
protected void onDestroy() {
|
super.onDestroy();
|
proDialog.dismiss();
|
HDLLog.I("onDestroy: DoorMachineActivity");
|
}
|
|
/**
|
* 初始化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();
|
if (TextUtils.isEmpty(titleStr) || titleStr.equals(HDLUtlis.REMAEK_NULL)) {
|
if (TextUtils.isEmpty(appliancesInfo.getDeviceName())) {
|
titleStr = "备注为空";
|
} else {
|
titleStr = appliancesInfo.getDeviceName();
|
}
|
}
|
topBarTitle.setText(titleStr);
|
}
|
|
private void initView() {
|
mTextView = findViewById(R.id.tv_door_machine);
|
btn_switch = findViewById(R.id.btn_switch);
|
et_password = findViewById(R.id.et_password);
|
|
proDialog = new ProgressDialog(this);
|
proDialog.setTitle("正在发送控制命令...");
|
proDialog.setMessage("请耐心等待");
|
proDialog.onStart();
|
}
|
|
private void initClickOnEvent() {
|
btn_switch.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
String tempStr = et_password.getText().toString();
|
if (TextUtils.isEmpty(tempStr)) {
|
showToast("开锁密码不能为空");
|
return;
|
}
|
proDialog.show();
|
//远程开锁,先获取密钥
|
HDLCommand.doorMachineGetSecret(appliancesInfo);
|
}
|
});
|
}
|
|
private void showStateView() {
|
if (appliancesInfo.getArrCurState() != null) {
|
DoorMachineBackInfo doorMachineBackInfo = new DoorMachineBackInfo(appliancesInfo);
|
|
String stringState = "";
|
if (doorMachineBackInfo.getDoorStatus() == DoorMachineParser.doorStatusClose) {
|
stringState = "门锁状态:关闭";
|
} else if (doorMachineBackInfo.getDoorStatus() == DoorMachineParser.doorStatusOpen) {
|
stringState = "门锁状态:打开";
|
} else if (doorMachineBackInfo.getDoorStatus() == DoorMachineParser.doorStatusNormallyOpen) {
|
stringState = "门锁状态:常开";
|
} else {
|
stringState = "未知开关状态";
|
}
|
|
if (doorMachineBackInfo.getNormalOpenMode() == DoorMachineParser.normalOpenModeClose) {
|
stringState += "\n常开模式:关闭";
|
} else if (doorMachineBackInfo.getDoorStatus() == DoorMachineParser.normalOpenModeOpen) {
|
stringState += "\n常开模式:打开";
|
} else {
|
stringState += "\n未知常开模式开关状态";
|
}
|
|
stringState += "\n音量:" + doorMachineBackInfo.getDoorVolume();
|
|
stringState += "\n电池百分比:" + doorMachineBackInfo.getDoorElectricity();
|
|
mTextView.setText(stringState);
|
} else {
|
mTextView.setText("未获取到门锁状态");
|
}
|
|
}
|
|
|
/**
|
* getSwichStateString
|
*
|
* @param mState
|
* @return
|
*/
|
private String getSwichStateString(int mState) {
|
String mStrState = "未知";
|
gSwitchState = mState; //更新开关状态
|
switch (mState) {
|
case DoorMachineParser.doorStatusOpen:
|
mStrState = "门锁状态:打开";
|
break;
|
case DoorMachineParser.doorStatusClose:
|
mStrState = "门锁状态:关闭";
|
break;
|
case DoorMachineParser.doorStatusNormallyOpen:
|
mStrState = "门锁状态:常开";
|
break;
|
default:
|
mStrState = "未知状态";
|
break;
|
}
|
return mStrState;
|
}
|
|
|
/**
|
* getNormalOpenModeStateString
|
*
|
* @param mState
|
* @return
|
*/
|
private String getNormalOpenModeStateString(int mState) {
|
String mStrState = "未知";
|
switch (mState) {
|
case DoorMachineParser.normalOpenModeClose:
|
mStrState = "常开模式:关闭";
|
break;
|
case DoorMachineParser.normalOpenModeOpen:
|
mStrState = "常开模式:打开";
|
break;
|
default:
|
mStrState = "未知状态";
|
break;
|
}
|
return mStrState;
|
}
|
|
|
/**
|
* 门锁远程开锁控制回调Event
|
*
|
* @param event
|
*/
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
public void DoorMachineFeedFristBackEventMain(DoorMachineFeedFristBackEvent event) {
|
proDialog.dismiss();
|
if (event.getDoorMachineFristBackInfo().getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID()
|
&& event.getDoorMachineFristBackInfo().getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID()
|
&& event.getDoorMachineFristBackInfo().getAppliancesInfo().getChannelNum() == appliancesInfo.getChannelNum()) {
|
//先判断是否超时
|
if (!event.isSuccess()) {
|
showToast("门锁远程开锁控制超时,请重新再试");
|
return;
|
}
|
|
DoorMachineFristBackInfo doorMachineFristBackInfo = event.getDoorMachineFristBackInfo();
|
if (doorMachineFristBackInfo != null && doorMachineBackInfo != null) {
|
secretBytes = doorMachineFristBackInfo.getSecretBytes();
|
HDLCommand.doorMachineCtrl(appliancesInfo, secretBytes, et_password.getText().toString(), doorMachineBackInfo.getDoorStatus());
|
}
|
}
|
}
|
|
|
/**
|
* 门锁远程开锁控制回调Event
|
*
|
* @param event
|
*/
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
public void onDoorMachineFeedBackEventMain(DoorMachineFeedBackEvent event) {
|
proDialog.dismiss();
|
if (event.getDoorMachineBackInfo().getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID()
|
&& event.getDoorMachineBackInfo().getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID()
|
&& event.getDoorMachineBackInfo().getAppliancesInfo().getChannelNum() == appliancesInfo.getChannelNum()) {
|
|
showToast("门锁远程开锁成功");
|
HDLLog.I("门锁远程开锁成功");
|
}
|
}
|
|
|
/**
|
* 门锁状态和报警广播Event
|
*
|
* @param event
|
*/
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
public void onDoorMachineWaringBackInfoMain(DoorMachineWaringBackInfo event) {
|
if (event.appliancesInfo.getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID()
|
&& event.appliancesInfo.getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID()
|
&& event.appliancesInfo.getChannelNum() == appliancesInfo.getChannelNum()) {
|
|
String type = ((DoorMachineWaringBackInfo) event).getType();
|
showToast("收到门锁1F4D广播:" + type);
|
HDLLog.I("收到门锁1F4D广播:" + type);
|
}
|
}
|
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
public void onDeviceStateEventMain(DeviceStateEvent event) {
|
proDialog.dismiss();
|
if (event.getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID()
|
&& event.getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID()
|
) {
|
//这个返回的信息是当前状态的
|
switch (event.getAppliancesInfo().getDeviceType()) {
|
case HDLApConfig.TYPE_DOOR_MACHINE:
|
if (appliancesInfo.getChannelNum() == event.getAppliancesInfo().getChannelNum()) {
|
if (!event.isSuccess()) {
|
showToast("获取门锁状态失败,请重新再试");
|
return;
|
}
|
String message = "";
|
doorMachineBackInfo = new DoorMachineBackInfo(event.appliancesInfo);
|
|
if (doorMachineBackInfo == null) {
|
showToast("获取门锁状态失败,请重新再试");
|
return;
|
}
|
|
showDoorMachineBackInfo(doorMachineBackInfo);
|
|
}
|
break;
|
}
|
}
|
}
|
|
/**
|
* showDoorMachineBackInfo
|
*
|
* @param doorMachineBackInfo
|
*/
|
private void showDoorMachineBackInfo(DoorMachineBackInfo doorMachineBackInfo) {
|
String message = "";
|
|
message = getSwichStateString(doorMachineBackInfo.getDoorStatus());
|
message += "\n" + getNormalOpenModeStateString(doorMachineBackInfo.getNormalOpenMode());
|
message += "\n" + "音量:" + doorMachineBackInfo.getDoorVolume();
|
message += "\n" + "电池百分比:" + doorMachineBackInfo.getDoorElectricity();
|
|
mTextView.setText(message);
|
showToast(message);
|
HDLLog.I(message);
|
}
|
}
|