diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
else -> "其他"
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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 bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_switch.xml b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
new file mode 100644
index 0000000..a5577f0
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_switch.xml b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
new file mode 100644
index 0000000..a5577f0
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..bb137e8
--- /dev/null
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_switch.xml b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
new file mode 100644
index 0000000..a5577f0
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..bb137e8
--- /dev/null
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_dispenser.xml b/app/src/main/res/layout/activity_water_dispenser.xml
index b3a661a..78918e3 100644
--- a/app/src/main/res/layout/activity_water_dispenser.xml
+++ b/app/src/main/res/layout/activity_water_dispenser.xml
@@ -170,7 +170,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_milk"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲牛奶" />
@@ -181,7 +181,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_coffee"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲咖啡" />
@@ -192,7 +192,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_boiled"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="开水" />
@@ -203,7 +203,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_custom"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="自定义" />
@@ -225,7 +225,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_child"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="童锁" />
@@ -236,7 +236,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_switch"
android:drawablePadding="@dimen/dp_5"
android:enabled="false"
android:gravity="center"
@@ -249,7 +249,7 @@
android:layout_weight="1"
android:button="@null"
android:checked="true"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_settings"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="设置" />
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_switch.xml b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
new file mode 100644
index 0000000..a5577f0
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..bb137e8
--- /dev/null
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_dispenser.xml b/app/src/main/res/layout/activity_water_dispenser.xml
index b3a661a..78918e3 100644
--- a/app/src/main/res/layout/activity_water_dispenser.xml
+++ b/app/src/main/res/layout/activity_water_dispenser.xml
@@ -170,7 +170,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_milk"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲牛奶" />
@@ -181,7 +181,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_coffee"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲咖啡" />
@@ -192,7 +192,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_boiled"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="开水" />
@@ -203,7 +203,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_custom"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="自定义" />
@@ -225,7 +225,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_child"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="童锁" />
@@ -236,7 +236,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_switch"
android:drawablePadding="@dimen/dp_5"
android:enabled="false"
android:gravity="center"
@@ -249,7 +249,7 @@
android:layout_weight="1"
android:button="@null"
android:checked="true"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_settings"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="设置" />
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
new file mode 100644
index 0000000..d242b8d
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_switch.xml b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
new file mode 100644
index 0000000..a5577f0
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..bb137e8
--- /dev/null
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_dispenser.xml b/app/src/main/res/layout/activity_water_dispenser.xml
index b3a661a..78918e3 100644
--- a/app/src/main/res/layout/activity_water_dispenser.xml
+++ b/app/src/main/res/layout/activity_water_dispenser.xml
@@ -170,7 +170,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_milk"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲牛奶" />
@@ -181,7 +181,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_coffee"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲咖啡" />
@@ -192,7 +192,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_boiled"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="开水" />
@@ -203,7 +203,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_custom"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="自定义" />
@@ -225,7 +225,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_child"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="童锁" />
@@ -236,7 +236,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_switch"
android:drawablePadding="@dimen/dp_5"
android:enabled="false"
android:gravity="center"
@@ -249,7 +249,7 @@
android:layout_weight="1"
android:button="@null"
android:checked="true"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_settings"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="设置" />
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
new file mode 100644
index 0000000..d242b8d
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
new file mode 100644
index 0000000..1410582
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_switch.xml b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
new file mode 100644
index 0000000..a5577f0
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..bb137e8
--- /dev/null
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_dispenser.xml b/app/src/main/res/layout/activity_water_dispenser.xml
index b3a661a..78918e3 100644
--- a/app/src/main/res/layout/activity_water_dispenser.xml
+++ b/app/src/main/res/layout/activity_water_dispenser.xml
@@ -170,7 +170,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_milk"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲牛奶" />
@@ -181,7 +181,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_coffee"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲咖啡" />
@@ -192,7 +192,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_boiled"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="开水" />
@@ -203,7 +203,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_custom"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="自定义" />
@@ -225,7 +225,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_child"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="童锁" />
@@ -236,7 +236,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_switch"
android:drawablePadding="@dimen/dp_5"
android:enabled="false"
android:gravity="center"
@@ -249,7 +249,7 @@
android:layout_weight="1"
android:button="@null"
android:checked="true"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_settings"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="设置" />
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
new file mode 100644
index 0000000..d242b8d
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
new file mode 100644
index 0000000..1410582
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child.png b/app/src/main/res/mipmap-xxhdpi/ic_child.png
new file mode 100644
index 0000000..6a94298
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child.png
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_switch.xml b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
new file mode 100644
index 0000000..a5577f0
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..bb137e8
--- /dev/null
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_dispenser.xml b/app/src/main/res/layout/activity_water_dispenser.xml
index b3a661a..78918e3 100644
--- a/app/src/main/res/layout/activity_water_dispenser.xml
+++ b/app/src/main/res/layout/activity_water_dispenser.xml
@@ -170,7 +170,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_milk"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲牛奶" />
@@ -181,7 +181,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_coffee"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲咖啡" />
@@ -192,7 +192,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_boiled"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="开水" />
@@ -203,7 +203,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_custom"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="自定义" />
@@ -225,7 +225,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_child"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="童锁" />
@@ -236,7 +236,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_switch"
android:drawablePadding="@dimen/dp_5"
android:enabled="false"
android:gravity="center"
@@ -249,7 +249,7 @@
android:layout_weight="1"
android:button="@null"
android:checked="true"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_settings"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="设置" />
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
new file mode 100644
index 0000000..d242b8d
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
new file mode 100644
index 0000000..1410582
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child.png b/app/src/main/res/mipmap-xxhdpi/ic_child.png
new file mode 100644
index 0000000..6a94298
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child_main.png b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
new file mode 100644
index 0000000..8b9adc1
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_switch.xml b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
new file mode 100644
index 0000000..a5577f0
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..bb137e8
--- /dev/null
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_dispenser.xml b/app/src/main/res/layout/activity_water_dispenser.xml
index b3a661a..78918e3 100644
--- a/app/src/main/res/layout/activity_water_dispenser.xml
+++ b/app/src/main/res/layout/activity_water_dispenser.xml
@@ -170,7 +170,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_milk"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲牛奶" />
@@ -181,7 +181,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_coffee"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲咖啡" />
@@ -192,7 +192,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_boiled"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="开水" />
@@ -203,7 +203,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_custom"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="自定义" />
@@ -225,7 +225,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_child"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="童锁" />
@@ -236,7 +236,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_switch"
android:drawablePadding="@dimen/dp_5"
android:enabled="false"
android:gravity="center"
@@ -249,7 +249,7 @@
android:layout_weight="1"
android:button="@null"
android:checked="true"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_settings"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="设置" />
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
new file mode 100644
index 0000000..d242b8d
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
new file mode 100644
index 0000000..1410582
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child.png b/app/src/main/res/mipmap-xxhdpi/ic_child.png
new file mode 100644
index 0000000..6a94298
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child_main.png b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
new file mode 100644
index 0000000..8b9adc1
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
new file mode 100644
index 0000000..33ea99b
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_switch.xml b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
new file mode 100644
index 0000000..a5577f0
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..bb137e8
--- /dev/null
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_dispenser.xml b/app/src/main/res/layout/activity_water_dispenser.xml
index b3a661a..78918e3 100644
--- a/app/src/main/res/layout/activity_water_dispenser.xml
+++ b/app/src/main/res/layout/activity_water_dispenser.xml
@@ -170,7 +170,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_milk"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲牛奶" />
@@ -181,7 +181,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_coffee"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲咖啡" />
@@ -192,7 +192,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_boiled"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="开水" />
@@ -203,7 +203,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_custom"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="自定义" />
@@ -225,7 +225,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_child"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="童锁" />
@@ -236,7 +236,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_switch"
android:drawablePadding="@dimen/dp_5"
android:enabled="false"
android:gravity="center"
@@ -249,7 +249,7 @@
android:layout_weight="1"
android:button="@null"
android:checked="true"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_settings"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="设置" />
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
new file mode 100644
index 0000000..d242b8d
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
new file mode 100644
index 0000000..1410582
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child.png b/app/src/main/res/mipmap-xxhdpi/ic_child.png
new file mode 100644
index 0000000..6a94298
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child_main.png b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
new file mode 100644
index 0000000..8b9adc1
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
new file mode 100644
index 0000000..33ea99b
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
new file mode 100644
index 0000000..a3ed0f6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_switch.xml b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
new file mode 100644
index 0000000..a5577f0
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..bb137e8
--- /dev/null
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_dispenser.xml b/app/src/main/res/layout/activity_water_dispenser.xml
index b3a661a..78918e3 100644
--- a/app/src/main/res/layout/activity_water_dispenser.xml
+++ b/app/src/main/res/layout/activity_water_dispenser.xml
@@ -170,7 +170,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_milk"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲牛奶" />
@@ -181,7 +181,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_coffee"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲咖啡" />
@@ -192,7 +192,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_boiled"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="开水" />
@@ -203,7 +203,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_custom"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="自定义" />
@@ -225,7 +225,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_child"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="童锁" />
@@ -236,7 +236,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_switch"
android:drawablePadding="@dimen/dp_5"
android:enabled="false"
android:gravity="center"
@@ -249,7 +249,7 @@
android:layout_weight="1"
android:button="@null"
android:checked="true"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_settings"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="设置" />
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
new file mode 100644
index 0000000..d242b8d
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
new file mode 100644
index 0000000..1410582
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child.png b/app/src/main/res/mipmap-xxhdpi/ic_child.png
new file mode 100644
index 0000000..6a94298
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child_main.png b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
new file mode 100644
index 0000000..8b9adc1
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
new file mode 100644
index 0000000..33ea99b
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
new file mode 100644
index 0000000..a3ed0f6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_custom.png b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
new file mode 100644
index 0000000..5b26f00
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_switch.xml b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
new file mode 100644
index 0000000..a5577f0
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..bb137e8
--- /dev/null
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_dispenser.xml b/app/src/main/res/layout/activity_water_dispenser.xml
index b3a661a..78918e3 100644
--- a/app/src/main/res/layout/activity_water_dispenser.xml
+++ b/app/src/main/res/layout/activity_water_dispenser.xml
@@ -170,7 +170,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_milk"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲牛奶" />
@@ -181,7 +181,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_coffee"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲咖啡" />
@@ -192,7 +192,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_boiled"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="开水" />
@@ -203,7 +203,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_custom"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="自定义" />
@@ -225,7 +225,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_child"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="童锁" />
@@ -236,7 +236,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_switch"
android:drawablePadding="@dimen/dp_5"
android:enabled="false"
android:gravity="center"
@@ -249,7 +249,7 @@
android:layout_weight="1"
android:button="@null"
android:checked="true"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_settings"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="设置" />
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
new file mode 100644
index 0000000..d242b8d
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
new file mode 100644
index 0000000..1410582
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child.png b/app/src/main/res/mipmap-xxhdpi/ic_child.png
new file mode 100644
index 0000000..6a94298
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child_main.png b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
new file mode 100644
index 0000000..8b9adc1
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
new file mode 100644
index 0000000..33ea99b
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
new file mode 100644
index 0000000..a3ed0f6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_custom.png b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
new file mode 100644
index 0000000..5b26f00
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png b/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png
new file mode 100644
index 0000000..f460134
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_switch.xml b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
new file mode 100644
index 0000000..a5577f0
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..bb137e8
--- /dev/null
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_dispenser.xml b/app/src/main/res/layout/activity_water_dispenser.xml
index b3a661a..78918e3 100644
--- a/app/src/main/res/layout/activity_water_dispenser.xml
+++ b/app/src/main/res/layout/activity_water_dispenser.xml
@@ -170,7 +170,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_milk"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲牛奶" />
@@ -181,7 +181,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_coffee"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲咖啡" />
@@ -192,7 +192,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_boiled"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="开水" />
@@ -203,7 +203,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_custom"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="自定义" />
@@ -225,7 +225,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_child"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="童锁" />
@@ -236,7 +236,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_switch"
android:drawablePadding="@dimen/dp_5"
android:enabled="false"
android:gravity="center"
@@ -249,7 +249,7 @@
android:layout_weight="1"
android:button="@null"
android:checked="true"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_settings"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="设置" />
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
new file mode 100644
index 0000000..d242b8d
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
new file mode 100644
index 0000000..1410582
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child.png b/app/src/main/res/mipmap-xxhdpi/ic_child.png
new file mode 100644
index 0000000..6a94298
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child_main.png b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
new file mode 100644
index 0000000..8b9adc1
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
new file mode 100644
index 0000000..33ea99b
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
new file mode 100644
index 0000000..a3ed0f6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_custom.png b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
new file mode 100644
index 0000000..5b26f00
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png b/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png
new file mode 100644
index 0000000..f460134
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_milk.png b/app/src/main/res/mipmap-xxhdpi/ic_milk.png
new file mode 100644
index 0000000..b55a733
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_milk.png
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_switch.xml b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
new file mode 100644
index 0000000..a5577f0
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..bb137e8
--- /dev/null
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_dispenser.xml b/app/src/main/res/layout/activity_water_dispenser.xml
index b3a661a..78918e3 100644
--- a/app/src/main/res/layout/activity_water_dispenser.xml
+++ b/app/src/main/res/layout/activity_water_dispenser.xml
@@ -170,7 +170,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_milk"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲牛奶" />
@@ -181,7 +181,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_coffee"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲咖啡" />
@@ -192,7 +192,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_boiled"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="开水" />
@@ -203,7 +203,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_custom"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="自定义" />
@@ -225,7 +225,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_child"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="童锁" />
@@ -236,7 +236,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_switch"
android:drawablePadding="@dimen/dp_5"
android:enabled="false"
android:gravity="center"
@@ -249,7 +249,7 @@
android:layout_weight="1"
android:button="@null"
android:checked="true"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_settings"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="设置" />
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
new file mode 100644
index 0000000..d242b8d
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
new file mode 100644
index 0000000..1410582
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child.png b/app/src/main/res/mipmap-xxhdpi/ic_child.png
new file mode 100644
index 0000000..6a94298
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child_main.png b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
new file mode 100644
index 0000000..8b9adc1
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
new file mode 100644
index 0000000..33ea99b
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
new file mode 100644
index 0000000..a3ed0f6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_custom.png b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
new file mode 100644
index 0000000..5b26f00
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png b/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png
new file mode 100644
index 0000000..f460134
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_milk.png b/app/src/main/res/mipmap-xxhdpi/ic_milk.png
new file mode 100644
index 0000000..b55a733
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_milk.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png b/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png
new file mode 100644
index 0000000..328c9a6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_switch.xml b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
new file mode 100644
index 0000000..a5577f0
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..bb137e8
--- /dev/null
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_dispenser.xml b/app/src/main/res/layout/activity_water_dispenser.xml
index b3a661a..78918e3 100644
--- a/app/src/main/res/layout/activity_water_dispenser.xml
+++ b/app/src/main/res/layout/activity_water_dispenser.xml
@@ -170,7 +170,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_milk"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲牛奶" />
@@ -181,7 +181,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_coffee"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲咖啡" />
@@ -192,7 +192,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_boiled"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="开水" />
@@ -203,7 +203,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_custom"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="自定义" />
@@ -225,7 +225,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_child"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="童锁" />
@@ -236,7 +236,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_switch"
android:drawablePadding="@dimen/dp_5"
android:enabled="false"
android:gravity="center"
@@ -249,7 +249,7 @@
android:layout_weight="1"
android:button="@null"
android:checked="true"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_settings"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="设置" />
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
new file mode 100644
index 0000000..d242b8d
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
new file mode 100644
index 0000000..1410582
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child.png b/app/src/main/res/mipmap-xxhdpi/ic_child.png
new file mode 100644
index 0000000..6a94298
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child_main.png b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
new file mode 100644
index 0000000..8b9adc1
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
new file mode 100644
index 0000000..33ea99b
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
new file mode 100644
index 0000000..a3ed0f6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_custom.png b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
new file mode 100644
index 0000000..5b26f00
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png b/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png
new file mode 100644
index 0000000..f460134
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_milk.png b/app/src/main/res/mipmap-xxhdpi/ic_milk.png
new file mode 100644
index 0000000..b55a733
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_milk.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png b/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png
new file mode 100644
index 0000000..328c9a6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_normal.png b/app/src/main/res/mipmap-xxhdpi/ic_normal.png
new file mode 100644
index 0000000..b8bdcab
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_normal.png
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_switch.xml b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
new file mode 100644
index 0000000..a5577f0
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..bb137e8
--- /dev/null
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_dispenser.xml b/app/src/main/res/layout/activity_water_dispenser.xml
index b3a661a..78918e3 100644
--- a/app/src/main/res/layout/activity_water_dispenser.xml
+++ b/app/src/main/res/layout/activity_water_dispenser.xml
@@ -170,7 +170,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_milk"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲牛奶" />
@@ -181,7 +181,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_coffee"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲咖啡" />
@@ -192,7 +192,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_boiled"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="开水" />
@@ -203,7 +203,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_custom"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="自定义" />
@@ -225,7 +225,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_child"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="童锁" />
@@ -236,7 +236,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_switch"
android:drawablePadding="@dimen/dp_5"
android:enabled="false"
android:gravity="center"
@@ -249,7 +249,7 @@
android:layout_weight="1"
android:button="@null"
android:checked="true"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_settings"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="设置" />
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
new file mode 100644
index 0000000..d242b8d
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
new file mode 100644
index 0000000..1410582
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child.png b/app/src/main/res/mipmap-xxhdpi/ic_child.png
new file mode 100644
index 0000000..6a94298
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child_main.png b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
new file mode 100644
index 0000000..8b9adc1
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
new file mode 100644
index 0000000..33ea99b
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
new file mode 100644
index 0000000..a3ed0f6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_custom.png b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
new file mode 100644
index 0000000..5b26f00
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png b/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png
new file mode 100644
index 0000000..f460134
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_milk.png b/app/src/main/res/mipmap-xxhdpi/ic_milk.png
new file mode 100644
index 0000000..b55a733
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_milk.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png b/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png
new file mode 100644
index 0000000..328c9a6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_normal.png b/app/src/main/res/mipmap-xxhdpi/ic_normal.png
new file mode 100644
index 0000000..b8bdcab
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_normal.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_normal_main.png b/app/src/main/res/mipmap-xxhdpi/ic_normal_main.png
new file mode 100644
index 0000000..b1bf333
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_normal_main.png
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_switch.xml b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
new file mode 100644
index 0000000..a5577f0
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..bb137e8
--- /dev/null
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_dispenser.xml b/app/src/main/res/layout/activity_water_dispenser.xml
index b3a661a..78918e3 100644
--- a/app/src/main/res/layout/activity_water_dispenser.xml
+++ b/app/src/main/res/layout/activity_water_dispenser.xml
@@ -170,7 +170,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_milk"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲牛奶" />
@@ -181,7 +181,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_coffee"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲咖啡" />
@@ -192,7 +192,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_boiled"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="开水" />
@@ -203,7 +203,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_custom"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="自定义" />
@@ -225,7 +225,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_child"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="童锁" />
@@ -236,7 +236,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_switch"
android:drawablePadding="@dimen/dp_5"
android:enabled="false"
android:gravity="center"
@@ -249,7 +249,7 @@
android:layout_weight="1"
android:button="@null"
android:checked="true"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_settings"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="设置" />
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
new file mode 100644
index 0000000..d242b8d
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
new file mode 100644
index 0000000..1410582
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child.png b/app/src/main/res/mipmap-xxhdpi/ic_child.png
new file mode 100644
index 0000000..6a94298
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child_main.png b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
new file mode 100644
index 0000000..8b9adc1
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
new file mode 100644
index 0000000..33ea99b
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
new file mode 100644
index 0000000..a3ed0f6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_custom.png b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
new file mode 100644
index 0000000..5b26f00
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png b/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png
new file mode 100644
index 0000000..f460134
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_milk.png b/app/src/main/res/mipmap-xxhdpi/ic_milk.png
new file mode 100644
index 0000000..b55a733
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_milk.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png b/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png
new file mode 100644
index 0000000..328c9a6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_normal.png b/app/src/main/res/mipmap-xxhdpi/ic_normal.png
new file mode 100644
index 0000000..b8bdcab
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_normal.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_normal_main.png b/app/src/main/res/mipmap-xxhdpi/ic_normal_main.png
new file mode 100644
index 0000000..b1bf333
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_normal_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_settings.png b/app/src/main/res/mipmap-xxhdpi/ic_settings.png
new file mode 100644
index 0000000..6ea8fb2
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_settings.png
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_switch.xml b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
new file mode 100644
index 0000000..a5577f0
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..bb137e8
--- /dev/null
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_dispenser.xml b/app/src/main/res/layout/activity_water_dispenser.xml
index b3a661a..78918e3 100644
--- a/app/src/main/res/layout/activity_water_dispenser.xml
+++ b/app/src/main/res/layout/activity_water_dispenser.xml
@@ -170,7 +170,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_milk"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲牛奶" />
@@ -181,7 +181,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_coffee"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲咖啡" />
@@ -192,7 +192,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_boiled"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="开水" />
@@ -203,7 +203,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_custom"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="自定义" />
@@ -225,7 +225,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_child"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="童锁" />
@@ -236,7 +236,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_switch"
android:drawablePadding="@dimen/dp_5"
android:enabled="false"
android:gravity="center"
@@ -249,7 +249,7 @@
android:layout_weight="1"
android:button="@null"
android:checked="true"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_settings"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="设置" />
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
new file mode 100644
index 0000000..d242b8d
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
new file mode 100644
index 0000000..1410582
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child.png b/app/src/main/res/mipmap-xxhdpi/ic_child.png
new file mode 100644
index 0000000..6a94298
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child_main.png b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
new file mode 100644
index 0000000..8b9adc1
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
new file mode 100644
index 0000000..33ea99b
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
new file mode 100644
index 0000000..a3ed0f6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_custom.png b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
new file mode 100644
index 0000000..5b26f00
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png b/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png
new file mode 100644
index 0000000..f460134
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_milk.png b/app/src/main/res/mipmap-xxhdpi/ic_milk.png
new file mode 100644
index 0000000..b55a733
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_milk.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png b/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png
new file mode 100644
index 0000000..328c9a6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_normal.png b/app/src/main/res/mipmap-xxhdpi/ic_normal.png
new file mode 100644
index 0000000..b8bdcab
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_normal.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_normal_main.png b/app/src/main/res/mipmap-xxhdpi/ic_normal_main.png
new file mode 100644
index 0000000..b1bf333
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_normal_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_settings.png b/app/src/main/res/mipmap-xxhdpi/ic_settings.png
new file mode 100644
index 0000000..6ea8fb2
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_settings.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_settings_main.png b/app/src/main/res/mipmap-xxhdpi/ic_settings_main.png
new file mode 100644
index 0000000..3b5ebfa
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_settings_main.png
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_switch.xml b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
new file mode 100644
index 0000000..a5577f0
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..bb137e8
--- /dev/null
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_dispenser.xml b/app/src/main/res/layout/activity_water_dispenser.xml
index b3a661a..78918e3 100644
--- a/app/src/main/res/layout/activity_water_dispenser.xml
+++ b/app/src/main/res/layout/activity_water_dispenser.xml
@@ -170,7 +170,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_milk"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲牛奶" />
@@ -181,7 +181,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_coffee"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲咖啡" />
@@ -192,7 +192,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_boiled"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="开水" />
@@ -203,7 +203,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_custom"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="自定义" />
@@ -225,7 +225,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_child"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="童锁" />
@@ -236,7 +236,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_switch"
android:drawablePadding="@dimen/dp_5"
android:enabled="false"
android:gravity="center"
@@ -249,7 +249,7 @@
android:layout_weight="1"
android:button="@null"
android:checked="true"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_settings"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="设置" />
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
new file mode 100644
index 0000000..d242b8d
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
new file mode 100644
index 0000000..1410582
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child.png b/app/src/main/res/mipmap-xxhdpi/ic_child.png
new file mode 100644
index 0000000..6a94298
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child_main.png b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
new file mode 100644
index 0000000..8b9adc1
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
new file mode 100644
index 0000000..33ea99b
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
new file mode 100644
index 0000000..a3ed0f6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_custom.png b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
new file mode 100644
index 0000000..5b26f00
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png b/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png
new file mode 100644
index 0000000..f460134
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_milk.png b/app/src/main/res/mipmap-xxhdpi/ic_milk.png
new file mode 100644
index 0000000..b55a733
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_milk.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png b/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png
new file mode 100644
index 0000000..328c9a6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_normal.png b/app/src/main/res/mipmap-xxhdpi/ic_normal.png
new file mode 100644
index 0000000..b8bdcab
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_normal.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_normal_main.png b/app/src/main/res/mipmap-xxhdpi/ic_normal_main.png
new file mode 100644
index 0000000..b1bf333
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_normal_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_settings.png b/app/src/main/res/mipmap-xxhdpi/ic_settings.png
new file mode 100644
index 0000000..6ea8fb2
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_settings.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_settings_main.png b/app/src/main/res/mipmap-xxhdpi/ic_settings_main.png
new file mode 100644
index 0000000..3b5ebfa
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_settings_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_switch.png b/app/src/main/res/mipmap-xxhdpi/ic_switch.png
new file mode 100644
index 0000000..093bd0f
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_switch.png
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bd10711..2db3a08 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -83,6 +83,7 @@
+
"燃气报警器"
"cobj" -> "一氧化碳报警器"
"yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
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 fa90b52..a226546 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -178,6 +178,10 @@
//即热式台式饮水机
requireContext().navigatePageTo(deviceModel.devId)
}
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
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
new file mode 100644
index 0000000..90c0880
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/AirCleanerActivity.kt
@@ -0,0 +1,165 @@
+package com.casic.br.view.device
+
+import android.content.Context
+import android.graphics.Color
+import android.util.Log
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.toChineseTypeName
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.TuyaDeviceListener
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+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_air_cleaner.*
+import kotlinx.android.synthetic.main.include_device_title.*
+
+/**
+ * 空气净化器
+ * TODO 数据上报暂缓
+ * */
+class AirCleanerActivity : KotlinBaseActivity() {
+
+ private val context: Context = this@AirCleanerActivity
+ private lateinit var deviceId: String
+ private lateinit var tuyaOTA: ITuyaOta
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_air_cleaner
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ 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()
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d("Casic", "AirCleanerActivity => onDpUpdate: $dpStr")
+ //{"1":true,"11":false,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ //{"1":true,"19":"cancle","2":6,"20":0,"22":"1","3":"1","4":"1","5":99,"6":true,"7":false}
+ }
+ })
+ }
+
+ 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", "WaterDispenserActivity => 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/res/drawable/selector_water_dispenser_boiled.xml b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
new file mode 100644
index 0000000..1de3430
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_boiled.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_child.xml b/app/src/main/res/drawable/selector_water_dispenser_child.xml
new file mode 100644
index 0000000..8993a0a
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_child.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_coffee.xml b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
new file mode 100644
index 0000000..b7a586d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_coffee.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_custom.xml b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
new file mode 100644
index 0000000..661be6d
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_custom.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_milk.xml b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
new file mode 100644
index 0000000..ef9dba7
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_milk.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_normal.xml b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
index fc936c6..060e002 100644
--- a/app/src/main/res/drawable/selector_water_dispenser_normal.xml
+++ b/app/src/main/res/drawable/selector_water_dispenser_normal.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_settings.xml b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
new file mode 100644
index 0000000..e19c2a1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_water_dispenser_switch.xml b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
new file mode 100644
index 0000000..a5577f0
--- /dev/null
+++ b/app/src/main/res/drawable/selector_water_dispenser_switch.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 0000000..bb137e8
--- /dev/null
+++ b/app/src/main/res/layout/activity_air_cleaner.xml
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_dispenser.xml b/app/src/main/res/layout/activity_water_dispenser.xml
index b3a661a..78918e3 100644
--- a/app/src/main/res/layout/activity_water_dispenser.xml
+++ b/app/src/main/res/layout/activity_water_dispenser.xml
@@ -170,7 +170,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_milk"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲牛奶" />
@@ -181,7 +181,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_coffee"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="冲咖啡" />
@@ -192,7 +192,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_boiled"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="开水" />
@@ -203,7 +203,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_custom"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="自定义" />
@@ -225,7 +225,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_child"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="童锁" />
@@ -236,7 +236,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_switch"
android:drawablePadding="@dimen/dp_5"
android:enabled="false"
android:gravity="center"
@@ -249,7 +249,7 @@
android:layout_weight="1"
android:button="@null"
android:checked="true"
- android:drawableTop="@drawable/selector_water_dispenser_normal"
+ android:drawableTop="@drawable/selector_water_dispenser_settings"
android:drawablePadding="@dimen/dp_5"
android:gravity="center"
android:text="设置" />
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
new file mode 100644
index 0000000..d242b8d
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
new file mode 100644
index 0000000..1410582
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_boiled_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child.png b/app/src/main/res/mipmap-xxhdpi/ic_child.png
new file mode 100644
index 0000000..6a94298
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_child_main.png b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
new file mode 100644
index 0000000..8b9adc1
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_child_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
new file mode 100644
index 0000000..33ea99b
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
new file mode 100644
index 0000000..a3ed0f6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_coffee_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_custom.png b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
new file mode 100644
index 0000000..5b26f00
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_custom.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png b/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png
new file mode 100644
index 0000000..f460134
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_custom_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_milk.png b/app/src/main/res/mipmap-xxhdpi/ic_milk.png
new file mode 100644
index 0000000..b55a733
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_milk.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png b/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png
new file mode 100644
index 0000000..328c9a6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_milk_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_normal.png b/app/src/main/res/mipmap-xxhdpi/ic_normal.png
new file mode 100644
index 0000000..b8bdcab
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_normal.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_normal_main.png b/app/src/main/res/mipmap-xxhdpi/ic_normal_main.png
new file mode 100644
index 0000000..b1bf333
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_normal_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_settings.png b/app/src/main/res/mipmap-xxhdpi/ic_settings.png
new file mode 100644
index 0000000..6ea8fb2
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_settings.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_settings_main.png b/app/src/main/res/mipmap-xxhdpi/ic_settings_main.png
new file mode 100644
index 0000000..3b5ebfa
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_settings_main.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_switch.png b/app/src/main/res/mipmap-xxhdpi/ic_switch.png
new file mode 100644
index 0000000..093bd0f
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_switch.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_switch_main.png b/app/src/main/res/mipmap-xxhdpi/ic_switch_main.png
new file mode 100644
index 0000000..2327f37
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_switch_main.png
Binary files differ