diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 607ca75..922f1f1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,12 @@ + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 607ca75..922f1f1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,12 @@ + + diff --git a/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt index 5e070c9..0b86273 100644 --- a/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt @@ -1,6 +1,5 @@ package com.casic.br.app.view -import android.R import android.os.Bundle import android.util.Log import android.view.View @@ -93,11 +92,11 @@ mainDicModels.forEach { mainTypeArray.add(it.name) } - val mainTypeAdapter = ArrayAdapter(this, R.layout.simple_list_item_1, mainTypeArray) + val mainTypeAdapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, mainTypeArray) binding.mainTypeSpinner.adapter = mainTypeAdapter configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] - configViewModel.getDictionaryByCode(context, "pitfallSmallType") + configViewModel.getDictionaryByCode(this, "pitfallSmallType") configViewModel.dictionary.observe(this) { if (it.code == 200) { subDicModels = it.data @@ -105,7 +104,9 @@ subDicModels.forEach { dic -> subTypeArray.add(dic.name) } - val subTypeAdapter = ArrayAdapter(this, R.layout.simple_list_item_1, subTypeArray) + val subTypeAdapter = ArrayAdapter( + this, android.R.layout.simple_list_item_1, subTypeArray + ) binding.subTypeSpinner.adapter = subTypeAdapter } } @@ -181,7 +182,7 @@ } }) - binding.dialogConfirmButton.setOnClickListener { + binding.confirmButton.setOnClickListener { hiddenTroubleViewModel.addHiddenTrouble( this, selectedMainTypePosition.toString(), @@ -192,7 +193,7 @@ ) } - binding.dialogCancelButton.setOnClickListener { finish() } + binding.cancelButton.setOnClickListener { finish() } } private fun selectPicture() { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 607ca75..922f1f1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,12 @@ + + diff --git a/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt index 5e070c9..0b86273 100644 --- a/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt @@ -1,6 +1,5 @@ package com.casic.br.app.view -import android.R import android.os.Bundle import android.util.Log import android.view.View @@ -93,11 +92,11 @@ mainDicModels.forEach { mainTypeArray.add(it.name) } - val mainTypeAdapter = ArrayAdapter(this, R.layout.simple_list_item_1, mainTypeArray) + val mainTypeAdapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, mainTypeArray) binding.mainTypeSpinner.adapter = mainTypeAdapter configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] - configViewModel.getDictionaryByCode(context, "pitfallSmallType") + configViewModel.getDictionaryByCode(this, "pitfallSmallType") configViewModel.dictionary.observe(this) { if (it.code == 200) { subDicModels = it.data @@ -105,7 +104,9 @@ subDicModels.forEach { dic -> subTypeArray.add(dic.name) } - val subTypeAdapter = ArrayAdapter(this, R.layout.simple_list_item_1, subTypeArray) + val subTypeAdapter = ArrayAdapter( + this, android.R.layout.simple_list_item_1, subTypeArray + ) binding.subTypeSpinner.adapter = subTypeAdapter } } @@ -181,7 +182,7 @@ } }) - binding.dialogConfirmButton.setOnClickListener { + binding.confirmButton.setOnClickListener { hiddenTroubleViewModel.addHiddenTrouble( this, selectedMainTypePosition.toString(), @@ -192,7 +193,7 @@ ) } - binding.dialogCancelButton.setOnClickListener { finish() } + binding.cancelButton.setOnClickListener { finish() } } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/br/app/view/SelectSceneActivity.kt b/app/src/main/java/com/casic/br/app/view/SelectSceneActivity.kt new file mode 100644 index 0000000..3056cba --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/SelectSceneActivity.kt @@ -0,0 +1,77 @@ +package com.casic.br.app.view + +import android.content.Intent +import android.os.Bundle +import android.view.View +import android.widget.AdapterView +import android.widget.ArrayAdapter +import androidx.lifecycle.ViewModelProvider +import com.casic.br.app.databinding.ActivitySelectSceneBinding +import com.casic.br.app.model.DictionaryModel +import com.casic.br.app.vm.ConfigViewModel +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show + +class SelectSceneActivity : KotlinBaseActivity() { + + private var selectedValue = "" + private var sceneDicModels: MutableList = ArrayList() + private lateinit var configViewModel: ConfigViewModel + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] + configViewModel.getDictionaryByCode(this, "securityScene") + configViewModel.dictionary.observe(this) { + if (it.code == 200) { + sceneDicModels = it.data + val sceneArray = ArrayList() + sceneDicModels.forEach { dic -> + sceneArray.add(dic.name) + } + val sceneAdapter = ArrayAdapter( + this, android.R.layout.simple_list_item_1, sceneArray + ) + binding.sceneSpinner.adapter = sceneAdapter + } + } + + binding.sceneSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + selectedValue = sceneDicModels[position].name + } + + override fun onNothingSelected(parent: AdapterView<*>?) { + + } + } + + binding.confirmButton.setOnClickListener { + if (selectedValue == "") { + "场景选择错误,请检查!".show(this) + return@setOnClickListener + } + + val intent = Intent() + intent.putExtra("sceneName", selectedValue) + setResult(RESULT_OK, intent) + finish() + } + } + + override fun initViewBinding(): ActivitySelectSceneBinding { + return ActivitySelectSceneBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 607ca75..922f1f1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,12 @@ + + diff --git a/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt index 5e070c9..0b86273 100644 --- a/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt @@ -1,6 +1,5 @@ package com.casic.br.app.view -import android.R import android.os.Bundle import android.util.Log import android.view.View @@ -93,11 +92,11 @@ mainDicModels.forEach { mainTypeArray.add(it.name) } - val mainTypeAdapter = ArrayAdapter(this, R.layout.simple_list_item_1, mainTypeArray) + val mainTypeAdapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, mainTypeArray) binding.mainTypeSpinner.adapter = mainTypeAdapter configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] - configViewModel.getDictionaryByCode(context, "pitfallSmallType") + configViewModel.getDictionaryByCode(this, "pitfallSmallType") configViewModel.dictionary.observe(this) { if (it.code == 200) { subDicModels = it.data @@ -105,7 +104,9 @@ subDicModels.forEach { dic -> subTypeArray.add(dic.name) } - val subTypeAdapter = ArrayAdapter(this, R.layout.simple_list_item_1, subTypeArray) + val subTypeAdapter = ArrayAdapter( + this, android.R.layout.simple_list_item_1, subTypeArray + ) binding.subTypeSpinner.adapter = subTypeAdapter } } @@ -181,7 +182,7 @@ } }) - binding.dialogConfirmButton.setOnClickListener { + binding.confirmButton.setOnClickListener { hiddenTroubleViewModel.addHiddenTrouble( this, selectedMainTypePosition.toString(), @@ -192,7 +193,7 @@ ) } - binding.dialogCancelButton.setOnClickListener { finish() } + binding.cancelButton.setOnClickListener { finish() } } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/br/app/view/SelectSceneActivity.kt b/app/src/main/java/com/casic/br/app/view/SelectSceneActivity.kt new file mode 100644 index 0000000..3056cba --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/SelectSceneActivity.kt @@ -0,0 +1,77 @@ +package com.casic.br.app.view + +import android.content.Intent +import android.os.Bundle +import android.view.View +import android.widget.AdapterView +import android.widget.ArrayAdapter +import androidx.lifecycle.ViewModelProvider +import com.casic.br.app.databinding.ActivitySelectSceneBinding +import com.casic.br.app.model.DictionaryModel +import com.casic.br.app.vm.ConfigViewModel +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show + +class SelectSceneActivity : KotlinBaseActivity() { + + private var selectedValue = "" + private var sceneDicModels: MutableList = ArrayList() + private lateinit var configViewModel: ConfigViewModel + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] + configViewModel.getDictionaryByCode(this, "securityScene") + configViewModel.dictionary.observe(this) { + if (it.code == 200) { + sceneDicModels = it.data + val sceneArray = ArrayList() + sceneDicModels.forEach { dic -> + sceneArray.add(dic.name) + } + val sceneAdapter = ArrayAdapter( + this, android.R.layout.simple_list_item_1, sceneArray + ) + binding.sceneSpinner.adapter = sceneAdapter + } + } + + binding.sceneSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + selectedValue = sceneDicModels[position].name + } + + override fun onNothingSelected(parent: AdapterView<*>?) { + + } + } + + binding.confirmButton.setOnClickListener { + if (selectedValue == "") { + "场景选择错误,请检查!".show(this) + return@setOnClickListener + } + + val intent = Intent() + intent.putExtra("sceneName", selectedValue) + setResult(RESULT_OK, intent) + finish() + } + } + + override fun initViewBinding(): ActivitySelectSceneBinding { + return ActivitySelectSceneBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt index 1e66f4d..fc946dd 100644 --- a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt @@ -1,5 +1,7 @@ package com.casic.br.app.view +import android.app.Activity +import android.content.Intent import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.ImageFormat @@ -11,6 +13,8 @@ import android.util.DisplayMetrics import android.util.Log import android.view.Surface +import androidx.activity.result.ActivityResultCallback +import androidx.activity.result.contract.ActivityResultContracts import androidx.camera.core.AspectRatio import androidx.camera.core.CameraSelector import androidx.camera.core.CameraState @@ -26,8 +30,6 @@ import com.casic.br.app.model.DictionaryModel import com.casic.br.app.vm.ConfigViewModel import com.casic.br.app.vm.ImageFileViewModel -import com.casic.br.app.widgets.CheckResultDialog -import com.casic.br.app.widgets.SelectSceneDialog import com.google.common.util.concurrent.ListenableFuture import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo @@ -94,7 +96,7 @@ cameraProviderFuture.addListener({ try { //TODO 暂时注掉 - bindPreview(cameraProviderFuture.get()) +// bindPreview(cameraProviderFuture.get()) } catch (e: ExecutionException) { e.printStackTrace() } catch (e: InterruptedException) { @@ -154,7 +156,7 @@ camera.cameraInfo.cameraState.observe(this) { //开始预览之后才人脸检测 if (it.type == CameraState.Type.OPEN) { -// imageAnalysis.setAnalyzer(cameraExecutor, imageAnalyzer) + imageAnalysis.setAnalyzer(cameraExecutor, imageAnalyzer) } } } catch (e: Exception) { @@ -226,7 +228,7 @@ override fun initEvent() { binding.stopButton.setOnClickListener { - CheckResultDialog(this).show() + navigatePageTo() } binding.tipsButton.setOnClickListener { @@ -258,19 +260,23 @@ } override fun onRightClick() { - SelectSceneDialog.Builder() - .setContext(context) - .setPositiveButton("保存") - .setOnDialogButtonClickListener(object : - SelectSceneDialog.OnDialogButtonClickListener { - override fun onConfirmClick(value: String) { - binding.titleView.setTitle(value) - } - }).build().show() + val intent = Intent(context, SelectSceneActivity::class.java) + selectSceneLauncher.launch(intent) } }) } + private val selectSceneLauncher = + registerForActivityResult(ActivityResultContracts.StartActivityForResult(), + ActivityResultCallback { + if (it.resultCode == Activity.RESULT_OK) { + val data = it.data ?: return@ActivityResultCallback + val sceneName = data.getStringExtra("sceneName").toString() + binding.titleView.setTitle(sceneName) + } + } + ) + private fun aspectRatio(width: Int, height: Int): Int { val ratio = width.coerceAtLeast(height).toDouble() / width.coerceAtMost(height) return if (abs(ratio - RATIO_4_3_VALUE) <= abs(ratio - RATIO_16_9_VALUE) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 607ca75..922f1f1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,12 @@ + + diff --git a/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt index 5e070c9..0b86273 100644 --- a/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt @@ -1,6 +1,5 @@ package com.casic.br.app.view -import android.R import android.os.Bundle import android.util.Log import android.view.View @@ -93,11 +92,11 @@ mainDicModels.forEach { mainTypeArray.add(it.name) } - val mainTypeAdapter = ArrayAdapter(this, R.layout.simple_list_item_1, mainTypeArray) + val mainTypeAdapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, mainTypeArray) binding.mainTypeSpinner.adapter = mainTypeAdapter configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] - configViewModel.getDictionaryByCode(context, "pitfallSmallType") + configViewModel.getDictionaryByCode(this, "pitfallSmallType") configViewModel.dictionary.observe(this) { if (it.code == 200) { subDicModels = it.data @@ -105,7 +104,9 @@ subDicModels.forEach { dic -> subTypeArray.add(dic.name) } - val subTypeAdapter = ArrayAdapter(this, R.layout.simple_list_item_1, subTypeArray) + val subTypeAdapter = ArrayAdapter( + this, android.R.layout.simple_list_item_1, subTypeArray + ) binding.subTypeSpinner.adapter = subTypeAdapter } } @@ -181,7 +182,7 @@ } }) - binding.dialogConfirmButton.setOnClickListener { + binding.confirmButton.setOnClickListener { hiddenTroubleViewModel.addHiddenTrouble( this, selectedMainTypePosition.toString(), @@ -192,7 +193,7 @@ ) } - binding.dialogCancelButton.setOnClickListener { finish() } + binding.cancelButton.setOnClickListener { finish() } } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/br/app/view/SelectSceneActivity.kt b/app/src/main/java/com/casic/br/app/view/SelectSceneActivity.kt new file mode 100644 index 0000000..3056cba --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/SelectSceneActivity.kt @@ -0,0 +1,77 @@ +package com.casic.br.app.view + +import android.content.Intent +import android.os.Bundle +import android.view.View +import android.widget.AdapterView +import android.widget.ArrayAdapter +import androidx.lifecycle.ViewModelProvider +import com.casic.br.app.databinding.ActivitySelectSceneBinding +import com.casic.br.app.model.DictionaryModel +import com.casic.br.app.vm.ConfigViewModel +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show + +class SelectSceneActivity : KotlinBaseActivity() { + + private var selectedValue = "" + private var sceneDicModels: MutableList = ArrayList() + private lateinit var configViewModel: ConfigViewModel + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] + configViewModel.getDictionaryByCode(this, "securityScene") + configViewModel.dictionary.observe(this) { + if (it.code == 200) { + sceneDicModels = it.data + val sceneArray = ArrayList() + sceneDicModels.forEach { dic -> + sceneArray.add(dic.name) + } + val sceneAdapter = ArrayAdapter( + this, android.R.layout.simple_list_item_1, sceneArray + ) + binding.sceneSpinner.adapter = sceneAdapter + } + } + + binding.sceneSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + selectedValue = sceneDicModels[position].name + } + + override fun onNothingSelected(parent: AdapterView<*>?) { + + } + } + + binding.confirmButton.setOnClickListener { + if (selectedValue == "") { + "场景选择错误,请检查!".show(this) + return@setOnClickListener + } + + val intent = Intent() + intent.putExtra("sceneName", selectedValue) + setResult(RESULT_OK, intent) + finish() + } + } + + override fun initViewBinding(): ActivitySelectSceneBinding { + return ActivitySelectSceneBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt index 1e66f4d..fc946dd 100644 --- a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt @@ -1,5 +1,7 @@ package com.casic.br.app.view +import android.app.Activity +import android.content.Intent import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.ImageFormat @@ -11,6 +13,8 @@ import android.util.DisplayMetrics import android.util.Log import android.view.Surface +import androidx.activity.result.ActivityResultCallback +import androidx.activity.result.contract.ActivityResultContracts import androidx.camera.core.AspectRatio import androidx.camera.core.CameraSelector import androidx.camera.core.CameraState @@ -26,8 +30,6 @@ import com.casic.br.app.model.DictionaryModel import com.casic.br.app.vm.ConfigViewModel import com.casic.br.app.vm.ImageFileViewModel -import com.casic.br.app.widgets.CheckResultDialog -import com.casic.br.app.widgets.SelectSceneDialog import com.google.common.util.concurrent.ListenableFuture import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo @@ -94,7 +96,7 @@ cameraProviderFuture.addListener({ try { //TODO 暂时注掉 - bindPreview(cameraProviderFuture.get()) +// bindPreview(cameraProviderFuture.get()) } catch (e: ExecutionException) { e.printStackTrace() } catch (e: InterruptedException) { @@ -154,7 +156,7 @@ camera.cameraInfo.cameraState.observe(this) { //开始预览之后才人脸检测 if (it.type == CameraState.Type.OPEN) { -// imageAnalysis.setAnalyzer(cameraExecutor, imageAnalyzer) + imageAnalysis.setAnalyzer(cameraExecutor, imageAnalyzer) } } } catch (e: Exception) { @@ -226,7 +228,7 @@ override fun initEvent() { binding.stopButton.setOnClickListener { - CheckResultDialog(this).show() + navigatePageTo() } binding.tipsButton.setOnClickListener { @@ -258,19 +260,23 @@ } override fun onRightClick() { - SelectSceneDialog.Builder() - .setContext(context) - .setPositiveButton("保存") - .setOnDialogButtonClickListener(object : - SelectSceneDialog.OnDialogButtonClickListener { - override fun onConfirmClick(value: String) { - binding.titleView.setTitle(value) - } - }).build().show() + val intent = Intent(context, SelectSceneActivity::class.java) + selectSceneLauncher.launch(intent) } }) } + private val selectSceneLauncher = + registerForActivityResult(ActivityResultContracts.StartActivityForResult(), + ActivityResultCallback { + if (it.resultCode == Activity.RESULT_OK) { + val data = it.data ?: return@ActivityResultCallback + val sceneName = data.getStringExtra("sceneName").toString() + binding.titleView.setTitle(sceneName) + } + } + ) + private fun aspectRatio(width: Int, height: Int): Int { val ratio = width.coerceAtLeast(height).toDouble() / width.coerceAtMost(height) return if (abs(ratio - RATIO_4_3_VALUE) <= abs(ratio - RATIO_16_9_VALUE) diff --git a/app/src/main/java/com/casic/br/app/widgets/SelectSceneDialog.kt b/app/src/main/java/com/casic/br/app/widgets/SelectSceneDialog.kt deleted file mode 100644 index adad748..0000000 --- a/app/src/main/java/com/casic/br/app/widgets/SelectSceneDialog.kt +++ /dev/null @@ -1,85 +0,0 @@ -package com.casic.br.app.widgets - -import android.app.Dialog -import android.content.Context -import android.os.Bundle -import android.view.View -import android.widget.AdapterView -import com.casic.br.app.R -import com.casic.br.app.databinding.DialogSelectSceneBinding -import com.pengxh.kt.lite.extensions.binding -import com.pengxh.kt.lite.extensions.initDialogLayoutParams -import com.pengxh.kt.lite.extensions.show - -class SelectSceneDialog private constructor(builder: Builder) : Dialog( - builder.context, R.style.UserDefinedDialogStyle -) { - private val context = builder.context - private val positiveBtn = builder.positiveBtn - private val listener = builder.listener - - class Builder { - lateinit var context: Context - lateinit var positiveBtn: String - lateinit var listener: OnDialogButtonClickListener - - fun setContext(context: Context): Builder { - this.context = context - return this - } - - fun setPositiveButton(name: String): Builder { - positiveBtn = name - return this - } - - fun setOnDialogButtonClickListener(listener: OnDialogButtonClickListener): Builder { - this.listener = listener - return this - } - - fun build(): SelectSceneDialog { - return SelectSceneDialog(this) - } - } - - private val binding: DialogSelectSceneBinding by binding() - private var selectedValue = "请选择场景" - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - this.initDialogLayoutParams(0.85f) - setCanceledOnTouchOutside(true) - - val sceneArray = context.resources.getStringArray(R.array.scene_data) - - if (positiveBtn.isNotBlank()) { - binding.dialogConfirmButton.text = positiveBtn - } - - binding.sceneSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { - override fun onItemSelected( - parent: AdapterView<*>?, view: View?, position: Int, id: Long - ) { - selectedValue = sceneArray[position] - } - - override fun onNothingSelected(parent: AdapterView<*>?) { - - } - } - - binding.dialogConfirmButton.setOnClickListener { - if (selectedValue == "请选择场景") { - "场景选择错误,请检查!".show(context) - return@setOnClickListener - } - listener.onConfirmClick(selectedValue) - dismiss() - } - } - - interface OnDialogButtonClickListener { - fun onConfirmClick(value: String) - } -} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 607ca75..922f1f1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,12 @@ + + diff --git a/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt index 5e070c9..0b86273 100644 --- a/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/AddHiddenTroubleActivity.kt @@ -1,6 +1,5 @@ package com.casic.br.app.view -import android.R import android.os.Bundle import android.util.Log import android.view.View @@ -93,11 +92,11 @@ mainDicModels.forEach { mainTypeArray.add(it.name) } - val mainTypeAdapter = ArrayAdapter(this, R.layout.simple_list_item_1, mainTypeArray) + val mainTypeAdapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, mainTypeArray) binding.mainTypeSpinner.adapter = mainTypeAdapter configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] - configViewModel.getDictionaryByCode(context, "pitfallSmallType") + configViewModel.getDictionaryByCode(this, "pitfallSmallType") configViewModel.dictionary.observe(this) { if (it.code == 200) { subDicModels = it.data @@ -105,7 +104,9 @@ subDicModels.forEach { dic -> subTypeArray.add(dic.name) } - val subTypeAdapter = ArrayAdapter(this, R.layout.simple_list_item_1, subTypeArray) + val subTypeAdapter = ArrayAdapter( + this, android.R.layout.simple_list_item_1, subTypeArray + ) binding.subTypeSpinner.adapter = subTypeAdapter } } @@ -181,7 +182,7 @@ } }) - binding.dialogConfirmButton.setOnClickListener { + binding.confirmButton.setOnClickListener { hiddenTroubleViewModel.addHiddenTrouble( this, selectedMainTypePosition.toString(), @@ -192,7 +193,7 @@ ) } - binding.dialogCancelButton.setOnClickListener { finish() } + binding.cancelButton.setOnClickListener { finish() } } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/br/app/view/SelectSceneActivity.kt b/app/src/main/java/com/casic/br/app/view/SelectSceneActivity.kt new file mode 100644 index 0000000..3056cba --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/SelectSceneActivity.kt @@ -0,0 +1,77 @@ +package com.casic.br.app.view + +import android.content.Intent +import android.os.Bundle +import android.view.View +import android.widget.AdapterView +import android.widget.ArrayAdapter +import androidx.lifecycle.ViewModelProvider +import com.casic.br.app.databinding.ActivitySelectSceneBinding +import com.casic.br.app.model.DictionaryModel +import com.casic.br.app.vm.ConfigViewModel +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show + +class SelectSceneActivity : KotlinBaseActivity() { + + private var selectedValue = "" + private var sceneDicModels: MutableList = ArrayList() + private lateinit var configViewModel: ConfigViewModel + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] + configViewModel.getDictionaryByCode(this, "securityScene") + configViewModel.dictionary.observe(this) { + if (it.code == 200) { + sceneDicModels = it.data + val sceneArray = ArrayList() + sceneDicModels.forEach { dic -> + sceneArray.add(dic.name) + } + val sceneAdapter = ArrayAdapter( + this, android.R.layout.simple_list_item_1, sceneArray + ) + binding.sceneSpinner.adapter = sceneAdapter + } + } + + binding.sceneSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + selectedValue = sceneDicModels[position].name + } + + override fun onNothingSelected(parent: AdapterView<*>?) { + + } + } + + binding.confirmButton.setOnClickListener { + if (selectedValue == "") { + "场景选择错误,请检查!".show(this) + return@setOnClickListener + } + + val intent = Intent() + intent.putExtra("sceneName", selectedValue) + setResult(RESULT_OK, intent) + finish() + } + } + + override fun initViewBinding(): ActivitySelectSceneBinding { + return ActivitySelectSceneBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt index 1e66f4d..fc946dd 100644 --- a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt @@ -1,5 +1,7 @@ package com.casic.br.app.view +import android.app.Activity +import android.content.Intent import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.ImageFormat @@ -11,6 +13,8 @@ import android.util.DisplayMetrics import android.util.Log import android.view.Surface +import androidx.activity.result.ActivityResultCallback +import androidx.activity.result.contract.ActivityResultContracts import androidx.camera.core.AspectRatio import androidx.camera.core.CameraSelector import androidx.camera.core.CameraState @@ -26,8 +30,6 @@ import com.casic.br.app.model.DictionaryModel import com.casic.br.app.vm.ConfigViewModel import com.casic.br.app.vm.ImageFileViewModel -import com.casic.br.app.widgets.CheckResultDialog -import com.casic.br.app.widgets.SelectSceneDialog import com.google.common.util.concurrent.ListenableFuture import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo @@ -94,7 +96,7 @@ cameraProviderFuture.addListener({ try { //TODO 暂时注掉 - bindPreview(cameraProviderFuture.get()) +// bindPreview(cameraProviderFuture.get()) } catch (e: ExecutionException) { e.printStackTrace() } catch (e: InterruptedException) { @@ -154,7 +156,7 @@ camera.cameraInfo.cameraState.observe(this) { //开始预览之后才人脸检测 if (it.type == CameraState.Type.OPEN) { -// imageAnalysis.setAnalyzer(cameraExecutor, imageAnalyzer) + imageAnalysis.setAnalyzer(cameraExecutor, imageAnalyzer) } } } catch (e: Exception) { @@ -226,7 +228,7 @@ override fun initEvent() { binding.stopButton.setOnClickListener { - CheckResultDialog(this).show() + navigatePageTo() } binding.tipsButton.setOnClickListener { @@ -258,19 +260,23 @@ } override fun onRightClick() { - SelectSceneDialog.Builder() - .setContext(context) - .setPositiveButton("保存") - .setOnDialogButtonClickListener(object : - SelectSceneDialog.OnDialogButtonClickListener { - override fun onConfirmClick(value: String) { - binding.titleView.setTitle(value) - } - }).build().show() + val intent = Intent(context, SelectSceneActivity::class.java) + selectSceneLauncher.launch(intent) } }) } + private val selectSceneLauncher = + registerForActivityResult(ActivityResultContracts.StartActivityForResult(), + ActivityResultCallback { + if (it.resultCode == Activity.RESULT_OK) { + val data = it.data ?: return@ActivityResultCallback + val sceneName = data.getStringExtra("sceneName").toString() + binding.titleView.setTitle(sceneName) + } + } + ) + private fun aspectRatio(width: Int, height: Int): Int { val ratio = width.coerceAtLeast(height).toDouble() / width.coerceAtMost(height) return if (abs(ratio - RATIO_4_3_VALUE) <= abs(ratio - RATIO_16_9_VALUE) diff --git a/app/src/main/java/com/casic/br/app/widgets/SelectSceneDialog.kt b/app/src/main/java/com/casic/br/app/widgets/SelectSceneDialog.kt deleted file mode 100644 index adad748..0000000 --- a/app/src/main/java/com/casic/br/app/widgets/SelectSceneDialog.kt +++ /dev/null @@ -1,85 +0,0 @@ -package com.casic.br.app.widgets - -import android.app.Dialog -import android.content.Context -import android.os.Bundle -import android.view.View -import android.widget.AdapterView -import com.casic.br.app.R -import com.casic.br.app.databinding.DialogSelectSceneBinding -import com.pengxh.kt.lite.extensions.binding -import com.pengxh.kt.lite.extensions.initDialogLayoutParams -import com.pengxh.kt.lite.extensions.show - -class SelectSceneDialog private constructor(builder: Builder) : Dialog( - builder.context, R.style.UserDefinedDialogStyle -) { - private val context = builder.context - private val positiveBtn = builder.positiveBtn - private val listener = builder.listener - - class Builder { - lateinit var context: Context - lateinit var positiveBtn: String - lateinit var listener: OnDialogButtonClickListener - - fun setContext(context: Context): Builder { - this.context = context - return this - } - - fun setPositiveButton(name: String): Builder { - positiveBtn = name - return this - } - - fun setOnDialogButtonClickListener(listener: OnDialogButtonClickListener): Builder { - this.listener = listener - return this - } - - fun build(): SelectSceneDialog { - return SelectSceneDialog(this) - } - } - - private val binding: DialogSelectSceneBinding by binding() - private var selectedValue = "请选择场景" - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - this.initDialogLayoutParams(0.85f) - setCanceledOnTouchOutside(true) - - val sceneArray = context.resources.getStringArray(R.array.scene_data) - - if (positiveBtn.isNotBlank()) { - binding.dialogConfirmButton.text = positiveBtn - } - - binding.sceneSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { - override fun onItemSelected( - parent: AdapterView<*>?, view: View?, position: Int, id: Long - ) { - selectedValue = sceneArray[position] - } - - override fun onNothingSelected(parent: AdapterView<*>?) { - - } - } - - binding.dialogConfirmButton.setOnClickListener { - if (selectedValue == "请选择场景") { - "场景选择错误,请检查!".show(context) - return@setOnClickListener - } - listener.onConfirmClick(selectedValue) - dismiss() - } - } - - interface OnDialogButtonClickListener { - fun onConfirmClick(value: String) - } -} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_hidden_trouble.xml b/app/src/main/res/layout/activity_add_hidden_trouble.xml index 0d20fc5..98ba5ca 100644 --- a/app/src/main/res/layout/activity_add_hidden_trouble.xml +++ b/app/src/main/res/layout/activity_add_hidden_trouble.xml @@ -165,7 +165,7 @@ android:orientation="horizontal">