diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasUtilss.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasUtilss.kt index 51df161..595d69e 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasUtilss.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasUtilss.kt @@ -4,6 +4,7 @@ import android.content.Context import com.common.commonlib.db.entity.Warning import com.common.commonlib.utils.MMKVUtils import com.common.commonlib.utils.forShowStr +import com.common.commonlib.utils.getGasShowName import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.watcher.port.cmd.CH4_H2 import com.yinuo.safetywatcher.watcher.port.cmd.CL2 @@ -222,22 +223,22 @@ fun getShowWarnTxt(warn: Warning?): String { warn?.let { if (O2 == it.gasName) { return if (it.overRange) { - "请注意,${it.gasName}浓度过高,已超过传感器量程" + "请注意,${it.gasName.getGasShowName()}浓度过高,已超过传感器量程" } else { if (it.gasValue < it.thresholdLow) { - "请注意,${it.gasName}浓度过低:${it.gasValue.forShowStr()} ${it.unit},有缺氧风险" + "请注意,${it.gasName.getGasShowName()}浓度过低:${it.gasValue.forShowStr()} ${it.unit},有缺氧风险" } else { - "请注意,${it.gasName}浓度过高:${it.gasValue.forShowStr()} ${it.unit},有醉氧风险" + "请注意,${it.gasName.getGasShowName()}浓度过高:${it.gasValue.forShowStr()} ${it.unit},有醉氧风险" } } } else { return if (it.overRange) { - "请注意,${it.gasName}浓度过高,已超过传感器量程" + "请注意,${it.gasName.getGasShowName()}浓度过高,已超过传感器量程" } else { if (it.gasValue > it.thresholdHigh) { - "请注意,${it.gasName}气体浓度:${it.gasValue.forShowStr()} ${it.unit}超过高报值${it.thresholdHigh.forShowStr()} ${it.unit}" + "请注意,${it.gasName.getGasShowName()}气体浓度:${it.gasValue.forShowStr()} ${it.unit}超过高报值${it.thresholdHigh.forShowStr()} ${it.unit}" } else { - "请注意,${it.gasName}气体浓度:${it.gasValue.forShowStr()} ${it.unit}超过低报值${it.thresholdLow.forShowStr()} ${it.unit}" + "请注意,${it.gasName.getGasShowName()}气体浓度:${it.gasValue.forShowStr()} ${it.unit}超过低报值${it.thresholdLow.forShowStr()} ${it.unit}" } } } diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/ChooseParamsActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/ChooseParamsActivity.kt index a2c8e7b..1ab9059 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/ChooseParamsActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/ChooseParamsActivity.kt @@ -142,10 +142,10 @@ class ChooseParamsActivity : NoOptionsActivity() { showToast(getString(R.string.error_interval_tip)) return } - if (endTime - startTime > MAX_QUERY_TIME_INTERVAL) { - showToast(getString(R.string.over_max_interval_tip)) - return - } +// if (endTime - startTime > MAX_QUERY_TIME_INTERVAL) { +// showToast(getString(R.string.over_max_interval_tip)) +// return +// } val timeStep = when (mBinding.rgTimeStep.checkedRadioButtonId) { mBinding.rbS30.id -> TimeStep.SECOND_30 diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorCalibrationActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorCalibrationActivity.kt index c54dcef..f210730 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorCalibrationActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorCalibrationActivity.kt @@ -1,5 +1,7 @@ package com.yinuo.safetywatcher.watcher.ui +import android.os.Handler +import android.os.Looper import android.text.TextUtils import android.view.KeyEvent import android.view.View @@ -30,12 +32,21 @@ class SensorCalibrationActivity : NoOptionsActivity() { return mBinding.root } + private val mHandler by lazy { + Handler(Looper.getMainLooper()) + } + private var sensorIndex = -1 + private val outTimeRunnable: Runnable = Runnable { + showToast(getString(R.string.calibration_outtime_txt)) + } + private val calibrationResultReceiver: (ByteArray) -> Unit = { val startByte = it[0] val sensorIndex = it[1] if (startByte == 0xFF.toByte() && sensorIndex == this.sensorIndex.toByte()) { + mHandler.removeCallbacks(outTimeRunnable) val result = it[5] if (result == 0x00.toByte()) { showToast(getString(R.string.calibration_success_txt)) @@ -90,6 +101,7 @@ class SensorCalibrationActivity : NoOptionsActivity() { mBinding.tvSave.setOnClickListener { if (isZero) { GasPortUtils.calibrationSensor(sensorIndex, 0) + mHandler.postDelayed(outTimeRunnable, 3000) } else { val text = mBinding.etName.text.toString() if (TextUtils.isEmpty(text)) { @@ -100,6 +112,7 @@ class SensorCalibrationActivity : NoOptionsActivity() { val toInt = text.toInt() MMKVUtils.put("${gasName}_Calibration", toInt) GasPortUtils.calibrationSensor(sensorIndex, toInt) + mHandler.postDelayed(outTimeRunnable, 3000) } } } @@ -108,7 +121,8 @@ class SensorCalibrationActivity : NoOptionsActivity() { lifecycleScope.launch(Dispatchers.Main) { gas?.let { if (type == gasName) { - mBinding.currentValue.text = "当前气体浓度:${gas.gasValue.forShowStr()} ${gas.unit}" + mBinding.currentValue.text = + "当前气体浓度:${gas.gasValue.forShowStr()} ${gas.unit}" } } } diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt index 4358f08..545bfd1 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt @@ -5,6 +5,8 @@ import android.view.KeyEvent import android.view.View import androidx.lifecycle.lifecycleScope import com.common.commonlib.db.DBUtils +import com.common.commonlib.utils.getGasNickName +import com.common.commonlib.utils.saveGasNickName import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.databinding.ActivitySensorSettingBinding import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity @@ -49,16 +51,15 @@ class SensorSettingActivity : NoOptionsActivity() { mBinding.rgUnit.visibility = View.GONE mBinding.rbLel.visibility = View.GONE mBinding.rbVol.visibility = View.VISIBLE - } else if (gasName == CH4_H2){ + } else if (gasName == CH4_H2) { mBinding.rgUnit.visibility = View.GONE mBinding.rbVol.visibility = View.GONE mBinding.rbLel.visibility = View.VISIBLE - } - else { + } else { mBinding.rgUnit.visibility = View.VISIBLE mBinding.rbVol.visibility = View.GONE mBinding.rbLel.visibility = View.GONE - if (gasName == VOCS){ + if (gasName == VOCS) { mBinding.rbMgm3.visibility = View.GONE } if (localGasUnit == UNIT_PPM) { @@ -72,6 +73,7 @@ class SensorSettingActivity : NoOptionsActivity() { lifecycleScope.launch(Dispatchers.IO) { val typeDao = DBUtils.gasTypeDao() val gasType = typeDao.getByName(gasName) + val gasNickName = getGasNickName(gasName) launch(Dispatchers.Main) { if (gasType != null && !gasType.nickName.isNullOrEmpty()) { mBinding.etName.setText(gasType.nickName) @@ -80,6 +82,7 @@ class SensorSettingActivity : NoOptionsActivity() { } val gasRange = getGasRange(gasName) mBinding.etStep.text = getString(R.string.sensor_step_txt).plus(": $gasRange") + mBinding.etGasName.setText(gasNickName ?: "") } } @@ -111,7 +114,7 @@ class SensorSettingActivity : NoOptionsActivity() { } } else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) { if (event.action == KeyEvent.ACTION_DOWN) { - mBinding.tvWarnSetting.requestFocus() + mBinding.etGasName.requestFocus() return@setOnKeyListener true } } else if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER || keyCode == KeyEvent.KEYCODE_ENTER) { @@ -123,6 +126,26 @@ class SensorSettingActivity : NoOptionsActivity() { return@setOnKeyListener false } + mBinding.etGasName.setOnKeyListener { v, keyCode, event -> + if (keyCode == KeyEvent.KEYCODE_DPAD_UP) { + if (event.action == KeyEvent.ACTION_DOWN) { + mBinding.etName.requestFocus() + return@setOnKeyListener true + } + } else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) { + if (event.action == KeyEvent.ACTION_DOWN) { + mBinding.tvWarnSetting.requestFocus() + return@setOnKeyListener true + } + } else if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER || keyCode == KeyEvent.KEYCODE_ENTER) { + if (event.action == KeyEvent.ACTION_DOWN) { + mBinding.etGasName.showIme() + return@setOnKeyListener true + } + } + return@setOnKeyListener false + } + mBinding.etName.setOnFocusChangeListener { _, hasFocus -> if (!hasFocus) { mBinding.etName.hideIme() @@ -163,6 +186,10 @@ class SensorSettingActivity : NoOptionsActivity() { typeDao.insert(gasType) } } + // 气体名称 + val gasNickName = mBinding.etGasName.text.toString() + saveGasNickName(gasName, gasNickName) + val checkedRadioButtonId = mBinding.rgUnit.checkedRadioButtonId var selectedUnit = UNIT_PPM if (checkedRadioButtonId == R.id.rb_mgm3) { diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/adapter/HistoryDataAdapter.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/adapter/HistoryDataAdapter.kt index 02b73ec..66b01a3 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/adapter/HistoryDataAdapter.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/adapter/HistoryDataAdapter.kt @@ -4,6 +4,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import com.common.commonlib.db.entity.Gas import com.common.commonlib.utils.forShowStr +import com.common.commonlib.utils.getGasShowName import com.yinuo.safetywatcher.databinding.LayoutItemHistoryBinding import com.yinuo.safetywatcher.watcher.base.BaseRvAdapter import com.yinuo.safetywatcher.watcher.utils.DateUtils @@ -15,7 +16,7 @@ class HistoryDataAdapter : BaseRvAdapter.BaseViewHolder(binding) { override fun bindView(data: Gas) { binding.tvTime.text = formatTime(data.time) - binding.tvSensor.text = "${data.gasName} : ${data.gasValue.forShowStr()} ${data.unit}" + binding.tvSensor.text = "${data.gasName.getGasShowName()} : ${data.gasValue.forShowStr()} ${data.unit}" } private fun formatTime(time: Long): CharSequence? { diff --git a/app/src/main/res/layout/activity_sensor_setting.xml b/app/src/main/res/layout/activity_sensor_setting.xml index 6878ef6..688c400 100644 --- a/app/src/main/res/layout/activity_sensor_setting.xml +++ b/app/src/main/res/layout/activity_sensor_setting.xml @@ -20,6 +20,21 @@ android:nextFocusDown="@id/et_name" android:background="@drawable/cloud_sync_btn_bg"/> + + 保存 传感器校准 传感器名称 + 气体名称 传感器量程 传感器种类 取消 @@ -85,4 +86,5 @@ 校准传感器成功 校准传感器失败 + 校准传感器失败, 传感器未响应! diff --git a/library-common/src/main/java/com/common/commonlib/utils/KtExtensions.kt b/library-common/src/main/java/com/common/commonlib/utils/KtExtensions.kt index 96210d1..d537a19 100644 --- a/library-common/src/main/java/com/common/commonlib/utils/KtExtensions.kt +++ b/library-common/src/main/java/com/common/commonlib/utils/KtExtensions.kt @@ -5,6 +5,7 @@ package com.common.commonlib.utils import android.app.Activity import android.content.res.Resources +import android.text.TextUtils import android.util.TypedValue import android.view.View import java.text.DecimalFormat @@ -46,3 +47,19 @@ fun Float.forShowStr(): String { return decimalFormat.format(this) } + +fun String.getGasShowName(): String { + return getGasNickName(this) +} + +fun getGasNickName(gasType: String): String { + val string = MMKVUtils.getString("${gasType}_gas_nickname") + if (!TextUtils.isEmpty(string)){ + return string!! + } + return gasType +} + +fun saveGasNickName(gasType: String, name: String) { + MMKVUtils.put("${gasType}_gas_nickname", name) +} \ No newline at end of file diff --git a/library-push/src/main/java/org/easydarwin/TxtOverlay.kt b/library-push/src/main/java/org/easydarwin/TxtOverlay.kt index bcbfacb..7eb5f57 100644 --- a/library-push/src/main/java/org/easydarwin/TxtOverlay.kt +++ b/library-push/src/main/java/org/easydarwin/TxtOverlay.kt @@ -6,6 +6,7 @@ import android.text.TextUtils import android.util.Log import com.common.commonlib.db.entity.Gas import com.common.commonlib.utils.forShowStr +import com.common.commonlib.utils.getGasShowName import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.delay @@ -100,7 +101,7 @@ object TxtOverlay { // 3S内的数据我们认为有效 Log.i("cyy", "gasTime = ${dateFormat.format(gas.time)}") if (currentTimeMillis - gas.time <= 3000) { - overlayBuilder.append("${gas.gasName}: ${gas.gasValue.forShowStr()} ${gas.unit}") + overlayBuilder.append("${gas.gasName.getGasShowName()}: ${gas.gasValue.forShowStr()} ${gas.unit}") .append("@") } }