diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 745c999..907b123 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -60,6 +60,7 @@
+
+
+
+
+ when (message.what) {
+ 2022092802 -> {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ }
+ }
+ }
+ }
+ 2022092903 -> {
+ 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 745c999..907b123 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -60,6 +60,7 @@
+
+ when (message.what) {
+ 2022092802 -> {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ }
+ }
+ }
+ }
+ 2022092903 -> {
+ 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/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
index 23c7a55..2d1e332 100644
--- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.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.cooker.ControlPageFragment
+import com.casic.br.fragment.cooker.ServicePageFragment
+import com.casic.br.fragment.cooker.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_cooker.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+
/**
* 灶具
* */
-class CookerActivity {
+class CookerActivity : KotlinBaseActivity() {
+
+ private val kTag = "CookerActivity"
+ 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_cooker
+
+ 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 = 2022092901
+// controlMsg.obj = dpStr
+// ControlPageFragment.weakReference.sendMessage(controlMsg)
+//
+// val statusMsg = StatusPageFragment.weakReference.obtainMessage()
+// statusMsg.what = 2022092902
+// statusMsg.obj = dpStr
+// StatusPageFragment.weakReference.sendMessage(statusMsg)
+//
+// val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage()
+// deviceBeanMsg.what = 2022092903
+// 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 745c999..907b123 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -60,6 +60,7 @@
+
+ when (message.what) {
+ 2022092802 -> {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ }
+ }
+ }
+ }
+ 2022092903 -> {
+ 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/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
index 23c7a55..2d1e332 100644
--- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.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.cooker.ControlPageFragment
+import com.casic.br.fragment.cooker.ServicePageFragment
+import com.casic.br.fragment.cooker.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_cooker.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+
/**
* 灶具
* */
-class CookerActivity {
+class CookerActivity : KotlinBaseActivity() {
+
+ private val kTag = "CookerActivity"
+ 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_cooker
+
+ 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 = 2022092901
+// controlMsg.obj = dpStr
+// ControlPageFragment.weakReference.sendMessage(controlMsg)
+//
+// val statusMsg = StatusPageFragment.weakReference.obtainMessage()
+// statusMsg.what = 2022092902
+// statusMsg.obj = dpStr
+// StatusPageFragment.weakReference.sendMessage(statusMsg)
+//
+// val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage()
+// deviceBeanMsg.what = 2022092903
+// 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_cooker.xml b/app/src/main/res/layout/activity_cooker.xml
new file mode 100644
index 0000000..1bd9505
--- /dev/null
+++ b/app/src/main/res/layout/activity_cooker.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 745c999..907b123 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -60,6 +60,7 @@
+
+ when (message.what) {
+ 2022092802 -> {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ }
+ }
+ }
+ }
+ 2022092903 -> {
+ 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/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
index 23c7a55..2d1e332 100644
--- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.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.cooker.ControlPageFragment
+import com.casic.br.fragment.cooker.ServicePageFragment
+import com.casic.br.fragment.cooker.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_cooker.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+
/**
* 灶具
* */
-class CookerActivity {
+class CookerActivity : KotlinBaseActivity() {
+
+ private val kTag = "CookerActivity"
+ 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_cooker
+
+ 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 = 2022092901
+// controlMsg.obj = dpStr
+// ControlPageFragment.weakReference.sendMessage(controlMsg)
+//
+// val statusMsg = StatusPageFragment.weakReference.obtainMessage()
+// statusMsg.what = 2022092902
+// statusMsg.obj = dpStr
+// StatusPageFragment.weakReference.sendMessage(statusMsg)
+//
+// val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage()
+// deviceBeanMsg.what = 2022092903
+// 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_cooker.xml b/app/src/main/res/layout/activity_cooker.xml
new file mode 100644
index 0000000..1bd9505
--- /dev/null
+++ b/app/src/main/res/layout/activity_cooker.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
index 1bd9505..c255b3c 100644
--- a/app/src/main/res/layout/activity_fire_place.xml
+++ b/app/src/main/res/layout/activity_fire_place.xml
@@ -18,8 +18,7 @@
+ android:layout_height="wrap_content" />
+
+ when (message.what) {
+ 2022092802 -> {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ }
+ }
+ }
+ }
+ 2022092903 -> {
+ 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/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
index 23c7a55..2d1e332 100644
--- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.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.cooker.ControlPageFragment
+import com.casic.br.fragment.cooker.ServicePageFragment
+import com.casic.br.fragment.cooker.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_cooker.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+
/**
* 灶具
* */
-class CookerActivity {
+class CookerActivity : KotlinBaseActivity() {
+
+ private val kTag = "CookerActivity"
+ 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_cooker
+
+ 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 = 2022092901
+// controlMsg.obj = dpStr
+// ControlPageFragment.weakReference.sendMessage(controlMsg)
+//
+// val statusMsg = StatusPageFragment.weakReference.obtainMessage()
+// statusMsg.what = 2022092902
+// statusMsg.obj = dpStr
+// StatusPageFragment.weakReference.sendMessage(statusMsg)
+//
+// val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage()
+// deviceBeanMsg.what = 2022092903
+// 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_cooker.xml b/app/src/main/res/layout/activity_cooker.xml
new file mode 100644
index 0000000..1bd9505
--- /dev/null
+++ b/app/src/main/res/layout/activity_cooker.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
index 1bd9505..c255b3c 100644
--- a/app/src/main/res/layout/activity_fire_place.xml
+++ b/app/src/main/res/layout/activity_fire_place.xml
@@ -18,8 +18,7 @@
+ android:layout_height="wrap_content" />
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 745c999..907b123 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -60,6 +60,7 @@
+
+ when (message.what) {
+ 2022092802 -> {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ }
+ }
+ }
+ }
+ 2022092903 -> {
+ 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/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
index 23c7a55..2d1e332 100644
--- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.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.cooker.ControlPageFragment
+import com.casic.br.fragment.cooker.ServicePageFragment
+import com.casic.br.fragment.cooker.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_cooker.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+
/**
* 灶具
* */
-class CookerActivity {
+class CookerActivity : KotlinBaseActivity() {
+
+ private val kTag = "CookerActivity"
+ 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_cooker
+
+ 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 = 2022092901
+// controlMsg.obj = dpStr
+// ControlPageFragment.weakReference.sendMessage(controlMsg)
+//
+// val statusMsg = StatusPageFragment.weakReference.obtainMessage()
+// statusMsg.what = 2022092902
+// statusMsg.obj = dpStr
+// StatusPageFragment.weakReference.sendMessage(statusMsg)
+//
+// val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage()
+// deviceBeanMsg.what = 2022092903
+// 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_cooker.xml b/app/src/main/res/layout/activity_cooker.xml
new file mode 100644
index 0000000..1bd9505
--- /dev/null
+++ b/app/src/main/res/layout/activity_cooker.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
index 1bd9505..c255b3c 100644
--- a/app/src/main/res/layout/activity_fire_place.xml
+++ b/app/src/main/res/layout/activity_fire_place.xml
@@ -18,8 +18,7 @@
+ android:layout_height="wrap_content" />
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_cooker_service.xml b/app/src/main/res/layout/fragment_device_cooker_service.xml
new file mode 100644
index 0000000..77d9ef6
--- /dev/null
+++ b/app/src/main/res/layout/fragment_device_cooker_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 745c999..907b123 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -60,6 +60,7 @@
+
+ when (message.what) {
+ 2022092802 -> {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ }
+ }
+ }
+ }
+ 2022092903 -> {
+ 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/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
index 23c7a55..2d1e332 100644
--- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.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.cooker.ControlPageFragment
+import com.casic.br.fragment.cooker.ServicePageFragment
+import com.casic.br.fragment.cooker.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_cooker.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+
/**
* 灶具
* */
-class CookerActivity {
+class CookerActivity : KotlinBaseActivity() {
+
+ private val kTag = "CookerActivity"
+ 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_cooker
+
+ 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 = 2022092901
+// controlMsg.obj = dpStr
+// ControlPageFragment.weakReference.sendMessage(controlMsg)
+//
+// val statusMsg = StatusPageFragment.weakReference.obtainMessage()
+// statusMsg.what = 2022092902
+// statusMsg.obj = dpStr
+// StatusPageFragment.weakReference.sendMessage(statusMsg)
+//
+// val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage()
+// deviceBeanMsg.what = 2022092903
+// 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_cooker.xml b/app/src/main/res/layout/activity_cooker.xml
new file mode 100644
index 0000000..1bd9505
--- /dev/null
+++ b/app/src/main/res/layout/activity_cooker.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
index 1bd9505..c255b3c 100644
--- a/app/src/main/res/layout/activity_fire_place.xml
+++ b/app/src/main/res/layout/activity_fire_place.xml
@@ -18,8 +18,7 @@
+ android:layout_height="wrap_content" />
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_cooker_service.xml b/app/src/main/res/layout/fragment_device_cooker_service.xml
new file mode 100644
index 0000000..77d9ef6
--- /dev/null
+++ b/app/src/main/res/layout/fragment_device_cooker_service.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_cooker_status.xml b/app/src/main/res/layout/fragment_device_cooker_status.xml
new file mode 100644
index 0000000..d289627
--- /dev/null
+++ b/app/src/main/res/layout/fragment_device_cooker_status.xml
@@ -0,0 +1,249 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 745c999..907b123 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -60,6 +60,7 @@
+
+ when (message.what) {
+ 2022092802 -> {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ }
+ }
+ }
+ }
+ 2022092903 -> {
+ 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/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
index 23c7a55..2d1e332 100644
--- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.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.cooker.ControlPageFragment
+import com.casic.br.fragment.cooker.ServicePageFragment
+import com.casic.br.fragment.cooker.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_cooker.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+
/**
* 灶具
* */
-class CookerActivity {
+class CookerActivity : KotlinBaseActivity() {
+
+ private val kTag = "CookerActivity"
+ 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_cooker
+
+ 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 = 2022092901
+// controlMsg.obj = dpStr
+// ControlPageFragment.weakReference.sendMessage(controlMsg)
+//
+// val statusMsg = StatusPageFragment.weakReference.obtainMessage()
+// statusMsg.what = 2022092902
+// statusMsg.obj = dpStr
+// StatusPageFragment.weakReference.sendMessage(statusMsg)
+//
+// val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage()
+// deviceBeanMsg.what = 2022092903
+// 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_cooker.xml b/app/src/main/res/layout/activity_cooker.xml
new file mode 100644
index 0000000..1bd9505
--- /dev/null
+++ b/app/src/main/res/layout/activity_cooker.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
index 1bd9505..c255b3c 100644
--- a/app/src/main/res/layout/activity_fire_place.xml
+++ b/app/src/main/res/layout/activity_fire_place.xml
@@ -18,8 +18,7 @@
+ android:layout_height="wrap_content" />
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_cooker_service.xml b/app/src/main/res/layout/fragment_device_cooker_service.xml
new file mode 100644
index 0000000..77d9ef6
--- /dev/null
+++ b/app/src/main/res/layout/fragment_device_cooker_service.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_cooker_status.xml b/app/src/main/res/layout/fragment_device_cooker_status.xml
new file mode 100644
index 0000000..d289627
--- /dev/null
+++ b/app/src/main/res/layout/fragment_device_cooker_status.xml
@@ -0,0 +1,249 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
index 0b501a8..bec43db 100644
--- a/app/src/main/res/layout/fragment_device_fireplace_status.xml
+++ b/app/src/main/res/layout/fragment_device_fireplace_status.xml
@@ -336,7 +336,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_20"
- android:layout_marginTop="@dimen/dp_10"
+ android:layout_marginVertical="@dimen/dp_10"
android:background="@drawable/bg_solid_layout_white_radius_10"
android:gravity="center_vertical"
android:orientation="horizontal"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 745c999..907b123 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -60,6 +60,7 @@
+
+ when (message.what) {
+ 2022092802 -> {
+ val parseObject = JSONObject.parseObject(message.obj as String)
+ parseObject.keys.forEach {
+ when (it) {
+ "1" -> {//开关机
+ isDeviceWorking = parseObject[it] as Boolean
+ }
+ }
+ }
+ }
+ 2022092903 -> {
+ 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/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
index 23c7a55..2d1e332 100644
--- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.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.cooker.ControlPageFragment
+import com.casic.br.fragment.cooker.ServicePageFragment
+import com.casic.br.fragment.cooker.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_cooker.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+
/**
* 灶具
* */
-class CookerActivity {
+class CookerActivity : KotlinBaseActivity() {
+
+ private val kTag = "CookerActivity"
+ 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_cooker
+
+ 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 = 2022092901
+// controlMsg.obj = dpStr
+// ControlPageFragment.weakReference.sendMessage(controlMsg)
+//
+// val statusMsg = StatusPageFragment.weakReference.obtainMessage()
+// statusMsg.what = 2022092902
+// statusMsg.obj = dpStr
+// StatusPageFragment.weakReference.sendMessage(statusMsg)
+//
+// val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage()
+// deviceBeanMsg.what = 2022092903
+// 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_cooker.xml b/app/src/main/res/layout/activity_cooker.xml
new file mode 100644
index 0000000..1bd9505
--- /dev/null
+++ b/app/src/main/res/layout/activity_cooker.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
index 1bd9505..c255b3c 100644
--- a/app/src/main/res/layout/activity_fire_place.xml
+++ b/app/src/main/res/layout/activity_fire_place.xml
@@ -18,8 +18,7 @@
+ android:layout_height="wrap_content" />
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_cooker_service.xml b/app/src/main/res/layout/fragment_device_cooker_service.xml
new file mode 100644
index 0000000..77d9ef6
--- /dev/null
+++ b/app/src/main/res/layout/fragment_device_cooker_service.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_cooker_status.xml b/app/src/main/res/layout/fragment_device_cooker_status.xml
new file mode 100644
index 0000000..d289627
--- /dev/null
+++ b/app/src/main/res/layout/fragment_device_cooker_status.xml
@@ -0,0 +1,249 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
index 0b501a8..bec43db 100644
--- a/app/src/main/res/layout/fragment_device_fireplace_status.xml
+++ b/app/src/main/res/layout/fragment_device_fireplace_status.xml
@@ -336,7 +336,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_20"
- android:layout_marginTop="@dimen/dp_10"
+ android:layout_marginVertical="@dimen/dp_10"
android:background="@drawable/bg_solid_layout_white_radius_10"
android:gravity="center_vertical"
android:orientation="horizontal"
diff --git a/app/src/main/res/layout/fragment_device_rangehood_status.xml b/app/src/main/res/layout/fragment_device_rangehood_status.xml
index 2fd8f15..7ae6579 100644
--- a/app/src/main/res/layout/fragment_device_rangehood_status.xml
+++ b/app/src/main/res/layout/fragment_device_rangehood_status.xml
@@ -224,7 +224,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_20"
- android:layout_marginTop="@dimen/dp_10"
+ android:layout_marginVertical="@dimen/dp_10"
android:background="@drawable/bg_solid_layout_white_radius_10"
android:gravity="center_vertical"
android:orientation="horizontal"