diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index 1f658ca..ec7a9cd 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -19,6 +19,7 @@ import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.tuya.smart.home.sdk.TuyaHomeSdk @@ -90,10 +91,12 @@ val deviceModels = ArrayList() deviceList.forEach { + Log.d(kTag, it.toJson()) val model = AddedDeviceModel() model.deviceId = it.devId when (it.deviceCategory) { "yyj" -> model.deviceName = "万家乐油烟机" + "rs" -> model.deviceName = "万家乐热水器" } model.isOnline = it.isOnline model.deviceImage = it.iconUrl @@ -104,15 +107,15 @@ } //TODO 测试 - val model = AddedDeviceModel() - model.deviceId = "" - model.deviceName = "万家乐热水器" - model.isOnline = false - model.deviceImage = "" - model.deviceModel = "" - model.deviceType = "" - model.deviceUsedTime = "已使用0天" - deviceModels.add(model) +// val model = AddedDeviceModel() +// model.deviceId = "" +// model.deviceName = "万家乐热水器" +// model.isOnline = false +// model.deviceImage = "" +// model.deviceModel = "" +// model.deviceType = "" +// model.deviceUsedTime = "已使用0天" +// deviceModels.add(model) when { isRefresh -> { @@ -151,7 +154,7 @@ val deviceModel = dataBeans[position] when { deviceModel.deviceName.contains("热水器") -> { - requireContext().navigatePageTo(deviceModel.deviceName) + requireContext().navigatePageTo(deviceModel.deviceId) } deviceModel.deviceName.contains("油烟机") -> { requireContext().navigatePageTo(deviceModel.deviceId) diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index 1f658ca..ec7a9cd 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -19,6 +19,7 @@ import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.tuya.smart.home.sdk.TuyaHomeSdk @@ -90,10 +91,12 @@ val deviceModels = ArrayList() deviceList.forEach { + Log.d(kTag, it.toJson()) val model = AddedDeviceModel() model.deviceId = it.devId when (it.deviceCategory) { "yyj" -> model.deviceName = "万家乐油烟机" + "rs" -> model.deviceName = "万家乐热水器" } model.isOnline = it.isOnline model.deviceImage = it.iconUrl @@ -104,15 +107,15 @@ } //TODO 测试 - val model = AddedDeviceModel() - model.deviceId = "" - model.deviceName = "万家乐热水器" - model.isOnline = false - model.deviceImage = "" - model.deviceModel = "" - model.deviceType = "" - model.deviceUsedTime = "已使用0天" - deviceModels.add(model) +// val model = AddedDeviceModel() +// model.deviceId = "" +// model.deviceName = "万家乐热水器" +// model.isOnline = false +// model.deviceImage = "" +// model.deviceModel = "" +// model.deviceType = "" +// model.deviceUsedTime = "已使用0天" +// deviceModels.add(model) when { isRefresh -> { @@ -151,7 +154,7 @@ val deviceModel = dataBeans[position] when { deviceModel.deviceName.contains("热水器") -> { - requireContext().navigatePageTo(deviceModel.deviceName) + requireContext().navigatePageTo(deviceModel.deviceId) } deviceModel.deviceName.contains("油烟机") -> { requireContext().navigatePageTo(deviceModel.deviceId) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt index bc0abfd..6cf2638 100644 --- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -35,7 +35,7 @@ modeRadioGroup.check(R.id.kitchenRadioButton) setTemperatureScope() setTimeScope() - modeRadioGroup.setOnCheckedChangeListener { group, checkedId -> + modeRadioGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { R.id.kitchenRadioButton -> { maxTemp = 60 diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index 1f658ca..ec7a9cd 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -19,6 +19,7 @@ import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.tuya.smart.home.sdk.TuyaHomeSdk @@ -90,10 +91,12 @@ val deviceModels = ArrayList() deviceList.forEach { + Log.d(kTag, it.toJson()) val model = AddedDeviceModel() model.deviceId = it.devId when (it.deviceCategory) { "yyj" -> model.deviceName = "万家乐油烟机" + "rs" -> model.deviceName = "万家乐热水器" } model.isOnline = it.isOnline model.deviceImage = it.iconUrl @@ -104,15 +107,15 @@ } //TODO 测试 - val model = AddedDeviceModel() - model.deviceId = "" - model.deviceName = "万家乐热水器" - model.isOnline = false - model.deviceImage = "" - model.deviceModel = "" - model.deviceType = "" - model.deviceUsedTime = "已使用0天" - deviceModels.add(model) +// val model = AddedDeviceModel() +// model.deviceId = "" +// model.deviceName = "万家乐热水器" +// model.isOnline = false +// model.deviceImage = "" +// model.deviceModel = "" +// model.deviceType = "" +// model.deviceUsedTime = "已使用0天" +// deviceModels.add(model) when { isRefresh -> { @@ -151,7 +154,7 @@ val deviceModel = dataBeans[position] when { deviceModel.deviceName.contains("热水器") -> { - requireContext().navigatePageTo(deviceModel.deviceName) + requireContext().navigatePageTo(deviceModel.deviceId) } deviceModel.deviceName.contains("油烟机") -> { requireContext().navigatePageTo(deviceModel.deviceId) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt index bc0abfd..6cf2638 100644 --- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -35,7 +35,7 @@ modeRadioGroup.check(R.id.kitchenRadioButton) setTemperatureScope() setTimeScope() - modeRadioGroup.setOnCheckedChangeListener { group, checkedId -> + modeRadioGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { R.id.kitchenRadioButton -> { maxTemp = 60 diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt index 095bfa8..87ba362 100644 --- a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -1,11 +1,25 @@ package com.casic.br.fragment.waterheater +import android.content.Context +import android.net.wifi.WifiManager import android.os.Handler +import android.util.Log import com.alibaba.fastjson.JSONObject import com.casic.br.R +import com.casic.br.extensions.diffDate +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.SaveKeyValues 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.api.ITuyaDevice +import com.tuya.smart.sdk.bean.DeviceBean +import kotlinx.android.synthetic.main.fragment_device_rangehood_status.* +import kotlinx.android.synthetic.main.fragment_device_waterheater_status.* +import kotlinx.android.synthetic.main.fragment_device_waterheater_status.deviceUsedTimeView class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() { @@ -13,6 +27,10 @@ lateinit var weakReference: WeakReferenceHandler } + private val kTag = "StatusPageFragment" + private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager } + private var isDeviceWorking = false + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status override fun setupTopBarLayout() { @@ -21,26 +39,76 @@ override fun initData() { weakReference = WeakReferenceHandler(callback) + + val homeId = SaveKeyValues.getValue(LocaleConstant.HOME_ID, "") as String + if (homeId == "") { + return + } + TuyaHomeSdk.newHomeInstance(homeId.toLong()) + .getHomeDetail(object : ITuyaHomeResultCallback { + override fun onSuccess(bean: HomeBean) { + val deviceList: List = bean.deviceList + deviceList.forEach { + if (it.deviceCategory == "rs") { + deviceUsedTimeView.text = + String.format("${it.time.toString().diffDate()}天") + } + return@forEach + } + } + + override fun onError(errorCode: String, errorMsg: String) { + Log.d(kTag, "onError: $errorMsg") + } + }) } private val callback = Handler.Callback { message -> - if (message.what == 2022092601) { + if (message.what == 2022092602) { val parseObject = JSONObject.parseObject(message.obj as String) parseObject.keys.forEach { when (it) { - + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + } + "2" -> {//模式,[shushiyu, suiwengan, chufang] + workModeView.text = when (parseObject[it] as String) { + "shushiyu" -> "舒适浴" + "suiwengan" -> "随温感" + else -> "厨房" + } + } + "10" -> { + currentTempView.text = String.format( + "${parseObject[it]}${ + requireContext().resources.getString(R.string.temperature_unit) + }" + ) + } } } } true } + override fun onResume() { + super.onResume() + wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid") + deviceStatusSwitch.isChecked = isDeviceWorking + } + override fun observeRequestState() { } override fun initEvent() { + wifiStatusSwitch.setOnClickListener { + "状态显示页仅显示设备状态,不可控制设备".show(requireContext()) + } + deviceStatusSwitch.setOnClickListener { + "状态显示页仅显示设备状态,不可控制设备".show(requireContext()) + } } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index 1f658ca..ec7a9cd 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -19,6 +19,7 @@ import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.tuya.smart.home.sdk.TuyaHomeSdk @@ -90,10 +91,12 @@ val deviceModels = ArrayList() deviceList.forEach { + Log.d(kTag, it.toJson()) val model = AddedDeviceModel() model.deviceId = it.devId when (it.deviceCategory) { "yyj" -> model.deviceName = "万家乐油烟机" + "rs" -> model.deviceName = "万家乐热水器" } model.isOnline = it.isOnline model.deviceImage = it.iconUrl @@ -104,15 +107,15 @@ } //TODO 测试 - val model = AddedDeviceModel() - model.deviceId = "" - model.deviceName = "万家乐热水器" - model.isOnline = false - model.deviceImage = "" - model.deviceModel = "" - model.deviceType = "" - model.deviceUsedTime = "已使用0天" - deviceModels.add(model) +// val model = AddedDeviceModel() +// model.deviceId = "" +// model.deviceName = "万家乐热水器" +// model.isOnline = false +// model.deviceImage = "" +// model.deviceModel = "" +// model.deviceType = "" +// model.deviceUsedTime = "已使用0天" +// deviceModels.add(model) when { isRefresh -> { @@ -151,7 +154,7 @@ val deviceModel = dataBeans[position] when { deviceModel.deviceName.contains("热水器") -> { - requireContext().navigatePageTo(deviceModel.deviceName) + requireContext().navigatePageTo(deviceModel.deviceId) } deviceModel.deviceName.contains("油烟机") -> { requireContext().navigatePageTo(deviceModel.deviceId) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt index bc0abfd..6cf2638 100644 --- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -35,7 +35,7 @@ modeRadioGroup.check(R.id.kitchenRadioButton) setTemperatureScope() setTimeScope() - modeRadioGroup.setOnCheckedChangeListener { group, checkedId -> + modeRadioGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { R.id.kitchenRadioButton -> { maxTemp = 60 diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt index 095bfa8..87ba362 100644 --- a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -1,11 +1,25 @@ package com.casic.br.fragment.waterheater +import android.content.Context +import android.net.wifi.WifiManager import android.os.Handler +import android.util.Log import com.alibaba.fastjson.JSONObject import com.casic.br.R +import com.casic.br.extensions.diffDate +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.SaveKeyValues 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.api.ITuyaDevice +import com.tuya.smart.sdk.bean.DeviceBean +import kotlinx.android.synthetic.main.fragment_device_rangehood_status.* +import kotlinx.android.synthetic.main.fragment_device_waterheater_status.* +import kotlinx.android.synthetic.main.fragment_device_waterheater_status.deviceUsedTimeView class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() { @@ -13,6 +27,10 @@ lateinit var weakReference: WeakReferenceHandler } + private val kTag = "StatusPageFragment" + private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager } + private var isDeviceWorking = false + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status override fun setupTopBarLayout() { @@ -21,26 +39,76 @@ override fun initData() { weakReference = WeakReferenceHandler(callback) + + val homeId = SaveKeyValues.getValue(LocaleConstant.HOME_ID, "") as String + if (homeId == "") { + return + } + TuyaHomeSdk.newHomeInstance(homeId.toLong()) + .getHomeDetail(object : ITuyaHomeResultCallback { + override fun onSuccess(bean: HomeBean) { + val deviceList: List = bean.deviceList + deviceList.forEach { + if (it.deviceCategory == "rs") { + deviceUsedTimeView.text = + String.format("${it.time.toString().diffDate()}天") + } + return@forEach + } + } + + override fun onError(errorCode: String, errorMsg: String) { + Log.d(kTag, "onError: $errorMsg") + } + }) } private val callback = Handler.Callback { message -> - if (message.what == 2022092601) { + if (message.what == 2022092602) { val parseObject = JSONObject.parseObject(message.obj as String) parseObject.keys.forEach { when (it) { - + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + } + "2" -> {//模式,[shushiyu, suiwengan, chufang] + workModeView.text = when (parseObject[it] as String) { + "shushiyu" -> "舒适浴" + "suiwengan" -> "随温感" + else -> "厨房" + } + } + "10" -> { + currentTempView.text = String.format( + "${parseObject[it]}${ + requireContext().resources.getString(R.string.temperature_unit) + }" + ) + } } } } true } + override fun onResume() { + super.onResume() + wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid") + deviceStatusSwitch.isChecked = isDeviceWorking + } + override fun observeRequestState() { } override fun initEvent() { + wifiStatusSwitch.setOnClickListener { + "状态显示页仅显示设备状态,不可控制设备".show(requireContext()) + } + deviceStatusSwitch.setOnClickListener { + "状态显示页仅显示设备状态,不可控制设备".show(requireContext()) + } } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt index 08b0d19..11c40dc 100644 --- a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt +++ b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt @@ -1,5 +1,6 @@ package com.casic.br.view +import android.util.Log import android.view.View import com.casic.br.R import com.casic.br.extensions.initLayoutImmersionBar @@ -23,6 +24,7 @@ class ResetDeviceActivity : KotlinBaseActivity() { + private val kTag = "ResetDeviceActivity" private lateinit var params: ArrayList override fun initLayoutView(): Int = R.layout.activity_reset_device @@ -53,6 +55,7 @@ TuyaHomeSdk.getActivatorInstance().getActivatorToken(homeId.toLong(), object : ITuyaActivatorGetToken { override fun onSuccess(token: String) { + Log.d(kTag, "token: $token") //调用 配网接口 需要提供路由器的 SSID(即 Wi-Fi 名称)、密码、从云端获取的 Token 等。 val builder = ActivatorBuilder().apply { this.ssid = params[0] @@ -63,6 +66,7 @@ this.token = token this.listener = object : ITuyaSmartActivatorListener { override fun onError(errorCode: String?, errorMsg: String?) { + Log.d(kTag, "errorMsg: $errorMsg") "添加设备超时".show(this@ResetDeviceActivity) LoadingDialogHub.dismiss() } @@ -73,6 +77,7 @@ } override fun onStep(step: String?, data: Any?) { + Log.d(kTag, "onStep: $step") LoadingDialogHub.dismiss() } } @@ -81,6 +86,7 @@ } override fun onFailure(s: String, s1: String) { + Log.e(kTag, "onFailure: $s") LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index 1f658ca..ec7a9cd 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -19,6 +19,7 @@ import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.tuya.smart.home.sdk.TuyaHomeSdk @@ -90,10 +91,12 @@ val deviceModels = ArrayList() deviceList.forEach { + Log.d(kTag, it.toJson()) val model = AddedDeviceModel() model.deviceId = it.devId when (it.deviceCategory) { "yyj" -> model.deviceName = "万家乐油烟机" + "rs" -> model.deviceName = "万家乐热水器" } model.isOnline = it.isOnline model.deviceImage = it.iconUrl @@ -104,15 +107,15 @@ } //TODO 测试 - val model = AddedDeviceModel() - model.deviceId = "" - model.deviceName = "万家乐热水器" - model.isOnline = false - model.deviceImage = "" - model.deviceModel = "" - model.deviceType = "" - model.deviceUsedTime = "已使用0天" - deviceModels.add(model) +// val model = AddedDeviceModel() +// model.deviceId = "" +// model.deviceName = "万家乐热水器" +// model.isOnline = false +// model.deviceImage = "" +// model.deviceModel = "" +// model.deviceType = "" +// model.deviceUsedTime = "已使用0天" +// deviceModels.add(model) when { isRefresh -> { @@ -151,7 +154,7 @@ val deviceModel = dataBeans[position] when { deviceModel.deviceName.contains("热水器") -> { - requireContext().navigatePageTo(deviceModel.deviceName) + requireContext().navigatePageTo(deviceModel.deviceId) } deviceModel.deviceName.contains("油烟机") -> { requireContext().navigatePageTo(deviceModel.deviceId) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt index bc0abfd..6cf2638 100644 --- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -35,7 +35,7 @@ modeRadioGroup.check(R.id.kitchenRadioButton) setTemperatureScope() setTimeScope() - modeRadioGroup.setOnCheckedChangeListener { group, checkedId -> + modeRadioGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { R.id.kitchenRadioButton -> { maxTemp = 60 diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt index 095bfa8..87ba362 100644 --- a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -1,11 +1,25 @@ package com.casic.br.fragment.waterheater +import android.content.Context +import android.net.wifi.WifiManager import android.os.Handler +import android.util.Log import com.alibaba.fastjson.JSONObject import com.casic.br.R +import com.casic.br.extensions.diffDate +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.SaveKeyValues 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.api.ITuyaDevice +import com.tuya.smart.sdk.bean.DeviceBean +import kotlinx.android.synthetic.main.fragment_device_rangehood_status.* +import kotlinx.android.synthetic.main.fragment_device_waterheater_status.* +import kotlinx.android.synthetic.main.fragment_device_waterheater_status.deviceUsedTimeView class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() { @@ -13,6 +27,10 @@ lateinit var weakReference: WeakReferenceHandler } + private val kTag = "StatusPageFragment" + private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager } + private var isDeviceWorking = false + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status override fun setupTopBarLayout() { @@ -21,26 +39,76 @@ override fun initData() { weakReference = WeakReferenceHandler(callback) + + val homeId = SaveKeyValues.getValue(LocaleConstant.HOME_ID, "") as String + if (homeId == "") { + return + } + TuyaHomeSdk.newHomeInstance(homeId.toLong()) + .getHomeDetail(object : ITuyaHomeResultCallback { + override fun onSuccess(bean: HomeBean) { + val deviceList: List = bean.deviceList + deviceList.forEach { + if (it.deviceCategory == "rs") { + deviceUsedTimeView.text = + String.format("${it.time.toString().diffDate()}天") + } + return@forEach + } + } + + override fun onError(errorCode: String, errorMsg: String) { + Log.d(kTag, "onError: $errorMsg") + } + }) } private val callback = Handler.Callback { message -> - if (message.what == 2022092601) { + if (message.what == 2022092602) { val parseObject = JSONObject.parseObject(message.obj as String) parseObject.keys.forEach { when (it) { - + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + } + "2" -> {//模式,[shushiyu, suiwengan, chufang] + workModeView.text = when (parseObject[it] as String) { + "shushiyu" -> "舒适浴" + "suiwengan" -> "随温感" + else -> "厨房" + } + } + "10" -> { + currentTempView.text = String.format( + "${parseObject[it]}${ + requireContext().resources.getString(R.string.temperature_unit) + }" + ) + } } } } true } + override fun onResume() { + super.onResume() + wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid") + deviceStatusSwitch.isChecked = isDeviceWorking + } + override fun observeRequestState() { } override fun initEvent() { + wifiStatusSwitch.setOnClickListener { + "状态显示页仅显示设备状态,不可控制设备".show(requireContext()) + } + deviceStatusSwitch.setOnClickListener { + "状态显示页仅显示设备状态,不可控制设备".show(requireContext()) + } } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt index 08b0d19..11c40dc 100644 --- a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt +++ b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt @@ -1,5 +1,6 @@ package com.casic.br.view +import android.util.Log import android.view.View import com.casic.br.R import com.casic.br.extensions.initLayoutImmersionBar @@ -23,6 +24,7 @@ class ResetDeviceActivity : KotlinBaseActivity() { + private val kTag = "ResetDeviceActivity" private lateinit var params: ArrayList override fun initLayoutView(): Int = R.layout.activity_reset_device @@ -53,6 +55,7 @@ TuyaHomeSdk.getActivatorInstance().getActivatorToken(homeId.toLong(), object : ITuyaActivatorGetToken { override fun onSuccess(token: String) { + Log.d(kTag, "token: $token") //调用 配网接口 需要提供路由器的 SSID(即 Wi-Fi 名称)、密码、从云端获取的 Token 等。 val builder = ActivatorBuilder().apply { this.ssid = params[0] @@ -63,6 +66,7 @@ this.token = token this.listener = object : ITuyaSmartActivatorListener { override fun onError(errorCode: String?, errorMsg: String?) { + Log.d(kTag, "errorMsg: $errorMsg") "添加设备超时".show(this@ResetDeviceActivity) LoadingDialogHub.dismiss() } @@ -73,6 +77,7 @@ } override fun onStep(step: String?, data: Any?) { + Log.d(kTag, "onStep: $step") LoadingDialogHub.dismiss() } } @@ -81,6 +86,7 @@ } override fun onFailure(s: String, s1: String) { + Log.e(kTag, "onFailure: $s") LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index c799791..63760ee 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -14,6 +14,7 @@ import com.casic.br.fragment.waterheater.ControlPageFragment import com.casic.br.fragment.waterheater.ServicePageFragment import com.casic.br.fragment.waterheater.StatusPageFragment +import com.casic.br.utils.CommandManager import com.casic.br.utils.LocaleConstant import com.google.android.material.tabs.TabLayout import com.gyf.immersionbar.ImmersionBar @@ -43,7 +44,6 @@ private val inflater by lazy { LayoutInflater.from(this) } private var fragmentPages: ArrayList = ArrayList() private lateinit var deviceInstance: ITuyaDevice - private var isWorking = false override fun initLayoutView(): Int = R.layout.activity_water_heater @@ -79,12 +79,16 @@ override fun onDpUpdate(devId: String?, dpStr: String?) { Log.d(kTag, "onDpUpdate: $dpStr") - val parseObject = JSONObject.parseObject(dpStr) - parseObject.keys.forEach { - when(it){ - } - } + val controlMsg = ControlPageFragment.weakReference.obtainMessage() + controlMsg.what = 2022092601 + controlMsg.obj = dpStr + ControlPageFragment.weakReference.sendMessage(controlMsg) + + val statusMsg = StatusPageFragment.weakReference.obtainMessage() + statusMsg.what = 2022092602 + statusMsg.obj = dpStr + StatusPageFragment.weakReference.sendMessage(statusMsg) } override fun onRemoved(devId: String?) { @@ -106,6 +110,12 @@ }) } + override fun onResume() { + super.onResume() + //每次获取焦点都查询设备的开关机状态 + CommandManager.getTuyaDp(deviceInstance, "1") + } + override fun observeRequestState() { } @@ -136,4 +146,10 @@ } }) } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index 1f658ca..ec7a9cd 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -19,6 +19,7 @@ import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.tuya.smart.home.sdk.TuyaHomeSdk @@ -90,10 +91,12 @@ val deviceModels = ArrayList() deviceList.forEach { + Log.d(kTag, it.toJson()) val model = AddedDeviceModel() model.deviceId = it.devId when (it.deviceCategory) { "yyj" -> model.deviceName = "万家乐油烟机" + "rs" -> model.deviceName = "万家乐热水器" } model.isOnline = it.isOnline model.deviceImage = it.iconUrl @@ -104,15 +107,15 @@ } //TODO 测试 - val model = AddedDeviceModel() - model.deviceId = "" - model.deviceName = "万家乐热水器" - model.isOnline = false - model.deviceImage = "" - model.deviceModel = "" - model.deviceType = "" - model.deviceUsedTime = "已使用0天" - deviceModels.add(model) +// val model = AddedDeviceModel() +// model.deviceId = "" +// model.deviceName = "万家乐热水器" +// model.isOnline = false +// model.deviceImage = "" +// model.deviceModel = "" +// model.deviceType = "" +// model.deviceUsedTime = "已使用0天" +// deviceModels.add(model) when { isRefresh -> { @@ -151,7 +154,7 @@ val deviceModel = dataBeans[position] when { deviceModel.deviceName.contains("热水器") -> { - requireContext().navigatePageTo(deviceModel.deviceName) + requireContext().navigatePageTo(deviceModel.deviceId) } deviceModel.deviceName.contains("油烟机") -> { requireContext().navigatePageTo(deviceModel.deviceId) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt index bc0abfd..6cf2638 100644 --- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -35,7 +35,7 @@ modeRadioGroup.check(R.id.kitchenRadioButton) setTemperatureScope() setTimeScope() - modeRadioGroup.setOnCheckedChangeListener { group, checkedId -> + modeRadioGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { R.id.kitchenRadioButton -> { maxTemp = 60 diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt index 095bfa8..87ba362 100644 --- a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -1,11 +1,25 @@ package com.casic.br.fragment.waterheater +import android.content.Context +import android.net.wifi.WifiManager import android.os.Handler +import android.util.Log import com.alibaba.fastjson.JSONObject import com.casic.br.R +import com.casic.br.extensions.diffDate +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.SaveKeyValues 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.api.ITuyaDevice +import com.tuya.smart.sdk.bean.DeviceBean +import kotlinx.android.synthetic.main.fragment_device_rangehood_status.* +import kotlinx.android.synthetic.main.fragment_device_waterheater_status.* +import kotlinx.android.synthetic.main.fragment_device_waterheater_status.deviceUsedTimeView class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() { @@ -13,6 +27,10 @@ lateinit var weakReference: WeakReferenceHandler } + private val kTag = "StatusPageFragment" + private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager } + private var isDeviceWorking = false + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status override fun setupTopBarLayout() { @@ -21,26 +39,76 @@ override fun initData() { weakReference = WeakReferenceHandler(callback) + + val homeId = SaveKeyValues.getValue(LocaleConstant.HOME_ID, "") as String + if (homeId == "") { + return + } + TuyaHomeSdk.newHomeInstance(homeId.toLong()) + .getHomeDetail(object : ITuyaHomeResultCallback { + override fun onSuccess(bean: HomeBean) { + val deviceList: List = bean.deviceList + deviceList.forEach { + if (it.deviceCategory == "rs") { + deviceUsedTimeView.text = + String.format("${it.time.toString().diffDate()}天") + } + return@forEach + } + } + + override fun onError(errorCode: String, errorMsg: String) { + Log.d(kTag, "onError: $errorMsg") + } + }) } private val callback = Handler.Callback { message -> - if (message.what == 2022092601) { + if (message.what == 2022092602) { val parseObject = JSONObject.parseObject(message.obj as String) parseObject.keys.forEach { when (it) { - + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + } + "2" -> {//模式,[shushiyu, suiwengan, chufang] + workModeView.text = when (parseObject[it] as String) { + "shushiyu" -> "舒适浴" + "suiwengan" -> "随温感" + else -> "厨房" + } + } + "10" -> { + currentTempView.text = String.format( + "${parseObject[it]}${ + requireContext().resources.getString(R.string.temperature_unit) + }" + ) + } } } } true } + override fun onResume() { + super.onResume() + wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid") + deviceStatusSwitch.isChecked = isDeviceWorking + } + override fun observeRequestState() { } override fun initEvent() { + wifiStatusSwitch.setOnClickListener { + "状态显示页仅显示设备状态,不可控制设备".show(requireContext()) + } + deviceStatusSwitch.setOnClickListener { + "状态显示页仅显示设备状态,不可控制设备".show(requireContext()) + } } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt index 08b0d19..11c40dc 100644 --- a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt +++ b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt @@ -1,5 +1,6 @@ package com.casic.br.view +import android.util.Log import android.view.View import com.casic.br.R import com.casic.br.extensions.initLayoutImmersionBar @@ -23,6 +24,7 @@ class ResetDeviceActivity : KotlinBaseActivity() { + private val kTag = "ResetDeviceActivity" private lateinit var params: ArrayList override fun initLayoutView(): Int = R.layout.activity_reset_device @@ -53,6 +55,7 @@ TuyaHomeSdk.getActivatorInstance().getActivatorToken(homeId.toLong(), object : ITuyaActivatorGetToken { override fun onSuccess(token: String) { + Log.d(kTag, "token: $token") //调用 配网接口 需要提供路由器的 SSID(即 Wi-Fi 名称)、密码、从云端获取的 Token 等。 val builder = ActivatorBuilder().apply { this.ssid = params[0] @@ -63,6 +66,7 @@ this.token = token this.listener = object : ITuyaSmartActivatorListener { override fun onError(errorCode: String?, errorMsg: String?) { + Log.d(kTag, "errorMsg: $errorMsg") "添加设备超时".show(this@ResetDeviceActivity) LoadingDialogHub.dismiss() } @@ -73,6 +77,7 @@ } override fun onStep(step: String?, data: Any?) { + Log.d(kTag, "onStep: $step") LoadingDialogHub.dismiss() } } @@ -81,6 +86,7 @@ } override fun onFailure(s: String, s1: String) { + Log.e(kTag, "onFailure: $s") LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index c799791..63760ee 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -14,6 +14,7 @@ import com.casic.br.fragment.waterheater.ControlPageFragment import com.casic.br.fragment.waterheater.ServicePageFragment import com.casic.br.fragment.waterheater.StatusPageFragment +import com.casic.br.utils.CommandManager import com.casic.br.utils.LocaleConstant import com.google.android.material.tabs.TabLayout import com.gyf.immersionbar.ImmersionBar @@ -43,7 +44,6 @@ private val inflater by lazy { LayoutInflater.from(this) } private var fragmentPages: ArrayList = ArrayList() private lateinit var deviceInstance: ITuyaDevice - private var isWorking = false override fun initLayoutView(): Int = R.layout.activity_water_heater @@ -79,12 +79,16 @@ override fun onDpUpdate(devId: String?, dpStr: String?) { Log.d(kTag, "onDpUpdate: $dpStr") - val parseObject = JSONObject.parseObject(dpStr) - parseObject.keys.forEach { - when(it){ - } - } + val controlMsg = ControlPageFragment.weakReference.obtainMessage() + controlMsg.what = 2022092601 + controlMsg.obj = dpStr + ControlPageFragment.weakReference.sendMessage(controlMsg) + + val statusMsg = StatusPageFragment.weakReference.obtainMessage() + statusMsg.what = 2022092602 + statusMsg.obj = dpStr + StatusPageFragment.weakReference.sendMessage(statusMsg) } override fun onRemoved(devId: String?) { @@ -106,6 +110,12 @@ }) } + override fun onResume() { + super.onResume() + //每次获取焦点都查询设备的开关机状态 + CommandManager.getTuyaDp(deviceInstance, "1") + } + override fun observeRequestState() { } @@ -136,4 +146,10 @@ } }) } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_rangehood_status.xml b/app/src/main/res/layout/fragment_device_rangehood_status.xml index bed2330..1047626 100644 --- a/app/src/main/res/layout/fragment_device_rangehood_status.xml +++ b/app/src/main/res/layout/fragment_device_rangehood_status.xml @@ -12,7 +12,7 @@ android:gravity="center_vertical" android:orientation="horizontal" android:paddingHorizontal="@dimen/dp_10" - android:paddingVertical="@dimen/dp_20"> + android:paddingVertical="@dimen/dp_15"> + android:paddingVertical="@dimen/dp_15"> () deviceList.forEach { + Log.d(kTag, it.toJson()) val model = AddedDeviceModel() model.deviceId = it.devId when (it.deviceCategory) { "yyj" -> model.deviceName = "万家乐油烟机" + "rs" -> model.deviceName = "万家乐热水器" } model.isOnline = it.isOnline model.deviceImage = it.iconUrl @@ -104,15 +107,15 @@ } //TODO 测试 - val model = AddedDeviceModel() - model.deviceId = "" - model.deviceName = "万家乐热水器" - model.isOnline = false - model.deviceImage = "" - model.deviceModel = "" - model.deviceType = "" - model.deviceUsedTime = "已使用0天" - deviceModels.add(model) +// val model = AddedDeviceModel() +// model.deviceId = "" +// model.deviceName = "万家乐热水器" +// model.isOnline = false +// model.deviceImage = "" +// model.deviceModel = "" +// model.deviceType = "" +// model.deviceUsedTime = "已使用0天" +// deviceModels.add(model) when { isRefresh -> { @@ -151,7 +154,7 @@ val deviceModel = dataBeans[position] when { deviceModel.deviceName.contains("热水器") -> { - requireContext().navigatePageTo(deviceModel.deviceName) + requireContext().navigatePageTo(deviceModel.deviceId) } deviceModel.deviceName.contains("油烟机") -> { requireContext().navigatePageTo(deviceModel.deviceId) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt index bc0abfd..6cf2638 100644 --- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -35,7 +35,7 @@ modeRadioGroup.check(R.id.kitchenRadioButton) setTemperatureScope() setTimeScope() - modeRadioGroup.setOnCheckedChangeListener { group, checkedId -> + modeRadioGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { R.id.kitchenRadioButton -> { maxTemp = 60 diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt index 095bfa8..87ba362 100644 --- a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -1,11 +1,25 @@ package com.casic.br.fragment.waterheater +import android.content.Context +import android.net.wifi.WifiManager import android.os.Handler +import android.util.Log import com.alibaba.fastjson.JSONObject import com.casic.br.R +import com.casic.br.extensions.diffDate +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.SaveKeyValues 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.api.ITuyaDevice +import com.tuya.smart.sdk.bean.DeviceBean +import kotlinx.android.synthetic.main.fragment_device_rangehood_status.* +import kotlinx.android.synthetic.main.fragment_device_waterheater_status.* +import kotlinx.android.synthetic.main.fragment_device_waterheater_status.deviceUsedTimeView class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() { @@ -13,6 +27,10 @@ lateinit var weakReference: WeakReferenceHandler } + private val kTag = "StatusPageFragment" + private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager } + private var isDeviceWorking = false + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status override fun setupTopBarLayout() { @@ -21,26 +39,76 @@ override fun initData() { weakReference = WeakReferenceHandler(callback) + + val homeId = SaveKeyValues.getValue(LocaleConstant.HOME_ID, "") as String + if (homeId == "") { + return + } + TuyaHomeSdk.newHomeInstance(homeId.toLong()) + .getHomeDetail(object : ITuyaHomeResultCallback { + override fun onSuccess(bean: HomeBean) { + val deviceList: List = bean.deviceList + deviceList.forEach { + if (it.deviceCategory == "rs") { + deviceUsedTimeView.text = + String.format("${it.time.toString().diffDate()}天") + } + return@forEach + } + } + + override fun onError(errorCode: String, errorMsg: String) { + Log.d(kTag, "onError: $errorMsg") + } + }) } private val callback = Handler.Callback { message -> - if (message.what == 2022092601) { + if (message.what == 2022092602) { val parseObject = JSONObject.parseObject(message.obj as String) parseObject.keys.forEach { when (it) { - + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + } + "2" -> {//模式,[shushiyu, suiwengan, chufang] + workModeView.text = when (parseObject[it] as String) { + "shushiyu" -> "舒适浴" + "suiwengan" -> "随温感" + else -> "厨房" + } + } + "10" -> { + currentTempView.text = String.format( + "${parseObject[it]}${ + requireContext().resources.getString(R.string.temperature_unit) + }" + ) + } } } } true } + override fun onResume() { + super.onResume() + wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid") + deviceStatusSwitch.isChecked = isDeviceWorking + } + override fun observeRequestState() { } override fun initEvent() { + wifiStatusSwitch.setOnClickListener { + "状态显示页仅显示设备状态,不可控制设备".show(requireContext()) + } + deviceStatusSwitch.setOnClickListener { + "状态显示页仅显示设备状态,不可控制设备".show(requireContext()) + } } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt index 08b0d19..11c40dc 100644 --- a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt +++ b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt @@ -1,5 +1,6 @@ package com.casic.br.view +import android.util.Log import android.view.View import com.casic.br.R import com.casic.br.extensions.initLayoutImmersionBar @@ -23,6 +24,7 @@ class ResetDeviceActivity : KotlinBaseActivity() { + private val kTag = "ResetDeviceActivity" private lateinit var params: ArrayList override fun initLayoutView(): Int = R.layout.activity_reset_device @@ -53,6 +55,7 @@ TuyaHomeSdk.getActivatorInstance().getActivatorToken(homeId.toLong(), object : ITuyaActivatorGetToken { override fun onSuccess(token: String) { + Log.d(kTag, "token: $token") //调用 配网接口 需要提供路由器的 SSID(即 Wi-Fi 名称)、密码、从云端获取的 Token 等。 val builder = ActivatorBuilder().apply { this.ssid = params[0] @@ -63,6 +66,7 @@ this.token = token this.listener = object : ITuyaSmartActivatorListener { override fun onError(errorCode: String?, errorMsg: String?) { + Log.d(kTag, "errorMsg: $errorMsg") "添加设备超时".show(this@ResetDeviceActivity) LoadingDialogHub.dismiss() } @@ -73,6 +77,7 @@ } override fun onStep(step: String?, data: Any?) { + Log.d(kTag, "onStep: $step") LoadingDialogHub.dismiss() } } @@ -81,6 +86,7 @@ } override fun onFailure(s: String, s1: String) { + Log.e(kTag, "onFailure: $s") LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index c799791..63760ee 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -14,6 +14,7 @@ import com.casic.br.fragment.waterheater.ControlPageFragment import com.casic.br.fragment.waterheater.ServicePageFragment import com.casic.br.fragment.waterheater.StatusPageFragment +import com.casic.br.utils.CommandManager import com.casic.br.utils.LocaleConstant import com.google.android.material.tabs.TabLayout import com.gyf.immersionbar.ImmersionBar @@ -43,7 +44,6 @@ private val inflater by lazy { LayoutInflater.from(this) } private var fragmentPages: ArrayList = ArrayList() private lateinit var deviceInstance: ITuyaDevice - private var isWorking = false override fun initLayoutView(): Int = R.layout.activity_water_heater @@ -79,12 +79,16 @@ override fun onDpUpdate(devId: String?, dpStr: String?) { Log.d(kTag, "onDpUpdate: $dpStr") - val parseObject = JSONObject.parseObject(dpStr) - parseObject.keys.forEach { - when(it){ - } - } + val controlMsg = ControlPageFragment.weakReference.obtainMessage() + controlMsg.what = 2022092601 + controlMsg.obj = dpStr + ControlPageFragment.weakReference.sendMessage(controlMsg) + + val statusMsg = StatusPageFragment.weakReference.obtainMessage() + statusMsg.what = 2022092602 + statusMsg.obj = dpStr + StatusPageFragment.weakReference.sendMessage(statusMsg) } override fun onRemoved(devId: String?) { @@ -106,6 +110,12 @@ }) } + override fun onResume() { + super.onResume() + //每次获取焦点都查询设备的开关机状态 + CommandManager.getTuyaDp(deviceInstance, "1") + } + override fun observeRequestState() { } @@ -136,4 +146,10 @@ } }) } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_rangehood_status.xml b/app/src/main/res/layout/fragment_device_rangehood_status.xml index bed2330..1047626 100644 --- a/app/src/main/res/layout/fragment_device_rangehood_status.xml +++ b/app/src/main/res/layout/fragment_device_rangehood_status.xml @@ -12,7 +12,7 @@ android:gravity="center_vertical" android:orientation="horizontal" android:paddingHorizontal="@dimen/dp_10" - android:paddingVertical="@dimen/dp_20"> + android:paddingVertical="@dimen/dp_15"> + android:paddingVertical="@dimen/dp_15"> + android:text="@string/temperature_unit" /> + android:text="@string/temperature_unit" /> + android:text="@string/temperature_unit" /> diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index 1f658ca..ec7a9cd 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -19,6 +19,7 @@ import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.tuya.smart.home.sdk.TuyaHomeSdk @@ -90,10 +91,12 @@ val deviceModels = ArrayList() deviceList.forEach { + Log.d(kTag, it.toJson()) val model = AddedDeviceModel() model.deviceId = it.devId when (it.deviceCategory) { "yyj" -> model.deviceName = "万家乐油烟机" + "rs" -> model.deviceName = "万家乐热水器" } model.isOnline = it.isOnline model.deviceImage = it.iconUrl @@ -104,15 +107,15 @@ } //TODO 测试 - val model = AddedDeviceModel() - model.deviceId = "" - model.deviceName = "万家乐热水器" - model.isOnline = false - model.deviceImage = "" - model.deviceModel = "" - model.deviceType = "" - model.deviceUsedTime = "已使用0天" - deviceModels.add(model) +// val model = AddedDeviceModel() +// model.deviceId = "" +// model.deviceName = "万家乐热水器" +// model.isOnline = false +// model.deviceImage = "" +// model.deviceModel = "" +// model.deviceType = "" +// model.deviceUsedTime = "已使用0天" +// deviceModels.add(model) when { isRefresh -> { @@ -151,7 +154,7 @@ val deviceModel = dataBeans[position] when { deviceModel.deviceName.contains("热水器") -> { - requireContext().navigatePageTo(deviceModel.deviceName) + requireContext().navigatePageTo(deviceModel.deviceId) } deviceModel.deviceName.contains("油烟机") -> { requireContext().navigatePageTo(deviceModel.deviceId) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt index bc0abfd..6cf2638 100644 --- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -35,7 +35,7 @@ modeRadioGroup.check(R.id.kitchenRadioButton) setTemperatureScope() setTimeScope() - modeRadioGroup.setOnCheckedChangeListener { group, checkedId -> + modeRadioGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { R.id.kitchenRadioButton -> { maxTemp = 60 diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt index 095bfa8..87ba362 100644 --- a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -1,11 +1,25 @@ package com.casic.br.fragment.waterheater +import android.content.Context +import android.net.wifi.WifiManager import android.os.Handler +import android.util.Log import com.alibaba.fastjson.JSONObject import com.casic.br.R +import com.casic.br.extensions.diffDate +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.SaveKeyValues 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.api.ITuyaDevice +import com.tuya.smart.sdk.bean.DeviceBean +import kotlinx.android.synthetic.main.fragment_device_rangehood_status.* +import kotlinx.android.synthetic.main.fragment_device_waterheater_status.* +import kotlinx.android.synthetic.main.fragment_device_waterheater_status.deviceUsedTimeView class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() { @@ -13,6 +27,10 @@ lateinit var weakReference: WeakReferenceHandler } + private val kTag = "StatusPageFragment" + private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager } + private var isDeviceWorking = false + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status override fun setupTopBarLayout() { @@ -21,26 +39,76 @@ override fun initData() { weakReference = WeakReferenceHandler(callback) + + val homeId = SaveKeyValues.getValue(LocaleConstant.HOME_ID, "") as String + if (homeId == "") { + return + } + TuyaHomeSdk.newHomeInstance(homeId.toLong()) + .getHomeDetail(object : ITuyaHomeResultCallback { + override fun onSuccess(bean: HomeBean) { + val deviceList: List = bean.deviceList + deviceList.forEach { + if (it.deviceCategory == "rs") { + deviceUsedTimeView.text = + String.format("${it.time.toString().diffDate()}天") + } + return@forEach + } + } + + override fun onError(errorCode: String, errorMsg: String) { + Log.d(kTag, "onError: $errorMsg") + } + }) } private val callback = Handler.Callback { message -> - if (message.what == 2022092601) { + if (message.what == 2022092602) { val parseObject = JSONObject.parseObject(message.obj as String) parseObject.keys.forEach { when (it) { - + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + } + "2" -> {//模式,[shushiyu, suiwengan, chufang] + workModeView.text = when (parseObject[it] as String) { + "shushiyu" -> "舒适浴" + "suiwengan" -> "随温感" + else -> "厨房" + } + } + "10" -> { + currentTempView.text = String.format( + "${parseObject[it]}${ + requireContext().resources.getString(R.string.temperature_unit) + }" + ) + } } } } true } + override fun onResume() { + super.onResume() + wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid") + deviceStatusSwitch.isChecked = isDeviceWorking + } + override fun observeRequestState() { } override fun initEvent() { + wifiStatusSwitch.setOnClickListener { + "状态显示页仅显示设备状态,不可控制设备".show(requireContext()) + } + deviceStatusSwitch.setOnClickListener { + "状态显示页仅显示设备状态,不可控制设备".show(requireContext()) + } } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt index 08b0d19..11c40dc 100644 --- a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt +++ b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt @@ -1,5 +1,6 @@ package com.casic.br.view +import android.util.Log import android.view.View import com.casic.br.R import com.casic.br.extensions.initLayoutImmersionBar @@ -23,6 +24,7 @@ class ResetDeviceActivity : KotlinBaseActivity() { + private val kTag = "ResetDeviceActivity" private lateinit var params: ArrayList override fun initLayoutView(): Int = R.layout.activity_reset_device @@ -53,6 +55,7 @@ TuyaHomeSdk.getActivatorInstance().getActivatorToken(homeId.toLong(), object : ITuyaActivatorGetToken { override fun onSuccess(token: String) { + Log.d(kTag, "token: $token") //调用 配网接口 需要提供路由器的 SSID(即 Wi-Fi 名称)、密码、从云端获取的 Token 等。 val builder = ActivatorBuilder().apply { this.ssid = params[0] @@ -63,6 +66,7 @@ this.token = token this.listener = object : ITuyaSmartActivatorListener { override fun onError(errorCode: String?, errorMsg: String?) { + Log.d(kTag, "errorMsg: $errorMsg") "添加设备超时".show(this@ResetDeviceActivity) LoadingDialogHub.dismiss() } @@ -73,6 +77,7 @@ } override fun onStep(step: String?, data: Any?) { + Log.d(kTag, "onStep: $step") LoadingDialogHub.dismiss() } } @@ -81,6 +86,7 @@ } override fun onFailure(s: String, s1: String) { + Log.e(kTag, "onFailure: $s") LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index c799791..63760ee 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -14,6 +14,7 @@ import com.casic.br.fragment.waterheater.ControlPageFragment import com.casic.br.fragment.waterheater.ServicePageFragment import com.casic.br.fragment.waterheater.StatusPageFragment +import com.casic.br.utils.CommandManager import com.casic.br.utils.LocaleConstant import com.google.android.material.tabs.TabLayout import com.gyf.immersionbar.ImmersionBar @@ -43,7 +44,6 @@ private val inflater by lazy { LayoutInflater.from(this) } private var fragmentPages: ArrayList = ArrayList() private lateinit var deviceInstance: ITuyaDevice - private var isWorking = false override fun initLayoutView(): Int = R.layout.activity_water_heater @@ -79,12 +79,16 @@ override fun onDpUpdate(devId: String?, dpStr: String?) { Log.d(kTag, "onDpUpdate: $dpStr") - val parseObject = JSONObject.parseObject(dpStr) - parseObject.keys.forEach { - when(it){ - } - } + val controlMsg = ControlPageFragment.weakReference.obtainMessage() + controlMsg.what = 2022092601 + controlMsg.obj = dpStr + ControlPageFragment.weakReference.sendMessage(controlMsg) + + val statusMsg = StatusPageFragment.weakReference.obtainMessage() + statusMsg.what = 2022092602 + statusMsg.obj = dpStr + StatusPageFragment.weakReference.sendMessage(statusMsg) } override fun onRemoved(devId: String?) { @@ -106,6 +110,12 @@ }) } + override fun onResume() { + super.onResume() + //每次获取焦点都查询设备的开关机状态 + CommandManager.getTuyaDp(deviceInstance, "1") + } + override fun observeRequestState() { } @@ -136,4 +146,10 @@ } }) } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_rangehood_status.xml b/app/src/main/res/layout/fragment_device_rangehood_status.xml index bed2330..1047626 100644 --- a/app/src/main/res/layout/fragment_device_rangehood_status.xml +++ b/app/src/main/res/layout/fragment_device_rangehood_status.xml @@ -12,7 +12,7 @@ android:gravity="center_vertical" android:orientation="horizontal" android:paddingHorizontal="@dimen/dp_10" - android:paddingVertical="@dimen/dp_20"> + android:paddingVertical="@dimen/dp_15"> + android:paddingVertical="@dimen/dp_15"> + android:text="@string/temperature_unit" /> + android:text="@string/temperature_unit" /> + android:text="@string/temperature_unit" /> diff --git a/app/src/main/res/layout/fragment_device_waterheater_status.xml b/app/src/main/res/layout/fragment_device_waterheater_status.xml index 8eb76fc..9838ef8 100644 --- a/app/src/main/res/layout/fragment_device_waterheater_status.xml +++ b/app/src/main/res/layout/fragment_device_waterheater_status.xml @@ -1,32 +1,265 @@ - + android:layout_height="match_parent"> + android:layout_height="match_parent" + android:orientation="vertical"> - + android:layout_marginHorizontal="@dimen/dp_20" + android:background="@drawable/bg_solid_layout_white_radius_10" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingHorizontal="@dimen/dp_10" + android:paddingVertical="@dimen/dp_15"> - + + + + + + android:layout_marginHorizontal="@dimen/dp_20" + android:layout_marginTop="@dimen/dp_10" + android:background="@drawable/bg_solid_layout_white_radius_10" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingHorizontal="@dimen/dp_10" + android:paddingVertical="@dimen/dp_15"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - \ No newline at end of file + diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index 1f658ca..ec7a9cd 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -19,6 +19,7 @@ import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.tuya.smart.home.sdk.TuyaHomeSdk @@ -90,10 +91,12 @@ val deviceModels = ArrayList() deviceList.forEach { + Log.d(kTag, it.toJson()) val model = AddedDeviceModel() model.deviceId = it.devId when (it.deviceCategory) { "yyj" -> model.deviceName = "万家乐油烟机" + "rs" -> model.deviceName = "万家乐热水器" } model.isOnline = it.isOnline model.deviceImage = it.iconUrl @@ -104,15 +107,15 @@ } //TODO 测试 - val model = AddedDeviceModel() - model.deviceId = "" - model.deviceName = "万家乐热水器" - model.isOnline = false - model.deviceImage = "" - model.deviceModel = "" - model.deviceType = "" - model.deviceUsedTime = "已使用0天" - deviceModels.add(model) +// val model = AddedDeviceModel() +// model.deviceId = "" +// model.deviceName = "万家乐热水器" +// model.isOnline = false +// model.deviceImage = "" +// model.deviceModel = "" +// model.deviceType = "" +// model.deviceUsedTime = "已使用0天" +// deviceModels.add(model) when { isRefresh -> { @@ -151,7 +154,7 @@ val deviceModel = dataBeans[position] when { deviceModel.deviceName.contains("热水器") -> { - requireContext().navigatePageTo(deviceModel.deviceName) + requireContext().navigatePageTo(deviceModel.deviceId) } deviceModel.deviceName.contains("油烟机") -> { requireContext().navigatePageTo(deviceModel.deviceId) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt index bc0abfd..6cf2638 100644 --- a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -35,7 +35,7 @@ modeRadioGroup.check(R.id.kitchenRadioButton) setTemperatureScope() setTimeScope() - modeRadioGroup.setOnCheckedChangeListener { group, checkedId -> + modeRadioGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { R.id.kitchenRadioButton -> { maxTemp = 60 diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt index 095bfa8..87ba362 100644 --- a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -1,11 +1,25 @@ package com.casic.br.fragment.waterheater +import android.content.Context +import android.net.wifi.WifiManager import android.os.Handler +import android.util.Log import com.alibaba.fastjson.JSONObject import com.casic.br.R +import com.casic.br.extensions.diffDate +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.SaveKeyValues 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.api.ITuyaDevice +import com.tuya.smart.sdk.bean.DeviceBean +import kotlinx.android.synthetic.main.fragment_device_rangehood_status.* +import kotlinx.android.synthetic.main.fragment_device_waterheater_status.* +import kotlinx.android.synthetic.main.fragment_device_waterheater_status.deviceUsedTimeView class StatusPageFragment(private val deviceInstance: ITuyaDevice) : KotlinBaseFragment() { @@ -13,6 +27,10 @@ lateinit var weakReference: WeakReferenceHandler } + private val kTag = "StatusPageFragment" + private val wifi by lazy { requireContext().applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager } + private var isDeviceWorking = false + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status override fun setupTopBarLayout() { @@ -21,26 +39,76 @@ override fun initData() { weakReference = WeakReferenceHandler(callback) + + val homeId = SaveKeyValues.getValue(LocaleConstant.HOME_ID, "") as String + if (homeId == "") { + return + } + TuyaHomeSdk.newHomeInstance(homeId.toLong()) + .getHomeDetail(object : ITuyaHomeResultCallback { + override fun onSuccess(bean: HomeBean) { + val deviceList: List = bean.deviceList + deviceList.forEach { + if (it.deviceCategory == "rs") { + deviceUsedTimeView.text = + String.format("${it.time.toString().diffDate()}天") + } + return@forEach + } + } + + override fun onError(errorCode: String, errorMsg: String) { + Log.d(kTag, "onError: $errorMsg") + } + }) } private val callback = Handler.Callback { message -> - if (message.what == 2022092601) { + if (message.what == 2022092602) { val parseObject = JSONObject.parseObject(message.obj as String) parseObject.keys.forEach { when (it) { - + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + } + "2" -> {//模式,[shushiyu, suiwengan, chufang] + workModeView.text = when (parseObject[it] as String) { + "shushiyu" -> "舒适浴" + "suiwengan" -> "随温感" + else -> "厨房" + } + } + "10" -> { + currentTempView.text = String.format( + "${parseObject[it]}${ + requireContext().resources.getString(R.string.temperature_unit) + }" + ) + } } } } true } + override fun onResume() { + super.onResume() + wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid") + deviceStatusSwitch.isChecked = isDeviceWorking + } + override fun observeRequestState() { } override fun initEvent() { + wifiStatusSwitch.setOnClickListener { + "状态显示页仅显示设备状态,不可控制设备".show(requireContext()) + } + deviceStatusSwitch.setOnClickListener { + "状态显示页仅显示设备状态,不可控制设备".show(requireContext()) + } } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt index 08b0d19..11c40dc 100644 --- a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt +++ b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt @@ -1,5 +1,6 @@ package com.casic.br.view +import android.util.Log import android.view.View import com.casic.br.R import com.casic.br.extensions.initLayoutImmersionBar @@ -23,6 +24,7 @@ class ResetDeviceActivity : KotlinBaseActivity() { + private val kTag = "ResetDeviceActivity" private lateinit var params: ArrayList override fun initLayoutView(): Int = R.layout.activity_reset_device @@ -53,6 +55,7 @@ TuyaHomeSdk.getActivatorInstance().getActivatorToken(homeId.toLong(), object : ITuyaActivatorGetToken { override fun onSuccess(token: String) { + Log.d(kTag, "token: $token") //调用 配网接口 需要提供路由器的 SSID(即 Wi-Fi 名称)、密码、从云端获取的 Token 等。 val builder = ActivatorBuilder().apply { this.ssid = params[0] @@ -63,6 +66,7 @@ this.token = token this.listener = object : ITuyaSmartActivatorListener { override fun onError(errorCode: String?, errorMsg: String?) { + Log.d(kTag, "errorMsg: $errorMsg") "添加设备超时".show(this@ResetDeviceActivity) LoadingDialogHub.dismiss() } @@ -73,6 +77,7 @@ } override fun onStep(step: String?, data: Any?) { + Log.d(kTag, "onStep: $step") LoadingDialogHub.dismiss() } } @@ -81,6 +86,7 @@ } override fun onFailure(s: String, s1: String) { + Log.e(kTag, "onFailure: $s") LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index c799791..63760ee 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -14,6 +14,7 @@ import com.casic.br.fragment.waterheater.ControlPageFragment import com.casic.br.fragment.waterheater.ServicePageFragment import com.casic.br.fragment.waterheater.StatusPageFragment +import com.casic.br.utils.CommandManager import com.casic.br.utils.LocaleConstant import com.google.android.material.tabs.TabLayout import com.gyf.immersionbar.ImmersionBar @@ -43,7 +44,6 @@ private val inflater by lazy { LayoutInflater.from(this) } private var fragmentPages: ArrayList = ArrayList() private lateinit var deviceInstance: ITuyaDevice - private var isWorking = false override fun initLayoutView(): Int = R.layout.activity_water_heater @@ -79,12 +79,16 @@ override fun onDpUpdate(devId: String?, dpStr: String?) { Log.d(kTag, "onDpUpdate: $dpStr") - val parseObject = JSONObject.parseObject(dpStr) - parseObject.keys.forEach { - when(it){ - } - } + val controlMsg = ControlPageFragment.weakReference.obtainMessage() + controlMsg.what = 2022092601 + controlMsg.obj = dpStr + ControlPageFragment.weakReference.sendMessage(controlMsg) + + val statusMsg = StatusPageFragment.weakReference.obtainMessage() + statusMsg.what = 2022092602 + statusMsg.obj = dpStr + StatusPageFragment.weakReference.sendMessage(statusMsg) } override fun onRemoved(devId: String?) { @@ -106,6 +110,12 @@ }) } + override fun onResume() { + super.onResume() + //每次获取焦点都查询设备的开关机状态 + CommandManager.getTuyaDp(deviceInstance, "1") + } + override fun observeRequestState() { } @@ -136,4 +146,10 @@ } }) } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_rangehood_status.xml b/app/src/main/res/layout/fragment_device_rangehood_status.xml index bed2330..1047626 100644 --- a/app/src/main/res/layout/fragment_device_rangehood_status.xml +++ b/app/src/main/res/layout/fragment_device_rangehood_status.xml @@ -12,7 +12,7 @@ android:gravity="center_vertical" android:orientation="horizontal" android:paddingHorizontal="@dimen/dp_10" - android:paddingVertical="@dimen/dp_20"> + android:paddingVertical="@dimen/dp_15"> + android:paddingVertical="@dimen/dp_15"> + android:text="@string/temperature_unit" /> + android:text="@string/temperature_unit" /> + android:text="@string/temperature_unit" /> diff --git a/app/src/main/res/layout/fragment_device_waterheater_status.xml b/app/src/main/res/layout/fragment_device_waterheater_status.xml index 8eb76fc..9838ef8 100644 --- a/app/src/main/res/layout/fragment_device_waterheater_status.xml +++ b/app/src/main/res/layout/fragment_device_waterheater_status.xml @@ -1,32 +1,265 @@ - + android:layout_height="match_parent"> + android:layout_height="match_parent" + android:orientation="vertical"> - + android:layout_marginHorizontal="@dimen/dp_20" + android:background="@drawable/bg_solid_layout_white_radius_10" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingHorizontal="@dimen/dp_10" + android:paddingVertical="@dimen/dp_15"> - + + + + + + android:layout_marginHorizontal="@dimen/dp_20" + android:layout_marginTop="@dimen/dp_10" + android:background="@drawable/bg_solid_layout_white_radius_10" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingHorizontal="@dimen/dp_10" + android:paddingVertical="@dimen/dp_15"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - \ No newline at end of file + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a3f8a63..180e301 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,6 @@ 智慧厨房 中国航天科工集团 + °C 未知 \ No newline at end of file