diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f329398..3658d39 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,6 +87,9 @@ + () { OfflineCmdServiceHelper.addOnLineListener(listener) } - override fun onDestroy() { - super.onDestroy() + + override fun onPause() { + super.onPause() OfflineCmdServiceHelper.removeOnLineListener(listener) } } diff --git a/app/src/main/java/com/nova/brain/glass/ui/InspectionActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/InspectionActivity.kt index 9cd31a2..4b3b9e4 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/InspectionActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/InspectionActivity.kt @@ -38,11 +38,15 @@ class InspectionActivity : BaseListFormLayoutNormalActivity() { + override fun getLayoutId(): Int = R.layout.activity_spraying_manual_result + override fun fullscreen(): Boolean = true + + override fun getRecyclerOrientation(): Int = RecyclerView.VERTICAL + + private val listener = object : OfflineCmdListener { + override fun onOfflineCmd(cmd: String) { + runOnUiThread { + when (cmd) { + "合格", "改为合格", "设置为合格" -> chooseResult(RESULT_PASS) + "不合格", "改为不合格", "设置为不合格" -> chooseResult(RESULT_FAIL) + "取消", "取消修改", "返回", "退回", "退出" -> finish() + } + } + } + } + + override fun initData() { + super.initData() + OfflineCmdServiceHelper.addOnLineListener(listener) + } + + override fun onDestroy() { + super.onDestroy() + OfflineCmdServiceHelper.removeOnLineListener(listener) + } + + private val adapter = object : CommonPagedAdapter(R.layout.item_manual_result_action) { + override fun convert(holder: ViewHolder, item: ItemItem, position: Int) { + holder + .setText(R.id.text, item.text) + .setClickListener(R.id.actionRoot) { + when (item.text) { + "合格" -> chooseResult(RESULT_PASS) + "不合格" -> chooseResult(RESULT_FAIL) + "取消" -> finish() + } + } + } + } + + override fun adapter(): BasePagedAdapter = adapter + + private fun chooseResult(result: String) { + setResult(Activity.RESULT_OK, Intent().apply { + putExtra(EXTRA_MANUAL_RESULT, result) + }) + finish() + } + + companion object { + const val EXTRA_MANUAL_RESULT = "extra_manual_result" + const val RESULT_PASS = "pass" + const val RESULT_FAIL = "fail" + } +} diff --git a/app/src/main/java/com/nova/brain/glass/ui/SprayingOCRActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/SprayingOCRActivity.kt index 5ef06d2..b7b55e4 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/SprayingOCRActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/SprayingOCRActivity.kt @@ -97,15 +97,19 @@ class SprayingOCRActivity : override fun initData() { super.initData() window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) - OfflineCmdServiceHelper.addOnLineListener(listener) - GlassSdk.getGlassMediaService()?.addPhotoCallback(mPhotoFileCallback) intent.getStringExtra("path")?.apply { showPhoto(this) } } - override fun onDestroy() { - super.onDestroy() + override fun onResume() { + super.onResume() + + OfflineCmdServiceHelper.addOnLineListener(listener) + GlassSdk.getGlassMediaService()?.addPhotoCallback(mPhotoFileCallback) + } + override fun onPause() { + super.onPause() resultCountdown?.cancel() OfflineCmdServiceHelper.removeOnLineListener(listener) GlassSdk.getGlassMediaService()?.removePhotoCallback(mPhotoFileCallback) diff --git a/app/src/main/java/com/nova/brain/glass/ui/SprayingResultActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/SprayingResultActivity.kt index 9c4238c..36595e7 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/SprayingResultActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/SprayingResultActivity.kt @@ -1,10 +1,12 @@ package com.nova.brain.glass.ui +import android.app.Activity import android.content.Intent import android.graphics.BitmapFactory import android.graphics.Paint import android.os.Environment import android.view.WindowManager +import androidx.activity.result.contract.ActivityResultContracts import androidx.recyclerview.widget.RecyclerView import com.nova.brain.glass.R import com.nova.brain.glass.databinding.ActivitySprayingResultBinding @@ -31,6 +33,24 @@ class SprayingResultActivity : override fun getRecyclerOrientation(): Int = RecyclerView.HORIZONTAL private var status = true + private val manualResultLauncher = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> + if (result.resultCode != Activity.RESULT_OK) { + return@registerForActivityResult + } + when (result.data?.getStringExtra(SprayingManualResultActivity.EXTRA_MANUAL_RESULT)) { + SprayingManualResultActivity.RESULT_PASS -> { + status = true + setStatusImage() + } + + SprayingManualResultActivity.RESULT_FAIL -> { + status = false + setStatusImage() + } + } + } + private val listener = object : OfflineCmdListener { override fun onOfflineCmd(cmd: String) { runOnUiThread { @@ -66,7 +86,7 @@ class SprayingResultActivity : } fun rest() { - + manualResultLauncher.launch(Intent(this, SprayingManualResultActivity::class.java)) } private val photoCallbackId = UUID.randomUUID().toString() @@ -108,31 +128,42 @@ class SprayingResultActivity : override fun initData() { super.initData() window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) - OfflineCmdServiceHelper.addOnLineListener(listener) - GlassSdk.getGlassMediaService()?.addPhotoCallback(mPhotoFileCallback) intent.getStringExtra("path")?.apply { binding.iv.setImageBitmap(BitmapFactory.decodeFile(this)) setStatusImage() } } -fun setStatusImage(){ - binding.tvTaskHeader.text = if (status) "OCR识别结果:合格" else "OCR识别结果:不合格" - binding.status.setImageResource(if (status) R.mipmap.ocr_true else R.mipmap.ocr_false) - if (status){ - binding.value1.paintFlags = binding.value1.paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv() - binding.value2.paintFlags = binding.value2.paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv() - binding.value3.paintFlags = binding.value3.paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv() - }else{ - binding.value1.paintFlags = binding.value1.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG - binding.value2.paintFlags = binding.value2.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG - binding.value3.paintFlags = binding.value3.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG + + fun setStatusImage() { + binding.tvTaskHeader.text = if (status) "OCR识别结果:合格" else "OCR识别结果:不合格" + binding.status.setImageResource(if (status) R.mipmap.ocr_true else R.mipmap.ocr_false) + if (status) { + binding.value1.paintFlags = + binding.value1.paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv() + binding.value2.paintFlags = + binding.value2.paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv() + binding.value3.paintFlags = + binding.value3.paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv() + } else { + binding.value1.paintFlags = binding.value1.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG + binding.value2.paintFlags = binding.value2.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG + binding.value3.paintFlags = binding.value3.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG + } } -} - override fun onDestroy() { - super.onDestroy() + + override fun onResume() { + super.onResume() + OfflineCmdServiceHelper.addOnLineListener(listener) + GlassSdk.getGlassMediaService()?.addPhotoCallback(mPhotoFileCallback) + } + override fun onPause() { + super.onPause() OfflineCmdServiceHelper.removeOnLineListener(listener) GlassSdk.getGlassMediaService()?.removePhotoCallback(mPhotoFileCallback) } + override fun onDestroy() { + super.onDestroy() + } private var isPhoto = false private val adapter = object : CommonPagedAdapter(R.layout.item_menu) { diff --git a/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt index 7b2667c..3933839 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt @@ -172,6 +172,7 @@ class TaskListActivity : override fun onResume() { super.onResume() + LogHelper.d(">>>>>>>>>>>>--------------------") OfflineCmdServiceHelper.addOnLineListener(offlineCmdListener) } diff --git a/app/src/main/java/com/nova/brain/glass/viewmodel/SprayingManualResultVM.kt b/app/src/main/java/com/nova/brain/glass/viewmodel/SprayingManualResultVM.kt new file mode 100644 index 0000000..8f8b2e9 --- /dev/null +++ b/app/src/main/java/com/nova/brain/glass/viewmodel/SprayingManualResultVM.kt @@ -0,0 +1,20 @@ +package com.nova.brain.glass.viewmodel + +import com.nova.brain.glass.model.ItemItem +import com.xuqm.base.viewmodel.BaseListViewModel +import com.xuqm.base.viewmodel.callback.Response + +class SprayingManualResultVM : BaseListViewModel() { + override fun loadData( + page: Int, + onResponse: Response + ) { + onResponse.onResponse( + arrayListOf().apply { + add(ItemItem("合格")) + add(ItemItem("不合格")) + add(ItemItem("取消")) + } + ) + } +} diff --git a/app/src/main/res/layout/activity_spraying_manual_result.xml b/app/src/main/res/layout/activity_spraying_manual_result.xml new file mode 100644 index 0000000..c37a56a --- /dev/null +++ b/app/src/main/res/layout/activity_spraying_manual_result.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_manual_result_action.xml b/app/src/main/res/layout/item_manual_result_action.xml new file mode 100644 index 0000000..ff7493e --- /dev/null +++ b/app/src/main/res/layout/item_manual_result_action.xml @@ -0,0 +1,19 @@ + + + + + +