feat(inspection): 重构检查页面界面和功能
- 添加了"重新拍摄"和"重新拍照"命令支持 - 将检查活动从基础活动重构为列表表单布局活动 - 集成RecyclerView来显示项目列表,替换原有的静态按钮布局 - 创建适配器来处理列表项点击事件,包括开始任务功能 - 更新语音命令处理逻辑以支持新的重拍命令选项 - 修改UI布局以适应新的列表展示方式并移除旧的相机按钮组 - 调整提示文本的引号显示方式以确保正确渲染
这个提交包含在:
父节点
056302cc10
当前提交
1dd3477810
@ -68,6 +68,8 @@ object OfflineCmdServiceHelper {
|
|||||||
)
|
)
|
||||||
private val CMDS_INSPECTION_RESULT = listOf(
|
private val CMDS_INSPECTION_RESULT = listOf(
|
||||||
OfflineCmdBean("重拍照", "chong pai zhao"),
|
OfflineCmdBean("重拍照", "chong pai zhao"),
|
||||||
|
OfflineCmdBean("重新拍摄", "chong xin pai she"),
|
||||||
|
OfflineCmdBean("重新拍照", "chong xin pai zhao"),
|
||||||
OfflineCmdBean("结束任务", "jie shu ren wu"),
|
OfflineCmdBean("结束任务", "jie shu ren wu"),
|
||||||
OfflineCmdBean("继续任务", "ji xu ren wu")
|
OfflineCmdBean("继续任务", "ji xu ren wu")
|
||||||
)
|
)
|
||||||
|
|||||||
@ -3,24 +3,32 @@ package com.nova.brain.glass.ui
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Environment
|
import android.os.Environment
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.nova.brain.glass.R
|
import com.nova.brain.glass.R
|
||||||
import com.nova.brain.glass.databinding.ActivityInspectionBinding
|
import com.nova.brain.glass.databinding.ActivityInspectionBinding
|
||||||
import com.nova.brain.glass.helper.GlassMediaServiceHelper
|
import com.nova.brain.glass.helper.GlassMediaServiceHelper
|
||||||
import com.nova.brain.glass.helper.OfflineCmdListener
|
import com.nova.brain.glass.helper.OfflineCmdListener
|
||||||
import com.nova.brain.glass.helper.OfflineCmdServiceHelper
|
import com.nova.brain.glass.helper.OfflineCmdServiceHelper
|
||||||
import com.nova.brain.glass.helper.SprayingPhotoManager
|
import com.nova.brain.glass.helper.SprayingPhotoManager
|
||||||
|
import com.nova.brain.glass.model.ItemItem
|
||||||
|
import com.nova.brain.glass.viewmodel.InspectionVM
|
||||||
import com.rokid.security.glass3.sdk.base.data.media.PhotoResolution
|
import com.rokid.security.glass3.sdk.base.data.media.PhotoResolution
|
||||||
import com.rokid.security.system.server.media.callback.PhotoFileCallback
|
import com.rokid.security.system.server.media.callback.PhotoFileCallback
|
||||||
|
import com.xuqm.base.adapter.BasePagedAdapter
|
||||||
|
import com.xuqm.base.adapter.CommonPagedAdapter
|
||||||
|
import com.xuqm.base.adapter.ViewHolder
|
||||||
import com.xuqm.base.common.LogHelper
|
import com.xuqm.base.common.LogHelper
|
||||||
import com.xuqm.base.extensions.showMessage
|
import com.xuqm.base.extensions.showMessage
|
||||||
import com.xuqm.base.ui.BaseActivity
|
import com.xuqm.base.ui.BaseListFormLayoutNormalActivity
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
import kotlin.jvm.java
|
|
||||||
|
|
||||||
class InspectionActivity : BaseActivity<ActivityInspectionBinding>() {
|
class InspectionActivity :
|
||||||
|
BaseListFormLayoutNormalActivity<ItemItem, InspectionVM, ActivityInspectionBinding>() {
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.activity_inspection
|
override fun getLayoutId(): Int = R.layout.activity_inspection
|
||||||
override fun fullscreen(): Boolean = true
|
override fun fullscreen(): Boolean = true
|
||||||
|
override fun getRecyclerOrientation(): Int = RecyclerView.VERTICAL
|
||||||
|
|
||||||
private val listener = object : OfflineCmdListener {
|
private val listener = object : OfflineCmdListener {
|
||||||
override fun onOfflineCmd(cmd: String) {
|
override fun onOfflineCmd(cmd: String) {
|
||||||
@ -37,9 +45,6 @@ class InspectionActivity : BaseActivity<ActivityInspectionBinding>() {
|
|||||||
super.initData()
|
super.initData()
|
||||||
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
||||||
SprayingPhotoManager.clear()
|
SprayingPhotoManager.clear()
|
||||||
binding.btnCamera.setOnClickListener { startCapture() }
|
|
||||||
binding.btnPrev.setOnClickListener { /* 切换上一任务(待实现) */ }
|
|
||||||
binding.btnNext.setOnClickListener { /* 切换下一任务(待实现) */ }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun startCapture() {
|
private fun startCapture() {
|
||||||
@ -69,7 +74,7 @@ class InspectionActivity : BaseActivity<ActivityInspectionBinding>() {
|
|||||||
override fun onTakePhotoV2(path: String?, width: Int, height: Int) {
|
override fun onTakePhotoV2(path: String?, width: Int, height: Int) {
|
||||||
if (path == null) {
|
if (path == null) {
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
binding.hint.text = "单击或语音输入\u201C开始\u201D,进入下一步\n滑动切换上/下一个任务"
|
binding.hint.text = "单击或语音输入“开始”,进入下一步\n滑动切换上/下一个任务"
|
||||||
}
|
}
|
||||||
"相机异常".showMessage()
|
"相机异常".showMessage()
|
||||||
return
|
return
|
||||||
@ -83,6 +88,20 @@ class InspectionActivity : BaseActivity<ActivityInspectionBinding>() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val adapter = object : CommonPagedAdapter<ItemItem>(R.layout.item_photo) {
|
||||||
|
override fun convert(holder: ViewHolder, item: ItemItem, position: Int) {
|
||||||
|
holder
|
||||||
|
.setText(R.id.text, item.text)
|
||||||
|
.setClickListener(R.id.photo) {
|
||||||
|
when (item.text) {
|
||||||
|
"开始任务" -> startCapture()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun adapter(): BasePagedAdapter<ItemItem> = adapter
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
GlassMediaServiceHelper.addPhotoCallback(mPhotoFileCallback)
|
GlassMediaServiceHelper.addPhotoCallback(mPhotoFileCallback)
|
||||||
@ -99,4 +118,4 @@ class InspectionActivity : BaseActivity<ActivityInspectionBinding>() {
|
|||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -65,7 +65,7 @@ class InspectionResultActivity :
|
|||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
when (cmd) {
|
when (cmd) {
|
||||||
"退出", "返回", "退回" -> finish()
|
"退出", "返回", "退回" -> finish()
|
||||||
"重拍照" -> retake()
|
"重拍照","重新拍摄","重新拍照" -> retake()
|
||||||
"继续任务" -> continueTask()
|
"继续任务" -> continueTask()
|
||||||
"结束任务" -> endTask()
|
"结束任务" -> endTask()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,17 +1,16 @@
|
|||||||
package com.nova.brain.glass.viewmodel
|
package com.nova.brain.glass.viewmodel
|
||||||
|
|
||||||
import com.nova.brain.glass.model.ItemItem
|
import com.nova.brain.glass.model.ItemItem
|
||||||
import com.nova.brain.glass.model.TaskItem
|
|
||||||
import com.xuqm.base.viewmodel.BaseListViewModel
|
import com.xuqm.base.viewmodel.BaseListViewModel
|
||||||
import com.xuqm.base.viewmodel.callback.Response
|
import com.xuqm.base.viewmodel.callback.Response
|
||||||
|
|
||||||
class InspectionVM: BaseListViewModel<ItemItem>() {
|
class InspectionVM : BaseListViewModel<ItemItem>() {
|
||||||
override fun loadData(
|
override fun loadData(
|
||||||
page: Int,
|
page: Int,
|
||||||
onResponse: Response<ItemItem>
|
onResponse: Response<ItemItem>
|
||||||
) {
|
) {
|
||||||
onResponse.onResponse(arrayListOf<ItemItem>().apply {
|
onResponse.onResponse(arrayListOf<ItemItem>().apply {
|
||||||
add(ItemItem("拍照"))
|
add(ItemItem("开始任务"))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -80,62 +80,16 @@
|
|||||||
android:textSize="14sp" />
|
android:textSize="14sp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<!-- 拍照区:左箭头 | 相机按钮 | 右箭头 -->
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
<LinearLayout
|
android:id="@+id/baseRecyclerView"
|
||||||
android:id="@+id/cameraRow"
|
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="88dp"
|
||||||
android:layout_marginTop="24dp"
|
android:layout_marginTop="24dp"
|
||||||
android:gravity="center_vertical"
|
android:clipToPadding="false"
|
||||||
android:orientation="horizontal"
|
android:overScrollMode="never"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/content">
|
app:layout_constraintTop_toBottomOf="@+id/content" />
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/btnPrev"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:gravity="center"
|
|
||||||
android:text="◀"
|
|
||||||
android:textColor="#ff40FF5E"
|
|
||||||
android:textSize="32sp" />
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/btnCamera"
|
|
||||||
android:layout_width="88dp"
|
|
||||||
android:layout_height="88dp"
|
|
||||||
android:background="@drawable/bg_photo"
|
|
||||||
android:gravity="center"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:layout_width="30dp"
|
|
||||||
android:layout_height="24dp"
|
|
||||||
android:src="@mipmap/paizhao" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/btnCameraText"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="6dp"
|
|
||||||
android:gravity="center"
|
|
||||||
android:text="开始任务"
|
|
||||||
android:textColor="#ff40FF5E"
|
|
||||||
android:textSize="14sp" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/btnNext"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:gravity="center"
|
|
||||||
android:text="▶"
|
|
||||||
android:textColor="#ff40FF5E"
|
|
||||||
android:textSize="32sp" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/hint"
|
android:id="@+id/hint"
|
||||||
@ -143,12 +97,12 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="12dp"
|
android:layout_marginTop="12dp"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text='单击或语音输入"开始",进入下一步\n滑动切换上/下一个任务'
|
android:text="单击或语音输入"开始",进入下一步 滑动切换上/下一个任务"
|
||||||
android:textColor="#ff40FF5E"
|
android:textColor="#ff40FF5E"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/cameraRow" />
|
app:layout_constraintTop_toBottomOf="@+id/baseRecyclerView" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</layout>
|
</layout>
|
||||||
正在加载...
在新工单中引用
屏蔽一个用户