diff --git a/app/src/main/java/com/casic/br/utils/CommandManager.kt b/app/src/main/java/com/casic/br/utils/CommandManager.kt index c2e436b..9cb8058 100644 --- a/app/src/main/java/com/casic/br/utils/CommandManager.kt +++ b/app/src/main/java/com/casic/br/utils/CommandManager.kt @@ -4,6 +4,24 @@ import com.tuya.smart.sdk.api.IResultCallback import com.tuya.smart.sdk.api.ITuyaDevice +/** + * 油烟机 + * + * 设备开关 => 1 + * 延时开关 => 2 + * 延时倒计时 => 105 + * 设备状态 => 11 + * 灯光开关 => 4 + * 风速 => 10 + * 清洁开关 => 101 + * TODO XX开关 => 102 + * TODO XXXXX => 103 + * 巡航开关 => 104 + * TODO XXXXX => 106 + * TODO XXXXX => 107 + * TODO XXXXX => 108 + */ + object CommandManager { private const val kTag = "CommandManager" diff --git a/app/src/main/java/com/casic/br/utils/CommandManager.kt b/app/src/main/java/com/casic/br/utils/CommandManager.kt index c2e436b..9cb8058 100644 --- a/app/src/main/java/com/casic/br/utils/CommandManager.kt +++ b/app/src/main/java/com/casic/br/utils/CommandManager.kt @@ -4,6 +4,24 @@ import com.tuya.smart.sdk.api.IResultCallback import com.tuya.smart.sdk.api.ITuyaDevice +/** + * 油烟机 + * + * 设备开关 => 1 + * 延时开关 => 2 + * 延时倒计时 => 105 + * 设备状态 => 11 + * 灯光开关 => 4 + * 风速 => 10 + * 清洁开关 => 101 + * TODO XX开关 => 102 + * TODO XXXXX => 103 + * 巡航开关 => 104 + * TODO XXXXX => 106 + * TODO XXXXX => 107 + * TODO XXXXX => 108 + */ + object CommandManager { private const val kTag = "CommandManager" diff --git a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt index 4b440ff..5d1b8b2 100644 --- a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt @@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject import com.bumptech.glide.Glide import com.casic.br.R -import com.casic.br.extensions.diffMinute import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.utils.CommandManager import com.google.gson.Gson @@ -79,7 +78,7 @@ } //开关机 - turnOffButton.setOnClickListener { + switchButton.setOnClickListener { val command = if (isDeviceWorking) { "{\"1\": false}" } else { @@ -103,6 +102,65 @@ CommandManager.sendTuyaDp(deviceInstance, "{\"10\": \"strong\"}") } + //清洁 + cleanSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + CommandManager.sendTuyaDp(deviceInstance, "{\"101\": true}") + } else { + CommandManager.sendTuyaDp(deviceInstance, "{\"101\": false}") + } + } + + //照明 + lightSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + CommandManager.sendTuyaDp(deviceInstance, "{\"4\": true}") + } else { + CommandManager.sendTuyaDp(deviceInstance, "{\"4\": false}") + } + } + + //巡航 + cruiseSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + CommandManager.sendTuyaDp(deviceInstance, "{\"104\": true}") + } else { + CommandManager.sendTuyaDp(deviceInstance, "{\"104\": false}") + } + } + + //延时开关 + delayTurnOffSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + CommandManager.sendTuyaDp(deviceInstance, "{\"2\": true}") + } else { + CommandManager.sendTuyaDp(deviceInstance, "{\"2\": false}") + } + } + + //假日通风 + ventilateSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + + } else { + + } + } + + //假日通风时长 + ventilateTimeLayout.setOnClickListener { + + } + + //防倒灌 + antiPourDownSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + + } else { + + } + } + deviceInstance.registerDevListener(object : IDevListener { /** @@ -112,31 +170,53 @@ * @param dpStr 设备发生变动的功能点,为 JSON 字符串,数据格式:{"101": true} */ override fun onDpUpdate(devId: String?, dpStr: String?) { - val parseObject = JSONObject.parseObject(dpStr) - val key = parseObject.keys.first() Log.d(kTag, "onDpUpdate: $dpStr") - when (key) { - "1" -> {//开关机 - isDeviceWorking = parseObject[key] as Boolean - deviceStateView.text = if (isDeviceWorking) { - "已开机" - } else { - "已关机" + val parseObject = JSONObject.parseObject(dpStr) + parseObject.keys.forEach { + when (it) { + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + if (isDeviceWorking) { + //工作中 + deviceStateView.text = "已开机" + deviceStateButton.text = "关机" + } else { + //未工作 + deviceStateView.text = "已关机" + deviceStateButton.text = "开机" + } } - deviceStateButton.text = if (isDeviceWorking) { - "关机" - } else { - "开机" + "2" -> {//延时关机状态,{"105":90,"11":"delay","2":true}|{"11":"low","2":false} + val isDelay = parseObject[it] as Boolean + if (!isDelay) { + delayTimeView.text = "已取消" + } + delayTurnOffSwitch.isChecked = isDelay } - } - "11" -> {//风速,[off, low, middle, high, strong] + "4" -> {//照明 + val isLighting = parseObject[it] as Boolean + lightSwitch.isChecked = isLighting + } + "11" -> {//设备状态,[off, low, middle, high, strong] - } - "12" -> {//累计工作时间 - workingTimeView.text = if (isDeviceWorking) { - "${parseObject[key]}分" - } else { - "0分" + } + "12" -> {//累计工作时间 + workingTimeView.text = if (isDeviceWorking) { + "${parseObject[it]}分" + } else { + "0分" + } + } + "101" -> {//清洁,{"10":"off","101":true,"11":"wash"}|{"101":false,"11":"off"} + val isCleaning = parseObject[it] as Boolean + cleanSwitch.isChecked = isCleaning + } + "104" -> {//巡航 + val isCruising = parseObject[it] as Boolean + cruiseSwitch.isChecked = isCruising + } + "105" -> { + delayTimeView.text = String.format("${parseObject[it].toString()}s") } } } @@ -182,6 +262,64 @@ }) } + private fun configFunctionPanel( + isTurnOn: Boolean, + isSpeedEnable: Boolean, + isCleanEnable: Boolean, + isLightEnable: Boolean, + isCruiseEnable: Boolean, + isDelayEnable: Boolean, + isVentilateEnable: Boolean, + isVentilateTimeEnable: Boolean, + isAntiPourDownEnable: Boolean + ) { +// if (isTurnOn) { +// switchButtonLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// switchButtonLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isSpeedEnable) { +// speedLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// speedLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isCleanEnable) { +// cleanLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// cleanLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isLightEnable) { +// lightLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// lightLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isCruiseEnable) { +// cruiseLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//巡航 +// } else { +// cruiseLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//巡航 +// } +// if (isDelayEnable) { +// delayLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// delayLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isVentilateEnable) { +// ventilateLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//通风 +// } else { +// ventilateLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//通风 +// } +// if (isVentilateTimeEnable) { +// ventilateTimeLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// ventilateTimeLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isAntiPourDownEnable) { +// antiPourDownLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//防倒灌 +// } else { +// antiPourDownLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//防倒灌 +// } + } + override fun onDestroy() { super.onDestroy() deviceInstance.unRegisterDevListener() diff --git a/app/src/main/java/com/casic/br/utils/CommandManager.kt b/app/src/main/java/com/casic/br/utils/CommandManager.kt index c2e436b..9cb8058 100644 --- a/app/src/main/java/com/casic/br/utils/CommandManager.kt +++ b/app/src/main/java/com/casic/br/utils/CommandManager.kt @@ -4,6 +4,24 @@ import com.tuya.smart.sdk.api.IResultCallback import com.tuya.smart.sdk.api.ITuyaDevice +/** + * 油烟机 + * + * 设备开关 => 1 + * 延时开关 => 2 + * 延时倒计时 => 105 + * 设备状态 => 11 + * 灯光开关 => 4 + * 风速 => 10 + * 清洁开关 => 101 + * TODO XX开关 => 102 + * TODO XXXXX => 103 + * 巡航开关 => 104 + * TODO XXXXX => 106 + * TODO XXXXX => 107 + * TODO XXXXX => 108 + */ + object CommandManager { private const val kTag = "CommandManager" diff --git a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt index 4b440ff..5d1b8b2 100644 --- a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt @@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject import com.bumptech.glide.Glide import com.casic.br.R -import com.casic.br.extensions.diffMinute import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.utils.CommandManager import com.google.gson.Gson @@ -79,7 +78,7 @@ } //开关机 - turnOffButton.setOnClickListener { + switchButton.setOnClickListener { val command = if (isDeviceWorking) { "{\"1\": false}" } else { @@ -103,6 +102,65 @@ CommandManager.sendTuyaDp(deviceInstance, "{\"10\": \"strong\"}") } + //清洁 + cleanSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + CommandManager.sendTuyaDp(deviceInstance, "{\"101\": true}") + } else { + CommandManager.sendTuyaDp(deviceInstance, "{\"101\": false}") + } + } + + //照明 + lightSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + CommandManager.sendTuyaDp(deviceInstance, "{\"4\": true}") + } else { + CommandManager.sendTuyaDp(deviceInstance, "{\"4\": false}") + } + } + + //巡航 + cruiseSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + CommandManager.sendTuyaDp(deviceInstance, "{\"104\": true}") + } else { + CommandManager.sendTuyaDp(deviceInstance, "{\"104\": false}") + } + } + + //延时开关 + delayTurnOffSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + CommandManager.sendTuyaDp(deviceInstance, "{\"2\": true}") + } else { + CommandManager.sendTuyaDp(deviceInstance, "{\"2\": false}") + } + } + + //假日通风 + ventilateSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + + } else { + + } + } + + //假日通风时长 + ventilateTimeLayout.setOnClickListener { + + } + + //防倒灌 + antiPourDownSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + + } else { + + } + } + deviceInstance.registerDevListener(object : IDevListener { /** @@ -112,31 +170,53 @@ * @param dpStr 设备发生变动的功能点,为 JSON 字符串,数据格式:{"101": true} */ override fun onDpUpdate(devId: String?, dpStr: String?) { - val parseObject = JSONObject.parseObject(dpStr) - val key = parseObject.keys.first() Log.d(kTag, "onDpUpdate: $dpStr") - when (key) { - "1" -> {//开关机 - isDeviceWorking = parseObject[key] as Boolean - deviceStateView.text = if (isDeviceWorking) { - "已开机" - } else { - "已关机" + val parseObject = JSONObject.parseObject(dpStr) + parseObject.keys.forEach { + when (it) { + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + if (isDeviceWorking) { + //工作中 + deviceStateView.text = "已开机" + deviceStateButton.text = "关机" + } else { + //未工作 + deviceStateView.text = "已关机" + deviceStateButton.text = "开机" + } } - deviceStateButton.text = if (isDeviceWorking) { - "关机" - } else { - "开机" + "2" -> {//延时关机状态,{"105":90,"11":"delay","2":true}|{"11":"low","2":false} + val isDelay = parseObject[it] as Boolean + if (!isDelay) { + delayTimeView.text = "已取消" + } + delayTurnOffSwitch.isChecked = isDelay } - } - "11" -> {//风速,[off, low, middle, high, strong] + "4" -> {//照明 + val isLighting = parseObject[it] as Boolean + lightSwitch.isChecked = isLighting + } + "11" -> {//设备状态,[off, low, middle, high, strong] - } - "12" -> {//累计工作时间 - workingTimeView.text = if (isDeviceWorking) { - "${parseObject[key]}分" - } else { - "0分" + } + "12" -> {//累计工作时间 + workingTimeView.text = if (isDeviceWorking) { + "${parseObject[it]}分" + } else { + "0分" + } + } + "101" -> {//清洁,{"10":"off","101":true,"11":"wash"}|{"101":false,"11":"off"} + val isCleaning = parseObject[it] as Boolean + cleanSwitch.isChecked = isCleaning + } + "104" -> {//巡航 + val isCruising = parseObject[it] as Boolean + cruiseSwitch.isChecked = isCruising + } + "105" -> { + delayTimeView.text = String.format("${parseObject[it].toString()}s") } } } @@ -182,6 +262,64 @@ }) } + private fun configFunctionPanel( + isTurnOn: Boolean, + isSpeedEnable: Boolean, + isCleanEnable: Boolean, + isLightEnable: Boolean, + isCruiseEnable: Boolean, + isDelayEnable: Boolean, + isVentilateEnable: Boolean, + isVentilateTimeEnable: Boolean, + isAntiPourDownEnable: Boolean + ) { +// if (isTurnOn) { +// switchButtonLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// switchButtonLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isSpeedEnable) { +// speedLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// speedLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isCleanEnable) { +// cleanLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// cleanLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isLightEnable) { +// lightLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// lightLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isCruiseEnable) { +// cruiseLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//巡航 +// } else { +// cruiseLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//巡航 +// } +// if (isDelayEnable) { +// delayLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// delayLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isVentilateEnable) { +// ventilateLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//通风 +// } else { +// ventilateLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//通风 +// } +// if (isVentilateTimeEnable) { +// ventilateTimeLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// ventilateTimeLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isAntiPourDownEnable) { +// antiPourDownLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//防倒灌 +// } else { +// antiPourDownLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//防倒灌 +// } + } + override fun onDestroy() { super.onDestroy() deviceInstance.unRegisterDevListener() diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml index 6c7fe93..cc6b725 100644 --- a/app/src/main/res/drawable/switch_background_off.xml +++ b/app/src/main/res/drawable/switch_background_off.xml @@ -6,5 +6,5 @@ - + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/CommandManager.kt b/app/src/main/java/com/casic/br/utils/CommandManager.kt index c2e436b..9cb8058 100644 --- a/app/src/main/java/com/casic/br/utils/CommandManager.kt +++ b/app/src/main/java/com/casic/br/utils/CommandManager.kt @@ -4,6 +4,24 @@ import com.tuya.smart.sdk.api.IResultCallback import com.tuya.smart.sdk.api.ITuyaDevice +/** + * 油烟机 + * + * 设备开关 => 1 + * 延时开关 => 2 + * 延时倒计时 => 105 + * 设备状态 => 11 + * 灯光开关 => 4 + * 风速 => 10 + * 清洁开关 => 101 + * TODO XX开关 => 102 + * TODO XXXXX => 103 + * 巡航开关 => 104 + * TODO XXXXX => 106 + * TODO XXXXX => 107 + * TODO XXXXX => 108 + */ + object CommandManager { private const val kTag = "CommandManager" diff --git a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt index 4b440ff..5d1b8b2 100644 --- a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt @@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject import com.bumptech.glide.Glide import com.casic.br.R -import com.casic.br.extensions.diffMinute import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.utils.CommandManager import com.google.gson.Gson @@ -79,7 +78,7 @@ } //开关机 - turnOffButton.setOnClickListener { + switchButton.setOnClickListener { val command = if (isDeviceWorking) { "{\"1\": false}" } else { @@ -103,6 +102,65 @@ CommandManager.sendTuyaDp(deviceInstance, "{\"10\": \"strong\"}") } + //清洁 + cleanSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + CommandManager.sendTuyaDp(deviceInstance, "{\"101\": true}") + } else { + CommandManager.sendTuyaDp(deviceInstance, "{\"101\": false}") + } + } + + //照明 + lightSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + CommandManager.sendTuyaDp(deviceInstance, "{\"4\": true}") + } else { + CommandManager.sendTuyaDp(deviceInstance, "{\"4\": false}") + } + } + + //巡航 + cruiseSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + CommandManager.sendTuyaDp(deviceInstance, "{\"104\": true}") + } else { + CommandManager.sendTuyaDp(deviceInstance, "{\"104\": false}") + } + } + + //延时开关 + delayTurnOffSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + CommandManager.sendTuyaDp(deviceInstance, "{\"2\": true}") + } else { + CommandManager.sendTuyaDp(deviceInstance, "{\"2\": false}") + } + } + + //假日通风 + ventilateSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + + } else { + + } + } + + //假日通风时长 + ventilateTimeLayout.setOnClickListener { + + } + + //防倒灌 + antiPourDownSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + + } else { + + } + } + deviceInstance.registerDevListener(object : IDevListener { /** @@ -112,31 +170,53 @@ * @param dpStr 设备发生变动的功能点,为 JSON 字符串,数据格式:{"101": true} */ override fun onDpUpdate(devId: String?, dpStr: String?) { - val parseObject = JSONObject.parseObject(dpStr) - val key = parseObject.keys.first() Log.d(kTag, "onDpUpdate: $dpStr") - when (key) { - "1" -> {//开关机 - isDeviceWorking = parseObject[key] as Boolean - deviceStateView.text = if (isDeviceWorking) { - "已开机" - } else { - "已关机" + val parseObject = JSONObject.parseObject(dpStr) + parseObject.keys.forEach { + when (it) { + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + if (isDeviceWorking) { + //工作中 + deviceStateView.text = "已开机" + deviceStateButton.text = "关机" + } else { + //未工作 + deviceStateView.text = "已关机" + deviceStateButton.text = "开机" + } } - deviceStateButton.text = if (isDeviceWorking) { - "关机" - } else { - "开机" + "2" -> {//延时关机状态,{"105":90,"11":"delay","2":true}|{"11":"low","2":false} + val isDelay = parseObject[it] as Boolean + if (!isDelay) { + delayTimeView.text = "已取消" + } + delayTurnOffSwitch.isChecked = isDelay } - } - "11" -> {//风速,[off, low, middle, high, strong] + "4" -> {//照明 + val isLighting = parseObject[it] as Boolean + lightSwitch.isChecked = isLighting + } + "11" -> {//设备状态,[off, low, middle, high, strong] - } - "12" -> {//累计工作时间 - workingTimeView.text = if (isDeviceWorking) { - "${parseObject[key]}分" - } else { - "0分" + } + "12" -> {//累计工作时间 + workingTimeView.text = if (isDeviceWorking) { + "${parseObject[it]}分" + } else { + "0分" + } + } + "101" -> {//清洁,{"10":"off","101":true,"11":"wash"}|{"101":false,"11":"off"} + val isCleaning = parseObject[it] as Boolean + cleanSwitch.isChecked = isCleaning + } + "104" -> {//巡航 + val isCruising = parseObject[it] as Boolean + cruiseSwitch.isChecked = isCruising + } + "105" -> { + delayTimeView.text = String.format("${parseObject[it].toString()}s") } } } @@ -182,6 +262,64 @@ }) } + private fun configFunctionPanel( + isTurnOn: Boolean, + isSpeedEnable: Boolean, + isCleanEnable: Boolean, + isLightEnable: Boolean, + isCruiseEnable: Boolean, + isDelayEnable: Boolean, + isVentilateEnable: Boolean, + isVentilateTimeEnable: Boolean, + isAntiPourDownEnable: Boolean + ) { +// if (isTurnOn) { +// switchButtonLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// switchButtonLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isSpeedEnable) { +// speedLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// speedLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isCleanEnable) { +// cleanLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// cleanLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isLightEnable) { +// lightLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// lightLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isCruiseEnable) { +// cruiseLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//巡航 +// } else { +// cruiseLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//巡航 +// } +// if (isDelayEnable) { +// delayLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// delayLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isVentilateEnable) { +// ventilateLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//通风 +// } else { +// ventilateLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//通风 +// } +// if (isVentilateTimeEnable) { +// ventilateTimeLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// ventilateTimeLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isAntiPourDownEnable) { +// antiPourDownLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//防倒灌 +// } else { +// antiPourDownLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//防倒灌 +// } + } + override fun onDestroy() { super.onDestroy() deviceInstance.unRegisterDevListener() diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml index 6c7fe93..cc6b725 100644 --- a/app/src/main/res/drawable/switch_background_off.xml +++ b/app/src/main/res/drawable/switch_background_off.xml @@ -6,5 +6,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_off.xml b/app/src/main/res/drawable/switch_circle_off.xml index a05ee78..183c8f6 100644 --- a/app/src/main/res/drawable/switch_circle_off.xml +++ b/app/src/main/res/drawable/switch_circle_off.xml @@ -7,7 +7,7 @@ + android:color="@color/mainBackColor" /> \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/CommandManager.kt b/app/src/main/java/com/casic/br/utils/CommandManager.kt index c2e436b..9cb8058 100644 --- a/app/src/main/java/com/casic/br/utils/CommandManager.kt +++ b/app/src/main/java/com/casic/br/utils/CommandManager.kt @@ -4,6 +4,24 @@ import com.tuya.smart.sdk.api.IResultCallback import com.tuya.smart.sdk.api.ITuyaDevice +/** + * 油烟机 + * + * 设备开关 => 1 + * 延时开关 => 2 + * 延时倒计时 => 105 + * 设备状态 => 11 + * 灯光开关 => 4 + * 风速 => 10 + * 清洁开关 => 101 + * TODO XX开关 => 102 + * TODO XXXXX => 103 + * 巡航开关 => 104 + * TODO XXXXX => 106 + * TODO XXXXX => 107 + * TODO XXXXX => 108 + */ + object CommandManager { private const val kTag = "CommandManager" diff --git a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt index 4b440ff..5d1b8b2 100644 --- a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt @@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject import com.bumptech.glide.Glide import com.casic.br.R -import com.casic.br.extensions.diffMinute import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.utils.CommandManager import com.google.gson.Gson @@ -79,7 +78,7 @@ } //开关机 - turnOffButton.setOnClickListener { + switchButton.setOnClickListener { val command = if (isDeviceWorking) { "{\"1\": false}" } else { @@ -103,6 +102,65 @@ CommandManager.sendTuyaDp(deviceInstance, "{\"10\": \"strong\"}") } + //清洁 + cleanSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + CommandManager.sendTuyaDp(deviceInstance, "{\"101\": true}") + } else { + CommandManager.sendTuyaDp(deviceInstance, "{\"101\": false}") + } + } + + //照明 + lightSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + CommandManager.sendTuyaDp(deviceInstance, "{\"4\": true}") + } else { + CommandManager.sendTuyaDp(deviceInstance, "{\"4\": false}") + } + } + + //巡航 + cruiseSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + CommandManager.sendTuyaDp(deviceInstance, "{\"104\": true}") + } else { + CommandManager.sendTuyaDp(deviceInstance, "{\"104\": false}") + } + } + + //延时开关 + delayTurnOffSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + CommandManager.sendTuyaDp(deviceInstance, "{\"2\": true}") + } else { + CommandManager.sendTuyaDp(deviceInstance, "{\"2\": false}") + } + } + + //假日通风 + ventilateSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + + } else { + + } + } + + //假日通风时长 + ventilateTimeLayout.setOnClickListener { + + } + + //防倒灌 + antiPourDownSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + + } else { + + } + } + deviceInstance.registerDevListener(object : IDevListener { /** @@ -112,31 +170,53 @@ * @param dpStr 设备发生变动的功能点,为 JSON 字符串,数据格式:{"101": true} */ override fun onDpUpdate(devId: String?, dpStr: String?) { - val parseObject = JSONObject.parseObject(dpStr) - val key = parseObject.keys.first() Log.d(kTag, "onDpUpdate: $dpStr") - when (key) { - "1" -> {//开关机 - isDeviceWorking = parseObject[key] as Boolean - deviceStateView.text = if (isDeviceWorking) { - "已开机" - } else { - "已关机" + val parseObject = JSONObject.parseObject(dpStr) + parseObject.keys.forEach { + when (it) { + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + if (isDeviceWorking) { + //工作中 + deviceStateView.text = "已开机" + deviceStateButton.text = "关机" + } else { + //未工作 + deviceStateView.text = "已关机" + deviceStateButton.text = "开机" + } } - deviceStateButton.text = if (isDeviceWorking) { - "关机" - } else { - "开机" + "2" -> {//延时关机状态,{"105":90,"11":"delay","2":true}|{"11":"low","2":false} + val isDelay = parseObject[it] as Boolean + if (!isDelay) { + delayTimeView.text = "已取消" + } + delayTurnOffSwitch.isChecked = isDelay } - } - "11" -> {//风速,[off, low, middle, high, strong] + "4" -> {//照明 + val isLighting = parseObject[it] as Boolean + lightSwitch.isChecked = isLighting + } + "11" -> {//设备状态,[off, low, middle, high, strong] - } - "12" -> {//累计工作时间 - workingTimeView.text = if (isDeviceWorking) { - "${parseObject[key]}分" - } else { - "0分" + } + "12" -> {//累计工作时间 + workingTimeView.text = if (isDeviceWorking) { + "${parseObject[it]}分" + } else { + "0分" + } + } + "101" -> {//清洁,{"10":"off","101":true,"11":"wash"}|{"101":false,"11":"off"} + val isCleaning = parseObject[it] as Boolean + cleanSwitch.isChecked = isCleaning + } + "104" -> {//巡航 + val isCruising = parseObject[it] as Boolean + cruiseSwitch.isChecked = isCruising + } + "105" -> { + delayTimeView.text = String.format("${parseObject[it].toString()}s") } } } @@ -182,6 +262,64 @@ }) } + private fun configFunctionPanel( + isTurnOn: Boolean, + isSpeedEnable: Boolean, + isCleanEnable: Boolean, + isLightEnable: Boolean, + isCruiseEnable: Boolean, + isDelayEnable: Boolean, + isVentilateEnable: Boolean, + isVentilateTimeEnable: Boolean, + isAntiPourDownEnable: Boolean + ) { +// if (isTurnOn) { +// switchButtonLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// switchButtonLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isSpeedEnable) { +// speedLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// speedLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isCleanEnable) { +// cleanLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// cleanLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isLightEnable) { +// lightLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// lightLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isCruiseEnable) { +// cruiseLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//巡航 +// } else { +// cruiseLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//巡航 +// } +// if (isDelayEnable) { +// delayLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// delayLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isVentilateEnable) { +// ventilateLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//通风 +// } else { +// ventilateLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//通风 +// } +// if (isVentilateTimeEnable) { +// ventilateTimeLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10) +// } else { +// ventilateTimeLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10) +// } +// if (isAntiPourDownEnable) { +// antiPourDownLayout.setBackgroundResource(R.drawable.bg_solid_layout_white_radius_10)//防倒灌 +// } else { +// antiPourDownLayout.setBackgroundResource(R.drawable.bg_solid_layout_hint_radius_10)//防倒灌 +// } + } + override fun onDestroy() { super.onDestroy() deviceInstance.unRegisterDevListener() diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml index 6c7fe93..cc6b725 100644 --- a/app/src/main/res/drawable/switch_background_off.xml +++ b/app/src/main/res/drawable/switch_background_off.xml @@ -6,5 +6,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_off.xml b/app/src/main/res/drawable/switch_circle_off.xml index a05ee78..183c8f6 100644 --- a/app/src/main/res/drawable/switch_circle_off.xml +++ b/app/src/main/res/drawable/switch_circle_off.xml @@ -7,7 +7,7 @@ + android:color="@color/mainBackColor" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_range_hood.xml b/app/src/main/res/layout/activity_range_hood.xml index 77faeb6..3f7bdaa 100644 --- a/app/src/main/res/layout/activity_range_hood.xml +++ b/app/src/main/res/layout/activity_range_hood.xml @@ -1,5 +1,6 @@ - - - - - - - + android:layout_height="wrap_content"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_height="match_parent" + android:gravity="center_horizontal" + android:orientation="vertical" + android:paddingHorizontal="@dimen/dp_10"> - + android:src="@mipmap/rsq" /> - + + + + android:orientation="horizontal" + android:paddingVertical="@dimen/dp_5"> - + android:layout_weight="1" + android:gravity="center" + android:orientation="vertical"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:orientation="vertical"> + + + + + + + + + + + + + + + + + + + + android:layout_marginVertical="@dimen/dp_10"> - + android:layout_marginEnd="@dimen/dp_5" + android:layout_weight="1" + android:background="@drawable/bg_solid_layout_white_radius_10" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingHorizontal="@dimen/dp_20" + android:paddingVertical="@dimen/dp_10"> - + + + + + + + + android:layout_marginStart="@dimen/dp_5" + android:layout_weight="1" + android:background="@drawable/bg_solid_layout_white_radius_10" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingHorizontal="@dimen/dp_20" + android:paddingVertical="@dimen/dp_10"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:layout_marginVertical="@dimen/dp_10" + android:background="@drawable/bg_solid_layout_white_radius_10" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingHorizontal="@dimen/dp_20" + android:paddingVertical="@dimen/dp_10"> + android:src="@drawable/ic_edit" /> + android:layout_marginHorizontal="@dimen/dp_5" + android:layout_weight="1" + android:text="假日通风" + android:textSize="@dimen/sp_14" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + - + \ No newline at end of file