diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2db3a08..4004755 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -84,6 +84,9 @@
+
+
+
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2db3a08..4004755 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -84,6 +84,9 @@
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index fae6114..d38507a 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -127,6 +127,7 @@
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
"kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2db3a08..4004755 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -84,6 +84,9 @@
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index fae6114..d38507a 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -127,6 +127,7 @@
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
"kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index a226546..98971ce 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -182,6 +182,10 @@
//空气净化器
requireContext().navigatePageTo(deviceModel.devId)
}
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2db3a08..4004755 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -84,6 +84,9 @@
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index fae6114..d38507a 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -127,6 +127,7 @@
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
"kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index a226546..98971ce 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -182,6 +182,10 @@
//空气净化器
requireContext().navigatePageTo(deviceModel.devId)
}
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
index cad6d98..865e6a7 100644
--- a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
@@ -40,24 +40,24 @@
override fun initEvent() {
//开关机
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
- }
-
- lowSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
}
}
- highSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
- }
- }
-
- maxSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ speedRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.lowSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ }
+ R.id.mediumSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
+ }
+ R.id.highSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ }
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2db3a08..4004755 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -84,6 +84,9 @@
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index fae6114..d38507a 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -127,6 +127,7 @@
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
"kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index a226546..98971ce 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -182,6 +182,10 @@
//空气净化器
requireContext().navigatePageTo(deviceModel.devId)
}
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
index cad6d98..865e6a7 100644
--- a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
@@ -40,24 +40,24 @@
override fun initEvent() {
//开关机
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
- }
-
- lowSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
}
}
- highSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
- }
- }
-
- maxSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ speedRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.lowSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ }
+ R.id.mediumSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
+ }
+ R.id.highSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index 2a8c6e9..e0b0397 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -32,7 +32,6 @@
private var currentProgress = 0
private val timeScope = intArrayOf(30, 60, 120, 180)
private var currentTimeProgress = 0
- private var isDeviceWorking = false
override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control
@@ -93,7 +92,11 @@
override fun initEvent() {
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
kitchenRadioButton.setOnClickListener {
@@ -140,24 +143,21 @@
}
})
- //单次
- onceRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(isChecked))
- }
-
- //点动
- initiateRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(isChecked))
- }
-
- //预约
- reservationRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(isChecked))
- }
-
- //增压
- pressureRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(isChecked))
+ functionRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.onceRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(true))
+ }
+ R.id.initiateRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(true))
+ }
+ R.id.reservationRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(true))
+ }
+ R.id.pressureRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(true))
+ }
+ }
}
//单次参数设定
@@ -182,8 +182,7 @@
parseObject.keys.forEach {
when (it) {
"1" -> {//开关机
- isDeviceWorking = parseObject[it] as Boolean
- turnOffRadioButton.isChecked = isDeviceWorking
+ turnOffRadioButton.isChecked = parseObject[it] as Boolean
}
"2" -> {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2db3a08..4004755 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -84,6 +84,9 @@
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index fae6114..d38507a 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -127,6 +127,7 @@
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
"kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index a226546..98971ce 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -182,6 +182,10 @@
//空气净化器
requireContext().navigatePageTo(deviceModel.devId)
}
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
index cad6d98..865e6a7 100644
--- a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
@@ -40,24 +40,24 @@
override fun initEvent() {
//开关机
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
- }
-
- lowSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
}
}
- highSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
- }
- }
-
- maxSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ speedRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.lowSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ }
+ R.id.mediumSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
+ }
+ R.id.highSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index 2a8c6e9..e0b0397 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -32,7 +32,6 @@
private var currentProgress = 0
private val timeScope = intArrayOf(30, 60, 120, 180)
private var currentTimeProgress = 0
- private var isDeviceWorking = false
override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control
@@ -93,7 +92,11 @@
override fun initEvent() {
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
kitchenRadioButton.setOnClickListener {
@@ -140,24 +143,21 @@
}
})
- //单次
- onceRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(isChecked))
- }
-
- //点动
- initiateRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(isChecked))
- }
-
- //预约
- reservationRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(isChecked))
- }
-
- //增压
- pressureRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(isChecked))
+ functionRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.onceRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(true))
+ }
+ R.id.initiateRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(true))
+ }
+ R.id.reservationRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(true))
+ }
+ R.id.pressureRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(true))
+ }
+ }
}
//单次参数设定
@@ -182,8 +182,7 @@
parseObject.keys.forEach {
when (it) {
"1" -> {//开关机
- isDeviceWorking = parseObject[it] as Boolean
- turnOffRadioButton.isChecked = isDeviceWorking
+ turnOffRadioButton.isChecked = parseObject[it] as Boolean
}
"2" -> {
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index aeb638b..e9ceee9 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -23,10 +23,8 @@
val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后")
val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件")
val SERVER_IMAGE = intArrayOf(
- R.drawable.ic_daifukuan,
- R.drawable.ic_daifuwu,
- R.drawable.ic_fuwuzhong,
- R.drawable.ic_pingjia
+ R.drawable.ic_daifukuan, R.drawable.ic_daifuwu,
+ R.drawable.ic_fuwuzhong, R.drawable.ic_pingjia
)
val SERVER_OPERATE = arrayOf("待付款", "待服务", "服务中", "评价")
val USER_OPERATE = arrayOf("账号安全", "账号绑定", "支付管理", "地址管理", "系统设置")
@@ -37,6 +35,11 @@
val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+ val ROBOT_FUNCTION_ARRAY = arrayOf("自动清扫", "定点清扫", "沿边打扫", "自动回充", "寻回", "定时", "清扫记录", "设置")
+ val ROBOT_FUNCTION_IMAGE = intArrayOf(
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu,
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu
+ )
//TODO 模拟数据
val TEST_IMAGE = intArrayOf(
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2db3a08..4004755 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -84,6 +84,9 @@
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index fae6114..d38507a 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -127,6 +127,7 @@
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
"kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index a226546..98971ce 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -182,6 +182,10 @@
//空气净化器
requireContext().navigatePageTo(deviceModel.devId)
}
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
index cad6d98..865e6a7 100644
--- a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
@@ -40,24 +40,24 @@
override fun initEvent() {
//开关机
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
- }
-
- lowSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
}
}
- highSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
- }
- }
-
- maxSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ speedRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.lowSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ }
+ R.id.mediumSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
+ }
+ R.id.highSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index 2a8c6e9..e0b0397 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -32,7 +32,6 @@
private var currentProgress = 0
private val timeScope = intArrayOf(30, 60, 120, 180)
private var currentTimeProgress = 0
- private var isDeviceWorking = false
override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control
@@ -93,7 +92,11 @@
override fun initEvent() {
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
kitchenRadioButton.setOnClickListener {
@@ -140,24 +143,21 @@
}
})
- //单次
- onceRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(isChecked))
- }
-
- //点动
- initiateRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(isChecked))
- }
-
- //预约
- reservationRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(isChecked))
- }
-
- //增压
- pressureRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(isChecked))
+ functionRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.onceRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(true))
+ }
+ R.id.initiateRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(true))
+ }
+ R.id.reservationRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(true))
+ }
+ R.id.pressureRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(true))
+ }
+ }
}
//单次参数设定
@@ -182,8 +182,7 @@
parseObject.keys.forEach {
when (it) {
"1" -> {//开关机
- isDeviceWorking = parseObject[it] as Boolean
- turnOffRadioButton.isChecked = isDeviceWorking
+ turnOffRadioButton.isChecked = parseObject[it] as Boolean
}
"2" -> {
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index aeb638b..e9ceee9 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -23,10 +23,8 @@
val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后")
val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件")
val SERVER_IMAGE = intArrayOf(
- R.drawable.ic_daifukuan,
- R.drawable.ic_daifuwu,
- R.drawable.ic_fuwuzhong,
- R.drawable.ic_pingjia
+ R.drawable.ic_daifukuan, R.drawable.ic_daifuwu,
+ R.drawable.ic_fuwuzhong, R.drawable.ic_pingjia
)
val SERVER_OPERATE = arrayOf("待付款", "待服务", "服务中", "评价")
val USER_OPERATE = arrayOf("账号安全", "账号绑定", "支付管理", "地址管理", "系统设置")
@@ -37,6 +35,11 @@
val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+ val ROBOT_FUNCTION_ARRAY = arrayOf("自动清扫", "定点清扫", "沿边打扫", "自动回充", "寻回", "定时", "清扫记录", "设置")
+ val ROBOT_FUNCTION_IMAGE = intArrayOf(
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu,
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu
+ )
//TODO 模拟数据
val TEST_IMAGE = intArrayOf(
diff --git a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
index 1d2618f..9a1c984 100644
--- a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -24,14 +24,6 @@
import com.tuya.smart.sdk.api.ITuyaDevice
import com.tuya.smart.sdk.api.ITuyaOta
import kotlinx.android.synthetic.main.activity_air_cleaner.*
-import kotlinx.android.synthetic.main.activity_air_cleaner.deviceLogoView
-import kotlinx.android.synthetic.main.activity_air_cleaner.highSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.lowSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.modeRadioGroup
-import kotlinx.android.synthetic.main.activity_air_cleaner.rootView
-import kotlinx.android.synthetic.main.activity_air_cleaner.turnOffRadioButton
-import kotlinx.android.synthetic.main.activity_water_dispenser.*
-import kotlinx.android.synthetic.main.fragment_device_rangehood_control.*
import kotlinx.android.synthetic.main.include_device_title.*
/**
@@ -122,7 +114,7 @@
if (c) {
turnOffRadioButton.disableView()
modeRadioGroup.disableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -138,7 +130,7 @@
} else {
turnOffRadioButton.enableView()
modeRadioGroup.enableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -238,7 +230,7 @@
}
1 -> deviceInstance.removeDevice(object : IResultCallback {
override fun onError(code: String?, error: String?) {
- Log.d("Casic", "WaterDispenserActivity => onError: $error")
+ Log.d("Casic", "AirCleanerActivity => onError: $error")
}
override fun onSuccess() {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2db3a08..4004755 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -84,6 +84,9 @@
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index fae6114..d38507a 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -127,6 +127,7 @@
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
"kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index a226546..98971ce 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -182,6 +182,10 @@
//空气净化器
requireContext().navigatePageTo(deviceModel.devId)
}
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
index cad6d98..865e6a7 100644
--- a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
@@ -40,24 +40,24 @@
override fun initEvent() {
//开关机
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
- }
-
- lowSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
}
}
- highSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
- }
- }
-
- maxSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ speedRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.lowSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ }
+ R.id.mediumSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
+ }
+ R.id.highSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index 2a8c6e9..e0b0397 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -32,7 +32,6 @@
private var currentProgress = 0
private val timeScope = intArrayOf(30, 60, 120, 180)
private var currentTimeProgress = 0
- private var isDeviceWorking = false
override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control
@@ -93,7 +92,11 @@
override fun initEvent() {
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
kitchenRadioButton.setOnClickListener {
@@ -140,24 +143,21 @@
}
})
- //单次
- onceRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(isChecked))
- }
-
- //点动
- initiateRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(isChecked))
- }
-
- //预约
- reservationRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(isChecked))
- }
-
- //增压
- pressureRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(isChecked))
+ functionRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.onceRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(true))
+ }
+ R.id.initiateRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(true))
+ }
+ R.id.reservationRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(true))
+ }
+ R.id.pressureRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(true))
+ }
+ }
}
//单次参数设定
@@ -182,8 +182,7 @@
parseObject.keys.forEach {
when (it) {
"1" -> {//开关机
- isDeviceWorking = parseObject[it] as Boolean
- turnOffRadioButton.isChecked = isDeviceWorking
+ turnOffRadioButton.isChecked = parseObject[it] as Boolean
}
"2" -> {
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index aeb638b..e9ceee9 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -23,10 +23,8 @@
val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后")
val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件")
val SERVER_IMAGE = intArrayOf(
- R.drawable.ic_daifukuan,
- R.drawable.ic_daifuwu,
- R.drawable.ic_fuwuzhong,
- R.drawable.ic_pingjia
+ R.drawable.ic_daifukuan, R.drawable.ic_daifuwu,
+ R.drawable.ic_fuwuzhong, R.drawable.ic_pingjia
)
val SERVER_OPERATE = arrayOf("待付款", "待服务", "服务中", "评价")
val USER_OPERATE = arrayOf("账号安全", "账号绑定", "支付管理", "地址管理", "系统设置")
@@ -37,6 +35,11 @@
val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+ val ROBOT_FUNCTION_ARRAY = arrayOf("自动清扫", "定点清扫", "沿边打扫", "自动回充", "寻回", "定时", "清扫记录", "设置")
+ val ROBOT_FUNCTION_IMAGE = intArrayOf(
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu,
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu
+ )
//TODO 模拟数据
val TEST_IMAGE = intArrayOf(
diff --git a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
index 1d2618f..9a1c984 100644
--- a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -24,14 +24,6 @@
import com.tuya.smart.sdk.api.ITuyaDevice
import com.tuya.smart.sdk.api.ITuyaOta
import kotlinx.android.synthetic.main.activity_air_cleaner.*
-import kotlinx.android.synthetic.main.activity_air_cleaner.deviceLogoView
-import kotlinx.android.synthetic.main.activity_air_cleaner.highSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.lowSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.modeRadioGroup
-import kotlinx.android.synthetic.main.activity_air_cleaner.rootView
-import kotlinx.android.synthetic.main.activity_air_cleaner.turnOffRadioButton
-import kotlinx.android.synthetic.main.activity_water_dispenser.*
-import kotlinx.android.synthetic.main.fragment_device_rangehood_control.*
import kotlinx.android.synthetic.main.include_device_title.*
/**
@@ -122,7 +114,7 @@
if (c) {
turnOffRadioButton.disableView()
modeRadioGroup.disableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -138,7 +130,7 @@
} else {
turnOffRadioButton.enableView()
modeRadioGroup.enableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -238,7 +230,7 @@
}
1 -> deviceInstance.removeDevice(object : IResultCallback {
override fun onError(code: String?, error: String?) {
- Log.d("Casic", "WaterDispenserActivity => onError: $error")
+ Log.d("Casic", "AirCleanerActivity => onError: $error")
}
override fun onSuccess() {
diff --git a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
index 68a0785..09f0e3a 100644
--- a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
@@ -12,7 +12,6 @@
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
@@ -60,13 +59,12 @@
"查询设备信息失败,请检查设备是否已离线".show(this)
return
}
- Log.d(kTag, deviceBean.dps.toJson())
titleView.text = deviceBean.toChineseTypeName()
deviceBean.dpName.entries.forEach {
when (it.key) {
- "1" -> firstNameView.text = it.value
- "2" -> secondNameView.text = it.value
- "3" -> thirdNameView.text = it.value
+ "1" -> firstTurnOffCheckBox.text = it.value
+ "2" -> secondTurnOffCheckBox.text = it.value
+ "3" -> thirdTurnOffCheckBox.text = it.value
}
}
deviceBean.dps.entries.forEach {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2db3a08..4004755 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -84,6 +84,9 @@
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index fae6114..d38507a 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -127,6 +127,7 @@
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
"kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index a226546..98971ce 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -182,6 +182,10 @@
//空气净化器
requireContext().navigatePageTo(deviceModel.devId)
}
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
index cad6d98..865e6a7 100644
--- a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
@@ -40,24 +40,24 @@
override fun initEvent() {
//开关机
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
- }
-
- lowSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
}
}
- highSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
- }
- }
-
- maxSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ speedRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.lowSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ }
+ R.id.mediumSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
+ }
+ R.id.highSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index 2a8c6e9..e0b0397 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -32,7 +32,6 @@
private var currentProgress = 0
private val timeScope = intArrayOf(30, 60, 120, 180)
private var currentTimeProgress = 0
- private var isDeviceWorking = false
override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control
@@ -93,7 +92,11 @@
override fun initEvent() {
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
kitchenRadioButton.setOnClickListener {
@@ -140,24 +143,21 @@
}
})
- //单次
- onceRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(isChecked))
- }
-
- //点动
- initiateRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(isChecked))
- }
-
- //预约
- reservationRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(isChecked))
- }
-
- //增压
- pressureRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(isChecked))
+ functionRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.onceRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(true))
+ }
+ R.id.initiateRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(true))
+ }
+ R.id.reservationRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(true))
+ }
+ R.id.pressureRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(true))
+ }
+ }
}
//单次参数设定
@@ -182,8 +182,7 @@
parseObject.keys.forEach {
when (it) {
"1" -> {//开关机
- isDeviceWorking = parseObject[it] as Boolean
- turnOffRadioButton.isChecked = isDeviceWorking
+ turnOffRadioButton.isChecked = parseObject[it] as Boolean
}
"2" -> {
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index aeb638b..e9ceee9 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -23,10 +23,8 @@
val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后")
val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件")
val SERVER_IMAGE = intArrayOf(
- R.drawable.ic_daifukuan,
- R.drawable.ic_daifuwu,
- R.drawable.ic_fuwuzhong,
- R.drawable.ic_pingjia
+ R.drawable.ic_daifukuan, R.drawable.ic_daifuwu,
+ R.drawable.ic_fuwuzhong, R.drawable.ic_pingjia
)
val SERVER_OPERATE = arrayOf("待付款", "待服务", "服务中", "评价")
val USER_OPERATE = arrayOf("账号安全", "账号绑定", "支付管理", "地址管理", "系统设置")
@@ -37,6 +35,11 @@
val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+ val ROBOT_FUNCTION_ARRAY = arrayOf("自动清扫", "定点清扫", "沿边打扫", "自动回充", "寻回", "定时", "清扫记录", "设置")
+ val ROBOT_FUNCTION_IMAGE = intArrayOf(
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu,
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu
+ )
//TODO 模拟数据
val TEST_IMAGE = intArrayOf(
diff --git a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
index 1d2618f..9a1c984 100644
--- a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -24,14 +24,6 @@
import com.tuya.smart.sdk.api.ITuyaDevice
import com.tuya.smart.sdk.api.ITuyaOta
import kotlinx.android.synthetic.main.activity_air_cleaner.*
-import kotlinx.android.synthetic.main.activity_air_cleaner.deviceLogoView
-import kotlinx.android.synthetic.main.activity_air_cleaner.highSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.lowSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.modeRadioGroup
-import kotlinx.android.synthetic.main.activity_air_cleaner.rootView
-import kotlinx.android.synthetic.main.activity_air_cleaner.turnOffRadioButton
-import kotlinx.android.synthetic.main.activity_water_dispenser.*
-import kotlinx.android.synthetic.main.fragment_device_rangehood_control.*
import kotlinx.android.synthetic.main.include_device_title.*
/**
@@ -122,7 +114,7 @@
if (c) {
turnOffRadioButton.disableView()
modeRadioGroup.disableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -138,7 +130,7 @@
} else {
turnOffRadioButton.enableView()
modeRadioGroup.enableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -238,7 +230,7 @@
}
1 -> deviceInstance.removeDevice(object : IResultCallback {
override fun onError(code: String?, error: String?) {
- Log.d("Casic", "WaterDispenserActivity => onError: $error")
+ Log.d("Casic", "AirCleanerActivity => onError: $error")
}
override fun onSuccess() {
diff --git a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
index 68a0785..09f0e3a 100644
--- a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
@@ -12,7 +12,6 @@
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
@@ -60,13 +59,12 @@
"查询设备信息失败,请检查设备是否已离线".show(this)
return
}
- Log.d(kTag, deviceBean.dps.toJson())
titleView.text = deviceBean.toChineseTypeName()
deviceBean.dpName.entries.forEach {
when (it.key) {
- "1" -> firstNameView.text = it.value
- "2" -> secondNameView.text = it.value
- "3" -> thirdNameView.text = it.value
+ "1" -> firstTurnOffCheckBox.text = it.value
+ "2" -> secondTurnOffCheckBox.text = it.value
+ "3" -> thirdTurnOffCheckBox.text = it.value
}
}
deviceBean.dps.entries.forEach {
diff --git a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
index 4ea83fc..e613a61 100644
--- a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
@@ -135,8 +135,12 @@
.build().show()
}
- turnOffCheckBox.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(isChecked))
+ turnOffCheckBox.setOnClickListener {
+ if (turnOffCheckBox.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2db3a08..4004755 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -84,6 +84,9 @@
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index fae6114..d38507a 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -127,6 +127,7 @@
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
"kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index a226546..98971ce 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -182,6 +182,10 @@
//空气净化器
requireContext().navigatePageTo(deviceModel.devId)
}
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
index cad6d98..865e6a7 100644
--- a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
@@ -40,24 +40,24 @@
override fun initEvent() {
//开关机
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
- }
-
- lowSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
}
}
- highSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
- }
- }
-
- maxSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ speedRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.lowSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ }
+ R.id.mediumSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
+ }
+ R.id.highSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index 2a8c6e9..e0b0397 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -32,7 +32,6 @@
private var currentProgress = 0
private val timeScope = intArrayOf(30, 60, 120, 180)
private var currentTimeProgress = 0
- private var isDeviceWorking = false
override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control
@@ -93,7 +92,11 @@
override fun initEvent() {
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
kitchenRadioButton.setOnClickListener {
@@ -140,24 +143,21 @@
}
})
- //单次
- onceRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(isChecked))
- }
-
- //点动
- initiateRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(isChecked))
- }
-
- //预约
- reservationRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(isChecked))
- }
-
- //增压
- pressureRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(isChecked))
+ functionRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.onceRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(true))
+ }
+ R.id.initiateRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(true))
+ }
+ R.id.reservationRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(true))
+ }
+ R.id.pressureRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(true))
+ }
+ }
}
//单次参数设定
@@ -182,8 +182,7 @@
parseObject.keys.forEach {
when (it) {
"1" -> {//开关机
- isDeviceWorking = parseObject[it] as Boolean
- turnOffRadioButton.isChecked = isDeviceWorking
+ turnOffRadioButton.isChecked = parseObject[it] as Boolean
}
"2" -> {
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index aeb638b..e9ceee9 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -23,10 +23,8 @@
val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后")
val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件")
val SERVER_IMAGE = intArrayOf(
- R.drawable.ic_daifukuan,
- R.drawable.ic_daifuwu,
- R.drawable.ic_fuwuzhong,
- R.drawable.ic_pingjia
+ R.drawable.ic_daifukuan, R.drawable.ic_daifuwu,
+ R.drawable.ic_fuwuzhong, R.drawable.ic_pingjia
)
val SERVER_OPERATE = arrayOf("待付款", "待服务", "服务中", "评价")
val USER_OPERATE = arrayOf("账号安全", "账号绑定", "支付管理", "地址管理", "系统设置")
@@ -37,6 +35,11 @@
val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+ val ROBOT_FUNCTION_ARRAY = arrayOf("自动清扫", "定点清扫", "沿边打扫", "自动回充", "寻回", "定时", "清扫记录", "设置")
+ val ROBOT_FUNCTION_IMAGE = intArrayOf(
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu,
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu
+ )
//TODO 模拟数据
val TEST_IMAGE = intArrayOf(
diff --git a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
index 1d2618f..9a1c984 100644
--- a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -24,14 +24,6 @@
import com.tuya.smart.sdk.api.ITuyaDevice
import com.tuya.smart.sdk.api.ITuyaOta
import kotlinx.android.synthetic.main.activity_air_cleaner.*
-import kotlinx.android.synthetic.main.activity_air_cleaner.deviceLogoView
-import kotlinx.android.synthetic.main.activity_air_cleaner.highSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.lowSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.modeRadioGroup
-import kotlinx.android.synthetic.main.activity_air_cleaner.rootView
-import kotlinx.android.synthetic.main.activity_air_cleaner.turnOffRadioButton
-import kotlinx.android.synthetic.main.activity_water_dispenser.*
-import kotlinx.android.synthetic.main.fragment_device_rangehood_control.*
import kotlinx.android.synthetic.main.include_device_title.*
/**
@@ -122,7 +114,7 @@
if (c) {
turnOffRadioButton.disableView()
modeRadioGroup.disableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -138,7 +130,7 @@
} else {
turnOffRadioButton.enableView()
modeRadioGroup.enableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -238,7 +230,7 @@
}
1 -> deviceInstance.removeDevice(object : IResultCallback {
override fun onError(code: String?, error: String?) {
- Log.d("Casic", "WaterDispenserActivity => onError: $error")
+ Log.d("Casic", "AirCleanerActivity => onError: $error")
}
override fun onSuccess() {
diff --git a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
index 68a0785..09f0e3a 100644
--- a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
@@ -12,7 +12,6 @@
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
@@ -60,13 +59,12 @@
"查询设备信息失败,请检查设备是否已离线".show(this)
return
}
- Log.d(kTag, deviceBean.dps.toJson())
titleView.text = deviceBean.toChineseTypeName()
deviceBean.dpName.entries.forEach {
when (it.key) {
- "1" -> firstNameView.text = it.value
- "2" -> secondNameView.text = it.value
- "3" -> thirdNameView.text = it.value
+ "1" -> firstTurnOffCheckBox.text = it.value
+ "2" -> secondTurnOffCheckBox.text = it.value
+ "3" -> thirdTurnOffCheckBox.text = it.value
}
}
deviceBean.dps.entries.forEach {
diff --git a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
index 4ea83fc..e613a61 100644
--- a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
@@ -135,8 +135,12 @@
.build().show()
}
- turnOffCheckBox.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(isChecked))
+ turnOffCheckBox.setOnClickListener {
+ if (turnOffCheckBox.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
new file mode 100644
index 0000000..2abc2f3
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
@@ -0,0 +1,203 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.alibaba.fastjson.JSONObject
+import com.casic.br.R
+import com.casic.br.adapter.IconTextGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.LocaleConstant
+import com.casic.br.utils.TuyaDeviceListener
+import com.casic.br.view.device.robot.RobotSettingsActivity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
+import com.tuya.smart.android.device.bean.UpgradeInfoBean
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.sdk.api.IGetOtaInfoCallback
+import com.tuya.smart.sdk.api.IResultCallback
+import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.api.ITuyaOta
+import kotlinx.android.synthetic.main.activity_sweeping_robot.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 智能扫地机器人
+ * TODO 数据上报暂缓
+ * */
+class SweepingRobotActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@SweepingRobotActivity
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_sweeping_robot
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ Log.d("Casic", "SweepingRobotActivity => initData: $deviceId")
+ tuyaOTA = TuyaHomeSdk.newOTAInstance(deviceId)
+ //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
+ deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
+
+ val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId)
+ if (deviceBean == null) {
+ "查询设备信息失败,请检查设备是否已离线".show(this)
+ return
+ }
+ titleView.text = deviceBean.toChineseTypeName()
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onDpUpdate: $dpStr")
+ val parseObject = JSONObject.parseObject(dpStr)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {}
+ }
+ }
+ }
+ })
+
+ val robotGridAdapter = IconTextGridAdapter(
+ this, LocaleConstant.ROBOT_FUNCTION_IMAGE, LocaleConstant.ROBOT_FUNCTION_ARRAY
+ )
+ functionRecyclerView.adapter = robotGridAdapter
+ robotGridAdapter.setOnGridItemClickListener(object :
+ IconTextGridAdapter.OnGridItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+
+ }
+ 1 -> {
+
+ }
+ 2 -> {
+
+ }
+ 3 -> {
+
+ }
+ 4 -> {
+
+ }
+ 5 -> {
+ "此功能待后续完善".show(context)
+ }
+ 6 -> {
+ "此功能待后续完善".show(context)
+ }
+ 7 -> {
+ navigatePageTo()
+ }
+ }
+ }
+ })
+ }
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setItemTextColor(Color.BLUE)
+ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
+ override fun onActionItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ tuyaOTA.getOtaInfo(object : IGetOtaInfoCallback {
+ override fun onSuccess(upgradeInfoBeans: MutableList?) {
+ if (upgradeInfoBeans.isNullOrEmpty()) {
+ "无新版本可用".show(context)
+ }
+ val mainModel = upgradeInfoBeans!![0]
+ when (mainModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "主联网模组无新版本可用".show(context)
+ }
+
+ val mcuModel = upgradeInfoBeans[1]
+ when (mcuModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "MCU模块无新版本可用".show(context)
+ }
+ }
+
+ override fun onFailure(code: String?, error: String?) {
+
+ }
+ })
+ }
+ 1 -> deviceInstance.removeDevice(object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onError: $error")
+ }
+
+ override fun onSuccess() {
+ finish()
+ }
+ })
+ }
+ }
+ })
+ .build().show()
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //每次获取焦点都查询设备的开关机状态
+ CommandManager.getTuyaDp(deviceInstance, "1")
+ }
+
+ private fun updateVersion() {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("版本升级")
+ .setMessage("有新版本可以升级,是否升级?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+ tuyaOTA.startOta()
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2db3a08..4004755 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -84,6 +84,9 @@
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index fae6114..d38507a 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -127,6 +127,7 @@
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
"kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index a226546..98971ce 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -182,6 +182,10 @@
//空气净化器
requireContext().navigatePageTo(deviceModel.devId)
}
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
index cad6d98..865e6a7 100644
--- a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
@@ -40,24 +40,24 @@
override fun initEvent() {
//开关机
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
- }
-
- lowSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
}
}
- highSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
- }
- }
-
- maxSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ speedRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.lowSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ }
+ R.id.mediumSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
+ }
+ R.id.highSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index 2a8c6e9..e0b0397 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -32,7 +32,6 @@
private var currentProgress = 0
private val timeScope = intArrayOf(30, 60, 120, 180)
private var currentTimeProgress = 0
- private var isDeviceWorking = false
override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control
@@ -93,7 +92,11 @@
override fun initEvent() {
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
kitchenRadioButton.setOnClickListener {
@@ -140,24 +143,21 @@
}
})
- //单次
- onceRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(isChecked))
- }
-
- //点动
- initiateRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(isChecked))
- }
-
- //预约
- reservationRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(isChecked))
- }
-
- //增压
- pressureRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(isChecked))
+ functionRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.onceRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(true))
+ }
+ R.id.initiateRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(true))
+ }
+ R.id.reservationRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(true))
+ }
+ R.id.pressureRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(true))
+ }
+ }
}
//单次参数设定
@@ -182,8 +182,7 @@
parseObject.keys.forEach {
when (it) {
"1" -> {//开关机
- isDeviceWorking = parseObject[it] as Boolean
- turnOffRadioButton.isChecked = isDeviceWorking
+ turnOffRadioButton.isChecked = parseObject[it] as Boolean
}
"2" -> {
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index aeb638b..e9ceee9 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -23,10 +23,8 @@
val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后")
val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件")
val SERVER_IMAGE = intArrayOf(
- R.drawable.ic_daifukuan,
- R.drawable.ic_daifuwu,
- R.drawable.ic_fuwuzhong,
- R.drawable.ic_pingjia
+ R.drawable.ic_daifukuan, R.drawable.ic_daifuwu,
+ R.drawable.ic_fuwuzhong, R.drawable.ic_pingjia
)
val SERVER_OPERATE = arrayOf("待付款", "待服务", "服务中", "评价")
val USER_OPERATE = arrayOf("账号安全", "账号绑定", "支付管理", "地址管理", "系统设置")
@@ -37,6 +35,11 @@
val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+ val ROBOT_FUNCTION_ARRAY = arrayOf("自动清扫", "定点清扫", "沿边打扫", "自动回充", "寻回", "定时", "清扫记录", "设置")
+ val ROBOT_FUNCTION_IMAGE = intArrayOf(
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu,
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu
+ )
//TODO 模拟数据
val TEST_IMAGE = intArrayOf(
diff --git a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
index 1d2618f..9a1c984 100644
--- a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -24,14 +24,6 @@
import com.tuya.smart.sdk.api.ITuyaDevice
import com.tuya.smart.sdk.api.ITuyaOta
import kotlinx.android.synthetic.main.activity_air_cleaner.*
-import kotlinx.android.synthetic.main.activity_air_cleaner.deviceLogoView
-import kotlinx.android.synthetic.main.activity_air_cleaner.highSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.lowSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.modeRadioGroup
-import kotlinx.android.synthetic.main.activity_air_cleaner.rootView
-import kotlinx.android.synthetic.main.activity_air_cleaner.turnOffRadioButton
-import kotlinx.android.synthetic.main.activity_water_dispenser.*
-import kotlinx.android.synthetic.main.fragment_device_rangehood_control.*
import kotlinx.android.synthetic.main.include_device_title.*
/**
@@ -122,7 +114,7 @@
if (c) {
turnOffRadioButton.disableView()
modeRadioGroup.disableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -138,7 +130,7 @@
} else {
turnOffRadioButton.enableView()
modeRadioGroup.enableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -238,7 +230,7 @@
}
1 -> deviceInstance.removeDevice(object : IResultCallback {
override fun onError(code: String?, error: String?) {
- Log.d("Casic", "WaterDispenserActivity => onError: $error")
+ Log.d("Casic", "AirCleanerActivity => onError: $error")
}
override fun onSuccess() {
diff --git a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
index 68a0785..09f0e3a 100644
--- a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
@@ -12,7 +12,6 @@
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
@@ -60,13 +59,12 @@
"查询设备信息失败,请检查设备是否已离线".show(this)
return
}
- Log.d(kTag, deviceBean.dps.toJson())
titleView.text = deviceBean.toChineseTypeName()
deviceBean.dpName.entries.forEach {
when (it.key) {
- "1" -> firstNameView.text = it.value
- "2" -> secondNameView.text = it.value
- "3" -> thirdNameView.text = it.value
+ "1" -> firstTurnOffCheckBox.text = it.value
+ "2" -> secondTurnOffCheckBox.text = it.value
+ "3" -> thirdTurnOffCheckBox.text = it.value
}
}
deviceBean.dps.entries.forEach {
diff --git a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
index 4ea83fc..e613a61 100644
--- a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
@@ -135,8 +135,12 @@
.build().show()
}
- turnOffCheckBox.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(isChecked))
+ turnOffCheckBox.setOnClickListener {
+ if (turnOffCheckBox.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
new file mode 100644
index 0000000..2abc2f3
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
@@ -0,0 +1,203 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.alibaba.fastjson.JSONObject
+import com.casic.br.R
+import com.casic.br.adapter.IconTextGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.LocaleConstant
+import com.casic.br.utils.TuyaDeviceListener
+import com.casic.br.view.device.robot.RobotSettingsActivity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
+import com.tuya.smart.android.device.bean.UpgradeInfoBean
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.sdk.api.IGetOtaInfoCallback
+import com.tuya.smart.sdk.api.IResultCallback
+import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.api.ITuyaOta
+import kotlinx.android.synthetic.main.activity_sweeping_robot.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 智能扫地机器人
+ * TODO 数据上报暂缓
+ * */
+class SweepingRobotActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@SweepingRobotActivity
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_sweeping_robot
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ Log.d("Casic", "SweepingRobotActivity => initData: $deviceId")
+ tuyaOTA = TuyaHomeSdk.newOTAInstance(deviceId)
+ //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
+ deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
+
+ val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId)
+ if (deviceBean == null) {
+ "查询设备信息失败,请检查设备是否已离线".show(this)
+ return
+ }
+ titleView.text = deviceBean.toChineseTypeName()
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onDpUpdate: $dpStr")
+ val parseObject = JSONObject.parseObject(dpStr)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {}
+ }
+ }
+ }
+ })
+
+ val robotGridAdapter = IconTextGridAdapter(
+ this, LocaleConstant.ROBOT_FUNCTION_IMAGE, LocaleConstant.ROBOT_FUNCTION_ARRAY
+ )
+ functionRecyclerView.adapter = robotGridAdapter
+ robotGridAdapter.setOnGridItemClickListener(object :
+ IconTextGridAdapter.OnGridItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+
+ }
+ 1 -> {
+
+ }
+ 2 -> {
+
+ }
+ 3 -> {
+
+ }
+ 4 -> {
+
+ }
+ 5 -> {
+ "此功能待后续完善".show(context)
+ }
+ 6 -> {
+ "此功能待后续完善".show(context)
+ }
+ 7 -> {
+ navigatePageTo()
+ }
+ }
+ }
+ })
+ }
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setItemTextColor(Color.BLUE)
+ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
+ override fun onActionItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ tuyaOTA.getOtaInfo(object : IGetOtaInfoCallback {
+ override fun onSuccess(upgradeInfoBeans: MutableList?) {
+ if (upgradeInfoBeans.isNullOrEmpty()) {
+ "无新版本可用".show(context)
+ }
+ val mainModel = upgradeInfoBeans!![0]
+ when (mainModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "主联网模组无新版本可用".show(context)
+ }
+
+ val mcuModel = upgradeInfoBeans[1]
+ when (mcuModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "MCU模块无新版本可用".show(context)
+ }
+ }
+
+ override fun onFailure(code: String?, error: String?) {
+
+ }
+ })
+ }
+ 1 -> deviceInstance.removeDevice(object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onError: $error")
+ }
+
+ override fun onSuccess() {
+ finish()
+ }
+ })
+ }
+ }
+ })
+ .build().show()
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //每次获取焦点都查询设备的开关机状态
+ CommandManager.getTuyaDp(deviceInstance, "1")
+ }
+
+ private fun updateVersion() {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("版本升级")
+ .setMessage("有新版本可以升级,是否升级?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+ tuyaOTA.startOta()
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
new file mode 100644
index 0000000..532642f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
@@ -0,0 +1,33 @@
+package com.casic.br.view.device.robot
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_left_back_title.*
+
+class AddTimeConfigActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_robot_add_time
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainBackColor.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "定时"
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2db3a08..4004755 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -84,6 +84,9 @@
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index fae6114..d38507a 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -127,6 +127,7 @@
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
"kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index a226546..98971ce 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -182,6 +182,10 @@
//空气净化器
requireContext().navigatePageTo(deviceModel.devId)
}
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
index cad6d98..865e6a7 100644
--- a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
@@ -40,24 +40,24 @@
override fun initEvent() {
//开关机
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
- }
-
- lowSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
}
}
- highSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
- }
- }
-
- maxSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ speedRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.lowSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ }
+ R.id.mediumSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
+ }
+ R.id.highSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index 2a8c6e9..e0b0397 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -32,7 +32,6 @@
private var currentProgress = 0
private val timeScope = intArrayOf(30, 60, 120, 180)
private var currentTimeProgress = 0
- private var isDeviceWorking = false
override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control
@@ -93,7 +92,11 @@
override fun initEvent() {
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
kitchenRadioButton.setOnClickListener {
@@ -140,24 +143,21 @@
}
})
- //单次
- onceRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(isChecked))
- }
-
- //点动
- initiateRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(isChecked))
- }
-
- //预约
- reservationRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(isChecked))
- }
-
- //增压
- pressureRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(isChecked))
+ functionRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.onceRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(true))
+ }
+ R.id.initiateRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(true))
+ }
+ R.id.reservationRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(true))
+ }
+ R.id.pressureRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(true))
+ }
+ }
}
//单次参数设定
@@ -182,8 +182,7 @@
parseObject.keys.forEach {
when (it) {
"1" -> {//开关机
- isDeviceWorking = parseObject[it] as Boolean
- turnOffRadioButton.isChecked = isDeviceWorking
+ turnOffRadioButton.isChecked = parseObject[it] as Boolean
}
"2" -> {
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index aeb638b..e9ceee9 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -23,10 +23,8 @@
val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后")
val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件")
val SERVER_IMAGE = intArrayOf(
- R.drawable.ic_daifukuan,
- R.drawable.ic_daifuwu,
- R.drawable.ic_fuwuzhong,
- R.drawable.ic_pingjia
+ R.drawable.ic_daifukuan, R.drawable.ic_daifuwu,
+ R.drawable.ic_fuwuzhong, R.drawable.ic_pingjia
)
val SERVER_OPERATE = arrayOf("待付款", "待服务", "服务中", "评价")
val USER_OPERATE = arrayOf("账号安全", "账号绑定", "支付管理", "地址管理", "系统设置")
@@ -37,6 +35,11 @@
val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+ val ROBOT_FUNCTION_ARRAY = arrayOf("自动清扫", "定点清扫", "沿边打扫", "自动回充", "寻回", "定时", "清扫记录", "设置")
+ val ROBOT_FUNCTION_IMAGE = intArrayOf(
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu,
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu
+ )
//TODO 模拟数据
val TEST_IMAGE = intArrayOf(
diff --git a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
index 1d2618f..9a1c984 100644
--- a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -24,14 +24,6 @@
import com.tuya.smart.sdk.api.ITuyaDevice
import com.tuya.smart.sdk.api.ITuyaOta
import kotlinx.android.synthetic.main.activity_air_cleaner.*
-import kotlinx.android.synthetic.main.activity_air_cleaner.deviceLogoView
-import kotlinx.android.synthetic.main.activity_air_cleaner.highSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.lowSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.modeRadioGroup
-import kotlinx.android.synthetic.main.activity_air_cleaner.rootView
-import kotlinx.android.synthetic.main.activity_air_cleaner.turnOffRadioButton
-import kotlinx.android.synthetic.main.activity_water_dispenser.*
-import kotlinx.android.synthetic.main.fragment_device_rangehood_control.*
import kotlinx.android.synthetic.main.include_device_title.*
/**
@@ -122,7 +114,7 @@
if (c) {
turnOffRadioButton.disableView()
modeRadioGroup.disableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -138,7 +130,7 @@
} else {
turnOffRadioButton.enableView()
modeRadioGroup.enableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -238,7 +230,7 @@
}
1 -> deviceInstance.removeDevice(object : IResultCallback {
override fun onError(code: String?, error: String?) {
- Log.d("Casic", "WaterDispenserActivity => onError: $error")
+ Log.d("Casic", "AirCleanerActivity => onError: $error")
}
override fun onSuccess() {
diff --git a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
index 68a0785..09f0e3a 100644
--- a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
@@ -12,7 +12,6 @@
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
@@ -60,13 +59,12 @@
"查询设备信息失败,请检查设备是否已离线".show(this)
return
}
- Log.d(kTag, deviceBean.dps.toJson())
titleView.text = deviceBean.toChineseTypeName()
deviceBean.dpName.entries.forEach {
when (it.key) {
- "1" -> firstNameView.text = it.value
- "2" -> secondNameView.text = it.value
- "3" -> thirdNameView.text = it.value
+ "1" -> firstTurnOffCheckBox.text = it.value
+ "2" -> secondTurnOffCheckBox.text = it.value
+ "3" -> thirdTurnOffCheckBox.text = it.value
}
}
deviceBean.dps.entries.forEach {
diff --git a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
index 4ea83fc..e613a61 100644
--- a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
@@ -135,8 +135,12 @@
.build().show()
}
- turnOffCheckBox.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(isChecked))
+ turnOffCheckBox.setOnClickListener {
+ if (turnOffCheckBox.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
new file mode 100644
index 0000000..2abc2f3
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
@@ -0,0 +1,203 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.alibaba.fastjson.JSONObject
+import com.casic.br.R
+import com.casic.br.adapter.IconTextGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.LocaleConstant
+import com.casic.br.utils.TuyaDeviceListener
+import com.casic.br.view.device.robot.RobotSettingsActivity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
+import com.tuya.smart.android.device.bean.UpgradeInfoBean
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.sdk.api.IGetOtaInfoCallback
+import com.tuya.smart.sdk.api.IResultCallback
+import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.api.ITuyaOta
+import kotlinx.android.synthetic.main.activity_sweeping_robot.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 智能扫地机器人
+ * TODO 数据上报暂缓
+ * */
+class SweepingRobotActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@SweepingRobotActivity
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_sweeping_robot
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ Log.d("Casic", "SweepingRobotActivity => initData: $deviceId")
+ tuyaOTA = TuyaHomeSdk.newOTAInstance(deviceId)
+ //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
+ deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
+
+ val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId)
+ if (deviceBean == null) {
+ "查询设备信息失败,请检查设备是否已离线".show(this)
+ return
+ }
+ titleView.text = deviceBean.toChineseTypeName()
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onDpUpdate: $dpStr")
+ val parseObject = JSONObject.parseObject(dpStr)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {}
+ }
+ }
+ }
+ })
+
+ val robotGridAdapter = IconTextGridAdapter(
+ this, LocaleConstant.ROBOT_FUNCTION_IMAGE, LocaleConstant.ROBOT_FUNCTION_ARRAY
+ )
+ functionRecyclerView.adapter = robotGridAdapter
+ robotGridAdapter.setOnGridItemClickListener(object :
+ IconTextGridAdapter.OnGridItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+
+ }
+ 1 -> {
+
+ }
+ 2 -> {
+
+ }
+ 3 -> {
+
+ }
+ 4 -> {
+
+ }
+ 5 -> {
+ "此功能待后续完善".show(context)
+ }
+ 6 -> {
+ "此功能待后续完善".show(context)
+ }
+ 7 -> {
+ navigatePageTo()
+ }
+ }
+ }
+ })
+ }
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setItemTextColor(Color.BLUE)
+ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
+ override fun onActionItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ tuyaOTA.getOtaInfo(object : IGetOtaInfoCallback {
+ override fun onSuccess(upgradeInfoBeans: MutableList?) {
+ if (upgradeInfoBeans.isNullOrEmpty()) {
+ "无新版本可用".show(context)
+ }
+ val mainModel = upgradeInfoBeans!![0]
+ when (mainModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "主联网模组无新版本可用".show(context)
+ }
+
+ val mcuModel = upgradeInfoBeans[1]
+ when (mcuModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "MCU模块无新版本可用".show(context)
+ }
+ }
+
+ override fun onFailure(code: String?, error: String?) {
+
+ }
+ })
+ }
+ 1 -> deviceInstance.removeDevice(object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onError: $error")
+ }
+
+ override fun onSuccess() {
+ finish()
+ }
+ })
+ }
+ }
+ })
+ .build().show()
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //每次获取焦点都查询设备的开关机状态
+ CommandManager.getTuyaDp(deviceInstance, "1")
+ }
+
+ private fun updateVersion() {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("版本升级")
+ .setMessage("有新版本可以升级,是否升级?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+ tuyaOTA.startOta()
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
new file mode 100644
index 0000000..532642f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
@@ -0,0 +1,33 @@
+package com.casic.br.view.device.robot
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_left_back_title.*
+
+class AddTimeConfigActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_robot_add_time
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainBackColor.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "定时"
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt b/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt
new file mode 100644
index 0000000..9552b0b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt
@@ -0,0 +1,53 @@
+package com.casic.br.view.device.robot
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_robot_settings.*
+import kotlinx.android.synthetic.main.include_left_back_title.*
+
+class RobotSettingsActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_robot_settings
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainBackColor.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "耗材维护"
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+ clearBatteryButton.setOnClickListener {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("提示")
+ .setMessage("是否清除记录?如果没有更换耗材而清除记录将会导致数据错误")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2db3a08..4004755 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -84,6 +84,9 @@
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index fae6114..d38507a 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -127,6 +127,7 @@
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
"kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index a226546..98971ce 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -182,6 +182,10 @@
//空气净化器
requireContext().navigatePageTo(deviceModel.devId)
}
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
index cad6d98..865e6a7 100644
--- a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
@@ -40,24 +40,24 @@
override fun initEvent() {
//开关机
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
- }
-
- lowSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
}
}
- highSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
- }
- }
-
- maxSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ speedRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.lowSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ }
+ R.id.mediumSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
+ }
+ R.id.highSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index 2a8c6e9..e0b0397 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -32,7 +32,6 @@
private var currentProgress = 0
private val timeScope = intArrayOf(30, 60, 120, 180)
private var currentTimeProgress = 0
- private var isDeviceWorking = false
override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control
@@ -93,7 +92,11 @@
override fun initEvent() {
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
kitchenRadioButton.setOnClickListener {
@@ -140,24 +143,21 @@
}
})
- //单次
- onceRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(isChecked))
- }
-
- //点动
- initiateRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(isChecked))
- }
-
- //预约
- reservationRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(isChecked))
- }
-
- //增压
- pressureRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(isChecked))
+ functionRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.onceRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(true))
+ }
+ R.id.initiateRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(true))
+ }
+ R.id.reservationRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(true))
+ }
+ R.id.pressureRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(true))
+ }
+ }
}
//单次参数设定
@@ -182,8 +182,7 @@
parseObject.keys.forEach {
when (it) {
"1" -> {//开关机
- isDeviceWorking = parseObject[it] as Boolean
- turnOffRadioButton.isChecked = isDeviceWorking
+ turnOffRadioButton.isChecked = parseObject[it] as Boolean
}
"2" -> {
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index aeb638b..e9ceee9 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -23,10 +23,8 @@
val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后")
val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件")
val SERVER_IMAGE = intArrayOf(
- R.drawable.ic_daifukuan,
- R.drawable.ic_daifuwu,
- R.drawable.ic_fuwuzhong,
- R.drawable.ic_pingjia
+ R.drawable.ic_daifukuan, R.drawable.ic_daifuwu,
+ R.drawable.ic_fuwuzhong, R.drawable.ic_pingjia
)
val SERVER_OPERATE = arrayOf("待付款", "待服务", "服务中", "评价")
val USER_OPERATE = arrayOf("账号安全", "账号绑定", "支付管理", "地址管理", "系统设置")
@@ -37,6 +35,11 @@
val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+ val ROBOT_FUNCTION_ARRAY = arrayOf("自动清扫", "定点清扫", "沿边打扫", "自动回充", "寻回", "定时", "清扫记录", "设置")
+ val ROBOT_FUNCTION_IMAGE = intArrayOf(
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu,
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu
+ )
//TODO 模拟数据
val TEST_IMAGE = intArrayOf(
diff --git a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
index 1d2618f..9a1c984 100644
--- a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -24,14 +24,6 @@
import com.tuya.smart.sdk.api.ITuyaDevice
import com.tuya.smart.sdk.api.ITuyaOta
import kotlinx.android.synthetic.main.activity_air_cleaner.*
-import kotlinx.android.synthetic.main.activity_air_cleaner.deviceLogoView
-import kotlinx.android.synthetic.main.activity_air_cleaner.highSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.lowSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.modeRadioGroup
-import kotlinx.android.synthetic.main.activity_air_cleaner.rootView
-import kotlinx.android.synthetic.main.activity_air_cleaner.turnOffRadioButton
-import kotlinx.android.synthetic.main.activity_water_dispenser.*
-import kotlinx.android.synthetic.main.fragment_device_rangehood_control.*
import kotlinx.android.synthetic.main.include_device_title.*
/**
@@ -122,7 +114,7 @@
if (c) {
turnOffRadioButton.disableView()
modeRadioGroup.disableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -138,7 +130,7 @@
} else {
turnOffRadioButton.enableView()
modeRadioGroup.enableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -238,7 +230,7 @@
}
1 -> deviceInstance.removeDevice(object : IResultCallback {
override fun onError(code: String?, error: String?) {
- Log.d("Casic", "WaterDispenserActivity => onError: $error")
+ Log.d("Casic", "AirCleanerActivity => onError: $error")
}
override fun onSuccess() {
diff --git a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
index 68a0785..09f0e3a 100644
--- a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
@@ -12,7 +12,6 @@
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
@@ -60,13 +59,12 @@
"查询设备信息失败,请检查设备是否已离线".show(this)
return
}
- Log.d(kTag, deviceBean.dps.toJson())
titleView.text = deviceBean.toChineseTypeName()
deviceBean.dpName.entries.forEach {
when (it.key) {
- "1" -> firstNameView.text = it.value
- "2" -> secondNameView.text = it.value
- "3" -> thirdNameView.text = it.value
+ "1" -> firstTurnOffCheckBox.text = it.value
+ "2" -> secondTurnOffCheckBox.text = it.value
+ "3" -> thirdTurnOffCheckBox.text = it.value
}
}
deviceBean.dps.entries.forEach {
diff --git a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
index 4ea83fc..e613a61 100644
--- a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
@@ -135,8 +135,12 @@
.build().show()
}
- turnOffCheckBox.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(isChecked))
+ turnOffCheckBox.setOnClickListener {
+ if (turnOffCheckBox.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
new file mode 100644
index 0000000..2abc2f3
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
@@ -0,0 +1,203 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.alibaba.fastjson.JSONObject
+import com.casic.br.R
+import com.casic.br.adapter.IconTextGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.LocaleConstant
+import com.casic.br.utils.TuyaDeviceListener
+import com.casic.br.view.device.robot.RobotSettingsActivity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
+import com.tuya.smart.android.device.bean.UpgradeInfoBean
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.sdk.api.IGetOtaInfoCallback
+import com.tuya.smart.sdk.api.IResultCallback
+import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.api.ITuyaOta
+import kotlinx.android.synthetic.main.activity_sweeping_robot.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 智能扫地机器人
+ * TODO 数据上报暂缓
+ * */
+class SweepingRobotActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@SweepingRobotActivity
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_sweeping_robot
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ Log.d("Casic", "SweepingRobotActivity => initData: $deviceId")
+ tuyaOTA = TuyaHomeSdk.newOTAInstance(deviceId)
+ //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
+ deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
+
+ val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId)
+ if (deviceBean == null) {
+ "查询设备信息失败,请检查设备是否已离线".show(this)
+ return
+ }
+ titleView.text = deviceBean.toChineseTypeName()
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onDpUpdate: $dpStr")
+ val parseObject = JSONObject.parseObject(dpStr)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {}
+ }
+ }
+ }
+ })
+
+ val robotGridAdapter = IconTextGridAdapter(
+ this, LocaleConstant.ROBOT_FUNCTION_IMAGE, LocaleConstant.ROBOT_FUNCTION_ARRAY
+ )
+ functionRecyclerView.adapter = robotGridAdapter
+ robotGridAdapter.setOnGridItemClickListener(object :
+ IconTextGridAdapter.OnGridItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+
+ }
+ 1 -> {
+
+ }
+ 2 -> {
+
+ }
+ 3 -> {
+
+ }
+ 4 -> {
+
+ }
+ 5 -> {
+ "此功能待后续完善".show(context)
+ }
+ 6 -> {
+ "此功能待后续完善".show(context)
+ }
+ 7 -> {
+ navigatePageTo()
+ }
+ }
+ }
+ })
+ }
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setItemTextColor(Color.BLUE)
+ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
+ override fun onActionItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ tuyaOTA.getOtaInfo(object : IGetOtaInfoCallback {
+ override fun onSuccess(upgradeInfoBeans: MutableList?) {
+ if (upgradeInfoBeans.isNullOrEmpty()) {
+ "无新版本可用".show(context)
+ }
+ val mainModel = upgradeInfoBeans!![0]
+ when (mainModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "主联网模组无新版本可用".show(context)
+ }
+
+ val mcuModel = upgradeInfoBeans[1]
+ when (mcuModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "MCU模块无新版本可用".show(context)
+ }
+ }
+
+ override fun onFailure(code: String?, error: String?) {
+
+ }
+ })
+ }
+ 1 -> deviceInstance.removeDevice(object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onError: $error")
+ }
+
+ override fun onSuccess() {
+ finish()
+ }
+ })
+ }
+ }
+ })
+ .build().show()
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //每次获取焦点都查询设备的开关机状态
+ CommandManager.getTuyaDp(deviceInstance, "1")
+ }
+
+ private fun updateVersion() {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("版本升级")
+ .setMessage("有新版本可以升级,是否升级?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+ tuyaOTA.startOta()
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
new file mode 100644
index 0000000..532642f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
@@ -0,0 +1,33 @@
+package com.casic.br.view.device.robot
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_left_back_title.*
+
+class AddTimeConfigActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_robot_add_time
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainBackColor.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "定时"
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt b/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt
new file mode 100644
index 0000000..9552b0b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt
@@ -0,0 +1,53 @@
+package com.casic.br.view.device.robot
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_robot_settings.*
+import kotlinx.android.synthetic.main.include_left_back_title.*
+
+class RobotSettingsActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_robot_settings
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainBackColor.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "耗材维护"
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+ clearBatteryButton.setOnClickListener {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("提示")
+ .setMessage("是否清除记录?如果没有更换耗材而清除记录将会导致数据错误")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_air_cleaner.xml b/app/src/main/res/layout/activity_air_cleaner.xml
index 344af9a..b9202c9 100644
--- a/app/src/main/res/layout/activity_air_cleaner.xml
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rootView"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
+ android:layout_height="match_parent"
android:background="@mipmap/common_bkg"
android:orientation="vertical">
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2db3a08..4004755 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -84,6 +84,9 @@
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index fae6114..d38507a 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -127,6 +127,7 @@
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
"kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index a226546..98971ce 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -182,6 +182,10 @@
//空气净化器
requireContext().navigatePageTo(deviceModel.devId)
}
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
index cad6d98..865e6a7 100644
--- a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
@@ -40,24 +40,24 @@
override fun initEvent() {
//开关机
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
- }
-
- lowSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
}
}
- highSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
- }
- }
-
- maxSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ speedRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.lowSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ }
+ R.id.mediumSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
+ }
+ R.id.highSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index 2a8c6e9..e0b0397 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -32,7 +32,6 @@
private var currentProgress = 0
private val timeScope = intArrayOf(30, 60, 120, 180)
private var currentTimeProgress = 0
- private var isDeviceWorking = false
override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control
@@ -93,7 +92,11 @@
override fun initEvent() {
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
kitchenRadioButton.setOnClickListener {
@@ -140,24 +143,21 @@
}
})
- //单次
- onceRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(isChecked))
- }
-
- //点动
- initiateRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(isChecked))
- }
-
- //预约
- reservationRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(isChecked))
- }
-
- //增压
- pressureRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(isChecked))
+ functionRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.onceRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(true))
+ }
+ R.id.initiateRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(true))
+ }
+ R.id.reservationRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(true))
+ }
+ R.id.pressureRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(true))
+ }
+ }
}
//单次参数设定
@@ -182,8 +182,7 @@
parseObject.keys.forEach {
when (it) {
"1" -> {//开关机
- isDeviceWorking = parseObject[it] as Boolean
- turnOffRadioButton.isChecked = isDeviceWorking
+ turnOffRadioButton.isChecked = parseObject[it] as Boolean
}
"2" -> {
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index aeb638b..e9ceee9 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -23,10 +23,8 @@
val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后")
val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件")
val SERVER_IMAGE = intArrayOf(
- R.drawable.ic_daifukuan,
- R.drawable.ic_daifuwu,
- R.drawable.ic_fuwuzhong,
- R.drawable.ic_pingjia
+ R.drawable.ic_daifukuan, R.drawable.ic_daifuwu,
+ R.drawable.ic_fuwuzhong, R.drawable.ic_pingjia
)
val SERVER_OPERATE = arrayOf("待付款", "待服务", "服务中", "评价")
val USER_OPERATE = arrayOf("账号安全", "账号绑定", "支付管理", "地址管理", "系统设置")
@@ -37,6 +35,11 @@
val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+ val ROBOT_FUNCTION_ARRAY = arrayOf("自动清扫", "定点清扫", "沿边打扫", "自动回充", "寻回", "定时", "清扫记录", "设置")
+ val ROBOT_FUNCTION_IMAGE = intArrayOf(
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu,
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu
+ )
//TODO 模拟数据
val TEST_IMAGE = intArrayOf(
diff --git a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
index 1d2618f..9a1c984 100644
--- a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -24,14 +24,6 @@
import com.tuya.smart.sdk.api.ITuyaDevice
import com.tuya.smart.sdk.api.ITuyaOta
import kotlinx.android.synthetic.main.activity_air_cleaner.*
-import kotlinx.android.synthetic.main.activity_air_cleaner.deviceLogoView
-import kotlinx.android.synthetic.main.activity_air_cleaner.highSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.lowSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.modeRadioGroup
-import kotlinx.android.synthetic.main.activity_air_cleaner.rootView
-import kotlinx.android.synthetic.main.activity_air_cleaner.turnOffRadioButton
-import kotlinx.android.synthetic.main.activity_water_dispenser.*
-import kotlinx.android.synthetic.main.fragment_device_rangehood_control.*
import kotlinx.android.synthetic.main.include_device_title.*
/**
@@ -122,7 +114,7 @@
if (c) {
turnOffRadioButton.disableView()
modeRadioGroup.disableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -138,7 +130,7 @@
} else {
turnOffRadioButton.enableView()
modeRadioGroup.enableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -238,7 +230,7 @@
}
1 -> deviceInstance.removeDevice(object : IResultCallback {
override fun onError(code: String?, error: String?) {
- Log.d("Casic", "WaterDispenserActivity => onError: $error")
+ Log.d("Casic", "AirCleanerActivity => onError: $error")
}
override fun onSuccess() {
diff --git a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
index 68a0785..09f0e3a 100644
--- a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
@@ -12,7 +12,6 @@
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
@@ -60,13 +59,12 @@
"查询设备信息失败,请检查设备是否已离线".show(this)
return
}
- Log.d(kTag, deviceBean.dps.toJson())
titleView.text = deviceBean.toChineseTypeName()
deviceBean.dpName.entries.forEach {
when (it.key) {
- "1" -> firstNameView.text = it.value
- "2" -> secondNameView.text = it.value
- "3" -> thirdNameView.text = it.value
+ "1" -> firstTurnOffCheckBox.text = it.value
+ "2" -> secondTurnOffCheckBox.text = it.value
+ "3" -> thirdTurnOffCheckBox.text = it.value
}
}
deviceBean.dps.entries.forEach {
diff --git a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
index 4ea83fc..e613a61 100644
--- a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
@@ -135,8 +135,12 @@
.build().show()
}
- turnOffCheckBox.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(isChecked))
+ turnOffCheckBox.setOnClickListener {
+ if (turnOffCheckBox.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
new file mode 100644
index 0000000..2abc2f3
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
@@ -0,0 +1,203 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.alibaba.fastjson.JSONObject
+import com.casic.br.R
+import com.casic.br.adapter.IconTextGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.LocaleConstant
+import com.casic.br.utils.TuyaDeviceListener
+import com.casic.br.view.device.robot.RobotSettingsActivity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
+import com.tuya.smart.android.device.bean.UpgradeInfoBean
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.sdk.api.IGetOtaInfoCallback
+import com.tuya.smart.sdk.api.IResultCallback
+import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.api.ITuyaOta
+import kotlinx.android.synthetic.main.activity_sweeping_robot.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 智能扫地机器人
+ * TODO 数据上报暂缓
+ * */
+class SweepingRobotActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@SweepingRobotActivity
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_sweeping_robot
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ Log.d("Casic", "SweepingRobotActivity => initData: $deviceId")
+ tuyaOTA = TuyaHomeSdk.newOTAInstance(deviceId)
+ //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
+ deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
+
+ val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId)
+ if (deviceBean == null) {
+ "查询设备信息失败,请检查设备是否已离线".show(this)
+ return
+ }
+ titleView.text = deviceBean.toChineseTypeName()
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onDpUpdate: $dpStr")
+ val parseObject = JSONObject.parseObject(dpStr)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {}
+ }
+ }
+ }
+ })
+
+ val robotGridAdapter = IconTextGridAdapter(
+ this, LocaleConstant.ROBOT_FUNCTION_IMAGE, LocaleConstant.ROBOT_FUNCTION_ARRAY
+ )
+ functionRecyclerView.adapter = robotGridAdapter
+ robotGridAdapter.setOnGridItemClickListener(object :
+ IconTextGridAdapter.OnGridItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+
+ }
+ 1 -> {
+
+ }
+ 2 -> {
+
+ }
+ 3 -> {
+
+ }
+ 4 -> {
+
+ }
+ 5 -> {
+ "此功能待后续完善".show(context)
+ }
+ 6 -> {
+ "此功能待后续完善".show(context)
+ }
+ 7 -> {
+ navigatePageTo()
+ }
+ }
+ }
+ })
+ }
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setItemTextColor(Color.BLUE)
+ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
+ override fun onActionItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ tuyaOTA.getOtaInfo(object : IGetOtaInfoCallback {
+ override fun onSuccess(upgradeInfoBeans: MutableList?) {
+ if (upgradeInfoBeans.isNullOrEmpty()) {
+ "无新版本可用".show(context)
+ }
+ val mainModel = upgradeInfoBeans!![0]
+ when (mainModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "主联网模组无新版本可用".show(context)
+ }
+
+ val mcuModel = upgradeInfoBeans[1]
+ when (mcuModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "MCU模块无新版本可用".show(context)
+ }
+ }
+
+ override fun onFailure(code: String?, error: String?) {
+
+ }
+ })
+ }
+ 1 -> deviceInstance.removeDevice(object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onError: $error")
+ }
+
+ override fun onSuccess() {
+ finish()
+ }
+ })
+ }
+ }
+ })
+ .build().show()
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //每次获取焦点都查询设备的开关机状态
+ CommandManager.getTuyaDp(deviceInstance, "1")
+ }
+
+ private fun updateVersion() {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("版本升级")
+ .setMessage("有新版本可以升级,是否升级?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+ tuyaOTA.startOta()
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
new file mode 100644
index 0000000..532642f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
@@ -0,0 +1,33 @@
+package com.casic.br.view.device.robot
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_left_back_title.*
+
+class AddTimeConfigActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_robot_add_time
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainBackColor.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "定时"
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt b/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt
new file mode 100644
index 0000000..9552b0b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt
@@ -0,0 +1,53 @@
+package com.casic.br.view.device.robot
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_robot_settings.*
+import kotlinx.android.synthetic.main.include_left_back_title.*
+
+class RobotSettingsActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_robot_settings
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainBackColor.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "耗材维护"
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+ clearBatteryButton.setOnClickListener {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("提示")
+ .setMessage("是否清除记录?如果没有更换耗材而清除记录将会导致数据错误")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_air_cleaner.xml b/app/src/main/res/layout/activity_air_cleaner.xml
index 344af9a..b9202c9 100644
--- a/app/src/main/res/layout/activity_air_cleaner.xml
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rootView"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
+ android:layout_height="match_parent"
android:background="@mipmap/common_bkg"
android:orientation="vertical">
diff --git a/app/src/main/res/layout/activity_power_strip.xml b/app/src/main/res/layout/activity_power_strip.xml
index 60f23df..f7d50e9 100644
--- a/app/src/main/res/layout/activity_power_strip.xml
+++ b/app/src/main/res/layout/activity_power_strip.xml
@@ -107,22 +107,15 @@
android:paddingHorizontal="@dimen/dp_20"
android:paddingVertical="@dimen/dp_10">
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2db3a08..4004755 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -84,6 +84,9 @@
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index fae6114..d38507a 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -127,6 +127,7 @@
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
"kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index a226546..98971ce 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -182,6 +182,10 @@
//空气净化器
requireContext().navigatePageTo(deviceModel.devId)
}
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
index cad6d98..865e6a7 100644
--- a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
@@ -40,24 +40,24 @@
override fun initEvent() {
//开关机
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
- }
-
- lowSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
}
}
- highSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
- }
- }
-
- maxSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ speedRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.lowSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ }
+ R.id.mediumSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
+ }
+ R.id.highSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index 2a8c6e9..e0b0397 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -32,7 +32,6 @@
private var currentProgress = 0
private val timeScope = intArrayOf(30, 60, 120, 180)
private var currentTimeProgress = 0
- private var isDeviceWorking = false
override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control
@@ -93,7 +92,11 @@
override fun initEvent() {
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
kitchenRadioButton.setOnClickListener {
@@ -140,24 +143,21 @@
}
})
- //单次
- onceRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(isChecked))
- }
-
- //点动
- initiateRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(isChecked))
- }
-
- //预约
- reservationRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(isChecked))
- }
-
- //增压
- pressureRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(isChecked))
+ functionRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.onceRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(true))
+ }
+ R.id.initiateRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(true))
+ }
+ R.id.reservationRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(true))
+ }
+ R.id.pressureRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(true))
+ }
+ }
}
//单次参数设定
@@ -182,8 +182,7 @@
parseObject.keys.forEach {
when (it) {
"1" -> {//开关机
- isDeviceWorking = parseObject[it] as Boolean
- turnOffRadioButton.isChecked = isDeviceWorking
+ turnOffRadioButton.isChecked = parseObject[it] as Boolean
}
"2" -> {
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index aeb638b..e9ceee9 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -23,10 +23,8 @@
val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后")
val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件")
val SERVER_IMAGE = intArrayOf(
- R.drawable.ic_daifukuan,
- R.drawable.ic_daifuwu,
- R.drawable.ic_fuwuzhong,
- R.drawable.ic_pingjia
+ R.drawable.ic_daifukuan, R.drawable.ic_daifuwu,
+ R.drawable.ic_fuwuzhong, R.drawable.ic_pingjia
)
val SERVER_OPERATE = arrayOf("待付款", "待服务", "服务中", "评价")
val USER_OPERATE = arrayOf("账号安全", "账号绑定", "支付管理", "地址管理", "系统设置")
@@ -37,6 +35,11 @@
val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+ val ROBOT_FUNCTION_ARRAY = arrayOf("自动清扫", "定点清扫", "沿边打扫", "自动回充", "寻回", "定时", "清扫记录", "设置")
+ val ROBOT_FUNCTION_IMAGE = intArrayOf(
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu,
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu
+ )
//TODO 模拟数据
val TEST_IMAGE = intArrayOf(
diff --git a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
index 1d2618f..9a1c984 100644
--- a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -24,14 +24,6 @@
import com.tuya.smart.sdk.api.ITuyaDevice
import com.tuya.smart.sdk.api.ITuyaOta
import kotlinx.android.synthetic.main.activity_air_cleaner.*
-import kotlinx.android.synthetic.main.activity_air_cleaner.deviceLogoView
-import kotlinx.android.synthetic.main.activity_air_cleaner.highSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.lowSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.modeRadioGroup
-import kotlinx.android.synthetic.main.activity_air_cleaner.rootView
-import kotlinx.android.synthetic.main.activity_air_cleaner.turnOffRadioButton
-import kotlinx.android.synthetic.main.activity_water_dispenser.*
-import kotlinx.android.synthetic.main.fragment_device_rangehood_control.*
import kotlinx.android.synthetic.main.include_device_title.*
/**
@@ -122,7 +114,7 @@
if (c) {
turnOffRadioButton.disableView()
modeRadioGroup.disableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -138,7 +130,7 @@
} else {
turnOffRadioButton.enableView()
modeRadioGroup.enableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -238,7 +230,7 @@
}
1 -> deviceInstance.removeDevice(object : IResultCallback {
override fun onError(code: String?, error: String?) {
- Log.d("Casic", "WaterDispenserActivity => onError: $error")
+ Log.d("Casic", "AirCleanerActivity => onError: $error")
}
override fun onSuccess() {
diff --git a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
index 68a0785..09f0e3a 100644
--- a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
@@ -12,7 +12,6 @@
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
@@ -60,13 +59,12 @@
"查询设备信息失败,请检查设备是否已离线".show(this)
return
}
- Log.d(kTag, deviceBean.dps.toJson())
titleView.text = deviceBean.toChineseTypeName()
deviceBean.dpName.entries.forEach {
when (it.key) {
- "1" -> firstNameView.text = it.value
- "2" -> secondNameView.text = it.value
- "3" -> thirdNameView.text = it.value
+ "1" -> firstTurnOffCheckBox.text = it.value
+ "2" -> secondTurnOffCheckBox.text = it.value
+ "3" -> thirdTurnOffCheckBox.text = it.value
}
}
deviceBean.dps.entries.forEach {
diff --git a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
index 4ea83fc..e613a61 100644
--- a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
@@ -135,8 +135,12 @@
.build().show()
}
- turnOffCheckBox.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(isChecked))
+ turnOffCheckBox.setOnClickListener {
+ if (turnOffCheckBox.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
new file mode 100644
index 0000000..2abc2f3
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
@@ -0,0 +1,203 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.alibaba.fastjson.JSONObject
+import com.casic.br.R
+import com.casic.br.adapter.IconTextGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.LocaleConstant
+import com.casic.br.utils.TuyaDeviceListener
+import com.casic.br.view.device.robot.RobotSettingsActivity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
+import com.tuya.smart.android.device.bean.UpgradeInfoBean
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.sdk.api.IGetOtaInfoCallback
+import com.tuya.smart.sdk.api.IResultCallback
+import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.api.ITuyaOta
+import kotlinx.android.synthetic.main.activity_sweeping_robot.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 智能扫地机器人
+ * TODO 数据上报暂缓
+ * */
+class SweepingRobotActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@SweepingRobotActivity
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_sweeping_robot
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ Log.d("Casic", "SweepingRobotActivity => initData: $deviceId")
+ tuyaOTA = TuyaHomeSdk.newOTAInstance(deviceId)
+ //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
+ deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
+
+ val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId)
+ if (deviceBean == null) {
+ "查询设备信息失败,请检查设备是否已离线".show(this)
+ return
+ }
+ titleView.text = deviceBean.toChineseTypeName()
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onDpUpdate: $dpStr")
+ val parseObject = JSONObject.parseObject(dpStr)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {}
+ }
+ }
+ }
+ })
+
+ val robotGridAdapter = IconTextGridAdapter(
+ this, LocaleConstant.ROBOT_FUNCTION_IMAGE, LocaleConstant.ROBOT_FUNCTION_ARRAY
+ )
+ functionRecyclerView.adapter = robotGridAdapter
+ robotGridAdapter.setOnGridItemClickListener(object :
+ IconTextGridAdapter.OnGridItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+
+ }
+ 1 -> {
+
+ }
+ 2 -> {
+
+ }
+ 3 -> {
+
+ }
+ 4 -> {
+
+ }
+ 5 -> {
+ "此功能待后续完善".show(context)
+ }
+ 6 -> {
+ "此功能待后续完善".show(context)
+ }
+ 7 -> {
+ navigatePageTo()
+ }
+ }
+ }
+ })
+ }
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setItemTextColor(Color.BLUE)
+ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
+ override fun onActionItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ tuyaOTA.getOtaInfo(object : IGetOtaInfoCallback {
+ override fun onSuccess(upgradeInfoBeans: MutableList?) {
+ if (upgradeInfoBeans.isNullOrEmpty()) {
+ "无新版本可用".show(context)
+ }
+ val mainModel = upgradeInfoBeans!![0]
+ when (mainModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "主联网模组无新版本可用".show(context)
+ }
+
+ val mcuModel = upgradeInfoBeans[1]
+ when (mcuModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "MCU模块无新版本可用".show(context)
+ }
+ }
+
+ override fun onFailure(code: String?, error: String?) {
+
+ }
+ })
+ }
+ 1 -> deviceInstance.removeDevice(object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onError: $error")
+ }
+
+ override fun onSuccess() {
+ finish()
+ }
+ })
+ }
+ }
+ })
+ .build().show()
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //每次获取焦点都查询设备的开关机状态
+ CommandManager.getTuyaDp(deviceInstance, "1")
+ }
+
+ private fun updateVersion() {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("版本升级")
+ .setMessage("有新版本可以升级,是否升级?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+ tuyaOTA.startOta()
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
new file mode 100644
index 0000000..532642f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
@@ -0,0 +1,33 @@
+package com.casic.br.view.device.robot
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_left_back_title.*
+
+class AddTimeConfigActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_robot_add_time
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainBackColor.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "定时"
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt b/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt
new file mode 100644
index 0000000..9552b0b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt
@@ -0,0 +1,53 @@
+package com.casic.br.view.device.robot
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_robot_settings.*
+import kotlinx.android.synthetic.main.include_left_back_title.*
+
+class RobotSettingsActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_robot_settings
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainBackColor.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "耗材维护"
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+ clearBatteryButton.setOnClickListener {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("提示")
+ .setMessage("是否清除记录?如果没有更换耗材而清除记录将会导致数据错误")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_air_cleaner.xml b/app/src/main/res/layout/activity_air_cleaner.xml
index 344af9a..b9202c9 100644
--- a/app/src/main/res/layout/activity_air_cleaner.xml
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rootView"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
+ android:layout_height="match_parent"
android:background="@mipmap/common_bkg"
android:orientation="vertical">
diff --git a/app/src/main/res/layout/activity_power_strip.xml b/app/src/main/res/layout/activity_power_strip.xml
index 60f23df..f7d50e9 100644
--- a/app/src/main/res/layout/activity_power_strip.xml
+++ b/app/src/main/res/layout/activity_power_strip.xml
@@ -107,22 +107,15 @@
android:paddingHorizontal="@dimen/dp_20"
android:paddingVertical="@dimen/dp_10">
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
diff --git a/app/src/main/res/layout/activity_robot_add_time.xml b/app/src/main/res/layout/activity_robot_add_time.xml
new file mode 100644
index 0000000..eb996c0
--- /dev/null
+++ b/app/src/main/res/layout/activity_robot_add_time.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2db3a08..4004755 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -84,6 +84,9 @@
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index fae6114..d38507a 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -127,6 +127,7 @@
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
"kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index a226546..98971ce 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -182,6 +182,10 @@
//空气净化器
requireContext().navigatePageTo(deviceModel.devId)
}
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
index cad6d98..865e6a7 100644
--- a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
@@ -40,24 +40,24 @@
override fun initEvent() {
//开关机
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
- }
-
- lowSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
}
}
- highSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
- }
- }
-
- maxSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ speedRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.lowSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ }
+ R.id.mediumSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
+ }
+ R.id.highSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index 2a8c6e9..e0b0397 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -32,7 +32,6 @@
private var currentProgress = 0
private val timeScope = intArrayOf(30, 60, 120, 180)
private var currentTimeProgress = 0
- private var isDeviceWorking = false
override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control
@@ -93,7 +92,11 @@
override fun initEvent() {
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
kitchenRadioButton.setOnClickListener {
@@ -140,24 +143,21 @@
}
})
- //单次
- onceRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(isChecked))
- }
-
- //点动
- initiateRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(isChecked))
- }
-
- //预约
- reservationRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(isChecked))
- }
-
- //增压
- pressureRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(isChecked))
+ functionRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.onceRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(true))
+ }
+ R.id.initiateRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(true))
+ }
+ R.id.reservationRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(true))
+ }
+ R.id.pressureRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(true))
+ }
+ }
}
//单次参数设定
@@ -182,8 +182,7 @@
parseObject.keys.forEach {
when (it) {
"1" -> {//开关机
- isDeviceWorking = parseObject[it] as Boolean
- turnOffRadioButton.isChecked = isDeviceWorking
+ turnOffRadioButton.isChecked = parseObject[it] as Boolean
}
"2" -> {
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index aeb638b..e9ceee9 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -23,10 +23,8 @@
val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后")
val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件")
val SERVER_IMAGE = intArrayOf(
- R.drawable.ic_daifukuan,
- R.drawable.ic_daifuwu,
- R.drawable.ic_fuwuzhong,
- R.drawable.ic_pingjia
+ R.drawable.ic_daifukuan, R.drawable.ic_daifuwu,
+ R.drawable.ic_fuwuzhong, R.drawable.ic_pingjia
)
val SERVER_OPERATE = arrayOf("待付款", "待服务", "服务中", "评价")
val USER_OPERATE = arrayOf("账号安全", "账号绑定", "支付管理", "地址管理", "系统设置")
@@ -37,6 +35,11 @@
val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+ val ROBOT_FUNCTION_ARRAY = arrayOf("自动清扫", "定点清扫", "沿边打扫", "自动回充", "寻回", "定时", "清扫记录", "设置")
+ val ROBOT_FUNCTION_IMAGE = intArrayOf(
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu,
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu
+ )
//TODO 模拟数据
val TEST_IMAGE = intArrayOf(
diff --git a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
index 1d2618f..9a1c984 100644
--- a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -24,14 +24,6 @@
import com.tuya.smart.sdk.api.ITuyaDevice
import com.tuya.smart.sdk.api.ITuyaOta
import kotlinx.android.synthetic.main.activity_air_cleaner.*
-import kotlinx.android.synthetic.main.activity_air_cleaner.deviceLogoView
-import kotlinx.android.synthetic.main.activity_air_cleaner.highSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.lowSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.modeRadioGroup
-import kotlinx.android.synthetic.main.activity_air_cleaner.rootView
-import kotlinx.android.synthetic.main.activity_air_cleaner.turnOffRadioButton
-import kotlinx.android.synthetic.main.activity_water_dispenser.*
-import kotlinx.android.synthetic.main.fragment_device_rangehood_control.*
import kotlinx.android.synthetic.main.include_device_title.*
/**
@@ -122,7 +114,7 @@
if (c) {
turnOffRadioButton.disableView()
modeRadioGroup.disableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -138,7 +130,7 @@
} else {
turnOffRadioButton.enableView()
modeRadioGroup.enableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -238,7 +230,7 @@
}
1 -> deviceInstance.removeDevice(object : IResultCallback {
override fun onError(code: String?, error: String?) {
- Log.d("Casic", "WaterDispenserActivity => onError: $error")
+ Log.d("Casic", "AirCleanerActivity => onError: $error")
}
override fun onSuccess() {
diff --git a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
index 68a0785..09f0e3a 100644
--- a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
@@ -12,7 +12,6 @@
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
@@ -60,13 +59,12 @@
"查询设备信息失败,请检查设备是否已离线".show(this)
return
}
- Log.d(kTag, deviceBean.dps.toJson())
titleView.text = deviceBean.toChineseTypeName()
deviceBean.dpName.entries.forEach {
when (it.key) {
- "1" -> firstNameView.text = it.value
- "2" -> secondNameView.text = it.value
- "3" -> thirdNameView.text = it.value
+ "1" -> firstTurnOffCheckBox.text = it.value
+ "2" -> secondTurnOffCheckBox.text = it.value
+ "3" -> thirdTurnOffCheckBox.text = it.value
}
}
deviceBean.dps.entries.forEach {
diff --git a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
index 4ea83fc..e613a61 100644
--- a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
@@ -135,8 +135,12 @@
.build().show()
}
- turnOffCheckBox.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(isChecked))
+ turnOffCheckBox.setOnClickListener {
+ if (turnOffCheckBox.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
new file mode 100644
index 0000000..2abc2f3
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
@@ -0,0 +1,203 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.alibaba.fastjson.JSONObject
+import com.casic.br.R
+import com.casic.br.adapter.IconTextGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.LocaleConstant
+import com.casic.br.utils.TuyaDeviceListener
+import com.casic.br.view.device.robot.RobotSettingsActivity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
+import com.tuya.smart.android.device.bean.UpgradeInfoBean
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.sdk.api.IGetOtaInfoCallback
+import com.tuya.smart.sdk.api.IResultCallback
+import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.api.ITuyaOta
+import kotlinx.android.synthetic.main.activity_sweeping_robot.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 智能扫地机器人
+ * TODO 数据上报暂缓
+ * */
+class SweepingRobotActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@SweepingRobotActivity
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_sweeping_robot
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ Log.d("Casic", "SweepingRobotActivity => initData: $deviceId")
+ tuyaOTA = TuyaHomeSdk.newOTAInstance(deviceId)
+ //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
+ deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
+
+ val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId)
+ if (deviceBean == null) {
+ "查询设备信息失败,请检查设备是否已离线".show(this)
+ return
+ }
+ titleView.text = deviceBean.toChineseTypeName()
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onDpUpdate: $dpStr")
+ val parseObject = JSONObject.parseObject(dpStr)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {}
+ }
+ }
+ }
+ })
+
+ val robotGridAdapter = IconTextGridAdapter(
+ this, LocaleConstant.ROBOT_FUNCTION_IMAGE, LocaleConstant.ROBOT_FUNCTION_ARRAY
+ )
+ functionRecyclerView.adapter = robotGridAdapter
+ robotGridAdapter.setOnGridItemClickListener(object :
+ IconTextGridAdapter.OnGridItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+
+ }
+ 1 -> {
+
+ }
+ 2 -> {
+
+ }
+ 3 -> {
+
+ }
+ 4 -> {
+
+ }
+ 5 -> {
+ "此功能待后续完善".show(context)
+ }
+ 6 -> {
+ "此功能待后续完善".show(context)
+ }
+ 7 -> {
+ navigatePageTo()
+ }
+ }
+ }
+ })
+ }
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setItemTextColor(Color.BLUE)
+ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
+ override fun onActionItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ tuyaOTA.getOtaInfo(object : IGetOtaInfoCallback {
+ override fun onSuccess(upgradeInfoBeans: MutableList?) {
+ if (upgradeInfoBeans.isNullOrEmpty()) {
+ "无新版本可用".show(context)
+ }
+ val mainModel = upgradeInfoBeans!![0]
+ when (mainModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "主联网模组无新版本可用".show(context)
+ }
+
+ val mcuModel = upgradeInfoBeans[1]
+ when (mcuModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "MCU模块无新版本可用".show(context)
+ }
+ }
+
+ override fun onFailure(code: String?, error: String?) {
+
+ }
+ })
+ }
+ 1 -> deviceInstance.removeDevice(object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onError: $error")
+ }
+
+ override fun onSuccess() {
+ finish()
+ }
+ })
+ }
+ }
+ })
+ .build().show()
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //每次获取焦点都查询设备的开关机状态
+ CommandManager.getTuyaDp(deviceInstance, "1")
+ }
+
+ private fun updateVersion() {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("版本升级")
+ .setMessage("有新版本可以升级,是否升级?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+ tuyaOTA.startOta()
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
new file mode 100644
index 0000000..532642f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
@@ -0,0 +1,33 @@
+package com.casic.br.view.device.robot
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_left_back_title.*
+
+class AddTimeConfigActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_robot_add_time
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainBackColor.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "定时"
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt b/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt
new file mode 100644
index 0000000..9552b0b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt
@@ -0,0 +1,53 @@
+package com.casic.br.view.device.robot
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_robot_settings.*
+import kotlinx.android.synthetic.main.include_left_back_title.*
+
+class RobotSettingsActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_robot_settings
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainBackColor.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "耗材维护"
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+ clearBatteryButton.setOnClickListener {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("提示")
+ .setMessage("是否清除记录?如果没有更换耗材而清除记录将会导致数据错误")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_air_cleaner.xml b/app/src/main/res/layout/activity_air_cleaner.xml
index 344af9a..b9202c9 100644
--- a/app/src/main/res/layout/activity_air_cleaner.xml
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rootView"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
+ android:layout_height="match_parent"
android:background="@mipmap/common_bkg"
android:orientation="vertical">
diff --git a/app/src/main/res/layout/activity_power_strip.xml b/app/src/main/res/layout/activity_power_strip.xml
index 60f23df..f7d50e9 100644
--- a/app/src/main/res/layout/activity_power_strip.xml
+++ b/app/src/main/res/layout/activity_power_strip.xml
@@ -107,22 +107,15 @@
android:paddingHorizontal="@dimen/dp_20"
android:paddingVertical="@dimen/dp_10">
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
diff --git a/app/src/main/res/layout/activity_robot_add_time.xml b/app/src/main/res/layout/activity_robot_add_time.xml
new file mode 100644
index 0000000..eb996c0
--- /dev/null
+++ b/app/src/main/res/layout/activity_robot_add_time.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_robot_settings.xml b/app/src/main/res/layout/activity_robot_settings.xml
new file mode 100644
index 0000000..018f2f8
--- /dev/null
+++ b/app/src/main/res/layout/activity_robot_settings.xml
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2db3a08..4004755 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -84,6 +84,9 @@
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index fae6114..d38507a 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -127,6 +127,7 @@
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
"kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index a226546..98971ce 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -182,6 +182,10 @@
//空气净化器
requireContext().navigatePageTo(deviceModel.devId)
}
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
index cad6d98..865e6a7 100644
--- a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
@@ -40,24 +40,24 @@
override fun initEvent() {
//开关机
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
- }
-
- lowSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
}
}
- highSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
- }
- }
-
- maxSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ speedRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.lowSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ }
+ R.id.mediumSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
+ }
+ R.id.highSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index 2a8c6e9..e0b0397 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -32,7 +32,6 @@
private var currentProgress = 0
private val timeScope = intArrayOf(30, 60, 120, 180)
private var currentTimeProgress = 0
- private var isDeviceWorking = false
override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control
@@ -93,7 +92,11 @@
override fun initEvent() {
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
kitchenRadioButton.setOnClickListener {
@@ -140,24 +143,21 @@
}
})
- //单次
- onceRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(isChecked))
- }
-
- //点动
- initiateRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(isChecked))
- }
-
- //预约
- reservationRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(isChecked))
- }
-
- //增压
- pressureRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(isChecked))
+ functionRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.onceRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(true))
+ }
+ R.id.initiateRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(true))
+ }
+ R.id.reservationRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(true))
+ }
+ R.id.pressureRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(true))
+ }
+ }
}
//单次参数设定
@@ -182,8 +182,7 @@
parseObject.keys.forEach {
when (it) {
"1" -> {//开关机
- isDeviceWorking = parseObject[it] as Boolean
- turnOffRadioButton.isChecked = isDeviceWorking
+ turnOffRadioButton.isChecked = parseObject[it] as Boolean
}
"2" -> {
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index aeb638b..e9ceee9 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -23,10 +23,8 @@
val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后")
val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件")
val SERVER_IMAGE = intArrayOf(
- R.drawable.ic_daifukuan,
- R.drawable.ic_daifuwu,
- R.drawable.ic_fuwuzhong,
- R.drawable.ic_pingjia
+ R.drawable.ic_daifukuan, R.drawable.ic_daifuwu,
+ R.drawable.ic_fuwuzhong, R.drawable.ic_pingjia
)
val SERVER_OPERATE = arrayOf("待付款", "待服务", "服务中", "评价")
val USER_OPERATE = arrayOf("账号安全", "账号绑定", "支付管理", "地址管理", "系统设置")
@@ -37,6 +35,11 @@
val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+ val ROBOT_FUNCTION_ARRAY = arrayOf("自动清扫", "定点清扫", "沿边打扫", "自动回充", "寻回", "定时", "清扫记录", "设置")
+ val ROBOT_FUNCTION_IMAGE = intArrayOf(
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu,
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu
+ )
//TODO 模拟数据
val TEST_IMAGE = intArrayOf(
diff --git a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
index 1d2618f..9a1c984 100644
--- a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -24,14 +24,6 @@
import com.tuya.smart.sdk.api.ITuyaDevice
import com.tuya.smart.sdk.api.ITuyaOta
import kotlinx.android.synthetic.main.activity_air_cleaner.*
-import kotlinx.android.synthetic.main.activity_air_cleaner.deviceLogoView
-import kotlinx.android.synthetic.main.activity_air_cleaner.highSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.lowSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.modeRadioGroup
-import kotlinx.android.synthetic.main.activity_air_cleaner.rootView
-import kotlinx.android.synthetic.main.activity_air_cleaner.turnOffRadioButton
-import kotlinx.android.synthetic.main.activity_water_dispenser.*
-import kotlinx.android.synthetic.main.fragment_device_rangehood_control.*
import kotlinx.android.synthetic.main.include_device_title.*
/**
@@ -122,7 +114,7 @@
if (c) {
turnOffRadioButton.disableView()
modeRadioGroup.disableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -138,7 +130,7 @@
} else {
turnOffRadioButton.enableView()
modeRadioGroup.enableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -238,7 +230,7 @@
}
1 -> deviceInstance.removeDevice(object : IResultCallback {
override fun onError(code: String?, error: String?) {
- Log.d("Casic", "WaterDispenserActivity => onError: $error")
+ Log.d("Casic", "AirCleanerActivity => onError: $error")
}
override fun onSuccess() {
diff --git a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
index 68a0785..09f0e3a 100644
--- a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
@@ -12,7 +12,6 @@
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
@@ -60,13 +59,12 @@
"查询设备信息失败,请检查设备是否已离线".show(this)
return
}
- Log.d(kTag, deviceBean.dps.toJson())
titleView.text = deviceBean.toChineseTypeName()
deviceBean.dpName.entries.forEach {
when (it.key) {
- "1" -> firstNameView.text = it.value
- "2" -> secondNameView.text = it.value
- "3" -> thirdNameView.text = it.value
+ "1" -> firstTurnOffCheckBox.text = it.value
+ "2" -> secondTurnOffCheckBox.text = it.value
+ "3" -> thirdTurnOffCheckBox.text = it.value
}
}
deviceBean.dps.entries.forEach {
diff --git a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
index 4ea83fc..e613a61 100644
--- a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
@@ -135,8 +135,12 @@
.build().show()
}
- turnOffCheckBox.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(isChecked))
+ turnOffCheckBox.setOnClickListener {
+ if (turnOffCheckBox.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
new file mode 100644
index 0000000..2abc2f3
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
@@ -0,0 +1,203 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.alibaba.fastjson.JSONObject
+import com.casic.br.R
+import com.casic.br.adapter.IconTextGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.LocaleConstant
+import com.casic.br.utils.TuyaDeviceListener
+import com.casic.br.view.device.robot.RobotSettingsActivity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
+import com.tuya.smart.android.device.bean.UpgradeInfoBean
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.sdk.api.IGetOtaInfoCallback
+import com.tuya.smart.sdk.api.IResultCallback
+import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.api.ITuyaOta
+import kotlinx.android.synthetic.main.activity_sweeping_robot.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 智能扫地机器人
+ * TODO 数据上报暂缓
+ * */
+class SweepingRobotActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@SweepingRobotActivity
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_sweeping_robot
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ Log.d("Casic", "SweepingRobotActivity => initData: $deviceId")
+ tuyaOTA = TuyaHomeSdk.newOTAInstance(deviceId)
+ //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
+ deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
+
+ val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId)
+ if (deviceBean == null) {
+ "查询设备信息失败,请检查设备是否已离线".show(this)
+ return
+ }
+ titleView.text = deviceBean.toChineseTypeName()
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onDpUpdate: $dpStr")
+ val parseObject = JSONObject.parseObject(dpStr)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {}
+ }
+ }
+ }
+ })
+
+ val robotGridAdapter = IconTextGridAdapter(
+ this, LocaleConstant.ROBOT_FUNCTION_IMAGE, LocaleConstant.ROBOT_FUNCTION_ARRAY
+ )
+ functionRecyclerView.adapter = robotGridAdapter
+ robotGridAdapter.setOnGridItemClickListener(object :
+ IconTextGridAdapter.OnGridItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+
+ }
+ 1 -> {
+
+ }
+ 2 -> {
+
+ }
+ 3 -> {
+
+ }
+ 4 -> {
+
+ }
+ 5 -> {
+ "此功能待后续完善".show(context)
+ }
+ 6 -> {
+ "此功能待后续完善".show(context)
+ }
+ 7 -> {
+ navigatePageTo()
+ }
+ }
+ }
+ })
+ }
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setItemTextColor(Color.BLUE)
+ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
+ override fun onActionItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ tuyaOTA.getOtaInfo(object : IGetOtaInfoCallback {
+ override fun onSuccess(upgradeInfoBeans: MutableList?) {
+ if (upgradeInfoBeans.isNullOrEmpty()) {
+ "无新版本可用".show(context)
+ }
+ val mainModel = upgradeInfoBeans!![0]
+ when (mainModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "主联网模组无新版本可用".show(context)
+ }
+
+ val mcuModel = upgradeInfoBeans[1]
+ when (mcuModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "MCU模块无新版本可用".show(context)
+ }
+ }
+
+ override fun onFailure(code: String?, error: String?) {
+
+ }
+ })
+ }
+ 1 -> deviceInstance.removeDevice(object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onError: $error")
+ }
+
+ override fun onSuccess() {
+ finish()
+ }
+ })
+ }
+ }
+ })
+ .build().show()
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //每次获取焦点都查询设备的开关机状态
+ CommandManager.getTuyaDp(deviceInstance, "1")
+ }
+
+ private fun updateVersion() {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("版本升级")
+ .setMessage("有新版本可以升级,是否升级?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+ tuyaOTA.startOta()
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
new file mode 100644
index 0000000..532642f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
@@ -0,0 +1,33 @@
+package com.casic.br.view.device.robot
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_left_back_title.*
+
+class AddTimeConfigActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_robot_add_time
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainBackColor.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "定时"
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt b/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt
new file mode 100644
index 0000000..9552b0b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt
@@ -0,0 +1,53 @@
+package com.casic.br.view.device.robot
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_robot_settings.*
+import kotlinx.android.synthetic.main.include_left_back_title.*
+
+class RobotSettingsActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_robot_settings
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainBackColor.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "耗材维护"
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+ clearBatteryButton.setOnClickListener {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("提示")
+ .setMessage("是否清除记录?如果没有更换耗材而清除记录将会导致数据错误")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_air_cleaner.xml b/app/src/main/res/layout/activity_air_cleaner.xml
index 344af9a..b9202c9 100644
--- a/app/src/main/res/layout/activity_air_cleaner.xml
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rootView"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
+ android:layout_height="match_parent"
android:background="@mipmap/common_bkg"
android:orientation="vertical">
diff --git a/app/src/main/res/layout/activity_power_strip.xml b/app/src/main/res/layout/activity_power_strip.xml
index 60f23df..f7d50e9 100644
--- a/app/src/main/res/layout/activity_power_strip.xml
+++ b/app/src/main/res/layout/activity_power_strip.xml
@@ -107,22 +107,15 @@
android:paddingHorizontal="@dimen/dp_20"
android:paddingVertical="@dimen/dp_10">
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
diff --git a/app/src/main/res/layout/activity_robot_add_time.xml b/app/src/main/res/layout/activity_robot_add_time.xml
new file mode 100644
index 0000000..eb996c0
--- /dev/null
+++ b/app/src/main/res/layout/activity_robot_add_time.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_robot_settings.xml b/app/src/main/res/layout/activity_robot_settings.xml
new file mode 100644
index 0000000..018f2f8
--- /dev/null
+++ b/app/src/main/res/layout/activity_robot_settings.xml
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_sweeping_robot.xml b/app/src/main/res/layout/activity_sweeping_robot.xml
new file mode 100644
index 0000000..9968247
--- /dev/null
+++ b/app/src/main/res/layout/activity_sweeping_robot.xml
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2db3a08..4004755 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -84,6 +84,9 @@
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index fae6114..d38507a 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -127,6 +127,7 @@
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
"kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index a226546..98971ce 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -182,6 +182,10 @@
//空气净化器
requireContext().navigatePageTo(deviceModel.devId)
}
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
index cad6d98..865e6a7 100644
--- a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
@@ -40,24 +40,24 @@
override fun initEvent() {
//开关机
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
- }
-
- lowSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
}
}
- highSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
- }
- }
-
- maxSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ speedRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.lowSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ }
+ R.id.mediumSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
+ }
+ R.id.highSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index 2a8c6e9..e0b0397 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -32,7 +32,6 @@
private var currentProgress = 0
private val timeScope = intArrayOf(30, 60, 120, 180)
private var currentTimeProgress = 0
- private var isDeviceWorking = false
override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control
@@ -93,7 +92,11 @@
override fun initEvent() {
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
kitchenRadioButton.setOnClickListener {
@@ -140,24 +143,21 @@
}
})
- //单次
- onceRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(isChecked))
- }
-
- //点动
- initiateRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(isChecked))
- }
-
- //预约
- reservationRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(isChecked))
- }
-
- //增压
- pressureRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(isChecked))
+ functionRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.onceRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(true))
+ }
+ R.id.initiateRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(true))
+ }
+ R.id.reservationRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(true))
+ }
+ R.id.pressureRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(true))
+ }
+ }
}
//单次参数设定
@@ -182,8 +182,7 @@
parseObject.keys.forEach {
when (it) {
"1" -> {//开关机
- isDeviceWorking = parseObject[it] as Boolean
- turnOffRadioButton.isChecked = isDeviceWorking
+ turnOffRadioButton.isChecked = parseObject[it] as Boolean
}
"2" -> {
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index aeb638b..e9ceee9 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -23,10 +23,8 @@
val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后")
val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件")
val SERVER_IMAGE = intArrayOf(
- R.drawable.ic_daifukuan,
- R.drawable.ic_daifuwu,
- R.drawable.ic_fuwuzhong,
- R.drawable.ic_pingjia
+ R.drawable.ic_daifukuan, R.drawable.ic_daifuwu,
+ R.drawable.ic_fuwuzhong, R.drawable.ic_pingjia
)
val SERVER_OPERATE = arrayOf("待付款", "待服务", "服务中", "评价")
val USER_OPERATE = arrayOf("账号安全", "账号绑定", "支付管理", "地址管理", "系统设置")
@@ -37,6 +35,11 @@
val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+ val ROBOT_FUNCTION_ARRAY = arrayOf("自动清扫", "定点清扫", "沿边打扫", "自动回充", "寻回", "定时", "清扫记录", "设置")
+ val ROBOT_FUNCTION_IMAGE = intArrayOf(
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu,
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu
+ )
//TODO 模拟数据
val TEST_IMAGE = intArrayOf(
diff --git a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
index 1d2618f..9a1c984 100644
--- a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -24,14 +24,6 @@
import com.tuya.smart.sdk.api.ITuyaDevice
import com.tuya.smart.sdk.api.ITuyaOta
import kotlinx.android.synthetic.main.activity_air_cleaner.*
-import kotlinx.android.synthetic.main.activity_air_cleaner.deviceLogoView
-import kotlinx.android.synthetic.main.activity_air_cleaner.highSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.lowSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.modeRadioGroup
-import kotlinx.android.synthetic.main.activity_air_cleaner.rootView
-import kotlinx.android.synthetic.main.activity_air_cleaner.turnOffRadioButton
-import kotlinx.android.synthetic.main.activity_water_dispenser.*
-import kotlinx.android.synthetic.main.fragment_device_rangehood_control.*
import kotlinx.android.synthetic.main.include_device_title.*
/**
@@ -122,7 +114,7 @@
if (c) {
turnOffRadioButton.disableView()
modeRadioGroup.disableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -138,7 +130,7 @@
} else {
turnOffRadioButton.enableView()
modeRadioGroup.enableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -238,7 +230,7 @@
}
1 -> deviceInstance.removeDevice(object : IResultCallback {
override fun onError(code: String?, error: String?) {
- Log.d("Casic", "WaterDispenserActivity => onError: $error")
+ Log.d("Casic", "AirCleanerActivity => onError: $error")
}
override fun onSuccess() {
diff --git a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
index 68a0785..09f0e3a 100644
--- a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
@@ -12,7 +12,6 @@
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
@@ -60,13 +59,12 @@
"查询设备信息失败,请检查设备是否已离线".show(this)
return
}
- Log.d(kTag, deviceBean.dps.toJson())
titleView.text = deviceBean.toChineseTypeName()
deviceBean.dpName.entries.forEach {
when (it.key) {
- "1" -> firstNameView.text = it.value
- "2" -> secondNameView.text = it.value
- "3" -> thirdNameView.text = it.value
+ "1" -> firstTurnOffCheckBox.text = it.value
+ "2" -> secondTurnOffCheckBox.text = it.value
+ "3" -> thirdTurnOffCheckBox.text = it.value
}
}
deviceBean.dps.entries.forEach {
diff --git a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
index 4ea83fc..e613a61 100644
--- a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
@@ -135,8 +135,12 @@
.build().show()
}
- turnOffCheckBox.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(isChecked))
+ turnOffCheckBox.setOnClickListener {
+ if (turnOffCheckBox.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
new file mode 100644
index 0000000..2abc2f3
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
@@ -0,0 +1,203 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.alibaba.fastjson.JSONObject
+import com.casic.br.R
+import com.casic.br.adapter.IconTextGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.LocaleConstant
+import com.casic.br.utils.TuyaDeviceListener
+import com.casic.br.view.device.robot.RobotSettingsActivity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
+import com.tuya.smart.android.device.bean.UpgradeInfoBean
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.sdk.api.IGetOtaInfoCallback
+import com.tuya.smart.sdk.api.IResultCallback
+import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.api.ITuyaOta
+import kotlinx.android.synthetic.main.activity_sweeping_robot.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 智能扫地机器人
+ * TODO 数据上报暂缓
+ * */
+class SweepingRobotActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@SweepingRobotActivity
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_sweeping_robot
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ Log.d("Casic", "SweepingRobotActivity => initData: $deviceId")
+ tuyaOTA = TuyaHomeSdk.newOTAInstance(deviceId)
+ //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
+ deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
+
+ val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId)
+ if (deviceBean == null) {
+ "查询设备信息失败,请检查设备是否已离线".show(this)
+ return
+ }
+ titleView.text = deviceBean.toChineseTypeName()
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onDpUpdate: $dpStr")
+ val parseObject = JSONObject.parseObject(dpStr)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {}
+ }
+ }
+ }
+ })
+
+ val robotGridAdapter = IconTextGridAdapter(
+ this, LocaleConstant.ROBOT_FUNCTION_IMAGE, LocaleConstant.ROBOT_FUNCTION_ARRAY
+ )
+ functionRecyclerView.adapter = robotGridAdapter
+ robotGridAdapter.setOnGridItemClickListener(object :
+ IconTextGridAdapter.OnGridItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+
+ }
+ 1 -> {
+
+ }
+ 2 -> {
+
+ }
+ 3 -> {
+
+ }
+ 4 -> {
+
+ }
+ 5 -> {
+ "此功能待后续完善".show(context)
+ }
+ 6 -> {
+ "此功能待后续完善".show(context)
+ }
+ 7 -> {
+ navigatePageTo()
+ }
+ }
+ }
+ })
+ }
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setItemTextColor(Color.BLUE)
+ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
+ override fun onActionItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ tuyaOTA.getOtaInfo(object : IGetOtaInfoCallback {
+ override fun onSuccess(upgradeInfoBeans: MutableList?) {
+ if (upgradeInfoBeans.isNullOrEmpty()) {
+ "无新版本可用".show(context)
+ }
+ val mainModel = upgradeInfoBeans!![0]
+ when (mainModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "主联网模组无新版本可用".show(context)
+ }
+
+ val mcuModel = upgradeInfoBeans[1]
+ when (mcuModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "MCU模块无新版本可用".show(context)
+ }
+ }
+
+ override fun onFailure(code: String?, error: String?) {
+
+ }
+ })
+ }
+ 1 -> deviceInstance.removeDevice(object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onError: $error")
+ }
+
+ override fun onSuccess() {
+ finish()
+ }
+ })
+ }
+ }
+ })
+ .build().show()
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //每次获取焦点都查询设备的开关机状态
+ CommandManager.getTuyaDp(deviceInstance, "1")
+ }
+
+ private fun updateVersion() {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("版本升级")
+ .setMessage("有新版本可以升级,是否升级?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+ tuyaOTA.startOta()
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
new file mode 100644
index 0000000..532642f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
@@ -0,0 +1,33 @@
+package com.casic.br.view.device.robot
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_left_back_title.*
+
+class AddTimeConfigActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_robot_add_time
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainBackColor.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "定时"
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt b/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt
new file mode 100644
index 0000000..9552b0b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt
@@ -0,0 +1,53 @@
+package com.casic.br.view.device.robot
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_robot_settings.*
+import kotlinx.android.synthetic.main.include_left_back_title.*
+
+class RobotSettingsActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_robot_settings
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainBackColor.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "耗材维护"
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+ clearBatteryButton.setOnClickListener {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("提示")
+ .setMessage("是否清除记录?如果没有更换耗材而清除记录将会导致数据错误")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_air_cleaner.xml b/app/src/main/res/layout/activity_air_cleaner.xml
index 344af9a..b9202c9 100644
--- a/app/src/main/res/layout/activity_air_cleaner.xml
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rootView"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
+ android:layout_height="match_parent"
android:background="@mipmap/common_bkg"
android:orientation="vertical">
diff --git a/app/src/main/res/layout/activity_power_strip.xml b/app/src/main/res/layout/activity_power_strip.xml
index 60f23df..f7d50e9 100644
--- a/app/src/main/res/layout/activity_power_strip.xml
+++ b/app/src/main/res/layout/activity_power_strip.xml
@@ -107,22 +107,15 @@
android:paddingHorizontal="@dimen/dp_20"
android:paddingVertical="@dimen/dp_10">
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
diff --git a/app/src/main/res/layout/activity_robot_add_time.xml b/app/src/main/res/layout/activity_robot_add_time.xml
new file mode 100644
index 0000000..eb996c0
--- /dev/null
+++ b/app/src/main/res/layout/activity_robot_add_time.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_robot_settings.xml b/app/src/main/res/layout/activity_robot_settings.xml
new file mode 100644
index 0000000..018f2f8
--- /dev/null
+++ b/app/src/main/res/layout/activity_robot_settings.xml
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_sweeping_robot.xml b/app/src/main/res/layout/activity_sweeping_robot.xml
new file mode 100644
index 0000000..9968247
--- /dev/null
+++ b/app/src/main/res/layout/activity_sweeping_robot.xml
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_rangehood_control.xml b/app/src/main/res/layout/fragment_device_rangehood_control.xml
index 4fc8209..adf3d03 100644
--- a/app/src/main/res/layout/fragment_device_rangehood_control.xml
+++ b/app/src/main/res/layout/fragment_device_rangehood_control.xml
@@ -28,7 +28,7 @@
android:text="开关"
android:textSize="@dimen/sp_16" />
-
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index fae6114..d38507a 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -127,6 +127,7 @@
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
"kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index a226546..98971ce 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -182,6 +182,10 @@
//空气净化器
requireContext().navigatePageTo(deviceModel.devId)
}
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
index cad6d98..865e6a7 100644
--- a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
@@ -40,24 +40,24 @@
override fun initEvent() {
//开关机
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
- }
-
- lowSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
}
}
- highSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
- }
- }
-
- maxSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ speedRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.lowSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ }
+ R.id.mediumSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
+ }
+ R.id.highSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index 2a8c6e9..e0b0397 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -32,7 +32,6 @@
private var currentProgress = 0
private val timeScope = intArrayOf(30, 60, 120, 180)
private var currentTimeProgress = 0
- private var isDeviceWorking = false
override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control
@@ -93,7 +92,11 @@
override fun initEvent() {
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
kitchenRadioButton.setOnClickListener {
@@ -140,24 +143,21 @@
}
})
- //单次
- onceRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(isChecked))
- }
-
- //点动
- initiateRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(isChecked))
- }
-
- //预约
- reservationRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(isChecked))
- }
-
- //增压
- pressureRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(isChecked))
+ functionRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.onceRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(true))
+ }
+ R.id.initiateRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(true))
+ }
+ R.id.reservationRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(true))
+ }
+ R.id.pressureRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(true))
+ }
+ }
}
//单次参数设定
@@ -182,8 +182,7 @@
parseObject.keys.forEach {
when (it) {
"1" -> {//开关机
- isDeviceWorking = parseObject[it] as Boolean
- turnOffRadioButton.isChecked = isDeviceWorking
+ turnOffRadioButton.isChecked = parseObject[it] as Boolean
}
"2" -> {
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index aeb638b..e9ceee9 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -23,10 +23,8 @@
val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后")
val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件")
val SERVER_IMAGE = intArrayOf(
- R.drawable.ic_daifukuan,
- R.drawable.ic_daifuwu,
- R.drawable.ic_fuwuzhong,
- R.drawable.ic_pingjia
+ R.drawable.ic_daifukuan, R.drawable.ic_daifuwu,
+ R.drawable.ic_fuwuzhong, R.drawable.ic_pingjia
)
val SERVER_OPERATE = arrayOf("待付款", "待服务", "服务中", "评价")
val USER_OPERATE = arrayOf("账号安全", "账号绑定", "支付管理", "地址管理", "系统设置")
@@ -37,6 +35,11 @@
val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+ val ROBOT_FUNCTION_ARRAY = arrayOf("自动清扫", "定点清扫", "沿边打扫", "自动回充", "寻回", "定时", "清扫记录", "设置")
+ val ROBOT_FUNCTION_IMAGE = intArrayOf(
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu,
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu
+ )
//TODO 模拟数据
val TEST_IMAGE = intArrayOf(
diff --git a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
index 1d2618f..9a1c984 100644
--- a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -24,14 +24,6 @@
import com.tuya.smart.sdk.api.ITuyaDevice
import com.tuya.smart.sdk.api.ITuyaOta
import kotlinx.android.synthetic.main.activity_air_cleaner.*
-import kotlinx.android.synthetic.main.activity_air_cleaner.deviceLogoView
-import kotlinx.android.synthetic.main.activity_air_cleaner.highSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.lowSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.modeRadioGroup
-import kotlinx.android.synthetic.main.activity_air_cleaner.rootView
-import kotlinx.android.synthetic.main.activity_air_cleaner.turnOffRadioButton
-import kotlinx.android.synthetic.main.activity_water_dispenser.*
-import kotlinx.android.synthetic.main.fragment_device_rangehood_control.*
import kotlinx.android.synthetic.main.include_device_title.*
/**
@@ -122,7 +114,7 @@
if (c) {
turnOffRadioButton.disableView()
modeRadioGroup.disableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -138,7 +130,7 @@
} else {
turnOffRadioButton.enableView()
modeRadioGroup.enableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -238,7 +230,7 @@
}
1 -> deviceInstance.removeDevice(object : IResultCallback {
override fun onError(code: String?, error: String?) {
- Log.d("Casic", "WaterDispenserActivity => onError: $error")
+ Log.d("Casic", "AirCleanerActivity => onError: $error")
}
override fun onSuccess() {
diff --git a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
index 68a0785..09f0e3a 100644
--- a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
@@ -12,7 +12,6 @@
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
@@ -60,13 +59,12 @@
"查询设备信息失败,请检查设备是否已离线".show(this)
return
}
- Log.d(kTag, deviceBean.dps.toJson())
titleView.text = deviceBean.toChineseTypeName()
deviceBean.dpName.entries.forEach {
when (it.key) {
- "1" -> firstNameView.text = it.value
- "2" -> secondNameView.text = it.value
- "3" -> thirdNameView.text = it.value
+ "1" -> firstTurnOffCheckBox.text = it.value
+ "2" -> secondTurnOffCheckBox.text = it.value
+ "3" -> thirdTurnOffCheckBox.text = it.value
}
}
deviceBean.dps.entries.forEach {
diff --git a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
index 4ea83fc..e613a61 100644
--- a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
@@ -135,8 +135,12 @@
.build().show()
}
- turnOffCheckBox.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(isChecked))
+ turnOffCheckBox.setOnClickListener {
+ if (turnOffCheckBox.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
new file mode 100644
index 0000000..2abc2f3
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
@@ -0,0 +1,203 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.alibaba.fastjson.JSONObject
+import com.casic.br.R
+import com.casic.br.adapter.IconTextGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.LocaleConstant
+import com.casic.br.utils.TuyaDeviceListener
+import com.casic.br.view.device.robot.RobotSettingsActivity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
+import com.tuya.smart.android.device.bean.UpgradeInfoBean
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.sdk.api.IGetOtaInfoCallback
+import com.tuya.smart.sdk.api.IResultCallback
+import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.api.ITuyaOta
+import kotlinx.android.synthetic.main.activity_sweeping_robot.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 智能扫地机器人
+ * TODO 数据上报暂缓
+ * */
+class SweepingRobotActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@SweepingRobotActivity
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_sweeping_robot
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ Log.d("Casic", "SweepingRobotActivity => initData: $deviceId")
+ tuyaOTA = TuyaHomeSdk.newOTAInstance(deviceId)
+ //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
+ deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
+
+ val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId)
+ if (deviceBean == null) {
+ "查询设备信息失败,请检查设备是否已离线".show(this)
+ return
+ }
+ titleView.text = deviceBean.toChineseTypeName()
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onDpUpdate: $dpStr")
+ val parseObject = JSONObject.parseObject(dpStr)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {}
+ }
+ }
+ }
+ })
+
+ val robotGridAdapter = IconTextGridAdapter(
+ this, LocaleConstant.ROBOT_FUNCTION_IMAGE, LocaleConstant.ROBOT_FUNCTION_ARRAY
+ )
+ functionRecyclerView.adapter = robotGridAdapter
+ robotGridAdapter.setOnGridItemClickListener(object :
+ IconTextGridAdapter.OnGridItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+
+ }
+ 1 -> {
+
+ }
+ 2 -> {
+
+ }
+ 3 -> {
+
+ }
+ 4 -> {
+
+ }
+ 5 -> {
+ "此功能待后续完善".show(context)
+ }
+ 6 -> {
+ "此功能待后续完善".show(context)
+ }
+ 7 -> {
+ navigatePageTo()
+ }
+ }
+ }
+ })
+ }
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setItemTextColor(Color.BLUE)
+ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
+ override fun onActionItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ tuyaOTA.getOtaInfo(object : IGetOtaInfoCallback {
+ override fun onSuccess(upgradeInfoBeans: MutableList?) {
+ if (upgradeInfoBeans.isNullOrEmpty()) {
+ "无新版本可用".show(context)
+ }
+ val mainModel = upgradeInfoBeans!![0]
+ when (mainModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "主联网模组无新版本可用".show(context)
+ }
+
+ val mcuModel = upgradeInfoBeans[1]
+ when (mcuModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "MCU模块无新版本可用".show(context)
+ }
+ }
+
+ override fun onFailure(code: String?, error: String?) {
+
+ }
+ })
+ }
+ 1 -> deviceInstance.removeDevice(object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onError: $error")
+ }
+
+ override fun onSuccess() {
+ finish()
+ }
+ })
+ }
+ }
+ })
+ .build().show()
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //每次获取焦点都查询设备的开关机状态
+ CommandManager.getTuyaDp(deviceInstance, "1")
+ }
+
+ private fun updateVersion() {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("版本升级")
+ .setMessage("有新版本可以升级,是否升级?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+ tuyaOTA.startOta()
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
new file mode 100644
index 0000000..532642f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
@@ -0,0 +1,33 @@
+package com.casic.br.view.device.robot
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_left_back_title.*
+
+class AddTimeConfigActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_robot_add_time
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainBackColor.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "定时"
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt b/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt
new file mode 100644
index 0000000..9552b0b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt
@@ -0,0 +1,53 @@
+package com.casic.br.view.device.robot
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_robot_settings.*
+import kotlinx.android.synthetic.main.include_left_back_title.*
+
+class RobotSettingsActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_robot_settings
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainBackColor.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "耗材维护"
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+ clearBatteryButton.setOnClickListener {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("提示")
+ .setMessage("是否清除记录?如果没有更换耗材而清除记录将会导致数据错误")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_air_cleaner.xml b/app/src/main/res/layout/activity_air_cleaner.xml
index 344af9a..b9202c9 100644
--- a/app/src/main/res/layout/activity_air_cleaner.xml
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rootView"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
+ android:layout_height="match_parent"
android:background="@mipmap/common_bkg"
android:orientation="vertical">
diff --git a/app/src/main/res/layout/activity_power_strip.xml b/app/src/main/res/layout/activity_power_strip.xml
index 60f23df..f7d50e9 100644
--- a/app/src/main/res/layout/activity_power_strip.xml
+++ b/app/src/main/res/layout/activity_power_strip.xml
@@ -107,22 +107,15 @@
android:paddingHorizontal="@dimen/dp_20"
android:paddingVertical="@dimen/dp_10">
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
diff --git a/app/src/main/res/layout/activity_robot_add_time.xml b/app/src/main/res/layout/activity_robot_add_time.xml
new file mode 100644
index 0000000..eb996c0
--- /dev/null
+++ b/app/src/main/res/layout/activity_robot_add_time.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_robot_settings.xml b/app/src/main/res/layout/activity_robot_settings.xml
new file mode 100644
index 0000000..018f2f8
--- /dev/null
+++ b/app/src/main/res/layout/activity_robot_settings.xml
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_sweeping_robot.xml b/app/src/main/res/layout/activity_sweeping_robot.xml
new file mode 100644
index 0000000..9968247
--- /dev/null
+++ b/app/src/main/res/layout/activity_sweeping_robot.xml
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_rangehood_control.xml b/app/src/main/res/layout/fragment_device_rangehood_control.xml
index 4fc8209..adf3d03 100644
--- a/app/src/main/res/layout/fragment_device_rangehood_control.xml
+++ b/app/src/main/res/layout/fragment_device_rangehood_control.xml
@@ -28,7 +28,7 @@
android:text="开关"
android:textSize="@dimen/sp_16" />
-
-
+
+
+
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index fae6114..d38507a 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -127,6 +127,7 @@
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
"kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index a226546..98971ce 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -182,6 +182,10 @@
//空气净化器
requireContext().navigatePageTo(deviceModel.devId)
}
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
index cad6d98..865e6a7 100644
--- a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
@@ -40,24 +40,24 @@
override fun initEvent() {
//开关机
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
- }
-
- lowSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
}
}
- highSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
- }
- }
-
- maxSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ speedRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.lowSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ }
+ R.id.mediumSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
+ }
+ R.id.highSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
index 2a8c6e9..e0b0397 100644
--- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt
@@ -32,7 +32,6 @@
private var currentProgress = 0
private val timeScope = intArrayOf(30, 60, 120, 180)
private var currentTimeProgress = 0
- private var isDeviceWorking = false
override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control
@@ -93,7 +92,11 @@
override fun initEvent() {
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
kitchenRadioButton.setOnClickListener {
@@ -140,24 +143,21 @@
}
})
- //单次
- onceRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(isChecked))
- }
-
- //点动
- initiateRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(isChecked))
- }
-
- //预约
- reservationRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(isChecked))
- }
-
- //增压
- pressureRadioButton.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(isChecked))
+ functionRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.onceRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "101".createCommand(true))
+ }
+ R.id.initiateRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "102".createCommand(true))
+ }
+ R.id.reservationRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "109".createCommand(true))
+ }
+ R.id.pressureRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "110".createCommand(true))
+ }
+ }
}
//单次参数设定
@@ -182,8 +182,7 @@
parseObject.keys.forEach {
when (it) {
"1" -> {//开关机
- isDeviceWorking = parseObject[it] as Boolean
- turnOffRadioButton.isChecked = isDeviceWorking
+ turnOffRadioButton.isChecked = parseObject[it] as Boolean
}
"2" -> {
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index aeb638b..e9ceee9 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -23,10 +23,8 @@
val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后")
val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件")
val SERVER_IMAGE = intArrayOf(
- R.drawable.ic_daifukuan,
- R.drawable.ic_daifuwu,
- R.drawable.ic_fuwuzhong,
- R.drawable.ic_pingjia
+ R.drawable.ic_daifukuan, R.drawable.ic_daifuwu,
+ R.drawable.ic_fuwuzhong, R.drawable.ic_pingjia
)
val SERVER_OPERATE = arrayOf("待付款", "待服务", "服务中", "评价")
val USER_OPERATE = arrayOf("账号安全", "账号绑定", "支付管理", "地址管理", "系统设置")
@@ -37,6 +35,11 @@
val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+ val ROBOT_FUNCTION_ARRAY = arrayOf("自动清扫", "定点清扫", "沿边打扫", "自动回充", "寻回", "定时", "清扫记录", "设置")
+ val ROBOT_FUNCTION_IMAGE = intArrayOf(
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu,
+ R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu, R.drawable.ic_kefu
+ )
//TODO 模拟数据
val TEST_IMAGE = intArrayOf(
diff --git a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
index 1d2618f..9a1c984 100644
--- a/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -24,14 +24,6 @@
import com.tuya.smart.sdk.api.ITuyaDevice
import com.tuya.smart.sdk.api.ITuyaOta
import kotlinx.android.synthetic.main.activity_air_cleaner.*
-import kotlinx.android.synthetic.main.activity_air_cleaner.deviceLogoView
-import kotlinx.android.synthetic.main.activity_air_cleaner.highSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.lowSpeedRadioButton
-import kotlinx.android.synthetic.main.activity_air_cleaner.modeRadioGroup
-import kotlinx.android.synthetic.main.activity_air_cleaner.rootView
-import kotlinx.android.synthetic.main.activity_air_cleaner.turnOffRadioButton
-import kotlinx.android.synthetic.main.activity_water_dispenser.*
-import kotlinx.android.synthetic.main.fragment_device_rangehood_control.*
import kotlinx.android.synthetic.main.include_device_title.*
/**
@@ -122,7 +114,7 @@
if (c) {
turnOffRadioButton.disableView()
modeRadioGroup.disableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -138,7 +130,7 @@
} else {
turnOffRadioButton.enableView()
modeRadioGroup.enableView(
- normalRadioButton,
+ manualRadioButton,
autoRadioButton,
sleepRadioButton,
potentRadioButton
@@ -238,7 +230,7 @@
}
1 -> deviceInstance.removeDevice(object : IResultCallback {
override fun onError(code: String?, error: String?) {
- Log.d("Casic", "WaterDispenserActivity => onError: $error")
+ Log.d("Casic", "AirCleanerActivity => onError: $error")
}
override fun onSuccess() {
diff --git a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
index 68a0785..09f0e3a 100644
--- a/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/PowerStripActivity.kt
@@ -12,7 +12,6 @@
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
@@ -60,13 +59,12 @@
"查询设备信息失败,请检查设备是否已离线".show(this)
return
}
- Log.d(kTag, deviceBean.dps.toJson())
titleView.text = deviceBean.toChineseTypeName()
deviceBean.dpName.entries.forEach {
when (it.key) {
- "1" -> firstNameView.text = it.value
- "2" -> secondNameView.text = it.value
- "3" -> thirdNameView.text = it.value
+ "1" -> firstTurnOffCheckBox.text = it.value
+ "2" -> secondTurnOffCheckBox.text = it.value
+ "3" -> thirdTurnOffCheckBox.text = it.value
}
}
deviceBean.dps.entries.forEach {
diff --git a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
index 4ea83fc..e613a61 100644
--- a/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/SingleStripActivity.kt
@@ -135,8 +135,12 @@
.build().show()
}
- turnOffCheckBox.setOnCheckedChangeListener { _, isChecked ->
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(isChecked))
+ turnOffCheckBox.setOnClickListener {
+ if (turnOffCheckBox.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
+ }
}
}
diff --git a/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
new file mode 100644
index 0000000..2abc2f3
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/SweepingRobotActivity.kt
@@ -0,0 +1,203 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.alibaba.fastjson.JSONObject
+import com.casic.br.R
+import com.casic.br.adapter.IconTextGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.LocaleConstant
+import com.casic.br.utils.TuyaDeviceListener
+import com.casic.br.view.device.robot.RobotSettingsActivity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
+import com.tuya.smart.android.device.bean.UpgradeInfoBean
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.sdk.api.IGetOtaInfoCallback
+import com.tuya.smart.sdk.api.IResultCallback
+import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.api.ITuyaOta
+import kotlinx.android.synthetic.main.activity_sweeping_robot.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 智能扫地机器人
+ * TODO 数据上报暂缓
+ * */
+class SweepingRobotActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@SweepingRobotActivity
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_sweeping_robot
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ Log.d("Casic", "SweepingRobotActivity => initData: $deviceId")
+ tuyaOTA = TuyaHomeSdk.newOTAInstance(deviceId)
+ //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
+ deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
+
+ val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId)
+ if (deviceBean == null) {
+ "查询设备信息失败,请检查设备是否已离线".show(this)
+ return
+ }
+ titleView.text = deviceBean.toChineseTypeName()
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onDpUpdate: $dpStr")
+ val parseObject = JSONObject.parseObject(dpStr)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {}
+ }
+ }
+ }
+ })
+
+ val robotGridAdapter = IconTextGridAdapter(
+ this, LocaleConstant.ROBOT_FUNCTION_IMAGE, LocaleConstant.ROBOT_FUNCTION_ARRAY
+ )
+ functionRecyclerView.adapter = robotGridAdapter
+ robotGridAdapter.setOnGridItemClickListener(object :
+ IconTextGridAdapter.OnGridItemClickListener {
+ override fun onItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+
+ }
+ 1 -> {
+
+ }
+ 2 -> {
+
+ }
+ 3 -> {
+
+ }
+ 4 -> {
+
+ }
+ 5 -> {
+ "此功能待后续完善".show(context)
+ }
+ 6 -> {
+ "此功能待后续完善".show(context)
+ }
+ 7 -> {
+ navigatePageTo()
+ }
+ }
+ }
+ })
+ }
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setActionItemTitle(arrayListOf("固件升级", "移除设备"))
+ .setItemTextColor(Color.BLUE)
+ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
+ override fun onActionItemClick(position: Int) {
+ when (position) {
+ 0 -> {
+ tuyaOTA.getOtaInfo(object : IGetOtaInfoCallback {
+ override fun onSuccess(upgradeInfoBeans: MutableList?) {
+ if (upgradeInfoBeans.isNullOrEmpty()) {
+ "无新版本可用".show(context)
+ }
+ val mainModel = upgradeInfoBeans!![0]
+ when (mainModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "主联网模组无新版本可用".show(context)
+ }
+
+ val mcuModel = upgradeInfoBeans[1]
+ when (mcuModel.upgradeStatus) {
+ 1 -> updateVersion()
+ 2 -> {
+
+ }
+ else -> "MCU模块无新版本可用".show(context)
+ }
+ }
+
+ override fun onFailure(code: String?, error: String?) {
+
+ }
+ })
+ }
+ 1 -> deviceInstance.removeDevice(object : IResultCallback {
+ override fun onError(code: String?, error: String?) {
+ Log.d("Casic", "SweepingRobotActivity => onError: $error")
+ }
+
+ override fun onSuccess() {
+ finish()
+ }
+ })
+ }
+ }
+ })
+ .build().show()
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //每次获取焦点都查询设备的开关机状态
+ CommandManager.getTuyaDp(deviceInstance, "1")
+ }
+
+ private fun updateVersion() {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("版本升级")
+ .setMessage("有新版本可以升级,是否升级?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+ tuyaOTA.startOta()
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
new file mode 100644
index 0000000..532642f
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/robot/AddTimeConfigActivity.kt
@@ -0,0 +1,33 @@
+package com.casic.br.view.device.robot
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_left_back_title.*
+
+class AddTimeConfigActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_robot_add_time
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainBackColor.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "定时"
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt b/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt
new file mode 100644
index 0000000..9552b0b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/robot/RobotSettingsActivity.kt
@@ -0,0 +1,53 @@
+package com.casic.br.view.device.robot
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_robot_settings.*
+import kotlinx.android.synthetic.main.include_left_back_title.*
+
+class RobotSettingsActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_robot_settings
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainBackColor.convertColor(this))
+
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "耗材维护"
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+ clearBatteryButton.setOnClickListener {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("提示")
+ .setMessage("是否清除记录?如果没有更换耗材而清除记录将会导致数据错误")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onCancelClick() {
+
+ }
+
+ override fun onConfirmClick() {
+
+ }
+ })
+ .build().show()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_air_cleaner.xml b/app/src/main/res/layout/activity_air_cleaner.xml
index 344af9a..b9202c9 100644
--- a/app/src/main/res/layout/activity_air_cleaner.xml
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rootView"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
+ android:layout_height="match_parent"
android:background="@mipmap/common_bkg"
android:orientation="vertical">
diff --git a/app/src/main/res/layout/activity_power_strip.xml b/app/src/main/res/layout/activity_power_strip.xml
index 60f23df..f7d50e9 100644
--- a/app/src/main/res/layout/activity_power_strip.xml
+++ b/app/src/main/res/layout/activity_power_strip.xml
@@ -107,22 +107,15 @@
android:paddingHorizontal="@dimen/dp_20"
android:paddingVertical="@dimen/dp_10">
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
-
-
+ android:drawableBottom="@drawable/selector_power_strip_turn_off"
+ android:drawablePadding="@dimen/dp_10"
+ android:gravity="center"
+ android:text="@string/app_name" />
diff --git a/app/src/main/res/layout/activity_robot_add_time.xml b/app/src/main/res/layout/activity_robot_add_time.xml
new file mode 100644
index 0000000..eb996c0
--- /dev/null
+++ b/app/src/main/res/layout/activity_robot_add_time.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_robot_settings.xml b/app/src/main/res/layout/activity_robot_settings.xml
new file mode 100644
index 0000000..018f2f8
--- /dev/null
+++ b/app/src/main/res/layout/activity_robot_settings.xml
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_sweeping_robot.xml b/app/src/main/res/layout/activity_sweeping_robot.xml
new file mode 100644
index 0000000..9968247
--- /dev/null
+++ b/app/src/main/res/layout/activity_sweeping_robot.xml
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_rangehood_control.xml b/app/src/main/res/layout/fragment_device_rangehood_control.xml
index 4fc8209..adf3d03 100644
--- a/app/src/main/res/layout/fragment_device_rangehood_control.xml
+++ b/app/src/main/res/layout/fragment_device_rangehood_control.xml
@@ -28,7 +28,7 @@
android:text="开关"
android:textSize="@dimen/sp_16" />
-
-
#662483B3
#D3E6F0
#333333
- #626262
+ #888888
#F7F7FA
#CCCCCC
#DDDDDD