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.HDLDoorMachine.DoorMachineBackInfo;
|
import com.hdl.sdk.ttl.HDLAppliances.HDLDoorMachine.Parser.DoorMachineParser;
|
import com.hdl.sdk.ttl.HDLAppliances.HDLLight.ColourLightCtrlBackInfo;
|
import com.hdl.sdk.ttl.HDLDeviceManger.Bean.AppliancesInfo;
|
import com.hdl.sdk.ttl.HDLDeviceManger.Core.HDLCommand;
|
import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.ColourLightFeedBackEvent;
|
import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.DeviceStateEvent;
|
import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.LightFeedBackEvent;
|
import com.hdl.sdk.ttl_sdk.R;
|
import com.hdl.sdk.ttl_sdk.base.BaseActivity;
|
import com.hdl.sdk.ttl_sdk.utlis.HDLLog;
|
import com.hdl.sdk.ttl_sdk.utlis.HDLUtlis;
|
import com.hdl.sdk.ttl_sdk.utlis.RGBColorPicker;
|
|
import org.greenrobot.eventbus.Subscribe;
|
import org.greenrobot.eventbus.ThreadMode;
|
|
/**
|
* Created by panlili on 2023/8/22
|
* CCT色温灯,RGB灯控制页面
|
*/
|
public class CtrlColourLightActivity extends BaseActivity {
|
/**
|
* Topbar
|
*/
|
private RelativeLayout topBarBack;
|
private TextView topBarTitle;
|
private Button lightBtn, brightnessBtn, cctBtn;
|
private EditText brightnessEt, cctEt;
|
private TextView lightText,rgbText;
|
private RGBColorPicker rgbColorPicker;
|
private AppliancesInfo appliancesInfo;
|
private int lightState;
|
private ColourLightCtrlBackInfo colourLightCtrlBackInfo;
|
|
/**
|
* 复写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_colour_light);
|
initToolbar();
|
initView();
|
initOnClick();
|
initcurState();
|
displayStateView();
|
|
//从网络上查询刷新一次设备状态,待调试
|
HDLCommand.getColourLightDeviceStateFromNetwork(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() {
|
lightBtn = findViewById(R.id.ctrlbtn);
|
lightText = findViewById(R.id.lightText);
|
brightnessBtn = findViewById(R.id.ctrl_brightness);
|
brightnessEt = findViewById(R.id.et_brightness);
|
cctBtn = findViewById(R.id.ctrl_cct);
|
cctEt = findViewById(R.id.et_cct);
|
rgbText = findViewById(R.id.ctrl_rgb);
|
rgbColorPicker = findViewById(R.id.rgb_bar);
|
|
}
|
|
private void initOnClick() {
|
|
lightBtn.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
//通过亮度来控制灯的开关,0为关,100为开
|
if (colourLightCtrlBackInfo.getType() == ColourLightCtrlBackInfo.CONTROL_TYPE_CCT) {
|
HDLCommand.colourLightCtrl(appliancesInfo, lightState, colourLightCtrlBackInfo.getColorTemp());
|
} else if (colourLightCtrlBackInfo.getType() == ColourLightCtrlBackInfo.CONTROL_TYPE_RGB) {
|
HDLCommand.colourLightCtrl(appliancesInfo, lightState, colourLightCtrlBackInfo.getColor());
|
}
|
HDLLog.Log("lightBtn: 开关灯" + lightState);
|
}
|
});
|
brightnessBtn.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
String brightnessStr = brightnessEt.getText().toString();
|
if (TextUtils.isEmpty(brightnessStr)) {
|
showToast("设置的亮度不能为空");
|
return;
|
}
|
if (colourLightCtrlBackInfo.getType() == ColourLightCtrlBackInfo.CONTROL_TYPE_CCT) {
|
HDLCommand.colourLightCtrl(appliancesInfo, Integer.parseInt(brightnessStr), colourLightCtrlBackInfo.getColorTemp());
|
HDLLog.Log("brightnessBtn: 设置亮度=" + brightnessStr + " getColorTemp=" + colourLightCtrlBackInfo.getColorTemp());
|
} else if (colourLightCtrlBackInfo.getType() == ColourLightCtrlBackInfo.CONTROL_TYPE_RGB) {
|
HDLCommand.colourLightCtrl(appliancesInfo, Integer.parseInt(brightnessStr), colourLightCtrlBackInfo.getColor());
|
HDLLog.Log("brightnessBtn: 设置亮度=" + brightnessStr + " getColorTemp=" + colourLightCtrlBackInfo.getColor());
|
}
|
|
}
|
});
|
cctBtn.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
String cctStr = cctEt.getText().toString();
|
if (TextUtils.isEmpty(cctStr)) {
|
showToast("设置的色温不能为空");
|
return;
|
}
|
if (colourLightCtrlBackInfo.getType() == ColourLightCtrlBackInfo.CONTROL_TYPE_CCT) {
|
HDLCommand.colourLightCtrl(appliancesInfo, colourLightCtrlBackInfo.getBrightness(), Integer.parseInt(cctStr));
|
}
|
HDLLog.Log("cctBtn: 设置色温=" + cctStr + " getBrightness=" + colourLightCtrlBackInfo.getBrightness());
|
}
|
});
|
|
rgbColorPicker.setColorListener(new RGBColorPicker.DelayColorListener() {
|
@Override
|
public void onDelayColorChanged(int color, boolean fromUser) {
|
if (colourLightCtrlBackInfo.getType() == ColourLightCtrlBackInfo.CONTROL_TYPE_RGB) {
|
HDLCommand.colourLightCtrl(appliancesInfo, colourLightCtrlBackInfo.getBrightness(), color);
|
}
|
HDLLog.Log("rgbBtn: 设置RGB=" + color + " getBrightness=" + colourLightCtrlBackInfo.getBrightness());
|
}
|
|
@Override
|
public void onColorChange(int color, boolean fromUser) {
|
super.onColorChange(color, fromUser);
|
}
|
});
|
}
|
|
private void displayStateView() {
|
switch (appliancesInfo.getDeviceType()) {
|
case HDLApConfig.TYPE_LIGHT_CCT:
|
case HDLApConfig.TYPE_LIGHT_RGB:
|
case HDLApConfig.TYPE_LIGHT_DALI:
|
case HDLApConfig.TYPE_LIGHT_DMX:
|
if (appliancesInfo.getCurState() != null) {
|
ColourLightCtrlBackInfo colourLightCtrlBackInfo = new ColourLightCtrlBackInfo(appliancesInfo);
|
String stringState = getSwichStateString(colourLightCtrlBackInfo.getBrightness());
|
stringState += "\n当前亮度:" + colourLightCtrlBackInfo.getBrightness();
|
|
if (colourLightCtrlBackInfo.getType() == ColourLightCtrlBackInfo.CONTROL_TYPE_CCT) {
|
stringState += "\n色温:" + colourLightCtrlBackInfo.getColorTemp();
|
} else if (colourLightCtrlBackInfo.getType() == ColourLightCtrlBackInfo.CONTROL_TYPE_RGB) {
|
stringState += "\nRGB:" + colourLightCtrlBackInfo.getColor();
|
}
|
lightText.setText(stringState);
|
|
if (colourLightCtrlBackInfo.getBrightness() == 0) {
|
lightState = 100;
|
lightBtn.setText("开灯");
|
} else {
|
lightState = 0;
|
lightBtn.setText("关灯");
|
}
|
} else {
|
lightText.setText("未获取到灯光状态");
|
lightBtn.setText("未获取到灯光状态");
|
}
|
break;
|
|
default:
|
finish();//设备类型不对结束页面
|
break;
|
}
|
/**根据需求是否发送一次获取刷新状态请求*/
|
}
|
|
/**
|
* 灯光控制回调Event
|
*
|
* @param event
|
*/
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
public void onColourLightFeedBackEventMain(ColourLightFeedBackEvent event) {
|
if (event.getColourLightCtrlBackInfo().getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID()
|
&& event.getColourLightCtrlBackInfo().getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID()
|
&& event.getColourLightCtrlBackInfo().getAppliancesInfo().getChannelNum() == appliancesInfo.getChannelNum()) {
|
//先判断是否超时
|
if (!event.isSuccess()) {
|
showToast("灯光控制超时,请重新再试");
|
lightBtn.setText("灯光控制超时,请重新再试");
|
return;
|
}
|
colourLightCtrlBackInfo = event.getColourLightCtrlBackInfo();
|
Log.d("panlili", "CtrlColourLightActivity.java:onColourLightFeedBackEventMain-----> " + colourLightCtrlBackInfo.toString());
|
|
if (colourLightCtrlBackInfo == null) {
|
showToast("灯光控制超时,请重新再试");
|
return;
|
}
|
|
showColourLightCtrlBackInfo(colourLightCtrlBackInfo);
|
}
|
}
|
|
/**
|
* 获取单一设备状态回调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_LIGHT_CCT:
|
case HDLApConfig.TYPE_LIGHT_RGB:
|
case HDLApConfig.TYPE_LIGHT_DALI:
|
case HDLApConfig.TYPE_LIGHT_DMX:
|
if (appliancesInfo.getChannelNum() == event.getAppliancesInfo().getChannelNum()) {
|
if (!event.isSuccess()) {
|
showToast("获取灯光状态失败,请重新再试");
|
return;
|
}
|
colourLightCtrlBackInfo = new ColourLightCtrlBackInfo(event.getAppliancesInfo());
|
Log.d("panlili", "CtrlColourLightActivity.java:onDeviceStateEventMain-----> " + colourLightCtrlBackInfo.toString());
|
|
if (colourLightCtrlBackInfo == null) {
|
showToast("获取灯光状态失败,请重新再试");
|
return;
|
}
|
|
showColourLightCtrlBackInfo(colourLightCtrlBackInfo);
|
}
|
break;
|
default:
|
//不处理
|
break;
|
}
|
}
|
}
|
|
/**
|
* showColourLightCtrlBackInfo
|
*
|
* @param colourLightCtrlBackInfo
|
*/
|
private void showColourLightCtrlBackInfo(ColourLightCtrlBackInfo colourLightCtrlBackInfo) {
|
String message = "";
|
|
message = getSwichStateString(colourLightCtrlBackInfo.getBrightness());
|
message += "\n" + "当前亮度:" + colourLightCtrlBackInfo.getBrightness();
|
if (colourLightCtrlBackInfo.getType() == ColourLightCtrlBackInfo.CONTROL_TYPE_CCT) {
|
message += "\n色温:" + colourLightCtrlBackInfo.getColorTemp();
|
} else if (colourLightCtrlBackInfo.getType() == ColourLightCtrlBackInfo.CONTROL_TYPE_RGB) {
|
message += "\nRGB:" + colourLightCtrlBackInfo.getColor();
|
}
|
|
lightText.setText(message);
|
|
if (colourLightCtrlBackInfo.getBrightness() == 0) {
|
lightState = 100;
|
lightBtn.setText("开灯");
|
} else {
|
lightState = 0;
|
lightBtn.setText("关灯");
|
}
|
|
showToast(message);
|
HDLLog.Log(message);
|
}
|
|
|
/**
|
* getSwichStateString
|
*
|
* @param mState
|
* @return
|
*/
|
private String getSwichStateString(int mState) {
|
String mStrState = "未知";
|
|
if (mState == 0) {
|
mStrState = "开关状态:关闭";
|
} else {
|
mStrState = "开关状态:打开";
|
}
|
return mStrState;
|
}
|
}
|