SprayingResultActivity.kt 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. package com.nova.brain.glass.ui
  2. import android.content.Intent
  3. import android.graphics.BitmapFactory
  4. import android.os.Environment
  5. import android.view.WindowManager
  6. import androidx.recyclerview.widget.RecyclerView
  7. import com.nova.brain.glass.R
  8. import com.nova.brain.glass.databinding.ActivitySprayingResultBinding
  9. import com.nova.brain.glass.helper.OfflineCmdListener
  10. import com.nova.brain.glass.helper.OfflineCmdServiceHelper
  11. import com.nova.brain.glass.model.ItemItem
  12. import com.nova.brain.glass.viewmodel.SprayingResultVM
  13. import com.rokid.security.glass3.open.sdk.GlassSdk
  14. import com.rokid.security.glass3.sdk.base.data.media.PhotoResolution
  15. import com.rokid.security.system.server.media.callback.PhotoFileCallback
  16. import com.xuqm.base.adapter.BasePagedAdapter
  17. import com.xuqm.base.adapter.CommonPagedAdapter
  18. import com.xuqm.base.adapter.ViewHolder
  19. import com.xuqm.base.common.LogHelper
  20. import com.xuqm.base.extensions.showMessage
  21. import com.xuqm.base.ui.BaseListFormLayoutNormalActivity
  22. import java.io.File
  23. import java.util.UUID
  24. class SprayingResultActivity :
  25. BaseListFormLayoutNormalActivity<ItemItem, SprayingResultVM, ActivitySprayingResultBinding>() {
  26. override fun getLayoutId(): Int = R.layout.activity_spraying_result
  27. override fun fullscreen(): Boolean = true
  28. override fun getRecyclerOrientation(): Int = RecyclerView.HORIZONTAL
  29. private val listener = object : OfflineCmdListener {
  30. override fun onOfflineCmd(cmd: String) {
  31. runOnUiThread {
  32. when (cmd) {
  33. "退出", "返回", "退回" -> {
  34. finish()
  35. }
  36. "重拍", "重新拍", "继续拍照", "再拍一次", "继续拍摄" -> {
  37. runOnUiThread {
  38. binding.hint.text = "拍照中,请稍后..."
  39. }
  40. isPhoto = true
  41. takePhoto()
  42. }
  43. "人工更正结果", "更正结果", "人工更正", "更正" -> {
  44. rest()
  45. }
  46. }
  47. }
  48. }
  49. }
  50. fun takePhoto() {
  51. val fileName = "test_${System.currentTimeMillis()}.png"
  52. val publicPicturesDir =
  53. Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
  54. val file = File(publicPicturesDir, fileName)
  55. GlassSdk.getGlassMediaService()
  56. ?.takePhoto(PhotoResolution.RESOLUTION_480P, file.absolutePath)
  57. }
  58. fun rest(){
  59. }
  60. private val photoCallbackId = UUID.randomUUID().toString()
  61. private val mPhotoFileCallback = object : PhotoFileCallback.Stub() {
  62. override fun onTakePhoto(path: String) {
  63. LogHelper.d("onTakePhoto-->path = $path")
  64. }
  65. override fun getCallbackId(): String {
  66. return photoCallbackId
  67. }
  68. override fun onTakePhotoV2(path: String?, width: Int, height: Int) {
  69. LogHelper.d("width:$width--height:$height")
  70. if (path == null) {
  71. if (isPhoto) {
  72. isPhoto = false
  73. takePhoto()
  74. } else {
  75. runOnUiThread {
  76. binding.hint.text = "单击或语音输入“开始”,进入下一步"
  77. }
  78. "相机异常".showMessage()
  79. }
  80. } else {
  81. startActivity(
  82. Intent(
  83. this@SprayingResultActivity, SprayingOCRActivity::class.java
  84. ).apply {
  85. putExtra("path", path)
  86. })
  87. finish()
  88. }
  89. }
  90. }
  91. override fun initData() {
  92. super.initData()
  93. window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
  94. OfflineCmdServiceHelper.addOnLineListener(listener)
  95. GlassSdk.getGlassMediaService()?.addPhotoCallback(mPhotoFileCallback)
  96. intent.getStringExtra("path")?.apply {
  97. binding.iv.setImageBitmap(BitmapFactory.decodeFile(this))
  98. }
  99. }
  100. override fun onDestroy() {
  101. super.onDestroy()
  102. OfflineCmdServiceHelper.removeOnLineListener(listener)
  103. GlassSdk.getGlassMediaService()?.removePhotoCallback(mPhotoFileCallback)
  104. }
  105. private var isPhoto = false
  106. private val adapter = object : CommonPagedAdapter<ItemItem>(R.layout.item_menu) {
  107. override fun convert(holder: ViewHolder, item: ItemItem, position: Int) {
  108. holder.setText(
  109. when (position) {
  110. 1 -> R.id.text
  111. else -> R.id.text2
  112. }, item.text
  113. )
  114. .setVisibility(when (position) {
  115. 1 -> R.id.da
  116. else -> R.id.xiao
  117. },true)
  118. .setClickListener(R.id.photo) {
  119. when (item.text) {
  120. "继续拍摄" -> {
  121. runOnUiThread {
  122. binding.hint.text = "拍照中,请稍后..."
  123. }
  124. isPhoto = true
  125. takePhoto()
  126. }
  127. "结束任务" -> {
  128. }
  129. "人工更正结果" -> {
  130. rest()
  131. }
  132. }
  133. }
  134. }
  135. }
  136. override fun adapter(): BasePagedAdapter<ItemItem> = adapter
  137. }