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