diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..1eb9752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -77,6 +77,7 @@
+
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..1eb9752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -77,6 +77,7 @@
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..1eb9752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -77,6 +77,7 @@
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
new file mode 100644
index 0000000..2d8a2df
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class TemperaturePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_temperature
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..1eb9752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -77,6 +77,7 @@
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
new file mode 100644
index 0000000..2d8a2df
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class TemperaturePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_temperature
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index d042a7f..aeb638b 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -34,8 +34,32 @@
val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们")
val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴")
val DEVICE_PAGE_TITLE = arrayOf("设备控制", "状态显示", "服务设置")
+ val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+
+ //TODO 模拟数据
+ val TEST_IMAGE = intArrayOf(
+ R.mipmap.t_1,
+ R.mipmap.t_2,
+ R.mipmap.t_3,
+ R.mipmap.t_4,
+ R.mipmap.t_5,
+ R.mipmap.t_6,
+ R.mipmap.t_7,
+ R.mipmap.t_8
+ )
+ val TEST_ARRAY = arrayOf(
+ "24LS01壁挂炉",
+ "多功能智能热水器",
+ "24LC01壁挂炉",
+ "16RC01热水器",
+ "TXC01油烟机",
+ "QZE03燃气灶",
+ "多功能智能油烟机",
+ "多功能智能燃气灶"
+ )
+
//预置颜色
val COLORS = arrayOf(
R.color.color_1, R.color.color_2, R.color.color_3,
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..1eb9752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -77,6 +77,7 @@
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
new file mode 100644
index 0000000..2d8a2df
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class TemperaturePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_temperature
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index d042a7f..aeb638b 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -34,8 +34,32 @@
val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们")
val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴")
val DEVICE_PAGE_TITLE = arrayOf("设备控制", "状态显示", "服务设置")
+ val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+
+ //TODO 模拟数据
+ val TEST_IMAGE = intArrayOf(
+ R.mipmap.t_1,
+ R.mipmap.t_2,
+ R.mipmap.t_3,
+ R.mipmap.t_4,
+ R.mipmap.t_5,
+ R.mipmap.t_6,
+ R.mipmap.t_7,
+ R.mipmap.t_8
+ )
+ val TEST_ARRAY = arrayOf(
+ "24LS01壁挂炉",
+ "多功能智能热水器",
+ "24LC01壁挂炉",
+ "16RC01热水器",
+ "TXC01油烟机",
+ "QZE03燃气灶",
+ "多功能智能油烟机",
+ "多功能智能燃气灶"
+ )
+
//预置颜色
val COLORS = arrayOf(
R.color.color_1, R.color.color_2, R.color.color_3,
diff --git a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
new file mode 100644
index 0000000..7c8dfe7
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
@@ -0,0 +1,135 @@
+package com.casic.br.view.device
+
+import android.os.Handler
+import android.util.Log
+import android.view.View
+import androidx.fragment.app.Fragment
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.selectCategory
+import com.casic.br.extensions.toBatteryImage
+import com.casic.br.fragment.th.HumidityPageFragment
+import com.casic.br.fragment.th.TemperaturePageFragment
+import com.casic.br.utils.DeserializeModel
+import com.casic.br.utils.LocaleConstant
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.bean.HomeBean
+import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.activity_t_h_senser.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+import kotlin.collections.HashMap
+
+/**
+ * 温湿度传感器
+ * TODO 数据上报暂缓
+ * */
+class TAndHSensorActivity : KotlinBaseActivity() {
+
+ private val context = this@TAndHSensorActivity
+ private val dataTimer by lazy { Timer() }//数据上传Timer
+ private val dataLinkedList = LinkedList>()
+ private lateinit var weakReference: WeakReferenceHandler
+ private var fragmentPages: ArrayList = ArrayList()
+
+ override fun initLayoutView(): Int = R.layout.activity_t_h_senser
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.visibility = View.GONE
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ //每隔5s传一次数据到服务器
+ dataTimer.schedule(object : TimerTask() {
+ override fun run() {
+ TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
+ .getHomeDetail(object : ITuyaHomeResultCallback {
+ override fun onSuccess(bean: HomeBean) {
+ bean.deviceList.forEach {
+ val selectedCategory = it.selectCategory()
+ if (selectedCategory.contains("wsdcg")) {
+ //温湿度传感器
+ val msg = weakReference.obtainMessage()
+ msg.what = 2022112001
+ msg.obj = it
+ weakReference.sendMessage(msg)
+ }
+ }
+ }
+
+ override fun onError(errorCode: String, errorMsg: String) {
+ Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg")
+ }
+ })
+ }
+ }, 0, 5000)
+
+ fragmentPages.add(TemperaturePageFragment())
+ fragmentPages.add(HumidityPageFragment())
+ viewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.T_H_PAGE_TITLE, supportFragmentManager)
+ tabLayout.setupWithViewPager(viewPager)
+ }
+
+ private val callback = Handler.Callback { message ->
+ if (message.what == 2022112001) {
+ val it = message.obj as DeviceBean
+ deviceStateView.text = if (it.isOnline) {
+ "设备在线"
+ } else {
+ "设备已离线"
+ }
+ titleView.text = String.format(it.name + "传感器")
+
+ val dataMap = HashMap()
+
+ val h = it.dps["101"].toString()
+ //温湿度的值需要缩小100倍
+ humidityView.text = if (h.isBlank()) {
+ "0%"
+ } else {
+ "${h.toDouble() / 100}%"
+ }
+ dataMap["humidity"] = humidityView.text.toString().replace("%", "")
+
+ val b = it.dps["102"].toString()
+ batteryView.setBackgroundResource(b.toBatteryImage())
+ batteryValueView.text = "${b}%"
+
+ val t = it.dps["103"].toString()
+ //{"unit":"℃","min":-2000,"max":10000,"scale":2,"step":1,"type":"value"}
+ temperatureView.text = if (h.isBlank()) {
+ "0${resources.getString(R.string.temperature_unit)}"
+ } else {
+ "${t.toDouble() / 100}${resources.getString(R.string.temperature_unit)}"
+ }
+ dataMap["temperature"] = temperatureView.text.toString().replace("°C", "")
+
+ dataLinkedList.add(dataMap)
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ dataTimer.cancel()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..1eb9752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -77,6 +77,7 @@
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
new file mode 100644
index 0000000..2d8a2df
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class TemperaturePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_temperature
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index d042a7f..aeb638b 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -34,8 +34,32 @@
val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们")
val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴")
val DEVICE_PAGE_TITLE = arrayOf("设备控制", "状态显示", "服务设置")
+ val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+
+ //TODO 模拟数据
+ val TEST_IMAGE = intArrayOf(
+ R.mipmap.t_1,
+ R.mipmap.t_2,
+ R.mipmap.t_3,
+ R.mipmap.t_4,
+ R.mipmap.t_5,
+ R.mipmap.t_6,
+ R.mipmap.t_7,
+ R.mipmap.t_8
+ )
+ val TEST_ARRAY = arrayOf(
+ "24LS01壁挂炉",
+ "多功能智能热水器",
+ "24LC01壁挂炉",
+ "16RC01热水器",
+ "TXC01油烟机",
+ "QZE03燃气灶",
+ "多功能智能油烟机",
+ "多功能智能燃气灶"
+ )
+
//预置颜色
val COLORS = arrayOf(
R.color.color_1, R.color.color_2, R.color.color_3,
diff --git a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
new file mode 100644
index 0000000..7c8dfe7
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
@@ -0,0 +1,135 @@
+package com.casic.br.view.device
+
+import android.os.Handler
+import android.util.Log
+import android.view.View
+import androidx.fragment.app.Fragment
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.selectCategory
+import com.casic.br.extensions.toBatteryImage
+import com.casic.br.fragment.th.HumidityPageFragment
+import com.casic.br.fragment.th.TemperaturePageFragment
+import com.casic.br.utils.DeserializeModel
+import com.casic.br.utils.LocaleConstant
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.bean.HomeBean
+import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.activity_t_h_senser.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+import kotlin.collections.HashMap
+
+/**
+ * 温湿度传感器
+ * TODO 数据上报暂缓
+ * */
+class TAndHSensorActivity : KotlinBaseActivity() {
+
+ private val context = this@TAndHSensorActivity
+ private val dataTimer by lazy { Timer() }//数据上传Timer
+ private val dataLinkedList = LinkedList>()
+ private lateinit var weakReference: WeakReferenceHandler
+ private var fragmentPages: ArrayList = ArrayList()
+
+ override fun initLayoutView(): Int = R.layout.activity_t_h_senser
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.visibility = View.GONE
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ //每隔5s传一次数据到服务器
+ dataTimer.schedule(object : TimerTask() {
+ override fun run() {
+ TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
+ .getHomeDetail(object : ITuyaHomeResultCallback {
+ override fun onSuccess(bean: HomeBean) {
+ bean.deviceList.forEach {
+ val selectedCategory = it.selectCategory()
+ if (selectedCategory.contains("wsdcg")) {
+ //温湿度传感器
+ val msg = weakReference.obtainMessage()
+ msg.what = 2022112001
+ msg.obj = it
+ weakReference.sendMessage(msg)
+ }
+ }
+ }
+
+ override fun onError(errorCode: String, errorMsg: String) {
+ Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg")
+ }
+ })
+ }
+ }, 0, 5000)
+
+ fragmentPages.add(TemperaturePageFragment())
+ fragmentPages.add(HumidityPageFragment())
+ viewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.T_H_PAGE_TITLE, supportFragmentManager)
+ tabLayout.setupWithViewPager(viewPager)
+ }
+
+ private val callback = Handler.Callback { message ->
+ if (message.what == 2022112001) {
+ val it = message.obj as DeviceBean
+ deviceStateView.text = if (it.isOnline) {
+ "设备在线"
+ } else {
+ "设备已离线"
+ }
+ titleView.text = String.format(it.name + "传感器")
+
+ val dataMap = HashMap()
+
+ val h = it.dps["101"].toString()
+ //温湿度的值需要缩小100倍
+ humidityView.text = if (h.isBlank()) {
+ "0%"
+ } else {
+ "${h.toDouble() / 100}%"
+ }
+ dataMap["humidity"] = humidityView.text.toString().replace("%", "")
+
+ val b = it.dps["102"].toString()
+ batteryView.setBackgroundResource(b.toBatteryImage())
+ batteryValueView.text = "${b}%"
+
+ val t = it.dps["103"].toString()
+ //{"unit":"℃","min":-2000,"max":10000,"scale":2,"step":1,"type":"value"}
+ temperatureView.text = if (h.isBlank()) {
+ "0${resources.getString(R.string.temperature_unit)}"
+ } else {
+ "${t.toDouble() / 100}${resources.getString(R.string.temperature_unit)}"
+ }
+ dataMap["temperature"] = temperatureView.text.toString().replace("°C", "")
+
+ dataLinkedList.add(dataMap)
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ dataTimer.cancel()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
new file mode 100644
index 0000000..9570167
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..1eb9752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -77,6 +77,7 @@
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
new file mode 100644
index 0000000..2d8a2df
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class TemperaturePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_temperature
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index d042a7f..aeb638b 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -34,8 +34,32 @@
val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们")
val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴")
val DEVICE_PAGE_TITLE = arrayOf("设备控制", "状态显示", "服务设置")
+ val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+
+ //TODO 模拟数据
+ val TEST_IMAGE = intArrayOf(
+ R.mipmap.t_1,
+ R.mipmap.t_2,
+ R.mipmap.t_3,
+ R.mipmap.t_4,
+ R.mipmap.t_5,
+ R.mipmap.t_6,
+ R.mipmap.t_7,
+ R.mipmap.t_8
+ )
+ val TEST_ARRAY = arrayOf(
+ "24LS01壁挂炉",
+ "多功能智能热水器",
+ "24LC01壁挂炉",
+ "16RC01热水器",
+ "TXC01油烟机",
+ "QZE03燃气灶",
+ "多功能智能油烟机",
+ "多功能智能燃气灶"
+ )
+
//预置颜色
val COLORS = arrayOf(
R.color.color_1, R.color.color_2, R.color.color_3,
diff --git a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
new file mode 100644
index 0000000..7c8dfe7
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
@@ -0,0 +1,135 @@
+package com.casic.br.view.device
+
+import android.os.Handler
+import android.util.Log
+import android.view.View
+import androidx.fragment.app.Fragment
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.selectCategory
+import com.casic.br.extensions.toBatteryImage
+import com.casic.br.fragment.th.HumidityPageFragment
+import com.casic.br.fragment.th.TemperaturePageFragment
+import com.casic.br.utils.DeserializeModel
+import com.casic.br.utils.LocaleConstant
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.bean.HomeBean
+import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.activity_t_h_senser.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+import kotlin.collections.HashMap
+
+/**
+ * 温湿度传感器
+ * TODO 数据上报暂缓
+ * */
+class TAndHSensorActivity : KotlinBaseActivity() {
+
+ private val context = this@TAndHSensorActivity
+ private val dataTimer by lazy { Timer() }//数据上传Timer
+ private val dataLinkedList = LinkedList>()
+ private lateinit var weakReference: WeakReferenceHandler
+ private var fragmentPages: ArrayList = ArrayList()
+
+ override fun initLayoutView(): Int = R.layout.activity_t_h_senser
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.visibility = View.GONE
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ //每隔5s传一次数据到服务器
+ dataTimer.schedule(object : TimerTask() {
+ override fun run() {
+ TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
+ .getHomeDetail(object : ITuyaHomeResultCallback {
+ override fun onSuccess(bean: HomeBean) {
+ bean.deviceList.forEach {
+ val selectedCategory = it.selectCategory()
+ if (selectedCategory.contains("wsdcg")) {
+ //温湿度传感器
+ val msg = weakReference.obtainMessage()
+ msg.what = 2022112001
+ msg.obj = it
+ weakReference.sendMessage(msg)
+ }
+ }
+ }
+
+ override fun onError(errorCode: String, errorMsg: String) {
+ Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg")
+ }
+ })
+ }
+ }, 0, 5000)
+
+ fragmentPages.add(TemperaturePageFragment())
+ fragmentPages.add(HumidityPageFragment())
+ viewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.T_H_PAGE_TITLE, supportFragmentManager)
+ tabLayout.setupWithViewPager(viewPager)
+ }
+
+ private val callback = Handler.Callback { message ->
+ if (message.what == 2022112001) {
+ val it = message.obj as DeviceBean
+ deviceStateView.text = if (it.isOnline) {
+ "设备在线"
+ } else {
+ "设备已离线"
+ }
+ titleView.text = String.format(it.name + "传感器")
+
+ val dataMap = HashMap()
+
+ val h = it.dps["101"].toString()
+ //温湿度的值需要缩小100倍
+ humidityView.text = if (h.isBlank()) {
+ "0%"
+ } else {
+ "${h.toDouble() / 100}%"
+ }
+ dataMap["humidity"] = humidityView.text.toString().replace("%", "")
+
+ val b = it.dps["102"].toString()
+ batteryView.setBackgroundResource(b.toBatteryImage())
+ batteryValueView.text = "${b}%"
+
+ val t = it.dps["103"].toString()
+ //{"unit":"℃","min":-2000,"max":10000,"scale":2,"step":1,"type":"value"}
+ temperatureView.text = if (h.isBlank()) {
+ "0${resources.getString(R.string.temperature_unit)}"
+ } else {
+ "${t.toDouble() / 100}${resources.getString(R.string.temperature_unit)}"
+ }
+ dataMap["temperature"] = temperatureView.text.toString().replace("°C", "")
+
+ dataLinkedList.add(dataMap)
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ dataTimer.cancel()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
new file mode 100644
index 0000000..9570167
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
new file mode 100644
index 0000000..b35e98c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..1eb9752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -77,6 +77,7 @@
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
new file mode 100644
index 0000000..2d8a2df
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class TemperaturePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_temperature
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index d042a7f..aeb638b 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -34,8 +34,32 @@
val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们")
val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴")
val DEVICE_PAGE_TITLE = arrayOf("设备控制", "状态显示", "服务设置")
+ val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+
+ //TODO 模拟数据
+ val TEST_IMAGE = intArrayOf(
+ R.mipmap.t_1,
+ R.mipmap.t_2,
+ R.mipmap.t_3,
+ R.mipmap.t_4,
+ R.mipmap.t_5,
+ R.mipmap.t_6,
+ R.mipmap.t_7,
+ R.mipmap.t_8
+ )
+ val TEST_ARRAY = arrayOf(
+ "24LS01壁挂炉",
+ "多功能智能热水器",
+ "24LC01壁挂炉",
+ "16RC01热水器",
+ "TXC01油烟机",
+ "QZE03燃气灶",
+ "多功能智能油烟机",
+ "多功能智能燃气灶"
+ )
+
//预置颜色
val COLORS = arrayOf(
R.color.color_1, R.color.color_2, R.color.color_3,
diff --git a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
new file mode 100644
index 0000000..7c8dfe7
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
@@ -0,0 +1,135 @@
+package com.casic.br.view.device
+
+import android.os.Handler
+import android.util.Log
+import android.view.View
+import androidx.fragment.app.Fragment
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.selectCategory
+import com.casic.br.extensions.toBatteryImage
+import com.casic.br.fragment.th.HumidityPageFragment
+import com.casic.br.fragment.th.TemperaturePageFragment
+import com.casic.br.utils.DeserializeModel
+import com.casic.br.utils.LocaleConstant
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.bean.HomeBean
+import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.activity_t_h_senser.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+import kotlin.collections.HashMap
+
+/**
+ * 温湿度传感器
+ * TODO 数据上报暂缓
+ * */
+class TAndHSensorActivity : KotlinBaseActivity() {
+
+ private val context = this@TAndHSensorActivity
+ private val dataTimer by lazy { Timer() }//数据上传Timer
+ private val dataLinkedList = LinkedList>()
+ private lateinit var weakReference: WeakReferenceHandler
+ private var fragmentPages: ArrayList = ArrayList()
+
+ override fun initLayoutView(): Int = R.layout.activity_t_h_senser
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.visibility = View.GONE
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ //每隔5s传一次数据到服务器
+ dataTimer.schedule(object : TimerTask() {
+ override fun run() {
+ TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
+ .getHomeDetail(object : ITuyaHomeResultCallback {
+ override fun onSuccess(bean: HomeBean) {
+ bean.deviceList.forEach {
+ val selectedCategory = it.selectCategory()
+ if (selectedCategory.contains("wsdcg")) {
+ //温湿度传感器
+ val msg = weakReference.obtainMessage()
+ msg.what = 2022112001
+ msg.obj = it
+ weakReference.sendMessage(msg)
+ }
+ }
+ }
+
+ override fun onError(errorCode: String, errorMsg: String) {
+ Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg")
+ }
+ })
+ }
+ }, 0, 5000)
+
+ fragmentPages.add(TemperaturePageFragment())
+ fragmentPages.add(HumidityPageFragment())
+ viewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.T_H_PAGE_TITLE, supportFragmentManager)
+ tabLayout.setupWithViewPager(viewPager)
+ }
+
+ private val callback = Handler.Callback { message ->
+ if (message.what == 2022112001) {
+ val it = message.obj as DeviceBean
+ deviceStateView.text = if (it.isOnline) {
+ "设备在线"
+ } else {
+ "设备已离线"
+ }
+ titleView.text = String.format(it.name + "传感器")
+
+ val dataMap = HashMap()
+
+ val h = it.dps["101"].toString()
+ //温湿度的值需要缩小100倍
+ humidityView.text = if (h.isBlank()) {
+ "0%"
+ } else {
+ "${h.toDouble() / 100}%"
+ }
+ dataMap["humidity"] = humidityView.text.toString().replace("%", "")
+
+ val b = it.dps["102"].toString()
+ batteryView.setBackgroundResource(b.toBatteryImage())
+ batteryValueView.text = "${b}%"
+
+ val t = it.dps["103"].toString()
+ //{"unit":"℃","min":-2000,"max":10000,"scale":2,"step":1,"type":"value"}
+ temperatureView.text = if (h.isBlank()) {
+ "0${resources.getString(R.string.temperature_unit)}"
+ } else {
+ "${t.toDouble() / 100}${resources.getString(R.string.temperature_unit)}"
+ }
+ dataMap["temperature"] = temperatureView.text.toString().replace("°C", "")
+
+ dataLinkedList.add(dataMap)
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ dataTimer.cancel()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
new file mode 100644
index 0000000..9570167
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
new file mode 100644
index 0000000..b35e98c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_shidu.xml b/app/src/main/res/drawable/ic_shidu.xml
new file mode 100644
index 0000000..1d14648
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shidu.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..1eb9752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -77,6 +77,7 @@
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
new file mode 100644
index 0000000..2d8a2df
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class TemperaturePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_temperature
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index d042a7f..aeb638b 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -34,8 +34,32 @@
val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们")
val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴")
val DEVICE_PAGE_TITLE = arrayOf("设备控制", "状态显示", "服务设置")
+ val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+
+ //TODO 模拟数据
+ val TEST_IMAGE = intArrayOf(
+ R.mipmap.t_1,
+ R.mipmap.t_2,
+ R.mipmap.t_3,
+ R.mipmap.t_4,
+ R.mipmap.t_5,
+ R.mipmap.t_6,
+ R.mipmap.t_7,
+ R.mipmap.t_8
+ )
+ val TEST_ARRAY = arrayOf(
+ "24LS01壁挂炉",
+ "多功能智能热水器",
+ "24LC01壁挂炉",
+ "16RC01热水器",
+ "TXC01油烟机",
+ "QZE03燃气灶",
+ "多功能智能油烟机",
+ "多功能智能燃气灶"
+ )
+
//预置颜色
val COLORS = arrayOf(
R.color.color_1, R.color.color_2, R.color.color_3,
diff --git a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
new file mode 100644
index 0000000..7c8dfe7
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
@@ -0,0 +1,135 @@
+package com.casic.br.view.device
+
+import android.os.Handler
+import android.util.Log
+import android.view.View
+import androidx.fragment.app.Fragment
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.selectCategory
+import com.casic.br.extensions.toBatteryImage
+import com.casic.br.fragment.th.HumidityPageFragment
+import com.casic.br.fragment.th.TemperaturePageFragment
+import com.casic.br.utils.DeserializeModel
+import com.casic.br.utils.LocaleConstant
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.bean.HomeBean
+import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.activity_t_h_senser.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+import kotlin.collections.HashMap
+
+/**
+ * 温湿度传感器
+ * TODO 数据上报暂缓
+ * */
+class TAndHSensorActivity : KotlinBaseActivity() {
+
+ private val context = this@TAndHSensorActivity
+ private val dataTimer by lazy { Timer() }//数据上传Timer
+ private val dataLinkedList = LinkedList>()
+ private lateinit var weakReference: WeakReferenceHandler
+ private var fragmentPages: ArrayList = ArrayList()
+
+ override fun initLayoutView(): Int = R.layout.activity_t_h_senser
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.visibility = View.GONE
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ //每隔5s传一次数据到服务器
+ dataTimer.schedule(object : TimerTask() {
+ override fun run() {
+ TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
+ .getHomeDetail(object : ITuyaHomeResultCallback {
+ override fun onSuccess(bean: HomeBean) {
+ bean.deviceList.forEach {
+ val selectedCategory = it.selectCategory()
+ if (selectedCategory.contains("wsdcg")) {
+ //温湿度传感器
+ val msg = weakReference.obtainMessage()
+ msg.what = 2022112001
+ msg.obj = it
+ weakReference.sendMessage(msg)
+ }
+ }
+ }
+
+ override fun onError(errorCode: String, errorMsg: String) {
+ Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg")
+ }
+ })
+ }
+ }, 0, 5000)
+
+ fragmentPages.add(TemperaturePageFragment())
+ fragmentPages.add(HumidityPageFragment())
+ viewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.T_H_PAGE_TITLE, supportFragmentManager)
+ tabLayout.setupWithViewPager(viewPager)
+ }
+
+ private val callback = Handler.Callback { message ->
+ if (message.what == 2022112001) {
+ val it = message.obj as DeviceBean
+ deviceStateView.text = if (it.isOnline) {
+ "设备在线"
+ } else {
+ "设备已离线"
+ }
+ titleView.text = String.format(it.name + "传感器")
+
+ val dataMap = HashMap()
+
+ val h = it.dps["101"].toString()
+ //温湿度的值需要缩小100倍
+ humidityView.text = if (h.isBlank()) {
+ "0%"
+ } else {
+ "${h.toDouble() / 100}%"
+ }
+ dataMap["humidity"] = humidityView.text.toString().replace("%", "")
+
+ val b = it.dps["102"].toString()
+ batteryView.setBackgroundResource(b.toBatteryImage())
+ batteryValueView.text = "${b}%"
+
+ val t = it.dps["103"].toString()
+ //{"unit":"℃","min":-2000,"max":10000,"scale":2,"step":1,"type":"value"}
+ temperatureView.text = if (h.isBlank()) {
+ "0${resources.getString(R.string.temperature_unit)}"
+ } else {
+ "${t.toDouble() / 100}${resources.getString(R.string.temperature_unit)}"
+ }
+ dataMap["temperature"] = temperatureView.text.toString().replace("°C", "")
+
+ dataLinkedList.add(dataMap)
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ dataTimer.cancel()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
new file mode 100644
index 0000000..9570167
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
new file mode 100644
index 0000000..b35e98c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_shidu.xml b/app/src/main/res/drawable/ic_shidu.xml
new file mode 100644
index 0000000..1d14648
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shidu.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_wendu.xml b/app/src/main/res/drawable/ic_wendu.xml
new file mode 100644
index 0000000..41e033d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_wendu.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..1eb9752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -77,6 +77,7 @@
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
new file mode 100644
index 0000000..2d8a2df
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class TemperaturePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_temperature
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index d042a7f..aeb638b 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -34,8 +34,32 @@
val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们")
val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴")
val DEVICE_PAGE_TITLE = arrayOf("设备控制", "状态显示", "服务设置")
+ val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+
+ //TODO 模拟数据
+ val TEST_IMAGE = intArrayOf(
+ R.mipmap.t_1,
+ R.mipmap.t_2,
+ R.mipmap.t_3,
+ R.mipmap.t_4,
+ R.mipmap.t_5,
+ R.mipmap.t_6,
+ R.mipmap.t_7,
+ R.mipmap.t_8
+ )
+ val TEST_ARRAY = arrayOf(
+ "24LS01壁挂炉",
+ "多功能智能热水器",
+ "24LC01壁挂炉",
+ "16RC01热水器",
+ "TXC01油烟机",
+ "QZE03燃气灶",
+ "多功能智能油烟机",
+ "多功能智能燃气灶"
+ )
+
//预置颜色
val COLORS = arrayOf(
R.color.color_1, R.color.color_2, R.color.color_3,
diff --git a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
new file mode 100644
index 0000000..7c8dfe7
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
@@ -0,0 +1,135 @@
+package com.casic.br.view.device
+
+import android.os.Handler
+import android.util.Log
+import android.view.View
+import androidx.fragment.app.Fragment
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.selectCategory
+import com.casic.br.extensions.toBatteryImage
+import com.casic.br.fragment.th.HumidityPageFragment
+import com.casic.br.fragment.th.TemperaturePageFragment
+import com.casic.br.utils.DeserializeModel
+import com.casic.br.utils.LocaleConstant
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.bean.HomeBean
+import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.activity_t_h_senser.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+import kotlin.collections.HashMap
+
+/**
+ * 温湿度传感器
+ * TODO 数据上报暂缓
+ * */
+class TAndHSensorActivity : KotlinBaseActivity() {
+
+ private val context = this@TAndHSensorActivity
+ private val dataTimer by lazy { Timer() }//数据上传Timer
+ private val dataLinkedList = LinkedList>()
+ private lateinit var weakReference: WeakReferenceHandler
+ private var fragmentPages: ArrayList = ArrayList()
+
+ override fun initLayoutView(): Int = R.layout.activity_t_h_senser
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.visibility = View.GONE
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ //每隔5s传一次数据到服务器
+ dataTimer.schedule(object : TimerTask() {
+ override fun run() {
+ TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
+ .getHomeDetail(object : ITuyaHomeResultCallback {
+ override fun onSuccess(bean: HomeBean) {
+ bean.deviceList.forEach {
+ val selectedCategory = it.selectCategory()
+ if (selectedCategory.contains("wsdcg")) {
+ //温湿度传感器
+ val msg = weakReference.obtainMessage()
+ msg.what = 2022112001
+ msg.obj = it
+ weakReference.sendMessage(msg)
+ }
+ }
+ }
+
+ override fun onError(errorCode: String, errorMsg: String) {
+ Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg")
+ }
+ })
+ }
+ }, 0, 5000)
+
+ fragmentPages.add(TemperaturePageFragment())
+ fragmentPages.add(HumidityPageFragment())
+ viewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.T_H_PAGE_TITLE, supportFragmentManager)
+ tabLayout.setupWithViewPager(viewPager)
+ }
+
+ private val callback = Handler.Callback { message ->
+ if (message.what == 2022112001) {
+ val it = message.obj as DeviceBean
+ deviceStateView.text = if (it.isOnline) {
+ "设备在线"
+ } else {
+ "设备已离线"
+ }
+ titleView.text = String.format(it.name + "传感器")
+
+ val dataMap = HashMap()
+
+ val h = it.dps["101"].toString()
+ //温湿度的值需要缩小100倍
+ humidityView.text = if (h.isBlank()) {
+ "0%"
+ } else {
+ "${h.toDouble() / 100}%"
+ }
+ dataMap["humidity"] = humidityView.text.toString().replace("%", "")
+
+ val b = it.dps["102"].toString()
+ batteryView.setBackgroundResource(b.toBatteryImage())
+ batteryValueView.text = "${b}%"
+
+ val t = it.dps["103"].toString()
+ //{"unit":"℃","min":-2000,"max":10000,"scale":2,"step":1,"type":"value"}
+ temperatureView.text = if (h.isBlank()) {
+ "0${resources.getString(R.string.temperature_unit)}"
+ } else {
+ "${t.toDouble() / 100}${resources.getString(R.string.temperature_unit)}"
+ }
+ dataMap["temperature"] = temperatureView.text.toString().replace("°C", "")
+
+ dataLinkedList.add(dataMap)
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ dataTimer.cancel()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
new file mode 100644
index 0000000..9570167
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
new file mode 100644
index 0000000..b35e98c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_shidu.xml b/app/src/main/res/drawable/ic_shidu.xml
new file mode 100644
index 0000000..1d14648
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shidu.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_wendu.xml b/app/src/main/res/drawable/ic_wendu.xml
new file mode 100644
index 0000000..41e033d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_wendu.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_t_h_senser.xml b/app/src/main/res/layout/activity_t_h_senser.xml
new file mode 100644
index 0000000..8f94160
--- /dev/null
+++ b/app/src/main/res/layout/activity_t_h_senser.xml
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..1eb9752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -77,6 +77,7 @@
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
new file mode 100644
index 0000000..2d8a2df
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class TemperaturePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_temperature
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index d042a7f..aeb638b 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -34,8 +34,32 @@
val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们")
val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴")
val DEVICE_PAGE_TITLE = arrayOf("设备控制", "状态显示", "服务设置")
+ val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+
+ //TODO 模拟数据
+ val TEST_IMAGE = intArrayOf(
+ R.mipmap.t_1,
+ R.mipmap.t_2,
+ R.mipmap.t_3,
+ R.mipmap.t_4,
+ R.mipmap.t_5,
+ R.mipmap.t_6,
+ R.mipmap.t_7,
+ R.mipmap.t_8
+ )
+ val TEST_ARRAY = arrayOf(
+ "24LS01壁挂炉",
+ "多功能智能热水器",
+ "24LC01壁挂炉",
+ "16RC01热水器",
+ "TXC01油烟机",
+ "QZE03燃气灶",
+ "多功能智能油烟机",
+ "多功能智能燃气灶"
+ )
+
//预置颜色
val COLORS = arrayOf(
R.color.color_1, R.color.color_2, R.color.color_3,
diff --git a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
new file mode 100644
index 0000000..7c8dfe7
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
@@ -0,0 +1,135 @@
+package com.casic.br.view.device
+
+import android.os.Handler
+import android.util.Log
+import android.view.View
+import androidx.fragment.app.Fragment
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.selectCategory
+import com.casic.br.extensions.toBatteryImage
+import com.casic.br.fragment.th.HumidityPageFragment
+import com.casic.br.fragment.th.TemperaturePageFragment
+import com.casic.br.utils.DeserializeModel
+import com.casic.br.utils.LocaleConstant
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.bean.HomeBean
+import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.activity_t_h_senser.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+import kotlin.collections.HashMap
+
+/**
+ * 温湿度传感器
+ * TODO 数据上报暂缓
+ * */
+class TAndHSensorActivity : KotlinBaseActivity() {
+
+ private val context = this@TAndHSensorActivity
+ private val dataTimer by lazy { Timer() }//数据上传Timer
+ private val dataLinkedList = LinkedList>()
+ private lateinit var weakReference: WeakReferenceHandler
+ private var fragmentPages: ArrayList = ArrayList()
+
+ override fun initLayoutView(): Int = R.layout.activity_t_h_senser
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.visibility = View.GONE
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ //每隔5s传一次数据到服务器
+ dataTimer.schedule(object : TimerTask() {
+ override fun run() {
+ TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
+ .getHomeDetail(object : ITuyaHomeResultCallback {
+ override fun onSuccess(bean: HomeBean) {
+ bean.deviceList.forEach {
+ val selectedCategory = it.selectCategory()
+ if (selectedCategory.contains("wsdcg")) {
+ //温湿度传感器
+ val msg = weakReference.obtainMessage()
+ msg.what = 2022112001
+ msg.obj = it
+ weakReference.sendMessage(msg)
+ }
+ }
+ }
+
+ override fun onError(errorCode: String, errorMsg: String) {
+ Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg")
+ }
+ })
+ }
+ }, 0, 5000)
+
+ fragmentPages.add(TemperaturePageFragment())
+ fragmentPages.add(HumidityPageFragment())
+ viewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.T_H_PAGE_TITLE, supportFragmentManager)
+ tabLayout.setupWithViewPager(viewPager)
+ }
+
+ private val callback = Handler.Callback { message ->
+ if (message.what == 2022112001) {
+ val it = message.obj as DeviceBean
+ deviceStateView.text = if (it.isOnline) {
+ "设备在线"
+ } else {
+ "设备已离线"
+ }
+ titleView.text = String.format(it.name + "传感器")
+
+ val dataMap = HashMap()
+
+ val h = it.dps["101"].toString()
+ //温湿度的值需要缩小100倍
+ humidityView.text = if (h.isBlank()) {
+ "0%"
+ } else {
+ "${h.toDouble() / 100}%"
+ }
+ dataMap["humidity"] = humidityView.text.toString().replace("%", "")
+
+ val b = it.dps["102"].toString()
+ batteryView.setBackgroundResource(b.toBatteryImage())
+ batteryValueView.text = "${b}%"
+
+ val t = it.dps["103"].toString()
+ //{"unit":"℃","min":-2000,"max":10000,"scale":2,"step":1,"type":"value"}
+ temperatureView.text = if (h.isBlank()) {
+ "0${resources.getString(R.string.temperature_unit)}"
+ } else {
+ "${t.toDouble() / 100}${resources.getString(R.string.temperature_unit)}"
+ }
+ dataMap["temperature"] = temperatureView.text.toString().replace("°C", "")
+
+ dataLinkedList.add(dataMap)
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ dataTimer.cancel()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
new file mode 100644
index 0000000..9570167
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
new file mode 100644
index 0000000..b35e98c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_shidu.xml b/app/src/main/res/drawable/ic_shidu.xml
new file mode 100644
index 0000000..1d14648
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shidu.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_wendu.xml b/app/src/main/res/drawable/ic_wendu.xml
new file mode 100644
index 0000000..41e033d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_wendu.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_t_h_senser.xml b/app/src/main/res/layout/activity_t_h_senser.xml
new file mode 100644
index 0000000..8f94160
--- /dev/null
+++ b/app/src/main/res/layout/activity_t_h_senser.xml
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_cooker_service.xml
+++ b/app/src/main/res/layout/fragment_device_cooker_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..1eb9752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -77,6 +77,7 @@
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
new file mode 100644
index 0000000..2d8a2df
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class TemperaturePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_temperature
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index d042a7f..aeb638b 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -34,8 +34,32 @@
val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们")
val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴")
val DEVICE_PAGE_TITLE = arrayOf("设备控制", "状态显示", "服务设置")
+ val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+
+ //TODO 模拟数据
+ val TEST_IMAGE = intArrayOf(
+ R.mipmap.t_1,
+ R.mipmap.t_2,
+ R.mipmap.t_3,
+ R.mipmap.t_4,
+ R.mipmap.t_5,
+ R.mipmap.t_6,
+ R.mipmap.t_7,
+ R.mipmap.t_8
+ )
+ val TEST_ARRAY = arrayOf(
+ "24LS01壁挂炉",
+ "多功能智能热水器",
+ "24LC01壁挂炉",
+ "16RC01热水器",
+ "TXC01油烟机",
+ "QZE03燃气灶",
+ "多功能智能油烟机",
+ "多功能智能燃气灶"
+ )
+
//预置颜色
val COLORS = arrayOf(
R.color.color_1, R.color.color_2, R.color.color_3,
diff --git a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
new file mode 100644
index 0000000..7c8dfe7
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
@@ -0,0 +1,135 @@
+package com.casic.br.view.device
+
+import android.os.Handler
+import android.util.Log
+import android.view.View
+import androidx.fragment.app.Fragment
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.selectCategory
+import com.casic.br.extensions.toBatteryImage
+import com.casic.br.fragment.th.HumidityPageFragment
+import com.casic.br.fragment.th.TemperaturePageFragment
+import com.casic.br.utils.DeserializeModel
+import com.casic.br.utils.LocaleConstant
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.bean.HomeBean
+import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.activity_t_h_senser.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+import kotlin.collections.HashMap
+
+/**
+ * 温湿度传感器
+ * TODO 数据上报暂缓
+ * */
+class TAndHSensorActivity : KotlinBaseActivity() {
+
+ private val context = this@TAndHSensorActivity
+ private val dataTimer by lazy { Timer() }//数据上传Timer
+ private val dataLinkedList = LinkedList>()
+ private lateinit var weakReference: WeakReferenceHandler
+ private var fragmentPages: ArrayList = ArrayList()
+
+ override fun initLayoutView(): Int = R.layout.activity_t_h_senser
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.visibility = View.GONE
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ //每隔5s传一次数据到服务器
+ dataTimer.schedule(object : TimerTask() {
+ override fun run() {
+ TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
+ .getHomeDetail(object : ITuyaHomeResultCallback {
+ override fun onSuccess(bean: HomeBean) {
+ bean.deviceList.forEach {
+ val selectedCategory = it.selectCategory()
+ if (selectedCategory.contains("wsdcg")) {
+ //温湿度传感器
+ val msg = weakReference.obtainMessage()
+ msg.what = 2022112001
+ msg.obj = it
+ weakReference.sendMessage(msg)
+ }
+ }
+ }
+
+ override fun onError(errorCode: String, errorMsg: String) {
+ Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg")
+ }
+ })
+ }
+ }, 0, 5000)
+
+ fragmentPages.add(TemperaturePageFragment())
+ fragmentPages.add(HumidityPageFragment())
+ viewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.T_H_PAGE_TITLE, supportFragmentManager)
+ tabLayout.setupWithViewPager(viewPager)
+ }
+
+ private val callback = Handler.Callback { message ->
+ if (message.what == 2022112001) {
+ val it = message.obj as DeviceBean
+ deviceStateView.text = if (it.isOnline) {
+ "设备在线"
+ } else {
+ "设备已离线"
+ }
+ titleView.text = String.format(it.name + "传感器")
+
+ val dataMap = HashMap()
+
+ val h = it.dps["101"].toString()
+ //温湿度的值需要缩小100倍
+ humidityView.text = if (h.isBlank()) {
+ "0%"
+ } else {
+ "${h.toDouble() / 100}%"
+ }
+ dataMap["humidity"] = humidityView.text.toString().replace("%", "")
+
+ val b = it.dps["102"].toString()
+ batteryView.setBackgroundResource(b.toBatteryImage())
+ batteryValueView.text = "${b}%"
+
+ val t = it.dps["103"].toString()
+ //{"unit":"℃","min":-2000,"max":10000,"scale":2,"step":1,"type":"value"}
+ temperatureView.text = if (h.isBlank()) {
+ "0${resources.getString(R.string.temperature_unit)}"
+ } else {
+ "${t.toDouble() / 100}${resources.getString(R.string.temperature_unit)}"
+ }
+ dataMap["temperature"] = temperatureView.text.toString().replace("°C", "")
+
+ dataLinkedList.add(dataMap)
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ dataTimer.cancel()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
new file mode 100644
index 0000000..9570167
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
new file mode 100644
index 0000000..b35e98c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_shidu.xml b/app/src/main/res/drawable/ic_shidu.xml
new file mode 100644
index 0000000..1d14648
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shidu.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_wendu.xml b/app/src/main/res/drawable/ic_wendu.xml
new file mode 100644
index 0000000..41e033d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_wendu.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_t_h_senser.xml b/app/src/main/res/layout/activity_t_h_senser.xml
new file mode 100644
index 0000000..8f94160
--- /dev/null
+++ b/app/src/main/res/layout/activity_t_h_senser.xml
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_cooker_service.xml
+++ b/app/src/main/res/layout/fragment_device_cooker_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_fireplace_service.xml
+++ b/app/src/main/res/layout/fragment_device_fireplace_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..1eb9752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -77,6 +77,7 @@
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
new file mode 100644
index 0000000..2d8a2df
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class TemperaturePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_temperature
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index d042a7f..aeb638b 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -34,8 +34,32 @@
val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们")
val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴")
val DEVICE_PAGE_TITLE = arrayOf("设备控制", "状态显示", "服务设置")
+ val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+
+ //TODO 模拟数据
+ val TEST_IMAGE = intArrayOf(
+ R.mipmap.t_1,
+ R.mipmap.t_2,
+ R.mipmap.t_3,
+ R.mipmap.t_4,
+ R.mipmap.t_5,
+ R.mipmap.t_6,
+ R.mipmap.t_7,
+ R.mipmap.t_8
+ )
+ val TEST_ARRAY = arrayOf(
+ "24LS01壁挂炉",
+ "多功能智能热水器",
+ "24LC01壁挂炉",
+ "16RC01热水器",
+ "TXC01油烟机",
+ "QZE03燃气灶",
+ "多功能智能油烟机",
+ "多功能智能燃气灶"
+ )
+
//预置颜色
val COLORS = arrayOf(
R.color.color_1, R.color.color_2, R.color.color_3,
diff --git a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
new file mode 100644
index 0000000..7c8dfe7
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
@@ -0,0 +1,135 @@
+package com.casic.br.view.device
+
+import android.os.Handler
+import android.util.Log
+import android.view.View
+import androidx.fragment.app.Fragment
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.selectCategory
+import com.casic.br.extensions.toBatteryImage
+import com.casic.br.fragment.th.HumidityPageFragment
+import com.casic.br.fragment.th.TemperaturePageFragment
+import com.casic.br.utils.DeserializeModel
+import com.casic.br.utils.LocaleConstant
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.bean.HomeBean
+import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.activity_t_h_senser.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+import kotlin.collections.HashMap
+
+/**
+ * 温湿度传感器
+ * TODO 数据上报暂缓
+ * */
+class TAndHSensorActivity : KotlinBaseActivity() {
+
+ private val context = this@TAndHSensorActivity
+ private val dataTimer by lazy { Timer() }//数据上传Timer
+ private val dataLinkedList = LinkedList>()
+ private lateinit var weakReference: WeakReferenceHandler
+ private var fragmentPages: ArrayList = ArrayList()
+
+ override fun initLayoutView(): Int = R.layout.activity_t_h_senser
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.visibility = View.GONE
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ //每隔5s传一次数据到服务器
+ dataTimer.schedule(object : TimerTask() {
+ override fun run() {
+ TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
+ .getHomeDetail(object : ITuyaHomeResultCallback {
+ override fun onSuccess(bean: HomeBean) {
+ bean.deviceList.forEach {
+ val selectedCategory = it.selectCategory()
+ if (selectedCategory.contains("wsdcg")) {
+ //温湿度传感器
+ val msg = weakReference.obtainMessage()
+ msg.what = 2022112001
+ msg.obj = it
+ weakReference.sendMessage(msg)
+ }
+ }
+ }
+
+ override fun onError(errorCode: String, errorMsg: String) {
+ Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg")
+ }
+ })
+ }
+ }, 0, 5000)
+
+ fragmentPages.add(TemperaturePageFragment())
+ fragmentPages.add(HumidityPageFragment())
+ viewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.T_H_PAGE_TITLE, supportFragmentManager)
+ tabLayout.setupWithViewPager(viewPager)
+ }
+
+ private val callback = Handler.Callback { message ->
+ if (message.what == 2022112001) {
+ val it = message.obj as DeviceBean
+ deviceStateView.text = if (it.isOnline) {
+ "设备在线"
+ } else {
+ "设备已离线"
+ }
+ titleView.text = String.format(it.name + "传感器")
+
+ val dataMap = HashMap()
+
+ val h = it.dps["101"].toString()
+ //温湿度的值需要缩小100倍
+ humidityView.text = if (h.isBlank()) {
+ "0%"
+ } else {
+ "${h.toDouble() / 100}%"
+ }
+ dataMap["humidity"] = humidityView.text.toString().replace("%", "")
+
+ val b = it.dps["102"].toString()
+ batteryView.setBackgroundResource(b.toBatteryImage())
+ batteryValueView.text = "${b}%"
+
+ val t = it.dps["103"].toString()
+ //{"unit":"℃","min":-2000,"max":10000,"scale":2,"step":1,"type":"value"}
+ temperatureView.text = if (h.isBlank()) {
+ "0${resources.getString(R.string.temperature_unit)}"
+ } else {
+ "${t.toDouble() / 100}${resources.getString(R.string.temperature_unit)}"
+ }
+ dataMap["temperature"] = temperatureView.text.toString().replace("°C", "")
+
+ dataLinkedList.add(dataMap)
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ dataTimer.cancel()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
new file mode 100644
index 0000000..9570167
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
new file mode 100644
index 0000000..b35e98c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_shidu.xml b/app/src/main/res/drawable/ic_shidu.xml
new file mode 100644
index 0000000..1d14648
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shidu.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_wendu.xml b/app/src/main/res/drawable/ic_wendu.xml
new file mode 100644
index 0000000..41e033d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_wendu.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_t_h_senser.xml b/app/src/main/res/layout/activity_t_h_senser.xml
new file mode 100644
index 0000000..8f94160
--- /dev/null
+++ b/app/src/main/res/layout/activity_t_h_senser.xml
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_cooker_service.xml
+++ b/app/src/main/res/layout/fragment_device_cooker_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_fireplace_service.xml
+++ b/app/src/main/res/layout/fragment_device_fireplace_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_rangehood_service.xml b/app/src/main/res/layout/fragment_device_rangehood_service.xml
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_rangehood_service.xml
+++ b/app/src/main/res/layout/fragment_device_rangehood_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..1eb9752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -77,6 +77,7 @@
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
new file mode 100644
index 0000000..2d8a2df
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class TemperaturePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_temperature
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index d042a7f..aeb638b 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -34,8 +34,32 @@
val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们")
val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴")
val DEVICE_PAGE_TITLE = arrayOf("设备控制", "状态显示", "服务设置")
+ val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+
+ //TODO 模拟数据
+ val TEST_IMAGE = intArrayOf(
+ R.mipmap.t_1,
+ R.mipmap.t_2,
+ R.mipmap.t_3,
+ R.mipmap.t_4,
+ R.mipmap.t_5,
+ R.mipmap.t_6,
+ R.mipmap.t_7,
+ R.mipmap.t_8
+ )
+ val TEST_ARRAY = arrayOf(
+ "24LS01壁挂炉",
+ "多功能智能热水器",
+ "24LC01壁挂炉",
+ "16RC01热水器",
+ "TXC01油烟机",
+ "QZE03燃气灶",
+ "多功能智能油烟机",
+ "多功能智能燃气灶"
+ )
+
//预置颜色
val COLORS = arrayOf(
R.color.color_1, R.color.color_2, R.color.color_3,
diff --git a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
new file mode 100644
index 0000000..7c8dfe7
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
@@ -0,0 +1,135 @@
+package com.casic.br.view.device
+
+import android.os.Handler
+import android.util.Log
+import android.view.View
+import androidx.fragment.app.Fragment
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.selectCategory
+import com.casic.br.extensions.toBatteryImage
+import com.casic.br.fragment.th.HumidityPageFragment
+import com.casic.br.fragment.th.TemperaturePageFragment
+import com.casic.br.utils.DeserializeModel
+import com.casic.br.utils.LocaleConstant
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.bean.HomeBean
+import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.activity_t_h_senser.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+import kotlin.collections.HashMap
+
+/**
+ * 温湿度传感器
+ * TODO 数据上报暂缓
+ * */
+class TAndHSensorActivity : KotlinBaseActivity() {
+
+ private val context = this@TAndHSensorActivity
+ private val dataTimer by lazy { Timer() }//数据上传Timer
+ private val dataLinkedList = LinkedList>()
+ private lateinit var weakReference: WeakReferenceHandler
+ private var fragmentPages: ArrayList = ArrayList()
+
+ override fun initLayoutView(): Int = R.layout.activity_t_h_senser
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.visibility = View.GONE
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ //每隔5s传一次数据到服务器
+ dataTimer.schedule(object : TimerTask() {
+ override fun run() {
+ TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
+ .getHomeDetail(object : ITuyaHomeResultCallback {
+ override fun onSuccess(bean: HomeBean) {
+ bean.deviceList.forEach {
+ val selectedCategory = it.selectCategory()
+ if (selectedCategory.contains("wsdcg")) {
+ //温湿度传感器
+ val msg = weakReference.obtainMessage()
+ msg.what = 2022112001
+ msg.obj = it
+ weakReference.sendMessage(msg)
+ }
+ }
+ }
+
+ override fun onError(errorCode: String, errorMsg: String) {
+ Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg")
+ }
+ })
+ }
+ }, 0, 5000)
+
+ fragmentPages.add(TemperaturePageFragment())
+ fragmentPages.add(HumidityPageFragment())
+ viewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.T_H_PAGE_TITLE, supportFragmentManager)
+ tabLayout.setupWithViewPager(viewPager)
+ }
+
+ private val callback = Handler.Callback { message ->
+ if (message.what == 2022112001) {
+ val it = message.obj as DeviceBean
+ deviceStateView.text = if (it.isOnline) {
+ "设备在线"
+ } else {
+ "设备已离线"
+ }
+ titleView.text = String.format(it.name + "传感器")
+
+ val dataMap = HashMap()
+
+ val h = it.dps["101"].toString()
+ //温湿度的值需要缩小100倍
+ humidityView.text = if (h.isBlank()) {
+ "0%"
+ } else {
+ "${h.toDouble() / 100}%"
+ }
+ dataMap["humidity"] = humidityView.text.toString().replace("%", "")
+
+ val b = it.dps["102"].toString()
+ batteryView.setBackgroundResource(b.toBatteryImage())
+ batteryValueView.text = "${b}%"
+
+ val t = it.dps["103"].toString()
+ //{"unit":"℃","min":-2000,"max":10000,"scale":2,"step":1,"type":"value"}
+ temperatureView.text = if (h.isBlank()) {
+ "0${resources.getString(R.string.temperature_unit)}"
+ } else {
+ "${t.toDouble() / 100}${resources.getString(R.string.temperature_unit)}"
+ }
+ dataMap["temperature"] = temperatureView.text.toString().replace("°C", "")
+
+ dataLinkedList.add(dataMap)
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ dataTimer.cancel()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
new file mode 100644
index 0000000..9570167
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
new file mode 100644
index 0000000..b35e98c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_shidu.xml b/app/src/main/res/drawable/ic_shidu.xml
new file mode 100644
index 0000000..1d14648
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shidu.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_wendu.xml b/app/src/main/res/drawable/ic_wendu.xml
new file mode 100644
index 0000000..41e033d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_wendu.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_t_h_senser.xml b/app/src/main/res/layout/activity_t_h_senser.xml
new file mode 100644
index 0000000..8f94160
--- /dev/null
+++ b/app/src/main/res/layout/activity_t_h_senser.xml
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_cooker_service.xml
+++ b/app/src/main/res/layout/fragment_device_cooker_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_fireplace_service.xml
+++ b/app/src/main/res/layout/fragment_device_fireplace_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_rangehood_service.xml b/app/src/main/res/layout/fragment_device_rangehood_service.xml
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_rangehood_service.xml
+++ b/app/src/main/res/layout/fragment_device_rangehood_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_waterheater_service.xml b/app/src/main/res/layout/fragment_device_waterheater_service.xml
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_waterheater_service.xml
+++ b/app/src/main/res/layout/fragment_device_waterheater_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..1eb9752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -77,6 +77,7 @@
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
new file mode 100644
index 0000000..2d8a2df
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class TemperaturePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_temperature
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index d042a7f..aeb638b 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -34,8 +34,32 @@
val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们")
val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴")
val DEVICE_PAGE_TITLE = arrayOf("设备控制", "状态显示", "服务设置")
+ val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+
+ //TODO 模拟数据
+ val TEST_IMAGE = intArrayOf(
+ R.mipmap.t_1,
+ R.mipmap.t_2,
+ R.mipmap.t_3,
+ R.mipmap.t_4,
+ R.mipmap.t_5,
+ R.mipmap.t_6,
+ R.mipmap.t_7,
+ R.mipmap.t_8
+ )
+ val TEST_ARRAY = arrayOf(
+ "24LS01壁挂炉",
+ "多功能智能热水器",
+ "24LC01壁挂炉",
+ "16RC01热水器",
+ "TXC01油烟机",
+ "QZE03燃气灶",
+ "多功能智能油烟机",
+ "多功能智能燃气灶"
+ )
+
//预置颜色
val COLORS = arrayOf(
R.color.color_1, R.color.color_2, R.color.color_3,
diff --git a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
new file mode 100644
index 0000000..7c8dfe7
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
@@ -0,0 +1,135 @@
+package com.casic.br.view.device
+
+import android.os.Handler
+import android.util.Log
+import android.view.View
+import androidx.fragment.app.Fragment
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.selectCategory
+import com.casic.br.extensions.toBatteryImage
+import com.casic.br.fragment.th.HumidityPageFragment
+import com.casic.br.fragment.th.TemperaturePageFragment
+import com.casic.br.utils.DeserializeModel
+import com.casic.br.utils.LocaleConstant
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.bean.HomeBean
+import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.activity_t_h_senser.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+import kotlin.collections.HashMap
+
+/**
+ * 温湿度传感器
+ * TODO 数据上报暂缓
+ * */
+class TAndHSensorActivity : KotlinBaseActivity() {
+
+ private val context = this@TAndHSensorActivity
+ private val dataTimer by lazy { Timer() }//数据上传Timer
+ private val dataLinkedList = LinkedList>()
+ private lateinit var weakReference: WeakReferenceHandler
+ private var fragmentPages: ArrayList = ArrayList()
+
+ override fun initLayoutView(): Int = R.layout.activity_t_h_senser
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.visibility = View.GONE
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ //每隔5s传一次数据到服务器
+ dataTimer.schedule(object : TimerTask() {
+ override fun run() {
+ TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
+ .getHomeDetail(object : ITuyaHomeResultCallback {
+ override fun onSuccess(bean: HomeBean) {
+ bean.deviceList.forEach {
+ val selectedCategory = it.selectCategory()
+ if (selectedCategory.contains("wsdcg")) {
+ //温湿度传感器
+ val msg = weakReference.obtainMessage()
+ msg.what = 2022112001
+ msg.obj = it
+ weakReference.sendMessage(msg)
+ }
+ }
+ }
+
+ override fun onError(errorCode: String, errorMsg: String) {
+ Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg")
+ }
+ })
+ }
+ }, 0, 5000)
+
+ fragmentPages.add(TemperaturePageFragment())
+ fragmentPages.add(HumidityPageFragment())
+ viewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.T_H_PAGE_TITLE, supportFragmentManager)
+ tabLayout.setupWithViewPager(viewPager)
+ }
+
+ private val callback = Handler.Callback { message ->
+ if (message.what == 2022112001) {
+ val it = message.obj as DeviceBean
+ deviceStateView.text = if (it.isOnline) {
+ "设备在线"
+ } else {
+ "设备已离线"
+ }
+ titleView.text = String.format(it.name + "传感器")
+
+ val dataMap = HashMap()
+
+ val h = it.dps["101"].toString()
+ //温湿度的值需要缩小100倍
+ humidityView.text = if (h.isBlank()) {
+ "0%"
+ } else {
+ "${h.toDouble() / 100}%"
+ }
+ dataMap["humidity"] = humidityView.text.toString().replace("%", "")
+
+ val b = it.dps["102"].toString()
+ batteryView.setBackgroundResource(b.toBatteryImage())
+ batteryValueView.text = "${b}%"
+
+ val t = it.dps["103"].toString()
+ //{"unit":"℃","min":-2000,"max":10000,"scale":2,"step":1,"type":"value"}
+ temperatureView.text = if (h.isBlank()) {
+ "0${resources.getString(R.string.temperature_unit)}"
+ } else {
+ "${t.toDouble() / 100}${resources.getString(R.string.temperature_unit)}"
+ }
+ dataMap["temperature"] = temperatureView.text.toString().replace("°C", "")
+
+ dataLinkedList.add(dataMap)
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ dataTimer.cancel()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
new file mode 100644
index 0000000..9570167
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
new file mode 100644
index 0000000..b35e98c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_shidu.xml b/app/src/main/res/drawable/ic_shidu.xml
new file mode 100644
index 0000000..1d14648
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shidu.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_wendu.xml b/app/src/main/res/drawable/ic_wendu.xml
new file mode 100644
index 0000000..41e033d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_wendu.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_t_h_senser.xml b/app/src/main/res/layout/activity_t_h_senser.xml
new file mode 100644
index 0000000..8f94160
--- /dev/null
+++ b/app/src/main/res/layout/activity_t_h_senser.xml
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_cooker_service.xml
+++ b/app/src/main/res/layout/fragment_device_cooker_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_fireplace_service.xml
+++ b/app/src/main/res/layout/fragment_device_fireplace_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_rangehood_service.xml b/app/src/main/res/layout/fragment_device_rangehood_service.xml
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_rangehood_service.xml
+++ b/app/src/main/res/layout/fragment_device_rangehood_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_waterheater_service.xml b/app/src/main/res/layout/fragment_device_waterheater_service.xml
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_waterheater_service.xml
+++ b/app/src/main/res/layout/fragment_device_waterheater_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_favorite.xml b/app/src/main/res/layout/fragment_favorite.xml
index 8797b7a..71c0138 100644
--- a/app/src/main/res/layout/fragment_favorite.xml
+++ b/app/src/main/res/layout/fragment_favorite.xml
@@ -14,7 +14,7 @@
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
new file mode 100644
index 0000000..2d8a2df
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class TemperaturePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_temperature
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index d042a7f..aeb638b 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -34,8 +34,32 @@
val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们")
val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴")
val DEVICE_PAGE_TITLE = arrayOf("设备控制", "状态显示", "服务设置")
+ val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+
+ //TODO 模拟数据
+ val TEST_IMAGE = intArrayOf(
+ R.mipmap.t_1,
+ R.mipmap.t_2,
+ R.mipmap.t_3,
+ R.mipmap.t_4,
+ R.mipmap.t_5,
+ R.mipmap.t_6,
+ R.mipmap.t_7,
+ R.mipmap.t_8
+ )
+ val TEST_ARRAY = arrayOf(
+ "24LS01壁挂炉",
+ "多功能智能热水器",
+ "24LC01壁挂炉",
+ "16RC01热水器",
+ "TXC01油烟机",
+ "QZE03燃气灶",
+ "多功能智能油烟机",
+ "多功能智能燃气灶"
+ )
+
//预置颜色
val COLORS = arrayOf(
R.color.color_1, R.color.color_2, R.color.color_3,
diff --git a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
new file mode 100644
index 0000000..7c8dfe7
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
@@ -0,0 +1,135 @@
+package com.casic.br.view.device
+
+import android.os.Handler
+import android.util.Log
+import android.view.View
+import androidx.fragment.app.Fragment
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.selectCategory
+import com.casic.br.extensions.toBatteryImage
+import com.casic.br.fragment.th.HumidityPageFragment
+import com.casic.br.fragment.th.TemperaturePageFragment
+import com.casic.br.utils.DeserializeModel
+import com.casic.br.utils.LocaleConstant
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.bean.HomeBean
+import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.activity_t_h_senser.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+import kotlin.collections.HashMap
+
+/**
+ * 温湿度传感器
+ * TODO 数据上报暂缓
+ * */
+class TAndHSensorActivity : KotlinBaseActivity() {
+
+ private val context = this@TAndHSensorActivity
+ private val dataTimer by lazy { Timer() }//数据上传Timer
+ private val dataLinkedList = LinkedList>()
+ private lateinit var weakReference: WeakReferenceHandler
+ private var fragmentPages: ArrayList = ArrayList()
+
+ override fun initLayoutView(): Int = R.layout.activity_t_h_senser
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.visibility = View.GONE
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ //每隔5s传一次数据到服务器
+ dataTimer.schedule(object : TimerTask() {
+ override fun run() {
+ TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
+ .getHomeDetail(object : ITuyaHomeResultCallback {
+ override fun onSuccess(bean: HomeBean) {
+ bean.deviceList.forEach {
+ val selectedCategory = it.selectCategory()
+ if (selectedCategory.contains("wsdcg")) {
+ //温湿度传感器
+ val msg = weakReference.obtainMessage()
+ msg.what = 2022112001
+ msg.obj = it
+ weakReference.sendMessage(msg)
+ }
+ }
+ }
+
+ override fun onError(errorCode: String, errorMsg: String) {
+ Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg")
+ }
+ })
+ }
+ }, 0, 5000)
+
+ fragmentPages.add(TemperaturePageFragment())
+ fragmentPages.add(HumidityPageFragment())
+ viewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.T_H_PAGE_TITLE, supportFragmentManager)
+ tabLayout.setupWithViewPager(viewPager)
+ }
+
+ private val callback = Handler.Callback { message ->
+ if (message.what == 2022112001) {
+ val it = message.obj as DeviceBean
+ deviceStateView.text = if (it.isOnline) {
+ "设备在线"
+ } else {
+ "设备已离线"
+ }
+ titleView.text = String.format(it.name + "传感器")
+
+ val dataMap = HashMap()
+
+ val h = it.dps["101"].toString()
+ //温湿度的值需要缩小100倍
+ humidityView.text = if (h.isBlank()) {
+ "0%"
+ } else {
+ "${h.toDouble() / 100}%"
+ }
+ dataMap["humidity"] = humidityView.text.toString().replace("%", "")
+
+ val b = it.dps["102"].toString()
+ batteryView.setBackgroundResource(b.toBatteryImage())
+ batteryValueView.text = "${b}%"
+
+ val t = it.dps["103"].toString()
+ //{"unit":"℃","min":-2000,"max":10000,"scale":2,"step":1,"type":"value"}
+ temperatureView.text = if (h.isBlank()) {
+ "0${resources.getString(R.string.temperature_unit)}"
+ } else {
+ "${t.toDouble() / 100}${resources.getString(R.string.temperature_unit)}"
+ }
+ dataMap["temperature"] = temperatureView.text.toString().replace("°C", "")
+
+ dataLinkedList.add(dataMap)
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ dataTimer.cancel()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
new file mode 100644
index 0000000..9570167
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
new file mode 100644
index 0000000..b35e98c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_shidu.xml b/app/src/main/res/drawable/ic_shidu.xml
new file mode 100644
index 0000000..1d14648
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shidu.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_wendu.xml b/app/src/main/res/drawable/ic_wendu.xml
new file mode 100644
index 0000000..41e033d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_wendu.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_t_h_senser.xml b/app/src/main/res/layout/activity_t_h_senser.xml
new file mode 100644
index 0000000..8f94160
--- /dev/null
+++ b/app/src/main/res/layout/activity_t_h_senser.xml
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_cooker_service.xml
+++ b/app/src/main/res/layout/fragment_device_cooker_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_fireplace_service.xml
+++ b/app/src/main/res/layout/fragment_device_fireplace_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_rangehood_service.xml b/app/src/main/res/layout/fragment_device_rangehood_service.xml
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_rangehood_service.xml
+++ b/app/src/main/res/layout/fragment_device_rangehood_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_waterheater_service.xml b/app/src/main/res/layout/fragment_device_waterheater_service.xml
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_waterheater_service.xml
+++ b/app/src/main/res/layout/fragment_device_waterheater_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_favorite.xml b/app/src/main/res/layout/fragment_favorite.xml
index 8797b7a..71c0138 100644
--- a/app/src/main/res/layout/fragment_favorite.xml
+++ b/app/src/main/res/layout/fragment_favorite.xml
@@ -14,7 +14,7 @@
@@ -113,7 +113,16 @@
-
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..1eb9752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -77,6 +77,7 @@
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
new file mode 100644
index 0000000..2d8a2df
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class TemperaturePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_temperature
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index d042a7f..aeb638b 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -34,8 +34,32 @@
val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们")
val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴")
val DEVICE_PAGE_TITLE = arrayOf("设备控制", "状态显示", "服务设置")
+ val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+
+ //TODO 模拟数据
+ val TEST_IMAGE = intArrayOf(
+ R.mipmap.t_1,
+ R.mipmap.t_2,
+ R.mipmap.t_3,
+ R.mipmap.t_4,
+ R.mipmap.t_5,
+ R.mipmap.t_6,
+ R.mipmap.t_7,
+ R.mipmap.t_8
+ )
+ val TEST_ARRAY = arrayOf(
+ "24LS01壁挂炉",
+ "多功能智能热水器",
+ "24LC01壁挂炉",
+ "16RC01热水器",
+ "TXC01油烟机",
+ "QZE03燃气灶",
+ "多功能智能油烟机",
+ "多功能智能燃气灶"
+ )
+
//预置颜色
val COLORS = arrayOf(
R.color.color_1, R.color.color_2, R.color.color_3,
diff --git a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
new file mode 100644
index 0000000..7c8dfe7
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
@@ -0,0 +1,135 @@
+package com.casic.br.view.device
+
+import android.os.Handler
+import android.util.Log
+import android.view.View
+import androidx.fragment.app.Fragment
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.selectCategory
+import com.casic.br.extensions.toBatteryImage
+import com.casic.br.fragment.th.HumidityPageFragment
+import com.casic.br.fragment.th.TemperaturePageFragment
+import com.casic.br.utils.DeserializeModel
+import com.casic.br.utils.LocaleConstant
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.bean.HomeBean
+import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.activity_t_h_senser.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+import kotlin.collections.HashMap
+
+/**
+ * 温湿度传感器
+ * TODO 数据上报暂缓
+ * */
+class TAndHSensorActivity : KotlinBaseActivity() {
+
+ private val context = this@TAndHSensorActivity
+ private val dataTimer by lazy { Timer() }//数据上传Timer
+ private val dataLinkedList = LinkedList>()
+ private lateinit var weakReference: WeakReferenceHandler
+ private var fragmentPages: ArrayList = ArrayList()
+
+ override fun initLayoutView(): Int = R.layout.activity_t_h_senser
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.visibility = View.GONE
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ //每隔5s传一次数据到服务器
+ dataTimer.schedule(object : TimerTask() {
+ override fun run() {
+ TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
+ .getHomeDetail(object : ITuyaHomeResultCallback {
+ override fun onSuccess(bean: HomeBean) {
+ bean.deviceList.forEach {
+ val selectedCategory = it.selectCategory()
+ if (selectedCategory.contains("wsdcg")) {
+ //温湿度传感器
+ val msg = weakReference.obtainMessage()
+ msg.what = 2022112001
+ msg.obj = it
+ weakReference.sendMessage(msg)
+ }
+ }
+ }
+
+ override fun onError(errorCode: String, errorMsg: String) {
+ Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg")
+ }
+ })
+ }
+ }, 0, 5000)
+
+ fragmentPages.add(TemperaturePageFragment())
+ fragmentPages.add(HumidityPageFragment())
+ viewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.T_H_PAGE_TITLE, supportFragmentManager)
+ tabLayout.setupWithViewPager(viewPager)
+ }
+
+ private val callback = Handler.Callback { message ->
+ if (message.what == 2022112001) {
+ val it = message.obj as DeviceBean
+ deviceStateView.text = if (it.isOnline) {
+ "设备在线"
+ } else {
+ "设备已离线"
+ }
+ titleView.text = String.format(it.name + "传感器")
+
+ val dataMap = HashMap()
+
+ val h = it.dps["101"].toString()
+ //温湿度的值需要缩小100倍
+ humidityView.text = if (h.isBlank()) {
+ "0%"
+ } else {
+ "${h.toDouble() / 100}%"
+ }
+ dataMap["humidity"] = humidityView.text.toString().replace("%", "")
+
+ val b = it.dps["102"].toString()
+ batteryView.setBackgroundResource(b.toBatteryImage())
+ batteryValueView.text = "${b}%"
+
+ val t = it.dps["103"].toString()
+ //{"unit":"℃","min":-2000,"max":10000,"scale":2,"step":1,"type":"value"}
+ temperatureView.text = if (h.isBlank()) {
+ "0${resources.getString(R.string.temperature_unit)}"
+ } else {
+ "${t.toDouble() / 100}${resources.getString(R.string.temperature_unit)}"
+ }
+ dataMap["temperature"] = temperatureView.text.toString().replace("°C", "")
+
+ dataLinkedList.add(dataMap)
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ dataTimer.cancel()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
new file mode 100644
index 0000000..9570167
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
new file mode 100644
index 0000000..b35e98c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_shidu.xml b/app/src/main/res/drawable/ic_shidu.xml
new file mode 100644
index 0000000..1d14648
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shidu.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_wendu.xml b/app/src/main/res/drawable/ic_wendu.xml
new file mode 100644
index 0000000..41e033d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_wendu.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_t_h_senser.xml b/app/src/main/res/layout/activity_t_h_senser.xml
new file mode 100644
index 0000000..8f94160
--- /dev/null
+++ b/app/src/main/res/layout/activity_t_h_senser.xml
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_cooker_service.xml
+++ b/app/src/main/res/layout/fragment_device_cooker_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_fireplace_service.xml
+++ b/app/src/main/res/layout/fragment_device_fireplace_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_rangehood_service.xml b/app/src/main/res/layout/fragment_device_rangehood_service.xml
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_rangehood_service.xml
+++ b/app/src/main/res/layout/fragment_device_rangehood_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_waterheater_service.xml b/app/src/main/res/layout/fragment_device_waterheater_service.xml
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_waterheater_service.xml
+++ b/app/src/main/res/layout/fragment_device_waterheater_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_favorite.xml b/app/src/main/res/layout/fragment_favorite.xml
index 8797b7a..71c0138 100644
--- a/app/src/main/res/layout/fragment_favorite.xml
+++ b/app/src/main/res/layout/fragment_favorite.xml
@@ -14,7 +14,7 @@
@@ -113,7 +113,16 @@
-
+
diff --git a/app/src/main/res/layout/fragment_humidity.xml b/app/src/main/res/layout/fragment_humidity.xml
new file mode 100644
index 0000000..77d9ef6
--- /dev/null
+++ b/app/src/main/res/layout/fragment_humidity.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 6abc67b..1eb9752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -77,6 +77,7 @@
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
new file mode 100644
index 0000000..2d8a2df
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class TemperaturePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_temperature
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index d042a7f..aeb638b 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -34,8 +34,32 @@
val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们")
val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴")
val DEVICE_PAGE_TITLE = arrayOf("设备控制", "状态显示", "服务设置")
+ val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+
+ //TODO 模拟数据
+ val TEST_IMAGE = intArrayOf(
+ R.mipmap.t_1,
+ R.mipmap.t_2,
+ R.mipmap.t_3,
+ R.mipmap.t_4,
+ R.mipmap.t_5,
+ R.mipmap.t_6,
+ R.mipmap.t_7,
+ R.mipmap.t_8
+ )
+ val TEST_ARRAY = arrayOf(
+ "24LS01壁挂炉",
+ "多功能智能热水器",
+ "24LC01壁挂炉",
+ "16RC01热水器",
+ "TXC01油烟机",
+ "QZE03燃气灶",
+ "多功能智能油烟机",
+ "多功能智能燃气灶"
+ )
+
//预置颜色
val COLORS = arrayOf(
R.color.color_1, R.color.color_2, R.color.color_3,
diff --git a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
new file mode 100644
index 0000000..7c8dfe7
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
@@ -0,0 +1,135 @@
+package com.casic.br.view.device
+
+import android.os.Handler
+import android.util.Log
+import android.view.View
+import androidx.fragment.app.Fragment
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.selectCategory
+import com.casic.br.extensions.toBatteryImage
+import com.casic.br.fragment.th.HumidityPageFragment
+import com.casic.br.fragment.th.TemperaturePageFragment
+import com.casic.br.utils.DeserializeModel
+import com.casic.br.utils.LocaleConstant
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.bean.HomeBean
+import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.activity_t_h_senser.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+import kotlin.collections.HashMap
+
+/**
+ * 温湿度传感器
+ * TODO 数据上报暂缓
+ * */
+class TAndHSensorActivity : KotlinBaseActivity() {
+
+ private val context = this@TAndHSensorActivity
+ private val dataTimer by lazy { Timer() }//数据上传Timer
+ private val dataLinkedList = LinkedList>()
+ private lateinit var weakReference: WeakReferenceHandler
+ private var fragmentPages: ArrayList = ArrayList()
+
+ override fun initLayoutView(): Int = R.layout.activity_t_h_senser
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.visibility = View.GONE
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ //每隔5s传一次数据到服务器
+ dataTimer.schedule(object : TimerTask() {
+ override fun run() {
+ TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
+ .getHomeDetail(object : ITuyaHomeResultCallback {
+ override fun onSuccess(bean: HomeBean) {
+ bean.deviceList.forEach {
+ val selectedCategory = it.selectCategory()
+ if (selectedCategory.contains("wsdcg")) {
+ //温湿度传感器
+ val msg = weakReference.obtainMessage()
+ msg.what = 2022112001
+ msg.obj = it
+ weakReference.sendMessage(msg)
+ }
+ }
+ }
+
+ override fun onError(errorCode: String, errorMsg: String) {
+ Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg")
+ }
+ })
+ }
+ }, 0, 5000)
+
+ fragmentPages.add(TemperaturePageFragment())
+ fragmentPages.add(HumidityPageFragment())
+ viewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.T_H_PAGE_TITLE, supportFragmentManager)
+ tabLayout.setupWithViewPager(viewPager)
+ }
+
+ private val callback = Handler.Callback { message ->
+ if (message.what == 2022112001) {
+ val it = message.obj as DeviceBean
+ deviceStateView.text = if (it.isOnline) {
+ "设备在线"
+ } else {
+ "设备已离线"
+ }
+ titleView.text = String.format(it.name + "传感器")
+
+ val dataMap = HashMap()
+
+ val h = it.dps["101"].toString()
+ //温湿度的值需要缩小100倍
+ humidityView.text = if (h.isBlank()) {
+ "0%"
+ } else {
+ "${h.toDouble() / 100}%"
+ }
+ dataMap["humidity"] = humidityView.text.toString().replace("%", "")
+
+ val b = it.dps["102"].toString()
+ batteryView.setBackgroundResource(b.toBatteryImage())
+ batteryValueView.text = "${b}%"
+
+ val t = it.dps["103"].toString()
+ //{"unit":"℃","min":-2000,"max":10000,"scale":2,"step":1,"type":"value"}
+ temperatureView.text = if (h.isBlank()) {
+ "0${resources.getString(R.string.temperature_unit)}"
+ } else {
+ "${t.toDouble() / 100}${resources.getString(R.string.temperature_unit)}"
+ }
+ dataMap["temperature"] = temperatureView.text.toString().replace("°C", "")
+
+ dataLinkedList.add(dataMap)
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ dataTimer.cancel()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
new file mode 100644
index 0000000..9570167
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
new file mode 100644
index 0000000..b35e98c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_shidu.xml b/app/src/main/res/drawable/ic_shidu.xml
new file mode 100644
index 0000000..1d14648
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shidu.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_wendu.xml b/app/src/main/res/drawable/ic_wendu.xml
new file mode 100644
index 0000000..41e033d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_wendu.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_t_h_senser.xml b/app/src/main/res/layout/activity_t_h_senser.xml
new file mode 100644
index 0000000..8f94160
--- /dev/null
+++ b/app/src/main/res/layout/activity_t_h_senser.xml
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_cooker_service.xml
+++ b/app/src/main/res/layout/fragment_device_cooker_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_fireplace_service.xml
+++ b/app/src/main/res/layout/fragment_device_fireplace_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_rangehood_service.xml b/app/src/main/res/layout/fragment_device_rangehood_service.xml
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_rangehood_service.xml
+++ b/app/src/main/res/layout/fragment_device_rangehood_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_waterheater_service.xml b/app/src/main/res/layout/fragment_device_waterheater_service.xml
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_waterheater_service.xml
+++ b/app/src/main/res/layout/fragment_device_waterheater_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_favorite.xml b/app/src/main/res/layout/fragment_favorite.xml
index 8797b7a..71c0138 100644
--- a/app/src/main/res/layout/fragment_favorite.xml
+++ b/app/src/main/res/layout/fragment_favorite.xml
@@ -14,7 +14,7 @@
@@ -113,7 +113,16 @@
-
+
diff --git a/app/src/main/res/layout/fragment_humidity.xml b/app/src/main/res/layout/fragment_humidity.xml
new file mode 100644
index 0000000..77d9ef6
--- /dev/null
+++ b/app/src/main/res/layout/fragment_humidity.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_temperature.xml b/app/src/main/res/layout/fragment_temperature.xml
new file mode 100644
index 0000000..77d9ef6
--- /dev/null
+++ b/app/src/main/res/layout/fragment_temperature.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 6abc67b..1eb9752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -77,6 +77,7 @@
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
new file mode 100644
index 0000000..2d8a2df
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class TemperaturePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_temperature
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index d042a7f..aeb638b 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -34,8 +34,32 @@
val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们")
val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴")
val DEVICE_PAGE_TITLE = arrayOf("设备控制", "状态显示", "服务设置")
+ val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+
+ //TODO 模拟数据
+ val TEST_IMAGE = intArrayOf(
+ R.mipmap.t_1,
+ R.mipmap.t_2,
+ R.mipmap.t_3,
+ R.mipmap.t_4,
+ R.mipmap.t_5,
+ R.mipmap.t_6,
+ R.mipmap.t_7,
+ R.mipmap.t_8
+ )
+ val TEST_ARRAY = arrayOf(
+ "24LS01壁挂炉",
+ "多功能智能热水器",
+ "24LC01壁挂炉",
+ "16RC01热水器",
+ "TXC01油烟机",
+ "QZE03燃气灶",
+ "多功能智能油烟机",
+ "多功能智能燃气灶"
+ )
+
//预置颜色
val COLORS = arrayOf(
R.color.color_1, R.color.color_2, R.color.color_3,
diff --git a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
new file mode 100644
index 0000000..7c8dfe7
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
@@ -0,0 +1,135 @@
+package com.casic.br.view.device
+
+import android.os.Handler
+import android.util.Log
+import android.view.View
+import androidx.fragment.app.Fragment
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.selectCategory
+import com.casic.br.extensions.toBatteryImage
+import com.casic.br.fragment.th.HumidityPageFragment
+import com.casic.br.fragment.th.TemperaturePageFragment
+import com.casic.br.utils.DeserializeModel
+import com.casic.br.utils.LocaleConstant
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.bean.HomeBean
+import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.activity_t_h_senser.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+import kotlin.collections.HashMap
+
+/**
+ * 温湿度传感器
+ * TODO 数据上报暂缓
+ * */
+class TAndHSensorActivity : KotlinBaseActivity() {
+
+ private val context = this@TAndHSensorActivity
+ private val dataTimer by lazy { Timer() }//数据上传Timer
+ private val dataLinkedList = LinkedList>()
+ private lateinit var weakReference: WeakReferenceHandler
+ private var fragmentPages: ArrayList = ArrayList()
+
+ override fun initLayoutView(): Int = R.layout.activity_t_h_senser
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.visibility = View.GONE
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ //每隔5s传一次数据到服务器
+ dataTimer.schedule(object : TimerTask() {
+ override fun run() {
+ TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
+ .getHomeDetail(object : ITuyaHomeResultCallback {
+ override fun onSuccess(bean: HomeBean) {
+ bean.deviceList.forEach {
+ val selectedCategory = it.selectCategory()
+ if (selectedCategory.contains("wsdcg")) {
+ //温湿度传感器
+ val msg = weakReference.obtainMessage()
+ msg.what = 2022112001
+ msg.obj = it
+ weakReference.sendMessage(msg)
+ }
+ }
+ }
+
+ override fun onError(errorCode: String, errorMsg: String) {
+ Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg")
+ }
+ })
+ }
+ }, 0, 5000)
+
+ fragmentPages.add(TemperaturePageFragment())
+ fragmentPages.add(HumidityPageFragment())
+ viewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.T_H_PAGE_TITLE, supportFragmentManager)
+ tabLayout.setupWithViewPager(viewPager)
+ }
+
+ private val callback = Handler.Callback { message ->
+ if (message.what == 2022112001) {
+ val it = message.obj as DeviceBean
+ deviceStateView.text = if (it.isOnline) {
+ "设备在线"
+ } else {
+ "设备已离线"
+ }
+ titleView.text = String.format(it.name + "传感器")
+
+ val dataMap = HashMap()
+
+ val h = it.dps["101"].toString()
+ //温湿度的值需要缩小100倍
+ humidityView.text = if (h.isBlank()) {
+ "0%"
+ } else {
+ "${h.toDouble() / 100}%"
+ }
+ dataMap["humidity"] = humidityView.text.toString().replace("%", "")
+
+ val b = it.dps["102"].toString()
+ batteryView.setBackgroundResource(b.toBatteryImage())
+ batteryValueView.text = "${b}%"
+
+ val t = it.dps["103"].toString()
+ //{"unit":"℃","min":-2000,"max":10000,"scale":2,"step":1,"type":"value"}
+ temperatureView.text = if (h.isBlank()) {
+ "0${resources.getString(R.string.temperature_unit)}"
+ } else {
+ "${t.toDouble() / 100}${resources.getString(R.string.temperature_unit)}"
+ }
+ dataMap["temperature"] = temperatureView.text.toString().replace("°C", "")
+
+ dataLinkedList.add(dataMap)
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ dataTimer.cancel()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
new file mode 100644
index 0000000..9570167
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
new file mode 100644
index 0000000..b35e98c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_shidu.xml b/app/src/main/res/drawable/ic_shidu.xml
new file mode 100644
index 0000000..1d14648
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shidu.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_wendu.xml b/app/src/main/res/drawable/ic_wendu.xml
new file mode 100644
index 0000000..41e033d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_wendu.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_t_h_senser.xml b/app/src/main/res/layout/activity_t_h_senser.xml
new file mode 100644
index 0000000..8f94160
--- /dev/null
+++ b/app/src/main/res/layout/activity_t_h_senser.xml
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_cooker_service.xml
+++ b/app/src/main/res/layout/fragment_device_cooker_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_fireplace_service.xml
+++ b/app/src/main/res/layout/fragment_device_fireplace_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_rangehood_service.xml b/app/src/main/res/layout/fragment_device_rangehood_service.xml
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_rangehood_service.xml
+++ b/app/src/main/res/layout/fragment_device_rangehood_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_waterheater_service.xml b/app/src/main/res/layout/fragment_device_waterheater_service.xml
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_waterheater_service.xml
+++ b/app/src/main/res/layout/fragment_device_waterheater_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_favorite.xml b/app/src/main/res/layout/fragment_favorite.xml
index 8797b7a..71c0138 100644
--- a/app/src/main/res/layout/fragment_favorite.xml
+++ b/app/src/main/res/layout/fragment_favorite.xml
@@ -14,7 +14,7 @@
@@ -113,7 +113,16 @@
-
+
diff --git a/app/src/main/res/layout/fragment_humidity.xml b/app/src/main/res/layout/fragment_humidity.xml
new file mode 100644
index 0000000..77d9ef6
--- /dev/null
+++ b/app/src/main/res/layout/fragment_humidity.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_temperature.xml b/app/src/main/res/layout/fragment_temperature.xml
new file mode 100644
index 0000000..77d9ef6
--- /dev/null
+++ b/app/src/main/res/layout/fragment_temperature.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_home_rv_g.xml b/app/src/main/res/layout/item_home_rv_g.xml
index 157b0b5..b9c4a77 100644
--- a/app/src/main/res/layout/item_home_rv_g.xml
+++ b/app/src/main/res/layout/item_home_rv_g.xml
@@ -5,7 +5,7 @@
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical"
- android:padding="@dimen/dp_30">
+ android:padding="@dimen/dp_20">
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
new file mode 100644
index 0000000..2d8a2df
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class TemperaturePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_temperature
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index d042a7f..aeb638b 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -34,8 +34,32 @@
val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们")
val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴")
val DEVICE_PAGE_TITLE = arrayOf("设备控制", "状态显示", "服务设置")
+ val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+
+ //TODO 模拟数据
+ val TEST_IMAGE = intArrayOf(
+ R.mipmap.t_1,
+ R.mipmap.t_2,
+ R.mipmap.t_3,
+ R.mipmap.t_4,
+ R.mipmap.t_5,
+ R.mipmap.t_6,
+ R.mipmap.t_7,
+ R.mipmap.t_8
+ )
+ val TEST_ARRAY = arrayOf(
+ "24LS01壁挂炉",
+ "多功能智能热水器",
+ "24LC01壁挂炉",
+ "16RC01热水器",
+ "TXC01油烟机",
+ "QZE03燃气灶",
+ "多功能智能油烟机",
+ "多功能智能燃气灶"
+ )
+
//预置颜色
val COLORS = arrayOf(
R.color.color_1, R.color.color_2, R.color.color_3,
diff --git a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
new file mode 100644
index 0000000..7c8dfe7
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
@@ -0,0 +1,135 @@
+package com.casic.br.view.device
+
+import android.os.Handler
+import android.util.Log
+import android.view.View
+import androidx.fragment.app.Fragment
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.selectCategory
+import com.casic.br.extensions.toBatteryImage
+import com.casic.br.fragment.th.HumidityPageFragment
+import com.casic.br.fragment.th.TemperaturePageFragment
+import com.casic.br.utils.DeserializeModel
+import com.casic.br.utils.LocaleConstant
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.bean.HomeBean
+import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.activity_t_h_senser.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+import kotlin.collections.HashMap
+
+/**
+ * 温湿度传感器
+ * TODO 数据上报暂缓
+ * */
+class TAndHSensorActivity : KotlinBaseActivity() {
+
+ private val context = this@TAndHSensorActivity
+ private val dataTimer by lazy { Timer() }//数据上传Timer
+ private val dataLinkedList = LinkedList>()
+ private lateinit var weakReference: WeakReferenceHandler
+ private var fragmentPages: ArrayList = ArrayList()
+
+ override fun initLayoutView(): Int = R.layout.activity_t_h_senser
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.visibility = View.GONE
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ //每隔5s传一次数据到服务器
+ dataTimer.schedule(object : TimerTask() {
+ override fun run() {
+ TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
+ .getHomeDetail(object : ITuyaHomeResultCallback {
+ override fun onSuccess(bean: HomeBean) {
+ bean.deviceList.forEach {
+ val selectedCategory = it.selectCategory()
+ if (selectedCategory.contains("wsdcg")) {
+ //温湿度传感器
+ val msg = weakReference.obtainMessage()
+ msg.what = 2022112001
+ msg.obj = it
+ weakReference.sendMessage(msg)
+ }
+ }
+ }
+
+ override fun onError(errorCode: String, errorMsg: String) {
+ Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg")
+ }
+ })
+ }
+ }, 0, 5000)
+
+ fragmentPages.add(TemperaturePageFragment())
+ fragmentPages.add(HumidityPageFragment())
+ viewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.T_H_PAGE_TITLE, supportFragmentManager)
+ tabLayout.setupWithViewPager(viewPager)
+ }
+
+ private val callback = Handler.Callback { message ->
+ if (message.what == 2022112001) {
+ val it = message.obj as DeviceBean
+ deviceStateView.text = if (it.isOnline) {
+ "设备在线"
+ } else {
+ "设备已离线"
+ }
+ titleView.text = String.format(it.name + "传感器")
+
+ val dataMap = HashMap()
+
+ val h = it.dps["101"].toString()
+ //温湿度的值需要缩小100倍
+ humidityView.text = if (h.isBlank()) {
+ "0%"
+ } else {
+ "${h.toDouble() / 100}%"
+ }
+ dataMap["humidity"] = humidityView.text.toString().replace("%", "")
+
+ val b = it.dps["102"].toString()
+ batteryView.setBackgroundResource(b.toBatteryImage())
+ batteryValueView.text = "${b}%"
+
+ val t = it.dps["103"].toString()
+ //{"unit":"℃","min":-2000,"max":10000,"scale":2,"step":1,"type":"value"}
+ temperatureView.text = if (h.isBlank()) {
+ "0${resources.getString(R.string.temperature_unit)}"
+ } else {
+ "${t.toDouble() / 100}${resources.getString(R.string.temperature_unit)}"
+ }
+ dataMap["temperature"] = temperatureView.text.toString().replace("°C", "")
+
+ dataLinkedList.add(dataMap)
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ dataTimer.cancel()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
new file mode 100644
index 0000000..9570167
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
new file mode 100644
index 0000000..b35e98c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_shidu.xml b/app/src/main/res/drawable/ic_shidu.xml
new file mode 100644
index 0000000..1d14648
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shidu.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_wendu.xml b/app/src/main/res/drawable/ic_wendu.xml
new file mode 100644
index 0000000..41e033d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_wendu.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_t_h_senser.xml b/app/src/main/res/layout/activity_t_h_senser.xml
new file mode 100644
index 0000000..8f94160
--- /dev/null
+++ b/app/src/main/res/layout/activity_t_h_senser.xml
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_cooker_service.xml
+++ b/app/src/main/res/layout/fragment_device_cooker_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_fireplace_service.xml
+++ b/app/src/main/res/layout/fragment_device_fireplace_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_rangehood_service.xml b/app/src/main/res/layout/fragment_device_rangehood_service.xml
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_rangehood_service.xml
+++ b/app/src/main/res/layout/fragment_device_rangehood_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_waterheater_service.xml b/app/src/main/res/layout/fragment_device_waterheater_service.xml
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_waterheater_service.xml
+++ b/app/src/main/res/layout/fragment_device_waterheater_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_favorite.xml b/app/src/main/res/layout/fragment_favorite.xml
index 8797b7a..71c0138 100644
--- a/app/src/main/res/layout/fragment_favorite.xml
+++ b/app/src/main/res/layout/fragment_favorite.xml
@@ -14,7 +14,7 @@
@@ -113,7 +113,16 @@
-
+
diff --git a/app/src/main/res/layout/fragment_humidity.xml b/app/src/main/res/layout/fragment_humidity.xml
new file mode 100644
index 0000000..77d9ef6
--- /dev/null
+++ b/app/src/main/res/layout/fragment_humidity.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_temperature.xml b/app/src/main/res/layout/fragment_temperature.xml
new file mode 100644
index 0000000..77d9ef6
--- /dev/null
+++ b/app/src/main/res/layout/fragment_temperature.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_home_rv_g.xml b/app/src/main/res/layout/item_home_rv_g.xml
index 157b0b5..b9c4a77 100644
--- a/app/src/main/res/layout/item_home_rv_g.xml
+++ b/app/src/main/res/layout/item_home_rv_g.xml
@@ -5,7 +5,7 @@
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical"
- android:padding="@dimen/dp_30">
+ android:padding="@dimen/dp_20">
+ 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 6abc67b..1eb9752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -77,6 +77,7 @@
+
()
}
+ selectedCategory.contains("wsdcg") -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
}
} else {
requireContext().navigatePageTo()
diff --git a/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
new file mode 100644
index 0000000..2267755
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/HumidityPageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class HumidityPageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_humidity
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
new file mode 100644
index 0000000..2d8a2df
--- /dev/null
+++ b/app/src/main/java/com/casic/br/fragment/th/TemperaturePageFragment.kt
@@ -0,0 +1,25 @@
+package com.casic.br.fragment.th
+
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseFragment
+
+class TemperaturePageFragment : KotlinBaseFragment() {
+
+ override fun initLayoutView(): Int = R.layout.fragment_temperature
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
index d042a7f..aeb638b 100644
--- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt
@@ -34,8 +34,32 @@
val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们")
val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴")
val DEVICE_PAGE_TITLE = arrayOf("设备控制", "状态显示", "服务设置")
+ val T_H_PAGE_TITLE = arrayOf("温度记录", "湿度记录")
val CONNECT_IMAGE = intArrayOf(R.drawable.ic_kefu, R.drawable.ic_weixiu)
val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话")
+
+ //TODO 模拟数据
+ val TEST_IMAGE = intArrayOf(
+ R.mipmap.t_1,
+ R.mipmap.t_2,
+ R.mipmap.t_3,
+ R.mipmap.t_4,
+ R.mipmap.t_5,
+ R.mipmap.t_6,
+ R.mipmap.t_7,
+ R.mipmap.t_8
+ )
+ val TEST_ARRAY = arrayOf(
+ "24LS01壁挂炉",
+ "多功能智能热水器",
+ "24LC01壁挂炉",
+ "16RC01热水器",
+ "TXC01油烟机",
+ "QZE03燃气灶",
+ "多功能智能油烟机",
+ "多功能智能燃气灶"
+ )
+
//预置颜色
val COLORS = arrayOf(
R.color.color_1, R.color.color_2, R.color.color_3,
diff --git a/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
new file mode 100644
index 0000000..7c8dfe7
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/device/TAndHSensorActivity.kt
@@ -0,0 +1,135 @@
+package com.casic.br.view.device
+
+import android.os.Handler
+import android.util.Log
+import android.view.View
+import androidx.fragment.app.Fragment
+import com.casic.br.R
+import com.casic.br.adapter.TabPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
+import com.casic.br.extensions.selectCategory
+import com.casic.br.extensions.toBatteryImage
+import com.casic.br.fragment.th.HumidityPageFragment
+import com.casic.br.fragment.th.TemperaturePageFragment
+import com.casic.br.utils.DeserializeModel
+import com.casic.br.utils.LocaleConstant
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.tuya.smart.home.sdk.TuyaHomeSdk
+import com.tuya.smart.home.sdk.bean.HomeBean
+import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
+import com.tuya.smart.sdk.bean.DeviceBean
+import kotlinx.android.synthetic.main.activity_t_h_senser.*
+import kotlinx.android.synthetic.main.include_device_title.*
+import java.util.*
+import kotlin.collections.HashMap
+
+/**
+ * 温湿度传感器
+ * TODO 数据上报暂缓
+ * */
+class TAndHSensorActivity : KotlinBaseActivity() {
+
+ private val context = this@TAndHSensorActivity
+ private val dataTimer by lazy { Timer() }//数据上传Timer
+ private val dataLinkedList = LinkedList>()
+ private lateinit var weakReference: WeakReferenceHandler
+ private var fragmentPages: ArrayList = ArrayList()
+
+ override fun initLayoutView(): Int = R.layout.activity_t_h_senser
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ initLayoutImmersionBar(rootView)
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.visibility = View.GONE
+ }
+
+ override fun initData() {
+ weakReference = WeakReferenceHandler(callback)
+ //每隔5s传一次数据到服务器
+ dataTimer.schedule(object : TimerTask() {
+ override fun run() {
+ TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
+ .getHomeDetail(object : ITuyaHomeResultCallback {
+ override fun onSuccess(bean: HomeBean) {
+ bean.deviceList.forEach {
+ val selectedCategory = it.selectCategory()
+ if (selectedCategory.contains("wsdcg")) {
+ //温湿度传感器
+ val msg = weakReference.obtainMessage()
+ msg.what = 2022112001
+ msg.obj = it
+ weakReference.sendMessage(msg)
+ }
+ }
+ }
+
+ override fun onError(errorCode: String, errorMsg: String) {
+ Log.d("Casic", "TAndHSensorActivity => onError: $errorMsg")
+ }
+ })
+ }
+ }, 0, 5000)
+
+ fragmentPages.add(TemperaturePageFragment())
+ fragmentPages.add(HumidityPageFragment())
+ viewPager.adapter =
+ TabPagerAdapter(fragmentPages, LocaleConstant.T_H_PAGE_TITLE, supportFragmentManager)
+ tabLayout.setupWithViewPager(viewPager)
+ }
+
+ private val callback = Handler.Callback { message ->
+ if (message.what == 2022112001) {
+ val it = message.obj as DeviceBean
+ deviceStateView.text = if (it.isOnline) {
+ "设备在线"
+ } else {
+ "设备已离线"
+ }
+ titleView.text = String.format(it.name + "传感器")
+
+ val dataMap = HashMap()
+
+ val h = it.dps["101"].toString()
+ //温湿度的值需要缩小100倍
+ humidityView.text = if (h.isBlank()) {
+ "0%"
+ } else {
+ "${h.toDouble() / 100}%"
+ }
+ dataMap["humidity"] = humidityView.text.toString().replace("%", "")
+
+ val b = it.dps["102"].toString()
+ batteryView.setBackgroundResource(b.toBatteryImage())
+ batteryValueView.text = "${b}%"
+
+ val t = it.dps["103"].toString()
+ //{"unit":"℃","min":-2000,"max":10000,"scale":2,"step":1,"type":"value"}
+ temperatureView.text = if (h.isBlank()) {
+ "0${resources.getString(R.string.temperature_unit)}"
+ } else {
+ "${t.toDouble() / 100}${resources.getString(R.string.temperature_unit)}"
+ }
+ dataMap["temperature"] = temperatureView.text.toString().replace("°C", "")
+
+ dataLinkedList.add(dataMap)
+ }
+ true
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ dataTimer.cancel()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
new file mode 100644
index 0000000..9570167
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_white_top_radius_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
new file mode 100644
index 0000000..b35e98c
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_rectangle_10.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_shidu.xml b/app/src/main/res/drawable/ic_shidu.xml
new file mode 100644
index 0000000..1d14648
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shidu.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_wendu.xml b/app/src/main/res/drawable/ic_wendu.xml
new file mode 100644
index 0000000..41e033d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_wendu.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_t_h_senser.xml b/app/src/main/res/layout/activity_t_h_senser.xml
new file mode 100644
index 0000000..8f94160
--- /dev/null
+++ b/app/src/main/res/layout/activity_t_h_senser.xml
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_cooker_service.xml
+++ b/app/src/main/res/layout/fragment_device_cooker_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ 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
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_fireplace_service.xml
+++ b/app/src/main/res/layout/fragment_device_fireplace_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_rangehood_service.xml b/app/src/main/res/layout/fragment_device_rangehood_service.xml
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_rangehood_service.xml
+++ b/app/src/main/res/layout/fragment_device_rangehood_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_device_waterheater_service.xml b/app/src/main/res/layout/fragment_device_waterheater_service.xml
index 77d9ef6..d354104 100644
--- a/app/src/main/res/layout/fragment_device_waterheater_service.xml
+++ b/app/src/main/res/layout/fragment_device_waterheater_service.xml
@@ -1,6 +1,7 @@
+ android:layout_height="match_parent"
+ android:background="@mipmap/service">
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_favorite.xml b/app/src/main/res/layout/fragment_favorite.xml
index 8797b7a..71c0138 100644
--- a/app/src/main/res/layout/fragment_favorite.xml
+++ b/app/src/main/res/layout/fragment_favorite.xml
@@ -14,7 +14,7 @@
@@ -113,7 +113,16 @@
-
+
diff --git a/app/src/main/res/layout/fragment_humidity.xml b/app/src/main/res/layout/fragment_humidity.xml
new file mode 100644
index 0000000..77d9ef6
--- /dev/null
+++ b/app/src/main/res/layout/fragment_humidity.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_temperature.xml b/app/src/main/res/layout/fragment_temperature.xml
new file mode 100644
index 0000000..77d9ef6
--- /dev/null
+++ b/app/src/main/res/layout/fragment_temperature.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_home_rv_g.xml b/app/src/main/res/layout/item_home_rv_g.xml
index 157b0b5..b9c4a77 100644
--- a/app/src/main/res/layout/item_home_rv_g.xml
+++ b/app/src/main/res/layout/item_home_rv_g.xml
@@ -5,7 +5,7 @@
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical"
- android:padding="@dimen/dp_30">
+ android:padding="@dimen/dp_20">
+ android:layout_height="wrap_content"
+ />
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxxhdpi/service.jpg b/app/src/main/res/mipmap-xxxhdpi/service.jpg
new file mode 100644
index 0000000..187b0d9
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/service.jpg
Binary files differ