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 b99fb1f..82b821c 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 @@ -294,7 +294,7 @@ class InspectionActivity : Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), fileName ) - GlassMediaServiceHelper.takePhoto(PhotoResolution.RESOLUTION_1080P, file.absolutePath) + GlassMediaServiceHelper.takePhoto(PhotoResolution.RESOLUTION_720P, file.absolutePath) } private val photoCallbackId = UUID.randomUUID().toString() diff --git a/app/src/main/java/com/nova/brain/glass/ui/InspectionResultActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/InspectionResultActivity.kt index 5e4e6a5..992f3a2 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/InspectionResultActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/InspectionResultActivity.kt @@ -172,7 +172,7 @@ class InspectionResultActivity : Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), fileName ) - GlassMediaServiceHelper.takePhoto(PhotoResolution.RESOLUTION_1080P, file.absolutePath) + GlassMediaServiceHelper.takePhoto(PhotoResolution.RESOLUTION_720P, file.absolutePath) } private val photoCallbackId = UUID.randomUUID().toString() diff --git a/app/src/main/java/com/nova/brain/glass/ui/SprayingActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/SprayingActivity.kt index 45b2aee..d9b6c1d 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/SprayingActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/SprayingActivity.kt @@ -35,7 +35,7 @@ class SprayingActivity : } private var productionInfoId: String = "" - private val listener = object : OfflineCmdListener { + private val listener: OfflineCmdListener = object : OfflineCmdListener { override fun onOfflineCmd(cmd: String) { runOnUiThread { when (cmd) { @@ -44,12 +44,7 @@ class SprayingActivity : } "开始", "拍照", "开始拍照", "开始任务" -> { - runOnUiThread { - binding.hint.text = "拍照中,请稍后..." - } - SprayingPhotoManager.clear() - isPhoto = true - takePhoto() + startCapture(resetSession = true) } } } @@ -62,12 +57,12 @@ class SprayingActivity : val publicPicturesDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) val file = File(publicPicturesDir, fileName) - GlassMediaServiceHelper.takePhoto(PhotoResolution.RESOLUTION_1080P, file.absolutePath) + GlassMediaServiceHelper.takePhoto(PhotoResolution.RESOLUTION_720P, file.absolutePath) } private val photoCallbackId = UUID.randomUUID().toString() - private val mPhotoFileCallback = object : PhotoFileCallback.Stub() { + private val mPhotoFileCallback: PhotoFileCallback = object : PhotoFileCallback.Stub() { override fun onTakePhoto(path: String) { LogHelper.d("onTakePhoto-->path = $path") } @@ -83,13 +78,22 @@ class SprayingActivity : isPhoto = false takePhoto() } else { + isCaptureInFlight = false runOnUiThread { binding.hint.text = "单击或语音输入“开始”,进入下一步" } "相机异常".showMessage() } } else { + if (hasNavigatedNextPage) { + return + } + hasNavigatedNextPage = true + isCaptureInFlight = false SprayingPhotoManager.addPhoto(path) + GlassMediaServiceHelper.removePhotoCallback(mPhotoFileCallback) + OfflineCmdServiceHelper.removeListenerSpraying() + OfflineCmdServiceHelper.removeOnLineListener(listener) startActivity(Intent(this@SprayingActivity, SprayingOCRActivity::class.java).apply { putExtra("path", path) putExtra("taskId", taskId) @@ -123,6 +127,8 @@ class SprayingActivity : override fun onResume() { super.onResume() + hasNavigatedNextPage = false + isCaptureInFlight = false GlassMediaServiceHelper.addPhotoCallback(mPhotoFileCallback) OfflineCmdServiceHelper.addOnLineListener(listener) OfflineCmdServiceHelper.addListenerSpraying() @@ -136,23 +142,37 @@ class SprayingActivity : } override fun onDestroy() { + isCaptureInFlight = false + hasNavigatedNextPage = false super.onDestroy() window.clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } private var isPhoto = false - private val adapter = object : CommonPagedAdapter(R.layout.item_photo) { + private var isCaptureInFlight = false + private var hasNavigatedNextPage = false + + private fun startCapture(resetSession: Boolean) { + if (isCaptureInFlight || hasNavigatedNextPage) { + return + } + if (resetSession) { + SprayingPhotoManager.clear() + } + binding.hint.text = "拍照中,请稍后..." + isPhoto = true + isCaptureInFlight = true + takePhoto() + } + + private val adapter: BasePagedAdapter = + object : CommonPagedAdapter(R.layout.item_photo) { override fun convert(holder: ViewHolder, item: ItemItem, position: Int) { holder .setClickListener(R.id.photo) { when (item.text) { "开始任务" -> { - runOnUiThread { - binding.hint.text = "拍照中,请稍后..." - } - SprayingPhotoManager.clear() - isPhoto = true - takePhoto() + startCapture(resetSession = true) } } } 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 39a30a6..5867a33 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 @@ -61,7 +61,7 @@ class SprayingOCRActivity : val fileName = "test_${System.currentTimeMillis()}.png" val publicPicturesDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) val file = File(publicPicturesDir, fileName) - GlassMediaServiceHelper.takePhoto(PhotoResolution.RESOLUTION_1080P, file.absolutePath) + GlassMediaServiceHelper.takePhoto(PhotoResolution.RESOLUTION_720P, file.absolutePath) } private val photoCallbackId = UUID.randomUUID().toString() private val imageDecodeExecutor = Executors.newSingleThreadExecutor() 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 20e4ee1..79bab9f 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 @@ -121,7 +121,7 @@ class SprayingResultActivity : val fileName = "test_${System.currentTimeMillis()}.png" val publicPicturesDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) val file = File(publicPicturesDir, fileName) - GlassMediaServiceHelper.takePhoto(PhotoResolution.RESOLUTION_1080P, file.absolutePath) + GlassMediaServiceHelper.takePhoto(PhotoResolution.RESOLUTION_720P, file.absolutePath) } fun rest() {