diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f0ca2c5..da55d0e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -44,11 +44,17 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> + + pumpSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) onPumpOpen() else onPumpClose() } + itemLink.setOnClickListener { + linkSwitch.performClick() + } + linkSwitch.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) LztekUtil.openLinkSwitch() else LztekUtil.closeLinkSwitch() + } + itemSetting.postDelayed(500) { itemSetting.requestFocus() } @@ -254,8 +262,10 @@ class HomeActivity : NoOptionsActivity() { if (builder.toString().isNotEmpty()) { mBinding.tvWarn.text = builder.toString() mBinding.tvWarn.visibility = View.VISIBLE + LztekUtil.openLinkI0() } else { mBinding.tvWarn.visibility = View.GONE + LztekUtil.closeLinkIO() } } } diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/LinkSettingActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/LinkSettingActivity.kt new file mode 100644 index 0000000..8f5acd9 --- /dev/null +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/LinkSettingActivity.kt @@ -0,0 +1,63 @@ +package com.yinuo.safetywatcher.watcher.ui + +import android.view.KeyEvent +import android.view.View +import com.yinuo.safetywatcher.databinding.ActivityLinkSettingBinding +import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity +import com.yinuo.safetywatcher.watcher.utils.LztekUtil +import com.yinuo.safetywatcher.watcher.utils.showIme +import com.yinuo.safetywatcher.watcher.utils.showToast + +class LinkSettingActivity : NoOptionsActivity() { + + private val mBinding by lazy { + ActivityLinkSettingBinding.inflate(layoutInflater) + } + + override fun generateContentView(): View { + return mBinding.root + } + + override fun initView() { + mBinding.linkDelay.setText(LztekUtil.getLinkDelay().toString()) + setListener() + } + + private fun setListener() { + mBinding.linkDelay.setOnKeyListener { _, keyCode, event -> + if (keyCode == KeyEvent.KEYCODE_DPAD_UP) { + if (event.action == KeyEvent.ACTION_DOWN) { + tryFocusBackArea() + return@setOnKeyListener true + } + } else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) { + if (event.action == KeyEvent.ACTION_DOWN) { + mBinding.tvSave.requestFocus() + return@setOnKeyListener true + } + } else if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER || keyCode == KeyEvent.KEYCODE_ENTER) { + if (event.action == KeyEvent.ACTION_DOWN) { + mBinding.linkDelay.showIme() + return@setOnKeyListener true + } + } + return@setOnKeyListener false + } + + mBinding.tvSave.setOnClickListener { + saveData() + } + } + + private fun saveData() { + val toString = mBinding.linkDelay.text.toString() + if (toString.isEmpty()) { + showToast("请输入具体数值!") + return + } + val toInt = toString.toInt() + LztekUtil.setLinkDelay(toInt) + showToast("保存成功") + finish() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SettingActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SettingActivity.kt index 7115ec1..41762b3 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SettingActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SettingActivity.kt @@ -8,6 +8,7 @@ import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.databinding.ActivitySettingBinding import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity import com.yinuo.safetywatcher.watcher.ui.view.ConfirmDialog +import com.yinuo.safetywatcher.watcher.utils.LztekUtil import com.yinuo.safetywatcher.watcher.utils.SpeedUtils class SettingActivity : NoOptionsActivity() { @@ -55,12 +56,17 @@ class SettingActivity : NoOptionsActivity() { startActivity(Intent(this@SettingActivity, SpeedSettingActivity::class.java)) } itemSpeed.visibility = if (speed == 0) View.GONE else View.VISIBLE + itemLink.setOnClickListener { + startActivity(Intent(this@SettingActivity, LinkSettingActivity::class.java)) + } + itemLink.visibility = if (!LztekUtil.isLinkSwitchOpen()) View.GONE else View.VISIBLE itemCloud.setOnClickListener { startActivity(Intent(this@SettingActivity, CloudActivity::class.java)) } itemNet.setOnClickListener { startActivity(Intent(this@SettingActivity, NetSettingActivity::class.java)) } + itemRecovery.setOnClickListener { resetFactoryDialog.show(supportFragmentManager, "resetDialog") } diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/LztekUtil.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/LztekUtil.kt index 33fd227..f15aded 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/LztekUtil.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/LztekUtil.kt @@ -1,13 +1,16 @@ package com.yinuo.safetywatcher.watcher.utils import android.os.Environment -import android.os.StatFs import com.common.commonlib.CommonApplication -import com.common.commonlib.utils.NVME_KEYWORDS +import com.common.commonlib.utils.MMKVUtils import com.common.commonlib.utils.StorageUtils import com.lztek.toolkit.Lztek import com.yinuo.safetywatcher.watcher.constant.STORAGE_WARN_THRESHOLD import com.yinuo.safetywatcher.watcher.constant.STORAGE_WARN_THRESHOLD_NVME +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch import org.easydarwin.PushHelper object LztekUtil { @@ -84,4 +87,46 @@ object LztekUtil { } return false } + + var linkOpen = false + var mLinkDelay = 5 + + fun openLinkSwitch() { + linkOpen = true + } + + fun closeLinkSwitch() { + closeLinkIO() + linkOpen = false + } + + fun isLinkSwitchOpen(): Boolean { + return linkOpen + } + + fun openLinkI0() { + if (isLinkSwitchOpen()) { + GlobalScope.launch(Dispatchers.IO) { + delay(mLinkDelay * 1000L) + GPIOUtils.setGpioValue(11, 1) + } + } + } + + fun closeLinkIO() { + if (isLinkSwitchOpen()) { + GPIOUtils.setGpioValue(11, 0) + } + } + + fun getLinkDelay(): Int { + val localValue = MMKVUtils.getInt("link_delay") + mLinkDelay = if (localValue > 0) localValue else 5 + return mLinkDelay + } + + fun setLinkDelay(delay: Int) { + mLinkDelay = delay + MMKVUtils.put("link_delay", delay) + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml index 159f2a0..2fbbdc4 100644 --- a/app/src/main/res/layout/activity_home.xml +++ b/app/src/main/res/layout/activity_home.xml @@ -7,43 +7,43 @@ android:id="@+id/surface" android:layout_width="@dimen/_1920dp" android:layout_height="@dimen/_1080dp" - android:layout_alignParentBottom="true"/> + android:layout_alignParentBottom="true" /> + android:scaleType="centerCrop" + android:src="@drawable/ic_icon" /> + android:layout_marginStart="@dimen/_12dp" + android:layout_marginTop="@dimen/_132dp" /> + android:paddingTop="@dimen/_50dp"> + android:layout_marginStart="@dimen/_13dp" + android:checked="false" /> + android:layout_marginStart="@dimen/_13dp" + android:checked="false" /> + + + + + + + @@ -183,13 +208,13 @@ android:id="@+id/tv_warn" android:layout_width="@dimen/_536dp" android:layout_height="wrap_content" - android:padding="@dimen/_12dp" + android:layout_centerHorizontal="true" + android:layout_marginTop="220px" + android:background="@drawable/sensor_init_btn_bg" android:gravity="center" android:minHeight="@dimen/_100dp" - android:layout_marginTop="220px" - android:layout_centerHorizontal="true" - android:textSize="@dimen/_30dp" - android:visibility="gone" + android:padding="@dimen/_12dp" android:textColor="@color/white" - android:background="@drawable/sensor_init_btn_bg"/> + android:textSize="@dimen/_30dp" + android:visibility="gone" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_link_setting.xml b/app/src/main/res/layout/activity_link_setting.xml new file mode 100644 index 0000000..00f5de0 --- /dev/null +++ b/app/src/main/res/layout/activity_link_setting.xml @@ -0,0 +1,42 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_setting.xml b/app/src/main/res/layout/activity_setting.xml index cbd4453..70f1268 100644 --- a/app/src/main/res/layout/activity_setting.xml +++ b/app/src/main/res/layout/activity_setting.xml @@ -201,6 +201,34 @@ android:textSize="@dimen/_36dp" /> + + + + + + + + + 1080px 120px 624px + 712px \ 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 aa876e3..fae5dff 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -94,4 +94,8 @@ 无网络连接,请稍后再试! 泵开关 + 联动开关 + + 联动开关设置 + 联动开关延时,单位:秒