diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1b878ae..f0ca2c5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -44,6 +44,9 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
+
diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseActivity.kt
index af40e1a..9914c18 100644
--- a/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseActivity.kt
+++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseActivity.kt
@@ -116,7 +116,9 @@ abstract class BaseActivity : AppCompatActivity() {
abstract fun getOptions(): List?
- abstract fun getTopBarTitle(): String?
+ open fun getTopBarTitle(): String?{
+ return getString(R.string.back)
+ }
abstract fun generateContentView(): View
@@ -165,6 +167,13 @@ abstract class BaseActivity : AppCompatActivity() {
baseBinding.topBar.tryFocusBackArea()
}
+ override fun onResume() {
+ super.onResume()
+ if (!isHome){
+ tryFocusBackArea()
+ }
+ }
+
override fun onDestroy() {
super.onDestroy()
closeLoadingDialog()
diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasPortUtils.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasPortUtils.kt
index 35849d8..2d68092 100644
--- a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasPortUtils.kt
+++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasPortUtils.kt
@@ -5,9 +5,6 @@ import com.common.commonlib.db.DBUtils
import com.common.serialport.ComMultiPortUtils
import com.yinuo.safetywatcher.watcher.port.cmd.CMD
import com.yinuo.safetywatcher.watcher.port.cmd.CalibrationCmd
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.GlobalScope
-import kotlinx.coroutines.launch
object GasPortUtils {
private const val BAUD_RATE = 9600
@@ -18,6 +15,15 @@ object GasPortUtils {
private var mInitFlag = false
private var readGasMsgThread: Thread? = null;
private var toDoCmdList: ArrayList = ArrayList()
+ private val listeners: ArrayList<(ByteArray) -> Unit> = ArrayList<(ByteArray) -> Unit>()
+
+ fun addListener(listener: (ByteArray) -> Unit) {
+ listeners.add(listener)
+ }
+
+ fun removeListener(listener: (ByteArray) -> Unit) {
+ listeners.remove(listener)
+ }
fun initPort() {
openPorts()
@@ -29,6 +35,9 @@ object GasPortUtils {
ComMultiPortUtils.releaseAll()
ComMultiPortUtils.openPort(PORT_PATH, BAUD_RATE) { array ->
mInitFlag = true
+ listeners.forEach {
+ it.invoke(array)
+ }
ParseHelper.parse(array)
}
}
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 2a893c9..5ae80ab 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,6 @@
package com.yinuo.safetywatcher.watcher.ui
+import android.text.TextUtils
import android.view.KeyEvent
import android.view.View
import com.yinuo.safetywatcher.R
@@ -8,6 +9,7 @@ import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity
import com.yinuo.safetywatcher.watcher.port.GasPortUtils
import com.yinuo.safetywatcher.watcher.port.getDefaultUnit
import com.yinuo.safetywatcher.watcher.utils.showIme
+import com.yinuo.safetywatcher.watcher.utils.showToast
class SensorCalibrationActivity : NoOptionsActivity() {
private val mBinding by lazy {
@@ -22,12 +24,25 @@ class SensorCalibrationActivity : NoOptionsActivity() {
return mBinding.root
}
+ private val msgReceiver: (ByteArray) -> Unit = {
+ // TODO 解析数据
+ }
+
override fun initView() {
+ GasPortUtils.addListener(msgReceiver)
val sensorIndex = intent.getIntExtra("index", -1)
val gasName = intent.getStringExtra("GasType")!!
+ val isZero = intent.getBooleanExtra("isZero", false)
val defaultUnit = getDefaultUnit(gasName)
mBinding.tvUnit.text = defaultUnit
+ if (isZero) {
+ mBinding.layoutInput.visibility = View.GONE
+ mBinding.tvSave.text = getString(R.string.calibration_zero_txt)
+ } else {
+ mBinding.layoutInput.visibility = View.VISIBLE
+ }
+
/**
* 昵称edittext,按键设置
*/
@@ -52,12 +67,24 @@ class SensorCalibrationActivity : NoOptionsActivity() {
}
mBinding.tvSave.setOnClickListener {
- mBinding.etName.text.toString().let {
+ if (isZero) {
+ GasPortUtils.calibrationSensor(sensorIndex, 0)
+ } else {
+ val text = mBinding.etName.text.toString()
+ if (TextUtils.isEmpty(text)) {
+ showToast("请输入具体浓度!")
+ return@setOnClickListener
+ }
if (sensorIndex != -1) {
- val toInt = it.toInt()
+ val toInt = text.toInt()
GasPortUtils.calibrationSensor(sensorIndex, toInt)
}
}
}
}
+
+ override fun onDestroy() {
+ super.onDestroy()
+ GasPortUtils.removeListener(msgReceiver)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorCalibrationListActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorCalibrationListActivity.kt
new file mode 100644
index 0000000..fafe5f2
--- /dev/null
+++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorCalibrationListActivity.kt
@@ -0,0 +1,35 @@
+package com.yinuo.safetywatcher.watcher.ui
+
+import android.content.Intent
+import android.view.View
+import com.yinuo.safetywatcher.databinding.ActivitySensorCalibrationListBinding
+import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity
+
+class SensorCalibrationListActivity : NoOptionsActivity() {
+ private val mBinding by lazy {
+ ActivitySensorCalibrationListBinding.inflate(layoutInflater)
+ }
+
+ override fun generateContentView(): View {
+ return mBinding.root
+ }
+
+ override fun initView() {
+ val sensorIndex = intent.getIntExtra("index", -1)
+ val gasName = intent.getStringExtra("GasType")!!
+ mBinding.apply {
+ val intent =
+ Intent(this@SensorCalibrationListActivity, SensorCalibrationActivity::class.java)
+ intent.putExtra("index", sensorIndex)
+ intent.putExtra("GasType", gasName)
+ itemZero.setOnClickListener {
+ intent.putExtra("isZero", true)
+ startActivity(intent)
+ }
+ itemSpan.setOnClickListener {
+ intent.putExtra("isZero", false)
+ startActivity(intent)
+ }
+ }
+ }
+}
\ No newline at end of file
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 a92ba60..95ca42f 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
@@ -145,7 +145,7 @@ class SensorSettingActivity : NoOptionsActivity() {
// }
mBinding.tvSensorInit.setOnClickListener {
- val intent = Intent(this, SensorCalibrationActivity::class.java)
+ val intent = Intent(this, SensorCalibrationListActivity::class.java)
intent.putExtra("index", sensorIndex)
intent.putExtra("GasType", gasName)
startActivity(intent)
diff --git a/app/src/main/res/layout/activity_sensor_calibration.xml b/app/src/main/res/layout/activity_sensor_calibration.xml
index fa66759..8444381 100644
--- a/app/src/main/res/layout/activity_sensor_calibration.xml
+++ b/app/src/main/res/layout/activity_sensor_calibration.xml
@@ -16,6 +16,7 @@
android:textSize="@dimen/_40dp"/>
+
+
+
+
+
+
+
+
+
+
+
+
\ 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 cd1f2b8..ecce3dd 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -26,7 +26,7 @@
一键同步
- 搜索
+ 刷新
导出
折线图
气体列表
@@ -78,4 +78,8 @@
请输入校准浓度
校准传感器
请在专业人士指导下进行校准!随意校准可能导致传感器异常!
+
+ 零点校准
+ 量程校准
+ 校准传感器零点