SprayingActivity.kt 4.7 KB

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