SprayingActivity.kt 5.0 KB

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