diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a519f6e..745c999 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -59,6 +59,7 @@
+
+
+ if (message.what == 2022092601) {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ turnOffRadioButton.isChecked = isDeviceWorking
+ }
+ "2" -> {
+ when (parseObject[it] as String) {
+ "comfortable" -> comfortableRadioButton.isChecked = true
+ "eco" -> ecoRadioButton.isChecked = true
+ "summer" -> summerRadioButton.isChecked = true
+ else -> {
+ comfortableRadioButton.isChecked = false
+ ecoRadioButton.isChecked = false
+ summerRadioButton.isChecked = false
+ }
+ }
+ }
+ "3" -> {//卫浴温度设置
+
+ }
+ "5" -> {//供暖温度设置
+
+ }
+ "14" -> {
+ totalGasUsedView.text = String.format(
+ "${parseObject[it] as String}${requireContext().resources.getString(R.string.volume_unit)}"
+ )
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a519f6e..745c999 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -59,6 +59,7 @@
+
+ if (message.what == 2022092601) {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ turnOffRadioButton.isChecked = isDeviceWorking
+ }
+ "2" -> {
+ when (parseObject[it] as String) {
+ "comfortable" -> comfortableRadioButton.isChecked = true
+ "eco" -> ecoRadioButton.isChecked = true
+ "summer" -> summerRadioButton.isChecked = true
+ else -> {
+ comfortableRadioButton.isChecked = false
+ ecoRadioButton.isChecked = false
+ summerRadioButton.isChecked = false
+ }
+ }
+ }
+ "3" -> {//卫浴温度设置
+
+ }
+ "5" -> {//供暖温度设置
+
+ }
+ "14" -> {
+ totalGasUsedView.text = String.format(
+ "${parseObject[it] as String}${requireContext().resources.getString(R.string.volume_unit)}"
+ )
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt
new file mode 100644
index 0000000..683a605
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.fireplace
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class ServicePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_device_fireplace_service
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a519f6e..745c999 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -59,6 +59,7 @@
+
+ if (message.what == 2022092601) {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ turnOffRadioButton.isChecked = isDeviceWorking
+ }
+ "2" -> {
+ when (parseObject[it] as String) {
+ "comfortable" -> comfortableRadioButton.isChecked = true
+ "eco" -> ecoRadioButton.isChecked = true
+ "summer" -> summerRadioButton.isChecked = true
+ else -> {
+ comfortableRadioButton.isChecked = false
+ ecoRadioButton.isChecked = false
+ summerRadioButton.isChecked = false
+ }
+ }
+ }
+ "3" -> {//卫浴温度设置
+
+ }
+ "5" -> {//供暖温度设置
+
+ }
+ "14" -> {
+ totalGasUsedView.text = String.format(
+ "${parseObject[it] as String}${requireContext().resources.getString(R.string.volume_unit)}"
+ )
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt
new file mode 100644
index 0000000..683a605
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.fireplace
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class ServicePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_device_fireplace_service
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt
new file mode 100644
index 0000000..08e466b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt
@@ -0,0 +1,135 @@
+package com.casic.br.fragment.fireplace
+
+import android.content.Context
+import android.net.wifi.WifiManager
+import android.os.Handler
+import android.view.View
+import com.alibaba.fastjson.JSONObject
+import com.casic.br.R
+import com.casic.br.extensions.diffDate
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.fragment_device_fireplace_status.*
+
+class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() {
+
+ companion object {
+ lateinit var weakReference: WeakReferenceHandler
+ }
+
+ private val kTag = "StatusPageFragment"
+ private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager }
+ private var isDeviceWorking = false
+
+ override fun initLayoutView(): Int = R.layout.fragment_device_fireplace_status
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ }
+
+ private val callback = Handler.Callback { message ->
+ when (message.what) {
+ 2022092802 -> {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ }
+ "4" -> {
+ showerTempView.text = String.format(
+ "${parseObject[it]}${
+ requireContext().resources.getString(R.string.temperature_unit)
+ }"
+ )
+ }
+ "6" -> {
+ heaterTempView.text = String.format(
+ "${parseObject[it]}${
+ requireContext().resources.getString(R.string.temperature_unit)
+ }"
+ )
+ }
+ "10" -> {
+ heaterStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "11" -> {
+ showerStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "103" -> {
+ antifreezeStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "102" -> {
+ ventilatorStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "101" -> {
+ pumpStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ }
+ }
+ }
+ 2022092803 -> {
+ val deviceBean = message.obj as DeviceBean
+ deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天")
+ ipAddressView.text = deviceBean.ip
+ }
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onResume() {
+ super.onResume()
+ wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid")
+ if (wifiStatusSwitch.isChecked) {
+ wifiLayout.visibility = View.VISIBLE
+ wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "")
+ } else {
+ wifiLayout.visibility = View.GONE
+ }
+ deviceStateView.text = if (!isDeviceWorking) {
+ "已关机"
+ } else {
+ "工作中"
+ }
+ }
+
+ 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 a519f6e..745c999 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -59,6 +59,7 @@
+
+ if (message.what == 2022092601) {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ turnOffRadioButton.isChecked = isDeviceWorking
+ }
+ "2" -> {
+ when (parseObject[it] as String) {
+ "comfortable" -> comfortableRadioButton.isChecked = true
+ "eco" -> ecoRadioButton.isChecked = true
+ "summer" -> summerRadioButton.isChecked = true
+ else -> {
+ comfortableRadioButton.isChecked = false
+ ecoRadioButton.isChecked = false
+ summerRadioButton.isChecked = false
+ }
+ }
+ }
+ "3" -> {//卫浴温度设置
+
+ }
+ "5" -> {//供暖温度设置
+
+ }
+ "14" -> {
+ totalGasUsedView.text = String.format(
+ "${parseObject[it] as String}${requireContext().resources.getString(R.string.volume_unit)}"
+ )
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt
new file mode 100644
index 0000000..683a605
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.fireplace
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class ServicePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_device_fireplace_service
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt
new file mode 100644
index 0000000..08e466b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt
@@ -0,0 +1,135 @@
+package com.casic.br.fragment.fireplace
+
+import android.content.Context
+import android.net.wifi.WifiManager
+import android.os.Handler
+import android.view.View
+import com.alibaba.fastjson.JSONObject
+import com.casic.br.R
+import com.casic.br.extensions.diffDate
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.fragment_device_fireplace_status.*
+
+class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() {
+
+ companion object {
+ lateinit var weakReference: WeakReferenceHandler
+ }
+
+ private val kTag = "StatusPageFragment"
+ private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager }
+ private var isDeviceWorking = false
+
+ override fun initLayoutView(): Int = R.layout.fragment_device_fireplace_status
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ }
+
+ private val callback = Handler.Callback { message ->
+ when (message.what) {
+ 2022092802 -> {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ }
+ "4" -> {
+ showerTempView.text = String.format(
+ "${parseObject[it]}${
+ requireContext().resources.getString(R.string.temperature_unit)
+ }"
+ )
+ }
+ "6" -> {
+ heaterTempView.text = String.format(
+ "${parseObject[it]}${
+ requireContext().resources.getString(R.string.temperature_unit)
+ }"
+ )
+ }
+ "10" -> {
+ heaterStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "11" -> {
+ showerStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "103" -> {
+ antifreezeStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "102" -> {
+ ventilatorStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "101" -> {
+ pumpStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ }
+ }
+ }
+ 2022092803 -> {
+ val deviceBean = message.obj as DeviceBean
+ deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天")
+ ipAddressView.text = deviceBean.ip
+ }
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onResume() {
+ super.onResume()
+ wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid")
+ if (wifiStatusSwitch.isChecked) {
+ wifiLayout.visibility = View.VISIBLE
+ wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "")
+ } else {
+ wifiLayout.visibility = View.GONE
+ }
+ deviceStateView.text = if (!isDeviceWorking) {
+ "已关机"
+ } else {
+ "工作中"
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
index 139cb18..79598a9 100644
--- a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
@@ -1,7 +1,132 @@
package com.casic.br.view.device
+import android.graphics.Typeface
+import android.util.Log
+import android.view.LayoutInflater
+import android.widget.TextView
+import androidx.fragment.app.Fragment
+import com.bumptech.glide.Glide
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.fragment.fireplace.ControlPageFragment
+import com.casic.br.fragment.fireplace.ServicePageFragment
+import com.casic.br.fragment.fireplace.StatusPageFragment
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.LocaleConstant
+import com.casic.br.utils.TuyaDeviceListener
+import com.google.android.material.tabs.TabLayout
+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.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.sdk.api.ITuyaDevice
+import kotlinx.android.synthetic.main.activity_fire_place.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+
/**
* 壁挂炉
* */
-class FireplaceActivity {
+class FireplaceActivity : KotlinBaseActivity() {
+
+ private val kTag = "FireplaceActivity"
+ private val inflater by lazy { LayoutInflater.from(this) }
+ private var fragmentPages: ArrayList = ArrayList()
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_fire_place
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
+ deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
+
+ val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId)
+ if (deviceBean == null) {
+ "查询设备信息失败,请检查设备是否已离线".show(this)
+ return
+ }
+ titleView.text = "万家乐壁挂炉"
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ fragmentPages.add(ControlPageFragment(deviceInstance, deviceId))
+ fragmentPages.add(StatusPageFragment(deviceInstance))
+ fragmentPages.add(ServicePageFragment())
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d(kTag, "onDpUpdate: $dpStr")
+
+ val controlMsg = ControlPageFragment.weakReference.obtainMessage()
+ controlMsg.what = 2022092801
+ controlMsg.obj = dpStr
+ ControlPageFragment.weakReference.sendMessage(controlMsg)
+
+ val statusMsg = StatusPageFragment.weakReference.obtainMessage()
+ statusMsg.what = 2022092802
+ statusMsg.obj = dpStr
+ StatusPageFragment.weakReference.sendMessage(statusMsg)
+
+ val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage()
+ deviceBeanMsg.what = 2022092803
+ deviceBeanMsg.obj = deviceBean
+ StatusPageFragment.weakReference.sendMessage(deviceBeanMsg)
+ }
+ })
+ }
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+
+ }
+
+ deviceViewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.DEVICE_PAGE_TITLE, supportFragmentManager)
+ deviceTabLayout.setupWithViewPager(deviceViewPager)
+ deviceTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
+ override fun onTabSelected(tab: TabLayout.Tab?) {
+ val textView = inflater.inflate(R.layout.item_top_tab, null) as TextView
+ textView.textSize = 16f
+ textView.typeface = Typeface.DEFAULT_BOLD
+ textView.text = tab!!.text
+ tab.customView = textView
+ }
+
+ override fun onTabUnselected(tab: TabLayout.Tab?) {
+ tab?.customView = null
+ }
+
+ override fun onTabReselected(tab: TabLayout.Tab?) {
+
+ }
+ })
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //每次获取焦点都查询设备的开关机状态
+ CommandManager.getTuyaDp(deviceInstance, "1")
+ }
+
+ 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 a519f6e..745c999 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -59,6 +59,7 @@
+
+ if (message.what == 2022092601) {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ turnOffRadioButton.isChecked = isDeviceWorking
+ }
+ "2" -> {
+ when (parseObject[it] as String) {
+ "comfortable" -> comfortableRadioButton.isChecked = true
+ "eco" -> ecoRadioButton.isChecked = true
+ "summer" -> summerRadioButton.isChecked = true
+ else -> {
+ comfortableRadioButton.isChecked = false
+ ecoRadioButton.isChecked = false
+ summerRadioButton.isChecked = false
+ }
+ }
+ }
+ "3" -> {//卫浴温度设置
+
+ }
+ "5" -> {//供暖温度设置
+
+ }
+ "14" -> {
+ totalGasUsedView.text = String.format(
+ "${parseObject[it] as String}${requireContext().resources.getString(R.string.volume_unit)}"
+ )
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt
new file mode 100644
index 0000000..683a605
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.fireplace
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class ServicePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_device_fireplace_service
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt
new file mode 100644
index 0000000..08e466b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt
@@ -0,0 +1,135 @@
+package com.casic.br.fragment.fireplace
+
+import android.content.Context
+import android.net.wifi.WifiManager
+import android.os.Handler
+import android.view.View
+import com.alibaba.fastjson.JSONObject
+import com.casic.br.R
+import com.casic.br.extensions.diffDate
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.fragment_device_fireplace_status.*
+
+class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() {
+
+ companion object {
+ lateinit var weakReference: WeakReferenceHandler
+ }
+
+ private val kTag = "StatusPageFragment"
+ private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager }
+ private var isDeviceWorking = false
+
+ override fun initLayoutView(): Int = R.layout.fragment_device_fireplace_status
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ }
+
+ private val callback = Handler.Callback { message ->
+ when (message.what) {
+ 2022092802 -> {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ }
+ "4" -> {
+ showerTempView.text = String.format(
+ "${parseObject[it]}${
+ requireContext().resources.getString(R.string.temperature_unit)
+ }"
+ )
+ }
+ "6" -> {
+ heaterTempView.text = String.format(
+ "${parseObject[it]}${
+ requireContext().resources.getString(R.string.temperature_unit)
+ }"
+ )
+ }
+ "10" -> {
+ heaterStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "11" -> {
+ showerStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "103" -> {
+ antifreezeStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "102" -> {
+ ventilatorStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "101" -> {
+ pumpStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ }
+ }
+ }
+ 2022092803 -> {
+ val deviceBean = message.obj as DeviceBean
+ deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天")
+ ipAddressView.text = deviceBean.ip
+ }
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onResume() {
+ super.onResume()
+ wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid")
+ if (wifiStatusSwitch.isChecked) {
+ wifiLayout.visibility = View.VISIBLE
+ wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "")
+ } else {
+ wifiLayout.visibility = View.GONE
+ }
+ deviceStateView.text = if (!isDeviceWorking) {
+ "已关机"
+ } else {
+ "工作中"
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
index 139cb18..79598a9 100644
--- a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
@@ -1,7 +1,132 @@
package com.casic.br.view.device
+import android.graphics.Typeface
+import android.util.Log
+import android.view.LayoutInflater
+import android.widget.TextView
+import androidx.fragment.app.Fragment
+import com.bumptech.glide.Glide
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.fragment.fireplace.ControlPageFragment
+import com.casic.br.fragment.fireplace.ServicePageFragment
+import com.casic.br.fragment.fireplace.StatusPageFragment
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.LocaleConstant
+import com.casic.br.utils.TuyaDeviceListener
+import com.google.android.material.tabs.TabLayout
+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.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.sdk.api.ITuyaDevice
+import kotlinx.android.synthetic.main.activity_fire_place.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+
/**
* 壁挂炉
* */
-class FireplaceActivity {
+class FireplaceActivity : KotlinBaseActivity() {
+
+ private val kTag = "FireplaceActivity"
+ private val inflater by lazy { LayoutInflater.from(this) }
+ private var fragmentPages: ArrayList = ArrayList()
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_fire_place
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
+ deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
+
+ val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId)
+ if (deviceBean == null) {
+ "查询设备信息失败,请检查设备是否已离线".show(this)
+ return
+ }
+ titleView.text = "万家乐壁挂炉"
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ fragmentPages.add(ControlPageFragment(deviceInstance, deviceId))
+ fragmentPages.add(StatusPageFragment(deviceInstance))
+ fragmentPages.add(ServicePageFragment())
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d(kTag, "onDpUpdate: $dpStr")
+
+ val controlMsg = ControlPageFragment.weakReference.obtainMessage()
+ controlMsg.what = 2022092801
+ controlMsg.obj = dpStr
+ ControlPageFragment.weakReference.sendMessage(controlMsg)
+
+ val statusMsg = StatusPageFragment.weakReference.obtainMessage()
+ statusMsg.what = 2022092802
+ statusMsg.obj = dpStr
+ StatusPageFragment.weakReference.sendMessage(statusMsg)
+
+ val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage()
+ deviceBeanMsg.what = 2022092803
+ deviceBeanMsg.obj = deviceBean
+ StatusPageFragment.weakReference.sendMessage(deviceBeanMsg)
+ }
+ })
+ }
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+
+ }
+
+ deviceViewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.DEVICE_PAGE_TITLE, supportFragmentManager)
+ deviceTabLayout.setupWithViewPager(deviceViewPager)
+ deviceTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
+ override fun onTabSelected(tab: TabLayout.Tab?) {
+ val textView = inflater.inflate(R.layout.item_top_tab, null) as TextView
+ textView.textSize = 16f
+ textView.typeface = Typeface.DEFAULT_BOLD
+ textView.text = tab!!.text
+ tab.customView = textView
+ }
+
+ override fun onTabUnselected(tab: TabLayout.Tab?) {
+ tab?.customView = null
+ }
+
+ override fun onTabReselected(tab: TabLayout.Tab?) {
+
+ }
+ })
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //每次获取焦点都查询设备的开关机状态
+ CommandManager.getTuyaDp(deviceInstance, "1")
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_fire_place.xml b/app/src/main/res/layout/activity_fire_place.xml
new file mode 100644
index 0000000..1bd9505
--- /dev/null
+++ b/app/src/main/res/layout/activity_fire_place.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a519f6e..745c999 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -59,6 +59,7 @@
+
+ if (message.what == 2022092601) {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ turnOffRadioButton.isChecked = isDeviceWorking
+ }
+ "2" -> {
+ when (parseObject[it] as String) {
+ "comfortable" -> comfortableRadioButton.isChecked = true
+ "eco" -> ecoRadioButton.isChecked = true
+ "summer" -> summerRadioButton.isChecked = true
+ else -> {
+ comfortableRadioButton.isChecked = false
+ ecoRadioButton.isChecked = false
+ summerRadioButton.isChecked = false
+ }
+ }
+ }
+ "3" -> {//卫浴温度设置
+
+ }
+ "5" -> {//供暖温度设置
+
+ }
+ "14" -> {
+ totalGasUsedView.text = String.format(
+ "${parseObject[it] as String}${requireContext().resources.getString(R.string.volume_unit)}"
+ )
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt
new file mode 100644
index 0000000..683a605
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.fireplace
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class ServicePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_device_fireplace_service
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt
new file mode 100644
index 0000000..08e466b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt
@@ -0,0 +1,135 @@
+package com.casic.br.fragment.fireplace
+
+import android.content.Context
+import android.net.wifi.WifiManager
+import android.os.Handler
+import android.view.View
+import com.alibaba.fastjson.JSONObject
+import com.casic.br.R
+import com.casic.br.extensions.diffDate
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.fragment_device_fireplace_status.*
+
+class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() {
+
+ companion object {
+ lateinit var weakReference: WeakReferenceHandler
+ }
+
+ private val kTag = "StatusPageFragment"
+ private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager }
+ private var isDeviceWorking = false
+
+ override fun initLayoutView(): Int = R.layout.fragment_device_fireplace_status
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ }
+
+ private val callback = Handler.Callback { message ->
+ when (message.what) {
+ 2022092802 -> {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ }
+ "4" -> {
+ showerTempView.text = String.format(
+ "${parseObject[it]}${
+ requireContext().resources.getString(R.string.temperature_unit)
+ }"
+ )
+ }
+ "6" -> {
+ heaterTempView.text = String.format(
+ "${parseObject[it]}${
+ requireContext().resources.getString(R.string.temperature_unit)
+ }"
+ )
+ }
+ "10" -> {
+ heaterStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "11" -> {
+ showerStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "103" -> {
+ antifreezeStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "102" -> {
+ ventilatorStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "101" -> {
+ pumpStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ }
+ }
+ }
+ 2022092803 -> {
+ val deviceBean = message.obj as DeviceBean
+ deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天")
+ ipAddressView.text = deviceBean.ip
+ }
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onResume() {
+ super.onResume()
+ wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid")
+ if (wifiStatusSwitch.isChecked) {
+ wifiLayout.visibility = View.VISIBLE
+ wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "")
+ } else {
+ wifiLayout.visibility = View.GONE
+ }
+ deviceStateView.text = if (!isDeviceWorking) {
+ "已关机"
+ } else {
+ "工作中"
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
index 139cb18..79598a9 100644
--- a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
@@ -1,7 +1,132 @@
package com.casic.br.view.device
+import android.graphics.Typeface
+import android.util.Log
+import android.view.LayoutInflater
+import android.widget.TextView
+import androidx.fragment.app.Fragment
+import com.bumptech.glide.Glide
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.fragment.fireplace.ControlPageFragment
+import com.casic.br.fragment.fireplace.ServicePageFragment
+import com.casic.br.fragment.fireplace.StatusPageFragment
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.LocaleConstant
+import com.casic.br.utils.TuyaDeviceListener
+import com.google.android.material.tabs.TabLayout
+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.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.sdk.api.ITuyaDevice
+import kotlinx.android.synthetic.main.activity_fire_place.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+
/**
* 壁挂炉
* */
-class FireplaceActivity {
+class FireplaceActivity : KotlinBaseActivity() {
+
+ private val kTag = "FireplaceActivity"
+ private val inflater by lazy { LayoutInflater.from(this) }
+ private var fragmentPages: ArrayList = ArrayList()
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_fire_place
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
+ deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
+
+ val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId)
+ if (deviceBean == null) {
+ "查询设备信息失败,请检查设备是否已离线".show(this)
+ return
+ }
+ titleView.text = "万家乐壁挂炉"
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ fragmentPages.add(ControlPageFragment(deviceInstance, deviceId))
+ fragmentPages.add(StatusPageFragment(deviceInstance))
+ fragmentPages.add(ServicePageFragment())
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d(kTag, "onDpUpdate: $dpStr")
+
+ val controlMsg = ControlPageFragment.weakReference.obtainMessage()
+ controlMsg.what = 2022092801
+ controlMsg.obj = dpStr
+ ControlPageFragment.weakReference.sendMessage(controlMsg)
+
+ val statusMsg = StatusPageFragment.weakReference.obtainMessage()
+ statusMsg.what = 2022092802
+ statusMsg.obj = dpStr
+ StatusPageFragment.weakReference.sendMessage(statusMsg)
+
+ val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage()
+ deviceBeanMsg.what = 2022092803
+ deviceBeanMsg.obj = deviceBean
+ StatusPageFragment.weakReference.sendMessage(deviceBeanMsg)
+ }
+ })
+ }
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+
+ }
+
+ deviceViewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.DEVICE_PAGE_TITLE, supportFragmentManager)
+ deviceTabLayout.setupWithViewPager(deviceViewPager)
+ deviceTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
+ override fun onTabSelected(tab: TabLayout.Tab?) {
+ val textView = inflater.inflate(R.layout.item_top_tab, null) as TextView
+ textView.textSize = 16f
+ textView.typeface = Typeface.DEFAULT_BOLD
+ textView.text = tab!!.text
+ tab.customView = textView
+ }
+
+ override fun onTabUnselected(tab: TabLayout.Tab?) {
+ tab?.customView = null
+ }
+
+ override fun onTabReselected(tab: TabLayout.Tab?) {
+
+ }
+ })
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //每次获取焦点都查询设备的开关机状态
+ CommandManager.getTuyaDp(deviceInstance, "1")
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_fire_place.xml b/app/src/main/res/layout/activity_fire_place.xml
new file mode 100644
index 0000000..1bd9505
--- /dev/null
+++ b/app/src/main/res/layout/activity_fire_place.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_fireplace_control.xml b/app/src/main/res/layout/fragment_device_fireplace_control.xml
new file mode 100644
index 0000000..838d7d4
--- /dev/null
+++ b/app/src/main/res/layout/fragment_device_fireplace_control.xml
@@ -0,0 +1,305 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a519f6e..745c999 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -59,6 +59,7 @@
+
+ if (message.what == 2022092601) {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ turnOffRadioButton.isChecked = isDeviceWorking
+ }
+ "2" -> {
+ when (parseObject[it] as String) {
+ "comfortable" -> comfortableRadioButton.isChecked = true
+ "eco" -> ecoRadioButton.isChecked = true
+ "summer" -> summerRadioButton.isChecked = true
+ else -> {
+ comfortableRadioButton.isChecked = false
+ ecoRadioButton.isChecked = false
+ summerRadioButton.isChecked = false
+ }
+ }
+ }
+ "3" -> {//卫浴温度设置
+
+ }
+ "5" -> {//供暖温度设置
+
+ }
+ "14" -> {
+ totalGasUsedView.text = String.format(
+ "${parseObject[it] as String}${requireContext().resources.getString(R.string.volume_unit)}"
+ )
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt
new file mode 100644
index 0000000..683a605
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.fireplace
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class ServicePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_device_fireplace_service
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt
new file mode 100644
index 0000000..08e466b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt
@@ -0,0 +1,135 @@
+package com.casic.br.fragment.fireplace
+
+import android.content.Context
+import android.net.wifi.WifiManager
+import android.os.Handler
+import android.view.View
+import com.alibaba.fastjson.JSONObject
+import com.casic.br.R
+import com.casic.br.extensions.diffDate
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.fragment_device_fireplace_status.*
+
+class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() {
+
+ companion object {
+ lateinit var weakReference: WeakReferenceHandler
+ }
+
+ private val kTag = "StatusPageFragment"
+ private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager }
+ private var isDeviceWorking = false
+
+ override fun initLayoutView(): Int = R.layout.fragment_device_fireplace_status
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ }
+
+ private val callback = Handler.Callback { message ->
+ when (message.what) {
+ 2022092802 -> {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ }
+ "4" -> {
+ showerTempView.text = String.format(
+ "${parseObject[it]}${
+ requireContext().resources.getString(R.string.temperature_unit)
+ }"
+ )
+ }
+ "6" -> {
+ heaterTempView.text = String.format(
+ "${parseObject[it]}${
+ requireContext().resources.getString(R.string.temperature_unit)
+ }"
+ )
+ }
+ "10" -> {
+ heaterStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "11" -> {
+ showerStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "103" -> {
+ antifreezeStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "102" -> {
+ ventilatorStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "101" -> {
+ pumpStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ }
+ }
+ }
+ 2022092803 -> {
+ val deviceBean = message.obj as DeviceBean
+ deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天")
+ ipAddressView.text = deviceBean.ip
+ }
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onResume() {
+ super.onResume()
+ wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid")
+ if (wifiStatusSwitch.isChecked) {
+ wifiLayout.visibility = View.VISIBLE
+ wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "")
+ } else {
+ wifiLayout.visibility = View.GONE
+ }
+ deviceStateView.text = if (!isDeviceWorking) {
+ "已关机"
+ } else {
+ "工作中"
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
index 139cb18..79598a9 100644
--- a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
@@ -1,7 +1,132 @@
package com.casic.br.view.device
+import android.graphics.Typeface
+import android.util.Log
+import android.view.LayoutInflater
+import android.widget.TextView
+import androidx.fragment.app.Fragment
+import com.bumptech.glide.Glide
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.fragment.fireplace.ControlPageFragment
+import com.casic.br.fragment.fireplace.ServicePageFragment
+import com.casic.br.fragment.fireplace.StatusPageFragment
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.LocaleConstant
+import com.casic.br.utils.TuyaDeviceListener
+import com.google.android.material.tabs.TabLayout
+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.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.sdk.api.ITuyaDevice
+import kotlinx.android.synthetic.main.activity_fire_place.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+
/**
* 壁挂炉
* */
-class FireplaceActivity {
+class FireplaceActivity : KotlinBaseActivity() {
+
+ private val kTag = "FireplaceActivity"
+ private val inflater by lazy { LayoutInflater.from(this) }
+ private var fragmentPages: ArrayList = ArrayList()
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_fire_place
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
+ deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
+
+ val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId)
+ if (deviceBean == null) {
+ "查询设备信息失败,请检查设备是否已离线".show(this)
+ return
+ }
+ titleView.text = "万家乐壁挂炉"
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ fragmentPages.add(ControlPageFragment(deviceInstance, deviceId))
+ fragmentPages.add(StatusPageFragment(deviceInstance))
+ fragmentPages.add(ServicePageFragment())
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d(kTag, "onDpUpdate: $dpStr")
+
+ val controlMsg = ControlPageFragment.weakReference.obtainMessage()
+ controlMsg.what = 2022092801
+ controlMsg.obj = dpStr
+ ControlPageFragment.weakReference.sendMessage(controlMsg)
+
+ val statusMsg = StatusPageFragment.weakReference.obtainMessage()
+ statusMsg.what = 2022092802
+ statusMsg.obj = dpStr
+ StatusPageFragment.weakReference.sendMessage(statusMsg)
+
+ val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage()
+ deviceBeanMsg.what = 2022092803
+ deviceBeanMsg.obj = deviceBean
+ StatusPageFragment.weakReference.sendMessage(deviceBeanMsg)
+ }
+ })
+ }
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+
+ }
+
+ deviceViewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.DEVICE_PAGE_TITLE, supportFragmentManager)
+ deviceTabLayout.setupWithViewPager(deviceViewPager)
+ deviceTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
+ override fun onTabSelected(tab: TabLayout.Tab?) {
+ val textView = inflater.inflate(R.layout.item_top_tab, null) as TextView
+ textView.textSize = 16f
+ textView.typeface = Typeface.DEFAULT_BOLD
+ textView.text = tab!!.text
+ tab.customView = textView
+ }
+
+ override fun onTabUnselected(tab: TabLayout.Tab?) {
+ tab?.customView = null
+ }
+
+ override fun onTabReselected(tab: TabLayout.Tab?) {
+
+ }
+ })
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //每次获取焦点都查询设备的开关机状态
+ CommandManager.getTuyaDp(deviceInstance, "1")
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_fire_place.xml b/app/src/main/res/layout/activity_fire_place.xml
new file mode 100644
index 0000000..1bd9505
--- /dev/null
+++ b/app/src/main/res/layout/activity_fire_place.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_fireplace_control.xml b/app/src/main/res/layout/fragment_device_fireplace_control.xml
new file mode 100644
index 0000000..838d7d4
--- /dev/null
+++ b/app/src/main/res/layout/fragment_device_fireplace_control.xml
@@ -0,0 +1,305 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_fireplace_service.xml b/app/src/main/res/layout/fragment_device_fireplace_service.xml
new file mode 100644
index 0000000..77d9ef6
--- /dev/null
+++ b/app/src/main/res/layout/fragment_device_fireplace_service.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a519f6e..745c999 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -59,6 +59,7 @@
+
+ if (message.what == 2022092601) {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ turnOffRadioButton.isChecked = isDeviceWorking
+ }
+ "2" -> {
+ when (parseObject[it] as String) {
+ "comfortable" -> comfortableRadioButton.isChecked = true
+ "eco" -> ecoRadioButton.isChecked = true
+ "summer" -> summerRadioButton.isChecked = true
+ else -> {
+ comfortableRadioButton.isChecked = false
+ ecoRadioButton.isChecked = false
+ summerRadioButton.isChecked = false
+ }
+ }
+ }
+ "3" -> {//卫浴温度设置
+
+ }
+ "5" -> {//供暖温度设置
+
+ }
+ "14" -> {
+ totalGasUsedView.text = String.format(
+ "${parseObject[it] as String}${requireContext().resources.getString(R.string.volume_unit)}"
+ )
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt
new file mode 100644
index 0000000..683a605
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/fireplace/ServicePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.fireplace
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class ServicePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_device_fireplace_service
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt
new file mode 100644
index 0000000..08e466b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt
@@ -0,0 +1,135 @@
+package com.casic.br.fragment.fireplace
+
+import android.content.Context
+import android.net.wifi.WifiManager
+import android.os.Handler
+import android.view.View
+import com.alibaba.fastjson.JSONObject
+import com.casic.br.R
+import com.casic.br.extensions.diffDate
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.sdk.api.ITuyaDevice
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.fragment_device_fireplace_status.*
+
+class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() {
+
+ companion object {
+ lateinit var weakReference: WeakReferenceHandler
+ }
+
+ private val kTag = "StatusPageFragment"
+ private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager }
+ private var isDeviceWorking = false
+
+ override fun initLayoutView(): Int = R.layout.fragment_device_fireplace_status
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ }
+
+ private val callback = Handler.Callback { message ->
+ when (message.what) {
+ 2022092802 -> {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ }
+ "4" -> {
+ showerTempView.text = String.format(
+ "${parseObject[it]}${
+ requireContext().resources.getString(R.string.temperature_unit)
+ }"
+ )
+ }
+ "6" -> {
+ heaterTempView.text = String.format(
+ "${parseObject[it]}${
+ requireContext().resources.getString(R.string.temperature_unit)
+ }"
+ )
+ }
+ "10" -> {
+ heaterStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "11" -> {
+ showerStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "103" -> {
+ antifreezeStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "102" -> {
+ ventilatorStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ "101" -> {
+ pumpStateView.text = if (parseObject[it] as Boolean) {
+ "已开启"
+ } else {
+ "已关闭"
+ }
+ }
+ }
+ }
+ }
+ 2022092803 -> {
+ val deviceBean = message.obj as DeviceBean
+ deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天")
+ ipAddressView.text = deviceBean.ip
+ }
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onResume() {
+ super.onResume()
+ wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid")
+ if (wifiStatusSwitch.isChecked) {
+ wifiLayout.visibility = View.VISIBLE
+ wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "")
+ } else {
+ wifiLayout.visibility = View.GONE
+ }
+ deviceStateView.text = if (!isDeviceWorking) {
+ "已关机"
+ } else {
+ "工作中"
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
index 139cb18..79598a9 100644
--- a/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/FireplaceActivity.kt
@@ -1,7 +1,132 @@
package com.casic.br.view.device
+import android.graphics.Typeface
+import android.util.Log
+import android.view.LayoutInflater
+import android.widget.TextView
+import androidx.fragment.app.Fragment
+import com.bumptech.glide.Glide
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.fragment.fireplace.ControlPageFragment
+import com.casic.br.fragment.fireplace.ServicePageFragment
+import com.casic.br.fragment.fireplace.StatusPageFragment
+import com.casic.br.utils.CommandManager
+import com.casic.br.utils.LocaleConstant
+import com.casic.br.utils.TuyaDeviceListener
+import com.google.android.material.tabs.TabLayout
+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.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.sdk.api.ITuyaDevice
+import kotlinx.android.synthetic.main.activity_fire_place.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+
/**
* 壁挂炉
* */
-class FireplaceActivity {
+class FireplaceActivity : KotlinBaseActivity() {
+
+ private val kTag = "FireplaceActivity"
+ private val inflater by lazy { LayoutInflater.from(this) }
+ private var fragmentPages: ArrayList = ArrayList()
+ private lateinit var deviceInstance: ITuyaDevice
+
+ override fun initLayoutView(): Int = R.layout.activity_fire_place
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。
+ deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId)
+
+ val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId)
+ if (deviceBean == null) {
+ "查询设备信息失败,请检查设备是否已离线".show(this)
+ return
+ }
+ titleView.text = "万家乐壁挂炉"
+ Glide.with(this)
+ .load(deviceBean.iconUrl)
+ .placeholder(R.mipmap.load_image_error)
+ .into(deviceLogoView)
+
+ fragmentPages.add(ControlPageFragment(deviceInstance, deviceId))
+ fragmentPages.add(StatusPageFragment(deviceInstance))
+ fragmentPages.add(ServicePageFragment())
+
+ deviceInstance.registerDevListener(object : TuyaDeviceListener() {
+ override fun onDpUpdate(devId: String?, dpStr: String?) {
+ Log.d(kTag, "onDpUpdate: $dpStr")
+
+ val controlMsg = ControlPageFragment.weakReference.obtainMessage()
+ controlMsg.what = 2022092801
+ controlMsg.obj = dpStr
+ ControlPageFragment.weakReference.sendMessage(controlMsg)
+
+ val statusMsg = StatusPageFragment.weakReference.obtainMessage()
+ statusMsg.what = 2022092802
+ statusMsg.obj = dpStr
+ StatusPageFragment.weakReference.sendMessage(statusMsg)
+
+ val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage()
+ deviceBeanMsg.what = 2022092803
+ deviceBeanMsg.obj = deviceBean
+ StatusPageFragment.weakReference.sendMessage(deviceBeanMsg)
+ }
+ })
+ }
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+
+ }
+
+ deviceViewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.DEVICE_PAGE_TITLE, supportFragmentManager)
+ deviceTabLayout.setupWithViewPager(deviceViewPager)
+ deviceTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
+ override fun onTabSelected(tab: TabLayout.Tab?) {
+ val textView = inflater.inflate(R.layout.item_top_tab, null) as TextView
+ textView.textSize = 16f
+ textView.typeface = Typeface.DEFAULT_BOLD
+ textView.text = tab!!.text
+ tab.customView = textView
+ }
+
+ override fun onTabUnselected(tab: TabLayout.Tab?) {
+ tab?.customView = null
+ }
+
+ override fun onTabReselected(tab: TabLayout.Tab?) {
+
+ }
+ })
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //每次获取焦点都查询设备的开关机状态
+ CommandManager.getTuyaDp(deviceInstance, "1")
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ deviceInstance.unRegisterDevListener()
+ deviceInstance.onDestroy()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_fire_place.xml b/app/src/main/res/layout/activity_fire_place.xml
new file mode 100644
index 0000000..1bd9505
--- /dev/null
+++ b/app/src/main/res/layout/activity_fire_place.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_fireplace_control.xml b/app/src/main/res/layout/fragment_device_fireplace_control.xml
new file mode 100644
index 0000000..838d7d4
--- /dev/null
+++ b/app/src/main/res/layout/fragment_device_fireplace_control.xml
@@ -0,0 +1,305 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_fireplace_service.xml b/app/src/main/res/layout/fragment_device_fireplace_service.xml
new file mode 100644
index 0000000..77d9ef6
--- /dev/null
+++ b/app/src/main/res/layout/fragment_device_fireplace_service.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_fireplace_status.xml b/app/src/main/res/layout/fragment_device_fireplace_status.xml
new file mode 100644
index 0000000..0b501a8
--- /dev/null
+++ b/app/src/main/res/layout/fragment_device_fireplace_status.xml
@@ -0,0 +1,362 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file