diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 745c999..907b123 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -60,6 +60,7 @@ + + + + + when (message.what) { + 2022092802 -> { + val parseObject = JSONObject.parseObject(message.obj as String) + parseObject.keys.forEach { + when (it) { + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + } + } + } + } + 2022092903 -> { + val deviceBean = message.obj as DeviceBean + deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") + ipAddressView.text = deviceBean.ip + } + } + true + } + + override fun initEvent() { + + } + + override fun onResume() { + super.onResume() + wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid") + if (wifiStatusSwitch.isChecked) { + wifiLayout.visibility = View.VISIBLE + wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + } else { + wifiLayout.visibility = View.GONE + } +// deviceStateView.text = if (!isDeviceWorking) { +// "已关机" +// } else { +// "工作中" +// } + } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 745c999..907b123 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -60,6 +60,7 @@ + + when (message.what) { + 2022092802 -> { + val parseObject = JSONObject.parseObject(message.obj as String) + parseObject.keys.forEach { + when (it) { + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + } + } + } + } + 2022092903 -> { + val deviceBean = message.obj as DeviceBean + deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") + ipAddressView.text = deviceBean.ip + } + } + true + } + + override fun initEvent() { + + } + + override fun onResume() { + super.onResume() + wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid") + if (wifiStatusSwitch.isChecked) { + wifiLayout.visibility = View.VISIBLE + wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + } else { + wifiLayout.visibility = View.GONE + } +// deviceStateView.text = if (!isDeviceWorking) { +// "已关机" +// } else { +// "工作中" +// } + } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt index 23c7a55..2d1e332 100644 --- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt @@ -1,7 +1,132 @@ package com.casic.br.view.device +import android.graphics.Typeface +import android.util.Log +import android.view.LayoutInflater +import android.widget.TextView +import androidx.fragment.app.Fragment +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.cooker.ControlPageFragment +import com.casic.br.fragment.cooker.ServicePageFragment +import com.casic.br.fragment.cooker.StatusPageFragment +import com.casic.br.utils.CommandManager +import com.casic.br.utils.LocaleConstant +import com.casic.br.utils.TuyaDeviceListener +import com.google.android.material.tabs.TabLayout +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant +import com.tuya.smart.home.sdk.TuyaHomeSdk +import com.tuya.smart.sdk.api.ITuyaDevice +import kotlinx.android.synthetic.main.activity_cooker.* +import kotlinx.android.synthetic.main.include_device_title.* +import java.util.* + /** * 灶具 * */ -class CookerActivity { +class CookerActivity : KotlinBaseActivity() { + + private val kTag = "CookerActivity" + private val inflater by lazy { LayoutInflater.from(this) } + private var fragmentPages: ArrayList = ArrayList() + private lateinit var deviceInstance: ITuyaDevice + + override fun initLayoutView(): Int = R.layout.activity_cooker + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。 + deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId) + +// val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId) +// if (deviceBean == null) { +// "查询设备信息失败,请检查设备是否已离线".show(this) +// return +// } +// titleView.text = "万家乐壁挂炉" +// Glide.with(this) +// .load(deviceBean.iconUrl) +// .placeholder(R.mipmap.load_image_error) +// .into(deviceLogoView) + + fragmentPages.add(ControlPageFragment(deviceInstance, deviceId)) + fragmentPages.add(StatusPageFragment(deviceInstance)) + fragmentPages.add(ServicePageFragment()) + + deviceInstance.registerDevListener(object : TuyaDeviceListener() { + override fun onDpUpdate(devId: String?, dpStr: String?) { + Log.d(kTag, "onDpUpdate: $dpStr") + +// val controlMsg = ControlPageFragment.weakReference.obtainMessage() +// controlMsg.what = 2022092901 +// controlMsg.obj = dpStr +// ControlPageFragment.weakReference.sendMessage(controlMsg) +// +// val statusMsg = StatusPageFragment.weakReference.obtainMessage() +// statusMsg.what = 2022092902 +// statusMsg.obj = dpStr +// StatusPageFragment.weakReference.sendMessage(statusMsg) +// +// val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage() +// deviceBeanMsg.what = 2022092903 +// deviceBeanMsg.obj = deviceBean +// StatusPageFragment.weakReference.sendMessage(deviceBeanMsg) + } + }) + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, LocaleConstant.DEVICE_PAGE_TITLE, supportFragmentManager) + deviceTabLayout.setupWithViewPager(deviceViewPager) + deviceTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { + override fun onTabSelected(tab: TabLayout.Tab?) { + val textView = inflater.inflate(R.layout.item_top_tab, null) as TextView + textView.textSize = 16f + textView.typeface = Typeface.DEFAULT_BOLD + textView.text = tab!!.text + tab.customView = textView + } + + override fun onTabUnselected(tab: TabLayout.Tab?) { + tab?.customView = null + } + + override fun onTabReselected(tab: TabLayout.Tab?) { + + } + }) + } + + override fun onResume() { + super.onResume() + //每次获取焦点都查询设备的开关机状态 + CommandManager.getTuyaDp(deviceInstance, "1") + } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 745c999..907b123 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -60,6 +60,7 @@ + + when (message.what) { + 2022092802 -> { + val parseObject = JSONObject.parseObject(message.obj as String) + parseObject.keys.forEach { + when (it) { + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + } + } + } + } + 2022092903 -> { + val deviceBean = message.obj as DeviceBean + deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") + ipAddressView.text = deviceBean.ip + } + } + true + } + + override fun initEvent() { + + } + + override fun onResume() { + super.onResume() + wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid") + if (wifiStatusSwitch.isChecked) { + wifiLayout.visibility = View.VISIBLE + wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + } else { + wifiLayout.visibility = View.GONE + } +// deviceStateView.text = if (!isDeviceWorking) { +// "已关机" +// } else { +// "工作中" +// } + } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt index 23c7a55..2d1e332 100644 --- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt @@ -1,7 +1,132 @@ package com.casic.br.view.device +import android.graphics.Typeface +import android.util.Log +import android.view.LayoutInflater +import android.widget.TextView +import androidx.fragment.app.Fragment +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.cooker.ControlPageFragment +import com.casic.br.fragment.cooker.ServicePageFragment +import com.casic.br.fragment.cooker.StatusPageFragment +import com.casic.br.utils.CommandManager +import com.casic.br.utils.LocaleConstant +import com.casic.br.utils.TuyaDeviceListener +import com.google.android.material.tabs.TabLayout +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant +import com.tuya.smart.home.sdk.TuyaHomeSdk +import com.tuya.smart.sdk.api.ITuyaDevice +import kotlinx.android.synthetic.main.activity_cooker.* +import kotlinx.android.synthetic.main.include_device_title.* +import java.util.* + /** * 灶具 * */ -class CookerActivity { +class CookerActivity : KotlinBaseActivity() { + + private val kTag = "CookerActivity" + private val inflater by lazy { LayoutInflater.from(this) } + private var fragmentPages: ArrayList = ArrayList() + private lateinit var deviceInstance: ITuyaDevice + + override fun initLayoutView(): Int = R.layout.activity_cooker + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。 + deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId) + +// val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId) +// if (deviceBean == null) { +// "查询设备信息失败,请检查设备是否已离线".show(this) +// return +// } +// titleView.text = "万家乐壁挂炉" +// Glide.with(this) +// .load(deviceBean.iconUrl) +// .placeholder(R.mipmap.load_image_error) +// .into(deviceLogoView) + + fragmentPages.add(ControlPageFragment(deviceInstance, deviceId)) + fragmentPages.add(StatusPageFragment(deviceInstance)) + fragmentPages.add(ServicePageFragment()) + + deviceInstance.registerDevListener(object : TuyaDeviceListener() { + override fun onDpUpdate(devId: String?, dpStr: String?) { + Log.d(kTag, "onDpUpdate: $dpStr") + +// val controlMsg = ControlPageFragment.weakReference.obtainMessage() +// controlMsg.what = 2022092901 +// controlMsg.obj = dpStr +// ControlPageFragment.weakReference.sendMessage(controlMsg) +// +// val statusMsg = StatusPageFragment.weakReference.obtainMessage() +// statusMsg.what = 2022092902 +// statusMsg.obj = dpStr +// StatusPageFragment.weakReference.sendMessage(statusMsg) +// +// val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage() +// deviceBeanMsg.what = 2022092903 +// deviceBeanMsg.obj = deviceBean +// StatusPageFragment.weakReference.sendMessage(deviceBeanMsg) + } + }) + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, LocaleConstant.DEVICE_PAGE_TITLE, supportFragmentManager) + deviceTabLayout.setupWithViewPager(deviceViewPager) + deviceTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { + override fun onTabSelected(tab: TabLayout.Tab?) { + val textView = inflater.inflate(R.layout.item_top_tab, null) as TextView + textView.textSize = 16f + textView.typeface = Typeface.DEFAULT_BOLD + textView.text = tab!!.text + tab.customView = textView + } + + override fun onTabUnselected(tab: TabLayout.Tab?) { + tab?.customView = null + } + + override fun onTabReselected(tab: TabLayout.Tab?) { + + } + }) + } + + override fun onResume() { + super.onResume() + //每次获取焦点都查询设备的开关机状态 + CommandManager.getTuyaDp(deviceInstance, "1") + } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_cooker.xml b/app/src/main/res/layout/activity_cooker.xml new file mode 100644 index 0000000..1bd9505 --- /dev/null +++ b/app/src/main/res/layout/activity_cooker.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 745c999..907b123 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -60,6 +60,7 @@ + + when (message.what) { + 2022092802 -> { + val parseObject = JSONObject.parseObject(message.obj as String) + parseObject.keys.forEach { + when (it) { + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + } + } + } + } + 2022092903 -> { + val deviceBean = message.obj as DeviceBean + deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") + ipAddressView.text = deviceBean.ip + } + } + true + } + + override fun initEvent() { + + } + + override fun onResume() { + super.onResume() + wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid") + if (wifiStatusSwitch.isChecked) { + wifiLayout.visibility = View.VISIBLE + wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + } else { + wifiLayout.visibility = View.GONE + } +// deviceStateView.text = if (!isDeviceWorking) { +// "已关机" +// } else { +// "工作中" +// } + } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt index 23c7a55..2d1e332 100644 --- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt @@ -1,7 +1,132 @@ package com.casic.br.view.device +import android.graphics.Typeface +import android.util.Log +import android.view.LayoutInflater +import android.widget.TextView +import androidx.fragment.app.Fragment +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.cooker.ControlPageFragment +import com.casic.br.fragment.cooker.ServicePageFragment +import com.casic.br.fragment.cooker.StatusPageFragment +import com.casic.br.utils.CommandManager +import com.casic.br.utils.LocaleConstant +import com.casic.br.utils.TuyaDeviceListener +import com.google.android.material.tabs.TabLayout +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant +import com.tuya.smart.home.sdk.TuyaHomeSdk +import com.tuya.smart.sdk.api.ITuyaDevice +import kotlinx.android.synthetic.main.activity_cooker.* +import kotlinx.android.synthetic.main.include_device_title.* +import java.util.* + /** * 灶具 * */ -class CookerActivity { +class CookerActivity : KotlinBaseActivity() { + + private val kTag = "CookerActivity" + private val inflater by lazy { LayoutInflater.from(this) } + private var fragmentPages: ArrayList = ArrayList() + private lateinit var deviceInstance: ITuyaDevice + + override fun initLayoutView(): Int = R.layout.activity_cooker + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。 + deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId) + +// val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId) +// if (deviceBean == null) { +// "查询设备信息失败,请检查设备是否已离线".show(this) +// return +// } +// titleView.text = "万家乐壁挂炉" +// Glide.with(this) +// .load(deviceBean.iconUrl) +// .placeholder(R.mipmap.load_image_error) +// .into(deviceLogoView) + + fragmentPages.add(ControlPageFragment(deviceInstance, deviceId)) + fragmentPages.add(StatusPageFragment(deviceInstance)) + fragmentPages.add(ServicePageFragment()) + + deviceInstance.registerDevListener(object : TuyaDeviceListener() { + override fun onDpUpdate(devId: String?, dpStr: String?) { + Log.d(kTag, "onDpUpdate: $dpStr") + +// val controlMsg = ControlPageFragment.weakReference.obtainMessage() +// controlMsg.what = 2022092901 +// controlMsg.obj = dpStr +// ControlPageFragment.weakReference.sendMessage(controlMsg) +// +// val statusMsg = StatusPageFragment.weakReference.obtainMessage() +// statusMsg.what = 2022092902 +// statusMsg.obj = dpStr +// StatusPageFragment.weakReference.sendMessage(statusMsg) +// +// val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage() +// deviceBeanMsg.what = 2022092903 +// deviceBeanMsg.obj = deviceBean +// StatusPageFragment.weakReference.sendMessage(deviceBeanMsg) + } + }) + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, LocaleConstant.DEVICE_PAGE_TITLE, supportFragmentManager) + deviceTabLayout.setupWithViewPager(deviceViewPager) + deviceTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { + override fun onTabSelected(tab: TabLayout.Tab?) { + val textView = inflater.inflate(R.layout.item_top_tab, null) as TextView + textView.textSize = 16f + textView.typeface = Typeface.DEFAULT_BOLD + textView.text = tab!!.text + tab.customView = textView + } + + override fun onTabUnselected(tab: TabLayout.Tab?) { + tab?.customView = null + } + + override fun onTabReselected(tab: TabLayout.Tab?) { + + } + }) + } + + override fun onResume() { + super.onResume() + //每次获取焦点都查询设备的开关机状态 + CommandManager.getTuyaDp(deviceInstance, "1") + } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_cooker.xml b/app/src/main/res/layout/activity_cooker.xml new file mode 100644 index 0000000..1bd9505 --- /dev/null +++ b/app/src/main/res/layout/activity_cooker.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_fire_place.xml b/app/src/main/res/layout/activity_fire_place.xml index 1bd9505..c255b3c 100644 --- a/app/src/main/res/layout/activity_fire_place.xml +++ b/app/src/main/res/layout/activity_fire_place.xml @@ -18,8 +18,7 @@ + android:layout_height="wrap_content" /> + + when (message.what) { + 2022092802 -> { + val parseObject = JSONObject.parseObject(message.obj as String) + parseObject.keys.forEach { + when (it) { + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + } + } + } + } + 2022092903 -> { + val deviceBean = message.obj as DeviceBean + deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") + ipAddressView.text = deviceBean.ip + } + } + true + } + + override fun initEvent() { + + } + + override fun onResume() { + super.onResume() + wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid") + if (wifiStatusSwitch.isChecked) { + wifiLayout.visibility = View.VISIBLE + wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + } else { + wifiLayout.visibility = View.GONE + } +// deviceStateView.text = if (!isDeviceWorking) { +// "已关机" +// } else { +// "工作中" +// } + } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt index 23c7a55..2d1e332 100644 --- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt @@ -1,7 +1,132 @@ package com.casic.br.view.device +import android.graphics.Typeface +import android.util.Log +import android.view.LayoutInflater +import android.widget.TextView +import androidx.fragment.app.Fragment +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.cooker.ControlPageFragment +import com.casic.br.fragment.cooker.ServicePageFragment +import com.casic.br.fragment.cooker.StatusPageFragment +import com.casic.br.utils.CommandManager +import com.casic.br.utils.LocaleConstant +import com.casic.br.utils.TuyaDeviceListener +import com.google.android.material.tabs.TabLayout +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant +import com.tuya.smart.home.sdk.TuyaHomeSdk +import com.tuya.smart.sdk.api.ITuyaDevice +import kotlinx.android.synthetic.main.activity_cooker.* +import kotlinx.android.synthetic.main.include_device_title.* +import java.util.* + /** * 灶具 * */ -class CookerActivity { +class CookerActivity : KotlinBaseActivity() { + + private val kTag = "CookerActivity" + private val inflater by lazy { LayoutInflater.from(this) } + private var fragmentPages: ArrayList = ArrayList() + private lateinit var deviceInstance: ITuyaDevice + + override fun initLayoutView(): Int = R.layout.activity_cooker + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。 + deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId) + +// val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId) +// if (deviceBean == null) { +// "查询设备信息失败,请检查设备是否已离线".show(this) +// return +// } +// titleView.text = "万家乐壁挂炉" +// Glide.with(this) +// .load(deviceBean.iconUrl) +// .placeholder(R.mipmap.load_image_error) +// .into(deviceLogoView) + + fragmentPages.add(ControlPageFragment(deviceInstance, deviceId)) + fragmentPages.add(StatusPageFragment(deviceInstance)) + fragmentPages.add(ServicePageFragment()) + + deviceInstance.registerDevListener(object : TuyaDeviceListener() { + override fun onDpUpdate(devId: String?, dpStr: String?) { + Log.d(kTag, "onDpUpdate: $dpStr") + +// val controlMsg = ControlPageFragment.weakReference.obtainMessage() +// controlMsg.what = 2022092901 +// controlMsg.obj = dpStr +// ControlPageFragment.weakReference.sendMessage(controlMsg) +// +// val statusMsg = StatusPageFragment.weakReference.obtainMessage() +// statusMsg.what = 2022092902 +// statusMsg.obj = dpStr +// StatusPageFragment.weakReference.sendMessage(statusMsg) +// +// val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage() +// deviceBeanMsg.what = 2022092903 +// deviceBeanMsg.obj = deviceBean +// StatusPageFragment.weakReference.sendMessage(deviceBeanMsg) + } + }) + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, LocaleConstant.DEVICE_PAGE_TITLE, supportFragmentManager) + deviceTabLayout.setupWithViewPager(deviceViewPager) + deviceTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { + override fun onTabSelected(tab: TabLayout.Tab?) { + val textView = inflater.inflate(R.layout.item_top_tab, null) as TextView + textView.textSize = 16f + textView.typeface = Typeface.DEFAULT_BOLD + textView.text = tab!!.text + tab.customView = textView + } + + override fun onTabUnselected(tab: TabLayout.Tab?) { + tab?.customView = null + } + + override fun onTabReselected(tab: TabLayout.Tab?) { + + } + }) + } + + override fun onResume() { + super.onResume() + //每次获取焦点都查询设备的开关机状态 + CommandManager.getTuyaDp(deviceInstance, "1") + } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_cooker.xml b/app/src/main/res/layout/activity_cooker.xml new file mode 100644 index 0000000..1bd9505 --- /dev/null +++ b/app/src/main/res/layout/activity_cooker.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_fire_place.xml b/app/src/main/res/layout/activity_fire_place.xml index 1bd9505..c255b3c 100644 --- a/app/src/main/res/layout/activity_fire_place.xml +++ b/app/src/main/res/layout/activity_fire_place.xml @@ -18,8 +18,7 @@ + android:layout_height="wrap_content" /> + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 745c999..907b123 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -60,6 +60,7 @@ + + when (message.what) { + 2022092802 -> { + val parseObject = JSONObject.parseObject(message.obj as String) + parseObject.keys.forEach { + when (it) { + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + } + } + } + } + 2022092903 -> { + val deviceBean = message.obj as DeviceBean + deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") + ipAddressView.text = deviceBean.ip + } + } + true + } + + override fun initEvent() { + + } + + override fun onResume() { + super.onResume() + wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid") + if (wifiStatusSwitch.isChecked) { + wifiLayout.visibility = View.VISIBLE + wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + } else { + wifiLayout.visibility = View.GONE + } +// deviceStateView.text = if (!isDeviceWorking) { +// "已关机" +// } else { +// "工作中" +// } + } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt index 23c7a55..2d1e332 100644 --- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt @@ -1,7 +1,132 @@ package com.casic.br.view.device +import android.graphics.Typeface +import android.util.Log +import android.view.LayoutInflater +import android.widget.TextView +import androidx.fragment.app.Fragment +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.cooker.ControlPageFragment +import com.casic.br.fragment.cooker.ServicePageFragment +import com.casic.br.fragment.cooker.StatusPageFragment +import com.casic.br.utils.CommandManager +import com.casic.br.utils.LocaleConstant +import com.casic.br.utils.TuyaDeviceListener +import com.google.android.material.tabs.TabLayout +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant +import com.tuya.smart.home.sdk.TuyaHomeSdk +import com.tuya.smart.sdk.api.ITuyaDevice +import kotlinx.android.synthetic.main.activity_cooker.* +import kotlinx.android.synthetic.main.include_device_title.* +import java.util.* + /** * 灶具 * */ -class CookerActivity { +class CookerActivity : KotlinBaseActivity() { + + private val kTag = "CookerActivity" + private val inflater by lazy { LayoutInflater.from(this) } + private var fragmentPages: ArrayList = ArrayList() + private lateinit var deviceInstance: ITuyaDevice + + override fun initLayoutView(): Int = R.layout.activity_cooker + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。 + deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId) + +// val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId) +// if (deviceBean == null) { +// "查询设备信息失败,请检查设备是否已离线".show(this) +// return +// } +// titleView.text = "万家乐壁挂炉" +// Glide.with(this) +// .load(deviceBean.iconUrl) +// .placeholder(R.mipmap.load_image_error) +// .into(deviceLogoView) + + fragmentPages.add(ControlPageFragment(deviceInstance, deviceId)) + fragmentPages.add(StatusPageFragment(deviceInstance)) + fragmentPages.add(ServicePageFragment()) + + deviceInstance.registerDevListener(object : TuyaDeviceListener() { + override fun onDpUpdate(devId: String?, dpStr: String?) { + Log.d(kTag, "onDpUpdate: $dpStr") + +// val controlMsg = ControlPageFragment.weakReference.obtainMessage() +// controlMsg.what = 2022092901 +// controlMsg.obj = dpStr +// ControlPageFragment.weakReference.sendMessage(controlMsg) +// +// val statusMsg = StatusPageFragment.weakReference.obtainMessage() +// statusMsg.what = 2022092902 +// statusMsg.obj = dpStr +// StatusPageFragment.weakReference.sendMessage(statusMsg) +// +// val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage() +// deviceBeanMsg.what = 2022092903 +// deviceBeanMsg.obj = deviceBean +// StatusPageFragment.weakReference.sendMessage(deviceBeanMsg) + } + }) + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, LocaleConstant.DEVICE_PAGE_TITLE, supportFragmentManager) + deviceTabLayout.setupWithViewPager(deviceViewPager) + deviceTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { + override fun onTabSelected(tab: TabLayout.Tab?) { + val textView = inflater.inflate(R.layout.item_top_tab, null) as TextView + textView.textSize = 16f + textView.typeface = Typeface.DEFAULT_BOLD + textView.text = tab!!.text + tab.customView = textView + } + + override fun onTabUnselected(tab: TabLayout.Tab?) { + tab?.customView = null + } + + override fun onTabReselected(tab: TabLayout.Tab?) { + + } + }) + } + + override fun onResume() { + super.onResume() + //每次获取焦点都查询设备的开关机状态 + CommandManager.getTuyaDp(deviceInstance, "1") + } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_cooker.xml b/app/src/main/res/layout/activity_cooker.xml new file mode 100644 index 0000000..1bd9505 --- /dev/null +++ b/app/src/main/res/layout/activity_cooker.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_fire_place.xml b/app/src/main/res/layout/activity_fire_place.xml index 1bd9505..c255b3c 100644 --- a/app/src/main/res/layout/activity_fire_place.xml +++ b/app/src/main/res/layout/activity_fire_place.xml @@ -18,8 +18,7 @@ + android:layout_height="wrap_content" /> + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_cooker_service.xml b/app/src/main/res/layout/fragment_device_cooker_service.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_cooker_service.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 745c999..907b123 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -60,6 +60,7 @@ + + when (message.what) { + 2022092802 -> { + val parseObject = JSONObject.parseObject(message.obj as String) + parseObject.keys.forEach { + when (it) { + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + } + } + } + } + 2022092903 -> { + val deviceBean = message.obj as DeviceBean + deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") + ipAddressView.text = deviceBean.ip + } + } + true + } + + override fun initEvent() { + + } + + override fun onResume() { + super.onResume() + wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid") + if (wifiStatusSwitch.isChecked) { + wifiLayout.visibility = View.VISIBLE + wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + } else { + wifiLayout.visibility = View.GONE + } +// deviceStateView.text = if (!isDeviceWorking) { +// "已关机" +// } else { +// "工作中" +// } + } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt index 23c7a55..2d1e332 100644 --- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt @@ -1,7 +1,132 @@ package com.casic.br.view.device +import android.graphics.Typeface +import android.util.Log +import android.view.LayoutInflater +import android.widget.TextView +import androidx.fragment.app.Fragment +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.cooker.ControlPageFragment +import com.casic.br.fragment.cooker.ServicePageFragment +import com.casic.br.fragment.cooker.StatusPageFragment +import com.casic.br.utils.CommandManager +import com.casic.br.utils.LocaleConstant +import com.casic.br.utils.TuyaDeviceListener +import com.google.android.material.tabs.TabLayout +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant +import com.tuya.smart.home.sdk.TuyaHomeSdk +import com.tuya.smart.sdk.api.ITuyaDevice +import kotlinx.android.synthetic.main.activity_cooker.* +import kotlinx.android.synthetic.main.include_device_title.* +import java.util.* + /** * 灶具 * */ -class CookerActivity { +class CookerActivity : KotlinBaseActivity() { + + private val kTag = "CookerActivity" + private val inflater by lazy { LayoutInflater.from(this) } + private var fragmentPages: ArrayList = ArrayList() + private lateinit var deviceInstance: ITuyaDevice + + override fun initLayoutView(): Int = R.layout.activity_cooker + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。 + deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId) + +// val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId) +// if (deviceBean == null) { +// "查询设备信息失败,请检查设备是否已离线".show(this) +// return +// } +// titleView.text = "万家乐壁挂炉" +// Glide.with(this) +// .load(deviceBean.iconUrl) +// .placeholder(R.mipmap.load_image_error) +// .into(deviceLogoView) + + fragmentPages.add(ControlPageFragment(deviceInstance, deviceId)) + fragmentPages.add(StatusPageFragment(deviceInstance)) + fragmentPages.add(ServicePageFragment()) + + deviceInstance.registerDevListener(object : TuyaDeviceListener() { + override fun onDpUpdate(devId: String?, dpStr: String?) { + Log.d(kTag, "onDpUpdate: $dpStr") + +// val controlMsg = ControlPageFragment.weakReference.obtainMessage() +// controlMsg.what = 2022092901 +// controlMsg.obj = dpStr +// ControlPageFragment.weakReference.sendMessage(controlMsg) +// +// val statusMsg = StatusPageFragment.weakReference.obtainMessage() +// statusMsg.what = 2022092902 +// statusMsg.obj = dpStr +// StatusPageFragment.weakReference.sendMessage(statusMsg) +// +// val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage() +// deviceBeanMsg.what = 2022092903 +// deviceBeanMsg.obj = deviceBean +// StatusPageFragment.weakReference.sendMessage(deviceBeanMsg) + } + }) + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, LocaleConstant.DEVICE_PAGE_TITLE, supportFragmentManager) + deviceTabLayout.setupWithViewPager(deviceViewPager) + deviceTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { + override fun onTabSelected(tab: TabLayout.Tab?) { + val textView = inflater.inflate(R.layout.item_top_tab, null) as TextView + textView.textSize = 16f + textView.typeface = Typeface.DEFAULT_BOLD + textView.text = tab!!.text + tab.customView = textView + } + + override fun onTabUnselected(tab: TabLayout.Tab?) { + tab?.customView = null + } + + override fun onTabReselected(tab: TabLayout.Tab?) { + + } + }) + } + + override fun onResume() { + super.onResume() + //每次获取焦点都查询设备的开关机状态 + CommandManager.getTuyaDp(deviceInstance, "1") + } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_cooker.xml b/app/src/main/res/layout/activity_cooker.xml new file mode 100644 index 0000000..1bd9505 --- /dev/null +++ b/app/src/main/res/layout/activity_cooker.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_fire_place.xml b/app/src/main/res/layout/activity_fire_place.xml index 1bd9505..c255b3c 100644 --- a/app/src/main/res/layout/activity_fire_place.xml +++ b/app/src/main/res/layout/activity_fire_place.xml @@ -18,8 +18,7 @@ + android:layout_height="wrap_content" /> + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_cooker_service.xml b/app/src/main/res/layout/fragment_device_cooker_service.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_cooker_service.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_cooker_status.xml b/app/src/main/res/layout/fragment_device_cooker_status.xml new file mode 100644 index 0000000..d289627 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_cooker_status.xml @@ -0,0 +1,249 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 745c999..907b123 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -60,6 +60,7 @@ + + when (message.what) { + 2022092802 -> { + val parseObject = JSONObject.parseObject(message.obj as String) + parseObject.keys.forEach { + when (it) { + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + } + } + } + } + 2022092903 -> { + val deviceBean = message.obj as DeviceBean + deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") + ipAddressView.text = deviceBean.ip + } + } + true + } + + override fun initEvent() { + + } + + override fun onResume() { + super.onResume() + wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid") + if (wifiStatusSwitch.isChecked) { + wifiLayout.visibility = View.VISIBLE + wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + } else { + wifiLayout.visibility = View.GONE + } +// deviceStateView.text = if (!isDeviceWorking) { +// "已关机" +// } else { +// "工作中" +// } + } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt index 23c7a55..2d1e332 100644 --- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt @@ -1,7 +1,132 @@ package com.casic.br.view.device +import android.graphics.Typeface +import android.util.Log +import android.view.LayoutInflater +import android.widget.TextView +import androidx.fragment.app.Fragment +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.cooker.ControlPageFragment +import com.casic.br.fragment.cooker.ServicePageFragment +import com.casic.br.fragment.cooker.StatusPageFragment +import com.casic.br.utils.CommandManager +import com.casic.br.utils.LocaleConstant +import com.casic.br.utils.TuyaDeviceListener +import com.google.android.material.tabs.TabLayout +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant +import com.tuya.smart.home.sdk.TuyaHomeSdk +import com.tuya.smart.sdk.api.ITuyaDevice +import kotlinx.android.synthetic.main.activity_cooker.* +import kotlinx.android.synthetic.main.include_device_title.* +import java.util.* + /** * 灶具 * */ -class CookerActivity { +class CookerActivity : KotlinBaseActivity() { + + private val kTag = "CookerActivity" + private val inflater by lazy { LayoutInflater.from(this) } + private var fragmentPages: ArrayList = ArrayList() + private lateinit var deviceInstance: ITuyaDevice + + override fun initLayoutView(): Int = R.layout.activity_cooker + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。 + deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId) + +// val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId) +// if (deviceBean == null) { +// "查询设备信息失败,请检查设备是否已离线".show(this) +// return +// } +// titleView.text = "万家乐壁挂炉" +// Glide.with(this) +// .load(deviceBean.iconUrl) +// .placeholder(R.mipmap.load_image_error) +// .into(deviceLogoView) + + fragmentPages.add(ControlPageFragment(deviceInstance, deviceId)) + fragmentPages.add(StatusPageFragment(deviceInstance)) + fragmentPages.add(ServicePageFragment()) + + deviceInstance.registerDevListener(object : TuyaDeviceListener() { + override fun onDpUpdate(devId: String?, dpStr: String?) { + Log.d(kTag, "onDpUpdate: $dpStr") + +// val controlMsg = ControlPageFragment.weakReference.obtainMessage() +// controlMsg.what = 2022092901 +// controlMsg.obj = dpStr +// ControlPageFragment.weakReference.sendMessage(controlMsg) +// +// val statusMsg = StatusPageFragment.weakReference.obtainMessage() +// statusMsg.what = 2022092902 +// statusMsg.obj = dpStr +// StatusPageFragment.weakReference.sendMessage(statusMsg) +// +// val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage() +// deviceBeanMsg.what = 2022092903 +// deviceBeanMsg.obj = deviceBean +// StatusPageFragment.weakReference.sendMessage(deviceBeanMsg) + } + }) + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, LocaleConstant.DEVICE_PAGE_TITLE, supportFragmentManager) + deviceTabLayout.setupWithViewPager(deviceViewPager) + deviceTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { + override fun onTabSelected(tab: TabLayout.Tab?) { + val textView = inflater.inflate(R.layout.item_top_tab, null) as TextView + textView.textSize = 16f + textView.typeface = Typeface.DEFAULT_BOLD + textView.text = tab!!.text + tab.customView = textView + } + + override fun onTabUnselected(tab: TabLayout.Tab?) { + tab?.customView = null + } + + override fun onTabReselected(tab: TabLayout.Tab?) { + + } + }) + } + + override fun onResume() { + super.onResume() + //每次获取焦点都查询设备的开关机状态 + CommandManager.getTuyaDp(deviceInstance, "1") + } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_cooker.xml b/app/src/main/res/layout/activity_cooker.xml new file mode 100644 index 0000000..1bd9505 --- /dev/null +++ b/app/src/main/res/layout/activity_cooker.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_fire_place.xml b/app/src/main/res/layout/activity_fire_place.xml index 1bd9505..c255b3c 100644 --- a/app/src/main/res/layout/activity_fire_place.xml +++ b/app/src/main/res/layout/activity_fire_place.xml @@ -18,8 +18,7 @@ + android:layout_height="wrap_content" /> + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_cooker_service.xml b/app/src/main/res/layout/fragment_device_cooker_service.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_cooker_service.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_cooker_status.xml b/app/src/main/res/layout/fragment_device_cooker_status.xml new file mode 100644 index 0000000..d289627 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_cooker_status.xml @@ -0,0 +1,249 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_fireplace_status.xml b/app/src/main/res/layout/fragment_device_fireplace_status.xml index 0b501a8..bec43db 100644 --- a/app/src/main/res/layout/fragment_device_fireplace_status.xml +++ b/app/src/main/res/layout/fragment_device_fireplace_status.xml @@ -336,7 +336,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/dp_20" - android:layout_marginTop="@dimen/dp_10" + android:layout_marginVertical="@dimen/dp_10" android:background="@drawable/bg_solid_layout_white_radius_10" android:gravity="center_vertical" android:orientation="horizontal" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 745c999..907b123 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -60,6 +60,7 @@ + + when (message.what) { + 2022092802 -> { + val parseObject = JSONObject.parseObject(message.obj as String) + parseObject.keys.forEach { + when (it) { + "1" -> {//开关机 + isDeviceWorking = parseObject[it] as Boolean + } + } + } + } + 2022092903 -> { + val deviceBean = message.obj as DeviceBean + deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天") + ipAddressView.text = deviceBean.ip + } + } + true + } + + override fun initEvent() { + + } + + override fun onResume() { + super.onResume() + wifiStatusSwitch.isChecked = !wifi.connectionInfo.ssid.contains("unknown ssid") + if (wifiStatusSwitch.isChecked) { + wifiLayout.visibility = View.VISIBLE + wifiNameView.text = wifi.connectionInfo.ssid.replace("\"", "") + } else { + wifiLayout.visibility = View.GONE + } +// deviceStateView.text = if (!isDeviceWorking) { +// "已关机" +// } else { +// "工作中" +// } + } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt index 23c7a55..2d1e332 100644 --- a/app/src/main/java/com/casic/br/view/device/CookerActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/CookerActivity.kt @@ -1,7 +1,132 @@ package com.casic.br.view.device +import android.graphics.Typeface +import android.util.Log +import android.view.LayoutInflater +import android.widget.TextView +import androidx.fragment.app.Fragment +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.cooker.ControlPageFragment +import com.casic.br.fragment.cooker.ServicePageFragment +import com.casic.br.fragment.cooker.StatusPageFragment +import com.casic.br.utils.CommandManager +import com.casic.br.utils.LocaleConstant +import com.casic.br.utils.TuyaDeviceListener +import com.google.android.material.tabs.TabLayout +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant +import com.tuya.smart.home.sdk.TuyaHomeSdk +import com.tuya.smart.sdk.api.ITuyaDevice +import kotlinx.android.synthetic.main.activity_cooker.* +import kotlinx.android.synthetic.main.include_device_title.* +import java.util.* + /** * 灶具 * */ -class CookerActivity { +class CookerActivity : KotlinBaseActivity() { + + private val kTag = "CookerActivity" + private val inflater by lazy { LayoutInflater.from(this) } + private var fragmentPages: ArrayList = ArrayList() + private lateinit var deviceInstance: ITuyaDevice + + override fun initLayoutView(): Int = R.layout.activity_cooker + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //控制设备前必须初始家庭化数据,每次 App 活跃期间,初始化一次即可。 + deviceInstance = TuyaHomeSdk.newDeviceInstance(deviceId) + +// val deviceBean = TuyaHomeSdk.getDataInstance().getDeviceBean(deviceId) +// if (deviceBean == null) { +// "查询设备信息失败,请检查设备是否已离线".show(this) +// return +// } +// titleView.text = "万家乐壁挂炉" +// Glide.with(this) +// .load(deviceBean.iconUrl) +// .placeholder(R.mipmap.load_image_error) +// .into(deviceLogoView) + + fragmentPages.add(ControlPageFragment(deviceInstance, deviceId)) + fragmentPages.add(StatusPageFragment(deviceInstance)) + fragmentPages.add(ServicePageFragment()) + + deviceInstance.registerDevListener(object : TuyaDeviceListener() { + override fun onDpUpdate(devId: String?, dpStr: String?) { + Log.d(kTag, "onDpUpdate: $dpStr") + +// val controlMsg = ControlPageFragment.weakReference.obtainMessage() +// controlMsg.what = 2022092901 +// controlMsg.obj = dpStr +// ControlPageFragment.weakReference.sendMessage(controlMsg) +// +// val statusMsg = StatusPageFragment.weakReference.obtainMessage() +// statusMsg.what = 2022092902 +// statusMsg.obj = dpStr +// StatusPageFragment.weakReference.sendMessage(statusMsg) +// +// val deviceBeanMsg = StatusPageFragment.weakReference.obtainMessage() +// deviceBeanMsg.what = 2022092903 +// deviceBeanMsg.obj = deviceBean +// StatusPageFragment.weakReference.sendMessage(deviceBeanMsg) + } + }) + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, LocaleConstant.DEVICE_PAGE_TITLE, supportFragmentManager) + deviceTabLayout.setupWithViewPager(deviceViewPager) + deviceTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { + override fun onTabSelected(tab: TabLayout.Tab?) { + val textView = inflater.inflate(R.layout.item_top_tab, null) as TextView + textView.textSize = 16f + textView.typeface = Typeface.DEFAULT_BOLD + textView.text = tab!!.text + tab.customView = textView + } + + override fun onTabUnselected(tab: TabLayout.Tab?) { + tab?.customView = null + } + + override fun onTabReselected(tab: TabLayout.Tab?) { + + } + }) + } + + override fun onResume() { + super.onResume() + //每次获取焦点都查询设备的开关机状态 + CommandManager.getTuyaDp(deviceInstance, "1") + } + + override fun onDestroy() { + super.onDestroy() + deviceInstance.unRegisterDevListener() + deviceInstance.onDestroy() + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_cooker.xml b/app/src/main/res/layout/activity_cooker.xml new file mode 100644 index 0000000..1bd9505 --- /dev/null +++ b/app/src/main/res/layout/activity_cooker.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_fire_place.xml b/app/src/main/res/layout/activity_fire_place.xml index 1bd9505..c255b3c 100644 --- a/app/src/main/res/layout/activity_fire_place.xml +++ b/app/src/main/res/layout/activity_fire_place.xml @@ -18,8 +18,7 @@ + android:layout_height="wrap_content" /> + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_cooker_service.xml b/app/src/main/res/layout/fragment_device_cooker_service.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_cooker_service.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_cooker_status.xml b/app/src/main/res/layout/fragment_device_cooker_status.xml new file mode 100644 index 0000000..d289627 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_cooker_status.xml @@ -0,0 +1,249 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_fireplace_status.xml b/app/src/main/res/layout/fragment_device_fireplace_status.xml index 0b501a8..bec43db 100644 --- a/app/src/main/res/layout/fragment_device_fireplace_status.xml +++ b/app/src/main/res/layout/fragment_device_fireplace_status.xml @@ -336,7 +336,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/dp_20" - android:layout_marginTop="@dimen/dp_10" + android:layout_marginVertical="@dimen/dp_10" android:background="@drawable/bg_solid_layout_white_radius_10" android:gravity="center_vertical" android:orientation="horizontal" diff --git a/app/src/main/res/layout/fragment_device_rangehood_status.xml b/app/src/main/res/layout/fragment_device_rangehood_status.xml index 2fd8f15..7ae6579 100644 --- a/app/src/main/res/layout/fragment_device_rangehood_status.xml +++ b/app/src/main/res/layout/fragment_device_rangehood_status.xml @@ -224,7 +224,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/dp_20" - android:layout_marginTop="@dimen/dp_10" + android:layout_marginVertical="@dimen/dp_10" android:background="@drawable/bg_solid_layout_white_radius_10" android:gravity="center_vertical" android:orientation="horizontal"