diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt index 5367e1b..4d68464 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt @@ -76,6 +76,12 @@ ): String /** + * 提交电子围栏区域 + */ + @POST("/emergency/syncElecFence") + suspend fun postRegion(@Body requestBody: RequestBody): String + + /** * 切换场景阶段 */ @POST("/setPhase") @@ -106,12 +112,6 @@ suspend fun getOtherAlarmState(@Query("deviceIp") deviceIp: String): String /** - * 提交算法区域 - */ - @POST("/setPosition") - suspend fun postRegion(@Body requestBody: RequestBody): String - - /** * 上传图片 * 系统路径static拼接图片返回路径 * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt index 5367e1b..4d68464 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt @@ -76,6 +76,12 @@ ): String /** + * 提交电子围栏区域 + */ + @POST("/emergency/syncElecFence") + suspend fun postRegion(@Body requestBody: RequestBody): String + + /** * 切换场景阶段 */ @POST("/setPhase") @@ -106,12 +112,6 @@ suspend fun getOtherAlarmState(@Query("deviceIp") deviceIp: String): String /** - * 提交算法区域 - */ - @POST("/setPosition") - suspend fun postRegion(@Body requestBody: RequestBody): String - - /** * 上传图片 * 系统路径static拼接图片返回路径 * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt index b1946bf..ed19c9f 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt @@ -97,6 +97,21 @@ } /** + * 设置区域 + * */ + suspend fun setVideoRegion(deviceCode: String, position: ArrayList): String { + val param = JsonObject() + param.addProperty("deviceCode", deviceCode) + param.addProperty("position", position.toJson()) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + return api.postRegion(requestBody) + } + + /** * 设置当前阶段 */ suspend fun setCurrentPhase(httpConfig: String, phase: String): String { @@ -163,21 +178,6 @@ } /** - * 设置区域 - * */ - suspend fun setVideoRegion(httpConfig: String, position: ArrayList): String { - val param = JsonObject() - param.addProperty("position", position.toJson()) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") - return service.postRegion(requestBody) - } - - /** * 执行设备控制指令 */ suspend fun executeDeviceCommand(action: String, speed: Int): String { diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt index 5367e1b..4d68464 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt @@ -76,6 +76,12 @@ ): String /** + * 提交电子围栏区域 + */ + @POST("/emergency/syncElecFence") + suspend fun postRegion(@Body requestBody: RequestBody): String + + /** * 切换场景阶段 */ @POST("/setPhase") @@ -106,12 +112,6 @@ suspend fun getOtherAlarmState(@Query("deviceIp") deviceIp: String): String /** - * 提交算法区域 - */ - @POST("/setPosition") - suspend fun postRegion(@Body requestBody: RequestBody): String - - /** * 上传图片 * 系统路径static拼接图片返回路径 * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt index b1946bf..ed19c9f 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt @@ -97,6 +97,21 @@ } /** + * 设置区域 + * */ + suspend fun setVideoRegion(deviceCode: String, position: ArrayList): String { + val param = JsonObject() + param.addProperty("deviceCode", deviceCode) + param.addProperty("position", position.toJson()) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + return api.postRegion(requestBody) + } + + /** * 设置当前阶段 */ suspend fun setCurrentPhase(httpConfig: String, phase: String): String { @@ -163,21 +178,6 @@ } /** - * 设置区域 - * */ - suspend fun setVideoRegion(httpConfig: String, position: ArrayList): String { - val param = JsonObject() - param.addProperty("position", position.toJson()) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") - return service.postRegion(requestBody) - } - - /** * 执行设备控制指令 */ suspend fun executeDeviceCommand(action: String, speed: Int): String { diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt index 2b27867..4f7b554 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt @@ -28,7 +28,9 @@ ) } +// const val SERVER_BASE_URL = "http://192.168.9.99:8085" const val SERVER_BASE_URL = "http://139.198.19.235:22006" + const val IMAGE_BED_URL = "${SERVER_BASE_URL}/emergency/prepareUpload" //一体机DeviceMonitor程序TCP Server IP地址 diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt index 5367e1b..4d68464 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt @@ -76,6 +76,12 @@ ): String /** + * 提交电子围栏区域 + */ + @POST("/emergency/syncElecFence") + suspend fun postRegion(@Body requestBody: RequestBody): String + + /** * 切换场景阶段 */ @POST("/setPhase") @@ -106,12 +112,6 @@ suspend fun getOtherAlarmState(@Query("deviceIp") deviceIp: String): String /** - * 提交算法区域 - */ - @POST("/setPosition") - suspend fun postRegion(@Body requestBody: RequestBody): String - - /** * 上传图片 * 系统路径static拼接图片返回路径 * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt index b1946bf..ed19c9f 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt @@ -97,6 +97,21 @@ } /** + * 设置区域 + * */ + suspend fun setVideoRegion(deviceCode: String, position: ArrayList): String { + val param = JsonObject() + param.addProperty("deviceCode", deviceCode) + param.addProperty("position", position.toJson()) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + return api.postRegion(requestBody) + } + + /** * 设置当前阶段 */ suspend fun setCurrentPhase(httpConfig: String, phase: String): String { @@ -163,21 +178,6 @@ } /** - * 设置区域 - * */ - suspend fun setVideoRegion(httpConfig: String, position: ArrayList): String { - val param = JsonObject() - param.addProperty("position", position.toJson()) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") - return service.postRegion(requestBody) - } - - /** * 执行设备控制指令 */ suspend fun executeDeviceCommand(action: String, speed: Int): String { diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt index 2b27867..4f7b554 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt @@ -28,7 +28,9 @@ ) } +// const val SERVER_BASE_URL = "http://192.168.9.99:8085" const val SERVER_BASE_URL = "http://139.198.19.235:22006" + const val IMAGE_BED_URL = "${SERVER_BASE_URL}/emergency/prepareUpload" //一体机DeviceMonitor程序TCP Server IP地址 diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt index 5ca1c8e..fa85f03 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt @@ -18,6 +18,7 @@ import com.casic.br.operationsite.test.util.tcp.SocketManager import com.casic.br.operationsite.test.vm.AlarmViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel +import com.casic.br.operationsite.test.vm.RegionViewModel import com.casic.br.operationsite.test.vm.WorkSiteViewModel import com.casic.br.operationsite.test.widget.AllCommandSheet import com.casic.br.operationsite.test.widget.BottomControlSheet @@ -53,6 +54,7 @@ private lateinit var alarmViewModel: AlarmViewModel private lateinit var constructionCheckViewModel: ConstructionCheckViewModel private lateinit var workSiteViewModel: WorkSiteViewModel + private lateinit var regionViewModel: RegionViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var timer: Timer private var isEndTask = false @@ -142,14 +144,10 @@ binding.rtspPlayerView.startPlayLogic() } - binding.clearVideoRegionButton.setOnClickListener { - binding.regionView.clearRoutePath() - } - binding.setVideoRegionButton.setOnClickListener { - val region = binding.regionView.getConfirmedPoints() + val region = binding.regionView.getConfirmedRegion() - constructionCheckViewModel.setVideoRegion(LocaleConstant.AI_BASE_IP, region) + regionViewModel.setVideoRegion("YTJ_010002", region) } binding.startVideoCheckButton.setOnClickListener { @@ -231,11 +229,6 @@ } constructionCheckViewModel = ViewModelProvider(this)[ConstructionCheckViewModel::class.java] - constructionCheckViewModel.setVideoRegionResult.observe(this) { - if (it) { - "区域配置成功".show(this) - } - } constructionCheckViewModel.setCurrentPhaseResult.observe(this) { if (it) { if (isEndTask) { @@ -272,6 +265,14 @@ } } } + + regionViewModel = ViewModelProvider(this)[RegionViewModel::class.java] + regionViewModel.setVideoRegionResult.observe(this) { + if (it) { + "电子围栏设置成功".show(this) + } + } + timer = Timer() timer.schedule(object : TimerTask() { override fun run() { diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt index 5367e1b..4d68464 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt @@ -76,6 +76,12 @@ ): String /** + * 提交电子围栏区域 + */ + @POST("/emergency/syncElecFence") + suspend fun postRegion(@Body requestBody: RequestBody): String + + /** * 切换场景阶段 */ @POST("/setPhase") @@ -106,12 +112,6 @@ suspend fun getOtherAlarmState(@Query("deviceIp") deviceIp: String): String /** - * 提交算法区域 - */ - @POST("/setPosition") - suspend fun postRegion(@Body requestBody: RequestBody): String - - /** * 上传图片 * 系统路径static拼接图片返回路径 * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt index b1946bf..ed19c9f 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt @@ -97,6 +97,21 @@ } /** + * 设置区域 + * */ + suspend fun setVideoRegion(deviceCode: String, position: ArrayList): String { + val param = JsonObject() + param.addProperty("deviceCode", deviceCode) + param.addProperty("position", position.toJson()) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + return api.postRegion(requestBody) + } + + /** * 设置当前阶段 */ suspend fun setCurrentPhase(httpConfig: String, phase: String): String { @@ -163,21 +178,6 @@ } /** - * 设置区域 - * */ - suspend fun setVideoRegion(httpConfig: String, position: ArrayList): String { - val param = JsonObject() - param.addProperty("position", position.toJson()) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") - return service.postRegion(requestBody) - } - - /** * 执行设备控制指令 */ suspend fun executeDeviceCommand(action: String, speed: Int): String { diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt index 2b27867..4f7b554 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt @@ -28,7 +28,9 @@ ) } +// const val SERVER_BASE_URL = "http://192.168.9.99:8085" const val SERVER_BASE_URL = "http://139.198.19.235:22006" + const val IMAGE_BED_URL = "${SERVER_BASE_URL}/emergency/prepareUpload" //一体机DeviceMonitor程序TCP Server IP地址 diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt index 5ca1c8e..fa85f03 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt @@ -18,6 +18,7 @@ import com.casic.br.operationsite.test.util.tcp.SocketManager import com.casic.br.operationsite.test.vm.AlarmViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel +import com.casic.br.operationsite.test.vm.RegionViewModel import com.casic.br.operationsite.test.vm.WorkSiteViewModel import com.casic.br.operationsite.test.widget.AllCommandSheet import com.casic.br.operationsite.test.widget.BottomControlSheet @@ -53,6 +54,7 @@ private lateinit var alarmViewModel: AlarmViewModel private lateinit var constructionCheckViewModel: ConstructionCheckViewModel private lateinit var workSiteViewModel: WorkSiteViewModel + private lateinit var regionViewModel: RegionViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var timer: Timer private var isEndTask = false @@ -142,14 +144,10 @@ binding.rtspPlayerView.startPlayLogic() } - binding.clearVideoRegionButton.setOnClickListener { - binding.regionView.clearRoutePath() - } - binding.setVideoRegionButton.setOnClickListener { - val region = binding.regionView.getConfirmedPoints() + val region = binding.regionView.getConfirmedRegion() - constructionCheckViewModel.setVideoRegion(LocaleConstant.AI_BASE_IP, region) + regionViewModel.setVideoRegion("YTJ_010002", region) } binding.startVideoCheckButton.setOnClickListener { @@ -231,11 +229,6 @@ } constructionCheckViewModel = ViewModelProvider(this)[ConstructionCheckViewModel::class.java] - constructionCheckViewModel.setVideoRegionResult.observe(this) { - if (it) { - "区域配置成功".show(this) - } - } constructionCheckViewModel.setCurrentPhaseResult.observe(this) { if (it) { if (isEndTask) { @@ -272,6 +265,14 @@ } } } + + regionViewModel = ViewModelProvider(this)[RegionViewModel::class.java] + regionViewModel.setVideoRegionResult.observe(this) { + if (it) { + "电子围栏设置成功".show(this) + } + } + timer = Timer() timer.schedule(object : TimerTask() { override fun run() { diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt index c2d2894..7530f9d 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt @@ -126,7 +126,7 @@ .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { - navigatePageTo() + intentActivity() } override fun onCancelClick() { @@ -230,11 +230,7 @@ .setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { - sceneViewModel.notifyStageFinished( - RuntimeCache.uploadFileTaskId, "Supply" - ) - SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) - navigatePageTo() + intentActivity() } override fun onCancelClick() { @@ -247,6 +243,12 @@ return true } + private fun intentActivity() { + sceneViewModel.notifyStageFinished(RuntimeCache.uploadFileTaskId, "Supply") + SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) + navigatePageTo() + } + override fun initViewBinding(): ActivitySuppliesBinding { return ActivitySuppliesBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt index 5367e1b..4d68464 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt @@ -76,6 +76,12 @@ ): String /** + * 提交电子围栏区域 + */ + @POST("/emergency/syncElecFence") + suspend fun postRegion(@Body requestBody: RequestBody): String + + /** * 切换场景阶段 */ @POST("/setPhase") @@ -106,12 +112,6 @@ suspend fun getOtherAlarmState(@Query("deviceIp") deviceIp: String): String /** - * 提交算法区域 - */ - @POST("/setPosition") - suspend fun postRegion(@Body requestBody: RequestBody): String - - /** * 上传图片 * 系统路径static拼接图片返回路径 * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt index b1946bf..ed19c9f 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt @@ -97,6 +97,21 @@ } /** + * 设置区域 + * */ + suspend fun setVideoRegion(deviceCode: String, position: ArrayList): String { + val param = JsonObject() + param.addProperty("deviceCode", deviceCode) + param.addProperty("position", position.toJson()) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + return api.postRegion(requestBody) + } + + /** * 设置当前阶段 */ suspend fun setCurrentPhase(httpConfig: String, phase: String): String { @@ -163,21 +178,6 @@ } /** - * 设置区域 - * */ - suspend fun setVideoRegion(httpConfig: String, position: ArrayList): String { - val param = JsonObject() - param.addProperty("position", position.toJson()) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") - return service.postRegion(requestBody) - } - - /** * 执行设备控制指令 */ suspend fun executeDeviceCommand(action: String, speed: Int): String { diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt index 2b27867..4f7b554 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt @@ -28,7 +28,9 @@ ) } +// const val SERVER_BASE_URL = "http://192.168.9.99:8085" const val SERVER_BASE_URL = "http://139.198.19.235:22006" + const val IMAGE_BED_URL = "${SERVER_BASE_URL}/emergency/prepareUpload" //一体机DeviceMonitor程序TCP Server IP地址 diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt index 5ca1c8e..fa85f03 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt @@ -18,6 +18,7 @@ import com.casic.br.operationsite.test.util.tcp.SocketManager import com.casic.br.operationsite.test.vm.AlarmViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel +import com.casic.br.operationsite.test.vm.RegionViewModel import com.casic.br.operationsite.test.vm.WorkSiteViewModel import com.casic.br.operationsite.test.widget.AllCommandSheet import com.casic.br.operationsite.test.widget.BottomControlSheet @@ -53,6 +54,7 @@ private lateinit var alarmViewModel: AlarmViewModel private lateinit var constructionCheckViewModel: ConstructionCheckViewModel private lateinit var workSiteViewModel: WorkSiteViewModel + private lateinit var regionViewModel: RegionViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var timer: Timer private var isEndTask = false @@ -142,14 +144,10 @@ binding.rtspPlayerView.startPlayLogic() } - binding.clearVideoRegionButton.setOnClickListener { - binding.regionView.clearRoutePath() - } - binding.setVideoRegionButton.setOnClickListener { - val region = binding.regionView.getConfirmedPoints() + val region = binding.regionView.getConfirmedRegion() - constructionCheckViewModel.setVideoRegion(LocaleConstant.AI_BASE_IP, region) + regionViewModel.setVideoRegion("YTJ_010002", region) } binding.startVideoCheckButton.setOnClickListener { @@ -231,11 +229,6 @@ } constructionCheckViewModel = ViewModelProvider(this)[ConstructionCheckViewModel::class.java] - constructionCheckViewModel.setVideoRegionResult.observe(this) { - if (it) { - "区域配置成功".show(this) - } - } constructionCheckViewModel.setCurrentPhaseResult.observe(this) { if (it) { if (isEndTask) { @@ -272,6 +265,14 @@ } } } + + regionViewModel = ViewModelProvider(this)[RegionViewModel::class.java] + regionViewModel.setVideoRegionResult.observe(this) { + if (it) { + "电子围栏设置成功".show(this) + } + } + timer = Timer() timer.schedule(object : TimerTask() { override fun run() { diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt index c2d2894..7530f9d 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt @@ -126,7 +126,7 @@ .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { - navigatePageTo() + intentActivity() } override fun onCancelClick() { @@ -230,11 +230,7 @@ .setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { - sceneViewModel.notifyStageFinished( - RuntimeCache.uploadFileTaskId, "Supply" - ) - SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) - navigatePageTo() + intentActivity() } override fun onCancelClick() { @@ -247,6 +243,12 @@ return true } + private fun intentActivity() { + sceneViewModel.notifyStageFinished(RuntimeCache.uploadFileTaskId, "Supply") + SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) + navigatePageTo() + } + override fun initViewBinding(): ActivitySuppliesBinding { return ActivitySuppliesBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/casic/br/operationsite/test/vm/ConstructionCheckViewModel.kt b/app/src/main/java/com/casic/br/operationsite/test/vm/ConstructionCheckViewModel.kt index e591d2e..12662a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/vm/ConstructionCheckViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/vm/ConstructionCheckViewModel.kt @@ -9,14 +9,6 @@ class ConstructionCheckViewModel : BaseViewModel() { val setCurrentPhaseResult = MutableLiveData() - val setVideoRegionResult = MutableLiveData() - - fun setVideoRegion(httpConfig: String, position: ArrayList) = launch({ - val response = RetrofitServiceManager.setVideoRegion(httpConfig, position) - setVideoRegionResult.value = response.getResponseCode() == 200 - }, { - it.printStackTrace() - }) fun setCurrentPhase(httpConfig: String, phase: String) = launch({ val response = RetrofitServiceManager.setCurrentPhase(httpConfig, phase) diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt index 5367e1b..4d68464 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt @@ -76,6 +76,12 @@ ): String /** + * 提交电子围栏区域 + */ + @POST("/emergency/syncElecFence") + suspend fun postRegion(@Body requestBody: RequestBody): String + + /** * 切换场景阶段 */ @POST("/setPhase") @@ -106,12 +112,6 @@ suspend fun getOtherAlarmState(@Query("deviceIp") deviceIp: String): String /** - * 提交算法区域 - */ - @POST("/setPosition") - suspend fun postRegion(@Body requestBody: RequestBody): String - - /** * 上传图片 * 系统路径static拼接图片返回路径 * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt index b1946bf..ed19c9f 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt @@ -97,6 +97,21 @@ } /** + * 设置区域 + * */ + suspend fun setVideoRegion(deviceCode: String, position: ArrayList): String { + val param = JsonObject() + param.addProperty("deviceCode", deviceCode) + param.addProperty("position", position.toJson()) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + return api.postRegion(requestBody) + } + + /** * 设置当前阶段 */ suspend fun setCurrentPhase(httpConfig: String, phase: String): String { @@ -163,21 +178,6 @@ } /** - * 设置区域 - * */ - suspend fun setVideoRegion(httpConfig: String, position: ArrayList): String { - val param = JsonObject() - param.addProperty("position", position.toJson()) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") - return service.postRegion(requestBody) - } - - /** * 执行设备控制指令 */ suspend fun executeDeviceCommand(action: String, speed: Int): String { diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt index 2b27867..4f7b554 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt @@ -28,7 +28,9 @@ ) } +// const val SERVER_BASE_URL = "http://192.168.9.99:8085" const val SERVER_BASE_URL = "http://139.198.19.235:22006" + const val IMAGE_BED_URL = "${SERVER_BASE_URL}/emergency/prepareUpload" //一体机DeviceMonitor程序TCP Server IP地址 diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt index 5ca1c8e..fa85f03 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt @@ -18,6 +18,7 @@ import com.casic.br.operationsite.test.util.tcp.SocketManager import com.casic.br.operationsite.test.vm.AlarmViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel +import com.casic.br.operationsite.test.vm.RegionViewModel import com.casic.br.operationsite.test.vm.WorkSiteViewModel import com.casic.br.operationsite.test.widget.AllCommandSheet import com.casic.br.operationsite.test.widget.BottomControlSheet @@ -53,6 +54,7 @@ private lateinit var alarmViewModel: AlarmViewModel private lateinit var constructionCheckViewModel: ConstructionCheckViewModel private lateinit var workSiteViewModel: WorkSiteViewModel + private lateinit var regionViewModel: RegionViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var timer: Timer private var isEndTask = false @@ -142,14 +144,10 @@ binding.rtspPlayerView.startPlayLogic() } - binding.clearVideoRegionButton.setOnClickListener { - binding.regionView.clearRoutePath() - } - binding.setVideoRegionButton.setOnClickListener { - val region = binding.regionView.getConfirmedPoints() + val region = binding.regionView.getConfirmedRegion() - constructionCheckViewModel.setVideoRegion(LocaleConstant.AI_BASE_IP, region) + regionViewModel.setVideoRegion("YTJ_010002", region) } binding.startVideoCheckButton.setOnClickListener { @@ -231,11 +229,6 @@ } constructionCheckViewModel = ViewModelProvider(this)[ConstructionCheckViewModel::class.java] - constructionCheckViewModel.setVideoRegionResult.observe(this) { - if (it) { - "区域配置成功".show(this) - } - } constructionCheckViewModel.setCurrentPhaseResult.observe(this) { if (it) { if (isEndTask) { @@ -272,6 +265,14 @@ } } } + + regionViewModel = ViewModelProvider(this)[RegionViewModel::class.java] + regionViewModel.setVideoRegionResult.observe(this) { + if (it) { + "电子围栏设置成功".show(this) + } + } + timer = Timer() timer.schedule(object : TimerTask() { override fun run() { diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt index c2d2894..7530f9d 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt @@ -126,7 +126,7 @@ .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { - navigatePageTo() + intentActivity() } override fun onCancelClick() { @@ -230,11 +230,7 @@ .setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { - sceneViewModel.notifyStageFinished( - RuntimeCache.uploadFileTaskId, "Supply" - ) - SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) - navigatePageTo() + intentActivity() } override fun onCancelClick() { @@ -247,6 +243,12 @@ return true } + private fun intentActivity() { + sceneViewModel.notifyStageFinished(RuntimeCache.uploadFileTaskId, "Supply") + SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) + navigatePageTo() + } + override fun initViewBinding(): ActivitySuppliesBinding { return ActivitySuppliesBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/casic/br/operationsite/test/vm/ConstructionCheckViewModel.kt b/app/src/main/java/com/casic/br/operationsite/test/vm/ConstructionCheckViewModel.kt index e591d2e..12662a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/vm/ConstructionCheckViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/vm/ConstructionCheckViewModel.kt @@ -9,14 +9,6 @@ class ConstructionCheckViewModel : BaseViewModel() { val setCurrentPhaseResult = MutableLiveData() - val setVideoRegionResult = MutableLiveData() - - fun setVideoRegion(httpConfig: String, position: ArrayList) = launch({ - val response = RetrofitServiceManager.setVideoRegion(httpConfig, position) - setVideoRegionResult.value = response.getResponseCode() == 200 - }, { - it.printStackTrace() - }) fun setCurrentPhase(httpConfig: String, phase: String) = launch({ val response = RetrofitServiceManager.setCurrentPhase(httpConfig, phase) diff --git a/app/src/main/java/com/casic/br/operationsite/test/vm/RegionViewModel.kt b/app/src/main/java/com/casic/br/operationsite/test/vm/RegionViewModel.kt new file mode 100644 index 0000000..6066e32 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/vm/RegionViewModel.kt @@ -0,0 +1,19 @@ +package com.casic.br.operationsite.test.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.br.operationsite.test.extensions.getResponseCode +import com.casic.br.operationsite.test.retrofit.RetrofitServiceManager +import com.pengxh.kt.lite.base.BaseViewModel +import com.pengxh.kt.lite.extensions.launch + +class RegionViewModel : BaseViewModel() { + + val setVideoRegionResult = MutableLiveData() + + fun setVideoRegion(stage: String, position: ArrayList) = launch({ + val response = RetrofitServiceManager.setVideoRegion(stage, position) + setVideoRegionResult.value = response.getResponseCode() == 200 + }, { + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt index 5367e1b..4d68464 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt @@ -76,6 +76,12 @@ ): String /** + * 提交电子围栏区域 + */ + @POST("/emergency/syncElecFence") + suspend fun postRegion(@Body requestBody: RequestBody): String + + /** * 切换场景阶段 */ @POST("/setPhase") @@ -106,12 +112,6 @@ suspend fun getOtherAlarmState(@Query("deviceIp") deviceIp: String): String /** - * 提交算法区域 - */ - @POST("/setPosition") - suspend fun postRegion(@Body requestBody: RequestBody): String - - /** * 上传图片 * 系统路径static拼接图片返回路径 * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt index b1946bf..ed19c9f 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt @@ -97,6 +97,21 @@ } /** + * 设置区域 + * */ + suspend fun setVideoRegion(deviceCode: String, position: ArrayList): String { + val param = JsonObject() + param.addProperty("deviceCode", deviceCode) + param.addProperty("position", position.toJson()) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + return api.postRegion(requestBody) + } + + /** * 设置当前阶段 */ suspend fun setCurrentPhase(httpConfig: String, phase: String): String { @@ -163,21 +178,6 @@ } /** - * 设置区域 - * */ - suspend fun setVideoRegion(httpConfig: String, position: ArrayList): String { - val param = JsonObject() - param.addProperty("position", position.toJson()) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") - return service.postRegion(requestBody) - } - - /** * 执行设备控制指令 */ suspend fun executeDeviceCommand(action: String, speed: Int): String { diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt index 2b27867..4f7b554 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt @@ -28,7 +28,9 @@ ) } +// const val SERVER_BASE_URL = "http://192.168.9.99:8085" const val SERVER_BASE_URL = "http://139.198.19.235:22006" + const val IMAGE_BED_URL = "${SERVER_BASE_URL}/emergency/prepareUpload" //一体机DeviceMonitor程序TCP Server IP地址 diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt index 5ca1c8e..fa85f03 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt @@ -18,6 +18,7 @@ import com.casic.br.operationsite.test.util.tcp.SocketManager import com.casic.br.operationsite.test.vm.AlarmViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel +import com.casic.br.operationsite.test.vm.RegionViewModel import com.casic.br.operationsite.test.vm.WorkSiteViewModel import com.casic.br.operationsite.test.widget.AllCommandSheet import com.casic.br.operationsite.test.widget.BottomControlSheet @@ -53,6 +54,7 @@ private lateinit var alarmViewModel: AlarmViewModel private lateinit var constructionCheckViewModel: ConstructionCheckViewModel private lateinit var workSiteViewModel: WorkSiteViewModel + private lateinit var regionViewModel: RegionViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var timer: Timer private var isEndTask = false @@ -142,14 +144,10 @@ binding.rtspPlayerView.startPlayLogic() } - binding.clearVideoRegionButton.setOnClickListener { - binding.regionView.clearRoutePath() - } - binding.setVideoRegionButton.setOnClickListener { - val region = binding.regionView.getConfirmedPoints() + val region = binding.regionView.getConfirmedRegion() - constructionCheckViewModel.setVideoRegion(LocaleConstant.AI_BASE_IP, region) + regionViewModel.setVideoRegion("YTJ_010002", region) } binding.startVideoCheckButton.setOnClickListener { @@ -231,11 +229,6 @@ } constructionCheckViewModel = ViewModelProvider(this)[ConstructionCheckViewModel::class.java] - constructionCheckViewModel.setVideoRegionResult.observe(this) { - if (it) { - "区域配置成功".show(this) - } - } constructionCheckViewModel.setCurrentPhaseResult.observe(this) { if (it) { if (isEndTask) { @@ -272,6 +265,14 @@ } } } + + regionViewModel = ViewModelProvider(this)[RegionViewModel::class.java] + regionViewModel.setVideoRegionResult.observe(this) { + if (it) { + "电子围栏设置成功".show(this) + } + } + timer = Timer() timer.schedule(object : TimerTask() { override fun run() { diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt index c2d2894..7530f9d 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt @@ -126,7 +126,7 @@ .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { - navigatePageTo() + intentActivity() } override fun onCancelClick() { @@ -230,11 +230,7 @@ .setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { - sceneViewModel.notifyStageFinished( - RuntimeCache.uploadFileTaskId, "Supply" - ) - SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) - navigatePageTo() + intentActivity() } override fun onCancelClick() { @@ -247,6 +243,12 @@ return true } + private fun intentActivity() { + sceneViewModel.notifyStageFinished(RuntimeCache.uploadFileTaskId, "Supply") + SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) + navigatePageTo() + } + override fun initViewBinding(): ActivitySuppliesBinding { return ActivitySuppliesBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/casic/br/operationsite/test/vm/ConstructionCheckViewModel.kt b/app/src/main/java/com/casic/br/operationsite/test/vm/ConstructionCheckViewModel.kt index e591d2e..12662a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/vm/ConstructionCheckViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/vm/ConstructionCheckViewModel.kt @@ -9,14 +9,6 @@ class ConstructionCheckViewModel : BaseViewModel() { val setCurrentPhaseResult = MutableLiveData() - val setVideoRegionResult = MutableLiveData() - - fun setVideoRegion(httpConfig: String, position: ArrayList) = launch({ - val response = RetrofitServiceManager.setVideoRegion(httpConfig, position) - setVideoRegionResult.value = response.getResponseCode() == 200 - }, { - it.printStackTrace() - }) fun setCurrentPhase(httpConfig: String, phase: String) = launch({ val response = RetrofitServiceManager.setCurrentPhase(httpConfig, phase) diff --git a/app/src/main/java/com/casic/br/operationsite/test/vm/RegionViewModel.kt b/app/src/main/java/com/casic/br/operationsite/test/vm/RegionViewModel.kt new file mode 100644 index 0000000..6066e32 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/vm/RegionViewModel.kt @@ -0,0 +1,19 @@ +package com.casic.br.operationsite.test.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.br.operationsite.test.extensions.getResponseCode +import com.casic.br.operationsite.test.retrofit.RetrofitServiceManager +import com.pengxh.kt.lite.base.BaseViewModel +import com.pengxh.kt.lite.extensions.launch + +class RegionViewModel : BaseViewModel() { + + val setVideoRegionResult = MutableLiveData() + + fun setVideoRegion(stage: String, position: ArrayList) = launch({ + val response = RetrofitServiceManager.setVideoRegion(stage, position) + setVideoRegionResult.value = response.getResponseCode() == 200 + }, { + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/test/widget/VideoRegionView.kt b/app/src/main/java/com/casic/br/operationsite/test/widget/VideoRegionView.kt index 739abb6..8bb5605 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/widget/VideoRegionView.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/widget/VideoRegionView.kt @@ -1,135 +1,141 @@ package com.casic.br.operationsite.test.widget +import android.annotation.SuppressLint import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Path +import android.graphics.PointF import android.util.AttributeSet import android.view.MotionEvent import android.view.View -import com.casic.br.operationsite.test.model.Point +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.getScreenWidth +import kotlin.math.pow +import kotlin.math.sqrt class VideoRegionView(private val ctx: Context, attrs: AttributeSet) : View(ctx, attrs) { - private val routePath: Path = Path() - private val rectPath: Path = Path() - private val routePaint: Paint = Paint() - private val borderPaint: Paint = Paint() - private var routes = ArrayList() + private val borderPaint = Paint(Paint.ANTI_ALIAS_FLAG) + private val vertexPaint = Paint(Paint.ANTI_ALIAS_FLAG) + private val vertices = listOf( + PointF(100f, 100f), // 顶点1 + PointF(300f, 100f), // 顶点2 + PointF(300f, 300f), // 顶点3 + PointF(100f, 300f) // 顶点4 + ) init { - routePaint.isAntiAlias = true - routePaint.color = Color.RED - routePaint.style = Paint.Style.STROKE - routePaint.strokeWidth = 5f //设置线宽 - routePaint.isAntiAlias = true - - borderPaint.isAntiAlias = true - borderPaint.color = Color.BLUE + borderPaint.color = Color.GREEN borderPaint.style = Paint.Style.STROKE - borderPaint.strokeWidth = 5f //设置线宽 + borderPaint.strokeJoin = Paint.Join.ROUND + borderPaint.strokeWidth = 2f.dp2px(ctx) borderPaint.isAntiAlias = true + + vertexPaint.color = Color.RED + vertexPaint.style = Paint.Style.FILL + vertexPaint.isAntiAlias = true + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + val width = MeasureSpec.getSize(widthMeasureSpec) + + val desiredHeight = ((9 / 16f) * width).toInt() + + /** + * UNSPECIFIED + * 父容器不对View有任何限制,要多大给多大,这般情况一般用于系统内部,表示一种测量状态,如ScrollView测量子View时用的就是这个。 + * EXACTLY + * 父容器已经检测出View所需要的大小,这个时候View的最终大小就是SpecSize所测定的值,它对应于LayoutParams中的match_parent和具体的数值(如40dp,60dp)这两种模式。 + * AT_MOST + * 父容器指定了一个可用大小即SpecSize,View的大小不能大于这个值,具体是什么值要看不同View的具体实现。它对应于LayoutParams中的wrap_content. + * + * */ + val newHeightMeasureSpec = MeasureSpec.makeMeasureSpec(desiredHeight, MeasureSpec.EXACTLY) + super.onMeasure(widthMeasureSpec, newHeightMeasureSpec) } override fun onDraw(canvas: Canvas) { super.onDraw(canvas) - canvas.drawPath(routePath, routePaint) - canvas.drawPath(rectPath, borderPaint) + val path = Path() + path.moveTo(vertices[0].x, vertices[0].y) + for (i in vertices.indices) { + // 绘制四边形 + path.lineTo(vertices[i].x, vertices[i].y) + + //绘制四个顶点 + canvas.drawCircle(vertices[i].x, vertices[i].y, 5f.dp2px(ctx), vertexPaint) + } + path.close() + canvas.drawPath(path, borderPaint) } - override fun onTouchEvent(event: MotionEvent): Boolean { + private var dragVertex: PointF? = null // 当前被拖动的顶点 + private var dragOffsetX = 0f // 拖动偏移量 + private var dragOffsetY = 0f // 拖动偏移量 + @SuppressLint("ClickableViewAccessibility") + override fun onTouchEvent(event: MotionEvent): Boolean { val x = event.x val y = event.y - routes.add(Point(x, y)) when (event.action) { - MotionEvent.ACTION_DOWN -> routePath.moveTo(x, y) - MotionEvent.ACTION_MOVE -> routePath.lineTo(x, y) - MotionEvent.ACTION_UP -> { - routePath.lineTo(x, y) - - /** - * 找出最大的(x1,y1)和最小的(x2,y2) - * - * 左上(x2,y2) - * 右上(x1,y2) - * 左下(x2,y1) - * 右下(x1,y1) - * */ - val sortedX = routes.sortedBy { point -> point.x } - val sortedY = routes.sortedBy { point -> point.y } - val xMaxPoint = sortedX.last() - val xMinPoint = sortedX.first() - - val yMaxPoint = sortedY.last() - val yMinPoint = sortedY.first() - - /** - * 画出外接矩形 - * */ - val leftTop = Point(xMinPoint.x, yMinPoint.y) - val rightTop = Point(xMaxPoint.x, yMinPoint.y) - val leftBottom = Point(xMinPoint.x, yMaxPoint.y) - val rightBottom = Point(xMaxPoint.x, yMaxPoint.y) - rectPath.moveTo(leftTop.x, leftTop.y) - rectPath.lineTo(rightTop.x, rightTop.y) - rectPath.lineTo(rightBottom.x, rightBottom.y) - rectPath.lineTo(leftBottom.x, leftBottom.y) - rectPath.lineTo(leftTop.x, leftTop.y) - - /** - * 计算出点的相对位置返回给一体机计算 - * */ - val width = ctx.getScreenWidth() - val height = ((9 / 16f) * width).toInt() - - /** - * 区域 - * */ - if (region.isNotEmpty()) { - region.clear() + MotionEvent.ACTION_DOWN -> { + dragVertex = findClosestVertex(x, y) + if (dragVertex != null) { + dragOffsetX = x - dragVertex!!.x + dragOffsetY = y - dragVertex!!.y + return true } - region.add(Point(leftTop.x / width, leftTop.y / height)) - region.add(Point(rightTop.x / width, rightTop.y / height)) - region.add(Point(leftBottom.x / width, leftBottom.y / height)) - region.add(Point(rightBottom.x / width, rightBottom.y / height)) + } - /** - * 点集合 - * */ - if (points.isNotEmpty()) { - points.clear() + MotionEvent.ACTION_MOVE -> { + if (dragVertex != null) { + dragVertex!!.set(x - dragOffsetX, y - dragOffsetY) + invalidate() // 重新绘制视图 + return true } - points.add(floatArrayOf(leftTop.x / width, leftTop.y / height)) - points.add(floatArrayOf(rightTop.x / width, rightTop.y / height)) - points.add(floatArrayOf(rightBottom.x / width, rightBottom.y / height)) - points.add(floatArrayOf(leftBottom.x / width, leftBottom.y / height)) + } + + MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> { + dragVertex = null } } - invalidate() - return true + return super.onTouchEvent(event) } - fun clearRoutePath() { - routePath.reset() - rectPath.reset() - routes.clear() - invalidate() + // 查找最近的顶点 + private fun findClosestVertex(x: Float, y: Float): PointF? { + var closest: PointF? = null + var minDistance = Float.MAX_VALUE + for (vertex in vertices) { + val distance = sqrt( + (x - vertex.x).toDouble().pow(2.0) + (y - vertex.y).toDouble().pow(2.0) + ).toFloat() + if (distance < minDistance) { + minDistance = distance + closest = vertex + } + } + return if (minDistance < 50) { + closest + } else null } - /////////////////////////////////////////////////////////////////////////////////////////////// + fun getConfirmedRegion(): ArrayList { + /** + * 计算出点的相对位置返回给一体机计算 + * */ + val width = ctx.getScreenWidth() + val height = ((9 / 16f) * width).toInt() - private var region = ArrayList() - - fun getConfirmedRegion(): ArrayList = region - - /////////////////////////////////////////////////////////////////////////////////////////////// - - private var points = ArrayList() - - fun getConfirmedPoints(): ArrayList = points + val region = ArrayList() + region.add(floatArrayOf(vertices[0].x / width, vertices[0].y / height)) + region.add(floatArrayOf(vertices[1].x / width, vertices[1].y / height)) + region.add(floatArrayOf(vertices[2].x / width, vertices[2].y / height)) + region.add(floatArrayOf(vertices[3].x / width, vertices[3].y / height)) + return region + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt index 5367e1b..4d68464 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt @@ -76,6 +76,12 @@ ): String /** + * 提交电子围栏区域 + */ + @POST("/emergency/syncElecFence") + suspend fun postRegion(@Body requestBody: RequestBody): String + + /** * 切换场景阶段 */ @POST("/setPhase") @@ -106,12 +112,6 @@ suspend fun getOtherAlarmState(@Query("deviceIp") deviceIp: String): String /** - * 提交算法区域 - */ - @POST("/setPosition") - suspend fun postRegion(@Body requestBody: RequestBody): String - - /** * 上传图片 * 系统路径static拼接图片返回路径 * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt index b1946bf..ed19c9f 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt @@ -97,6 +97,21 @@ } /** + * 设置区域 + * */ + suspend fun setVideoRegion(deviceCode: String, position: ArrayList): String { + val param = JsonObject() + param.addProperty("deviceCode", deviceCode) + param.addProperty("position", position.toJson()) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + + return api.postRegion(requestBody) + } + + /** * 设置当前阶段 */ suspend fun setCurrentPhase(httpConfig: String, phase: String): String { @@ -163,21 +178,6 @@ } /** - * 设置区域 - * */ - suspend fun setVideoRegion(httpConfig: String, position: ArrayList): String { - val param = JsonObject() - param.addProperty("position", position.toJson()) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") - return service.postRegion(requestBody) - } - - /** * 执行设备控制指令 */ suspend fun executeDeviceCommand(action: String, speed: Int): String { diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt index 2b27867..4f7b554 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt @@ -28,7 +28,9 @@ ) } +// const val SERVER_BASE_URL = "http://192.168.9.99:8085" const val SERVER_BASE_URL = "http://139.198.19.235:22006" + const val IMAGE_BED_URL = "${SERVER_BASE_URL}/emergency/prepareUpload" //一体机DeviceMonitor程序TCP Server IP地址 diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt index 5ca1c8e..fa85f03 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt @@ -18,6 +18,7 @@ import com.casic.br.operationsite.test.util.tcp.SocketManager import com.casic.br.operationsite.test.vm.AlarmViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel +import com.casic.br.operationsite.test.vm.RegionViewModel import com.casic.br.operationsite.test.vm.WorkSiteViewModel import com.casic.br.operationsite.test.widget.AllCommandSheet import com.casic.br.operationsite.test.widget.BottomControlSheet @@ -53,6 +54,7 @@ private lateinit var alarmViewModel: AlarmViewModel private lateinit var constructionCheckViewModel: ConstructionCheckViewModel private lateinit var workSiteViewModel: WorkSiteViewModel + private lateinit var regionViewModel: RegionViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var timer: Timer private var isEndTask = false @@ -142,14 +144,10 @@ binding.rtspPlayerView.startPlayLogic() } - binding.clearVideoRegionButton.setOnClickListener { - binding.regionView.clearRoutePath() - } - binding.setVideoRegionButton.setOnClickListener { - val region = binding.regionView.getConfirmedPoints() + val region = binding.regionView.getConfirmedRegion() - constructionCheckViewModel.setVideoRegion(LocaleConstant.AI_BASE_IP, region) + regionViewModel.setVideoRegion("YTJ_010002", region) } binding.startVideoCheckButton.setOnClickListener { @@ -231,11 +229,6 @@ } constructionCheckViewModel = ViewModelProvider(this)[ConstructionCheckViewModel::class.java] - constructionCheckViewModel.setVideoRegionResult.observe(this) { - if (it) { - "区域配置成功".show(this) - } - } constructionCheckViewModel.setCurrentPhaseResult.observe(this) { if (it) { if (isEndTask) { @@ -272,6 +265,14 @@ } } } + + regionViewModel = ViewModelProvider(this)[RegionViewModel::class.java] + regionViewModel.setVideoRegionResult.observe(this) { + if (it) { + "电子围栏设置成功".show(this) + } + } + timer = Timer() timer.schedule(object : TimerTask() { override fun run() { diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt index c2d2894..7530f9d 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt @@ -126,7 +126,7 @@ .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { - navigatePageTo() + intentActivity() } override fun onCancelClick() { @@ -230,11 +230,7 @@ .setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { - sceneViewModel.notifyStageFinished( - RuntimeCache.uploadFileTaskId, "Supply" - ) - SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) - navigatePageTo() + intentActivity() } override fun onCancelClick() { @@ -247,6 +243,12 @@ return true } + private fun intentActivity() { + sceneViewModel.notifyStageFinished(RuntimeCache.uploadFileTaskId, "Supply") + SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) + navigatePageTo() + } + override fun initViewBinding(): ActivitySuppliesBinding { return ActivitySuppliesBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/casic/br/operationsite/test/vm/ConstructionCheckViewModel.kt b/app/src/main/java/com/casic/br/operationsite/test/vm/ConstructionCheckViewModel.kt index e591d2e..12662a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/vm/ConstructionCheckViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/vm/ConstructionCheckViewModel.kt @@ -9,14 +9,6 @@ class ConstructionCheckViewModel : BaseViewModel() { val setCurrentPhaseResult = MutableLiveData() - val setVideoRegionResult = MutableLiveData() - - fun setVideoRegion(httpConfig: String, position: ArrayList) = launch({ - val response = RetrofitServiceManager.setVideoRegion(httpConfig, position) - setVideoRegionResult.value = response.getResponseCode() == 200 - }, { - it.printStackTrace() - }) fun setCurrentPhase(httpConfig: String, phase: String) = launch({ val response = RetrofitServiceManager.setCurrentPhase(httpConfig, phase) diff --git a/app/src/main/java/com/casic/br/operationsite/test/vm/RegionViewModel.kt b/app/src/main/java/com/casic/br/operationsite/test/vm/RegionViewModel.kt new file mode 100644 index 0000000..6066e32 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/vm/RegionViewModel.kt @@ -0,0 +1,19 @@ +package com.casic.br.operationsite.test.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.br.operationsite.test.extensions.getResponseCode +import com.casic.br.operationsite.test.retrofit.RetrofitServiceManager +import com.pengxh.kt.lite.base.BaseViewModel +import com.pengxh.kt.lite.extensions.launch + +class RegionViewModel : BaseViewModel() { + + val setVideoRegionResult = MutableLiveData() + + fun setVideoRegion(stage: String, position: ArrayList) = launch({ + val response = RetrofitServiceManager.setVideoRegion(stage, position) + setVideoRegionResult.value = response.getResponseCode() == 200 + }, { + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/test/widget/VideoRegionView.kt b/app/src/main/java/com/casic/br/operationsite/test/widget/VideoRegionView.kt index 739abb6..8bb5605 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/widget/VideoRegionView.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/widget/VideoRegionView.kt @@ -1,135 +1,141 @@ package com.casic.br.operationsite.test.widget +import android.annotation.SuppressLint import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Path +import android.graphics.PointF import android.util.AttributeSet import android.view.MotionEvent import android.view.View -import com.casic.br.operationsite.test.model.Point +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.getScreenWidth +import kotlin.math.pow +import kotlin.math.sqrt class VideoRegionView(private val ctx: Context, attrs: AttributeSet) : View(ctx, attrs) { - private val routePath: Path = Path() - private val rectPath: Path = Path() - private val routePaint: Paint = Paint() - private val borderPaint: Paint = Paint() - private var routes = ArrayList() + private val borderPaint = Paint(Paint.ANTI_ALIAS_FLAG) + private val vertexPaint = Paint(Paint.ANTI_ALIAS_FLAG) + private val vertices = listOf( + PointF(100f, 100f), // 顶点1 + PointF(300f, 100f), // 顶点2 + PointF(300f, 300f), // 顶点3 + PointF(100f, 300f) // 顶点4 + ) init { - routePaint.isAntiAlias = true - routePaint.color = Color.RED - routePaint.style = Paint.Style.STROKE - routePaint.strokeWidth = 5f //设置线宽 - routePaint.isAntiAlias = true - - borderPaint.isAntiAlias = true - borderPaint.color = Color.BLUE + borderPaint.color = Color.GREEN borderPaint.style = Paint.Style.STROKE - borderPaint.strokeWidth = 5f //设置线宽 + borderPaint.strokeJoin = Paint.Join.ROUND + borderPaint.strokeWidth = 2f.dp2px(ctx) borderPaint.isAntiAlias = true + + vertexPaint.color = Color.RED + vertexPaint.style = Paint.Style.FILL + vertexPaint.isAntiAlias = true + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + val width = MeasureSpec.getSize(widthMeasureSpec) + + val desiredHeight = ((9 / 16f) * width).toInt() + + /** + * UNSPECIFIED + * 父容器不对View有任何限制,要多大给多大,这般情况一般用于系统内部,表示一种测量状态,如ScrollView测量子View时用的就是这个。 + * EXACTLY + * 父容器已经检测出View所需要的大小,这个时候View的最终大小就是SpecSize所测定的值,它对应于LayoutParams中的match_parent和具体的数值(如40dp,60dp)这两种模式。 + * AT_MOST + * 父容器指定了一个可用大小即SpecSize,View的大小不能大于这个值,具体是什么值要看不同View的具体实现。它对应于LayoutParams中的wrap_content. + * + * */ + val newHeightMeasureSpec = MeasureSpec.makeMeasureSpec(desiredHeight, MeasureSpec.EXACTLY) + super.onMeasure(widthMeasureSpec, newHeightMeasureSpec) } override fun onDraw(canvas: Canvas) { super.onDraw(canvas) - canvas.drawPath(routePath, routePaint) - canvas.drawPath(rectPath, borderPaint) + val path = Path() + path.moveTo(vertices[0].x, vertices[0].y) + for (i in vertices.indices) { + // 绘制四边形 + path.lineTo(vertices[i].x, vertices[i].y) + + //绘制四个顶点 + canvas.drawCircle(vertices[i].x, vertices[i].y, 5f.dp2px(ctx), vertexPaint) + } + path.close() + canvas.drawPath(path, borderPaint) } - override fun onTouchEvent(event: MotionEvent): Boolean { + private var dragVertex: PointF? = null // 当前被拖动的顶点 + private var dragOffsetX = 0f // 拖动偏移量 + private var dragOffsetY = 0f // 拖动偏移量 + @SuppressLint("ClickableViewAccessibility") + override fun onTouchEvent(event: MotionEvent): Boolean { val x = event.x val y = event.y - routes.add(Point(x, y)) when (event.action) { - MotionEvent.ACTION_DOWN -> routePath.moveTo(x, y) - MotionEvent.ACTION_MOVE -> routePath.lineTo(x, y) - MotionEvent.ACTION_UP -> { - routePath.lineTo(x, y) - - /** - * 找出最大的(x1,y1)和最小的(x2,y2) - * - * 左上(x2,y2) - * 右上(x1,y2) - * 左下(x2,y1) - * 右下(x1,y1) - * */ - val sortedX = routes.sortedBy { point -> point.x } - val sortedY = routes.sortedBy { point -> point.y } - val xMaxPoint = sortedX.last() - val xMinPoint = sortedX.first() - - val yMaxPoint = sortedY.last() - val yMinPoint = sortedY.first() - - /** - * 画出外接矩形 - * */ - val leftTop = Point(xMinPoint.x, yMinPoint.y) - val rightTop = Point(xMaxPoint.x, yMinPoint.y) - val leftBottom = Point(xMinPoint.x, yMaxPoint.y) - val rightBottom = Point(xMaxPoint.x, yMaxPoint.y) - rectPath.moveTo(leftTop.x, leftTop.y) - rectPath.lineTo(rightTop.x, rightTop.y) - rectPath.lineTo(rightBottom.x, rightBottom.y) - rectPath.lineTo(leftBottom.x, leftBottom.y) - rectPath.lineTo(leftTop.x, leftTop.y) - - /** - * 计算出点的相对位置返回给一体机计算 - * */ - val width = ctx.getScreenWidth() - val height = ((9 / 16f) * width).toInt() - - /** - * 区域 - * */ - if (region.isNotEmpty()) { - region.clear() + MotionEvent.ACTION_DOWN -> { + dragVertex = findClosestVertex(x, y) + if (dragVertex != null) { + dragOffsetX = x - dragVertex!!.x + dragOffsetY = y - dragVertex!!.y + return true } - region.add(Point(leftTop.x / width, leftTop.y / height)) - region.add(Point(rightTop.x / width, rightTop.y / height)) - region.add(Point(leftBottom.x / width, leftBottom.y / height)) - region.add(Point(rightBottom.x / width, rightBottom.y / height)) + } - /** - * 点集合 - * */ - if (points.isNotEmpty()) { - points.clear() + MotionEvent.ACTION_MOVE -> { + if (dragVertex != null) { + dragVertex!!.set(x - dragOffsetX, y - dragOffsetY) + invalidate() // 重新绘制视图 + return true } - points.add(floatArrayOf(leftTop.x / width, leftTop.y / height)) - points.add(floatArrayOf(rightTop.x / width, rightTop.y / height)) - points.add(floatArrayOf(rightBottom.x / width, rightBottom.y / height)) - points.add(floatArrayOf(leftBottom.x / width, leftBottom.y / height)) + } + + MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> { + dragVertex = null } } - invalidate() - return true + return super.onTouchEvent(event) } - fun clearRoutePath() { - routePath.reset() - rectPath.reset() - routes.clear() - invalidate() + // 查找最近的顶点 + private fun findClosestVertex(x: Float, y: Float): PointF? { + var closest: PointF? = null + var minDistance = Float.MAX_VALUE + for (vertex in vertices) { + val distance = sqrt( + (x - vertex.x).toDouble().pow(2.0) + (y - vertex.y).toDouble().pow(2.0) + ).toFloat() + if (distance < minDistance) { + minDistance = distance + closest = vertex + } + } + return if (minDistance < 50) { + closest + } else null } - /////////////////////////////////////////////////////////////////////////////////////////////// + fun getConfirmedRegion(): ArrayList { + /** + * 计算出点的相对位置返回给一体机计算 + * */ + val width = ctx.getScreenWidth() + val height = ((9 / 16f) * width).toInt() - private var region = ArrayList() - - fun getConfirmedRegion(): ArrayList = region - - /////////////////////////////////////////////////////////////////////////////////////////////// - - private var points = ArrayList() - - fun getConfirmedPoints(): ArrayList = points + val region = ArrayList() + region.add(floatArrayOf(vertices[0].x / width, vertices[0].y / height)) + region.add(floatArrayOf(vertices[1].x / width, vertices[1].y / height)) + region.add(floatArrayOf(vertices[2].x / width, vertices[2].y / height)) + region.add(floatArrayOf(vertices[3].x / width, vertices[3].y / height)) + return region + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_guardians.xml b/app/src/main/res/layout/activity_guardians.xml index a3608b5..2fea088 100644 --- a/app/src/main/res/layout/activity_guardians.xml +++ b/app/src/main/res/layout/activity_guardians.xml @@ -71,28 +71,20 @@ android:id="@+id/restartVideoButton" android:layout_width="0dp" android:layout_height="wrap_content" + android:layout_marginEnd="@dimen/dp_5" android:layout_weight="1" android:background="@drawable/button_check_selector" android:text="重新打开视频" android:textColor="@color/black" />