diff --git a/app/build.gradle b/app/build.gradle index d52b085..55c8383 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,8 +18,8 @@ applicationId "com.casic.br.operationsite" minSdkVersion 23 targetSdkVersion 33 - versionCode 1070 - versionName "1.0.7.0" + versionCode 1080 + versionName "1.0.8.0" } buildTypes { diff --git a/app/build.gradle b/app/build.gradle index d52b085..55c8383 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,8 +18,8 @@ applicationId "com.casic.br.operationsite" minSdkVersion 23 targetSdkVersion 33 - versionCode 1070 - versionName "1.0.7.0" + versionCode 1080 + versionName "1.0.8.0" } buildTypes { diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index 909d47d..23f3c83 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -91,19 +91,10 @@ ): String /** - * 切换场景阶段 + * 提交电子围栏区域 */ - @POST("/setPhase") - suspend fun setCurrentPhase(@Body requestBody: RequestBody): String - - /** - * 提交场景下的数据 - */ - @POST("/prepare/upload") - suspend fun uploadPhaseData( - @Header("token") token: String, - @Body requestBody: RequestBody - ): String + @POST("/emergency/syncElecFence") + suspend fun postRegion(@Body requestBody: RequestBody): String /** * 声光报警开关 @@ -130,12 +121,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/build.gradle b/app/build.gradle index d52b085..55c8383 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,8 +18,8 @@ applicationId "com.casic.br.operationsite" minSdkVersion 23 targetSdkVersion 33 - versionCode 1070 - versionName "1.0.7.0" + versionCode 1080 + versionName "1.0.8.0" } buildTypes { diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index 909d47d..23f3c83 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -91,19 +91,10 @@ ): String /** - * 切换场景阶段 + * 提交电子围栏区域 */ - @POST("/setPhase") - suspend fun setCurrentPhase(@Body requestBody: RequestBody): String - - /** - * 提交场景下的数据 - */ - @POST("/prepare/upload") - suspend fun uploadPhaseData( - @Header("token") token: String, - @Body requestBody: RequestBody - ): String + @POST("/emergency/syncElecFence") + suspend fun postRegion(@Body requestBody: RequestBody): String /** * 声光报警开关 @@ -130,12 +121,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/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index eb9095f..c0724b1 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -4,7 +4,6 @@ import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LocaleConstant -import com.casic.br.operationsite.utils.RuntimeCache import com.google.gson.Gson import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken @@ -192,40 +191,17 @@ } /** - * 提交场景下的数据 - */ - suspend fun uploadPhaseData( - phase: String, imageList: ArrayList, base64List: ArrayList - ): String { + * 设置区域 + * */ + suspend fun setVideoRegion(position: ArrayList): String { val param = JsonObject() - param.addProperty("projectId", RuntimeCache.projectId) - param.addProperty("phase", phase) - - val typeToken = object : TypeToken>() {}.type - param.add( - "pathList", gson.toJsonTree(imageList, typeToken).asJsonArray - ) - param.add("base64List", gson.toJsonTree(base64List, typeToken).asJsonArray) + param.addProperty("position", position.toJson()) val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) - return api.uploadPhaseData(AuthenticationHelper.token!!, requestBody) - } - - /** - * 设置当前阶段 - */ - suspend fun setCurrentPhase(httpConfig: String, phase: String): String { - val param = JsonObject() - param.addProperty("phase", phase) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") - return service.setCurrentPhase(requestBody) + return api.postRegion(requestBody) } /** @@ -281,21 +257,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/build.gradle b/app/build.gradle index d52b085..55c8383 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,8 +18,8 @@ applicationId "com.casic.br.operationsite" minSdkVersion 23 targetSdkVersion 33 - versionCode 1070 - versionName "1.0.7.0" + versionCode 1080 + versionName "1.0.8.0" } buildTypes { diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index 909d47d..23f3c83 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -91,19 +91,10 @@ ): String /** - * 切换场景阶段 + * 提交电子围栏区域 */ - @POST("/setPhase") - suspend fun setCurrentPhase(@Body requestBody: RequestBody): String - - /** - * 提交场景下的数据 - */ - @POST("/prepare/upload") - suspend fun uploadPhaseData( - @Header("token") token: String, - @Body requestBody: RequestBody - ): String + @POST("/emergency/syncElecFence") + suspend fun postRegion(@Body requestBody: RequestBody): String /** * 声光报警开关 @@ -130,12 +121,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/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index eb9095f..c0724b1 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -4,7 +4,6 @@ import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LocaleConstant -import com.casic.br.operationsite.utils.RuntimeCache import com.google.gson.Gson import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken @@ -192,40 +191,17 @@ } /** - * 提交场景下的数据 - */ - suspend fun uploadPhaseData( - phase: String, imageList: ArrayList, base64List: ArrayList - ): String { + * 设置区域 + * */ + suspend fun setVideoRegion(position: ArrayList): String { val param = JsonObject() - param.addProperty("projectId", RuntimeCache.projectId) - param.addProperty("phase", phase) - - val typeToken = object : TypeToken>() {}.type - param.add( - "pathList", gson.toJsonTree(imageList, typeToken).asJsonArray - ) - param.add("base64List", gson.toJsonTree(base64List, typeToken).asJsonArray) + param.addProperty("position", position.toJson()) val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) - return api.uploadPhaseData(AuthenticationHelper.token!!, requestBody) - } - - /** - * 设置当前阶段 - */ - suspend fun setCurrentPhase(httpConfig: String, phase: String): String { - val param = JsonObject() - param.addProperty("phase", phase) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") - return service.setCurrentPhase(requestBody) + return api.postRegion(requestBody) } /** @@ -281,21 +257,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/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 978d0c4..27e859e 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -50,7 +50,7 @@ } // const val SERVER_BASE_URL = "http://123.60.215.216:8065/api" - const val SERVER_BASE_URL = "http://111.198.10.15:22006" + const val SERVER_BASE_URL = "http://139.198.19.235:22006" //一体机DeviceMonitor程序TCP Server IP地址 const val GAS_BASE_IP = "192.168.10.139" diff --git a/app/build.gradle b/app/build.gradle index d52b085..55c8383 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,8 +18,8 @@ applicationId "com.casic.br.operationsite" minSdkVersion 23 targetSdkVersion 33 - versionCode 1070 - versionName "1.0.7.0" + versionCode 1080 + versionName "1.0.8.0" } buildTypes { diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index 909d47d..23f3c83 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -91,19 +91,10 @@ ): String /** - * 切换场景阶段 + * 提交电子围栏区域 */ - @POST("/setPhase") - suspend fun setCurrentPhase(@Body requestBody: RequestBody): String - - /** - * 提交场景下的数据 - */ - @POST("/prepare/upload") - suspend fun uploadPhaseData( - @Header("token") token: String, - @Body requestBody: RequestBody - ): String + @POST("/emergency/syncElecFence") + suspend fun postRegion(@Body requestBody: RequestBody): String /** * 声光报警开关 @@ -130,12 +121,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/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index eb9095f..c0724b1 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -4,7 +4,6 @@ import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LocaleConstant -import com.casic.br.operationsite.utils.RuntimeCache import com.google.gson.Gson import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken @@ -192,40 +191,17 @@ } /** - * 提交场景下的数据 - */ - suspend fun uploadPhaseData( - phase: String, imageList: ArrayList, base64List: ArrayList - ): String { + * 设置区域 + * */ + suspend fun setVideoRegion(position: ArrayList): String { val param = JsonObject() - param.addProperty("projectId", RuntimeCache.projectId) - param.addProperty("phase", phase) - - val typeToken = object : TypeToken>() {}.type - param.add( - "pathList", gson.toJsonTree(imageList, typeToken).asJsonArray - ) - param.add("base64List", gson.toJsonTree(base64List, typeToken).asJsonArray) + param.addProperty("position", position.toJson()) val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) - return api.uploadPhaseData(AuthenticationHelper.token!!, requestBody) - } - - /** - * 设置当前阶段 - */ - suspend fun setCurrentPhase(httpConfig: String, phase: String): String { - val param = JsonObject() - param.addProperty("phase", phase) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") - return service.setCurrentPhase(requestBody) + return api.postRegion(requestBody) } /** @@ -281,21 +257,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/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 978d0c4..27e859e 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -50,7 +50,7 @@ } // const val SERVER_BASE_URL = "http://123.60.215.216:8065/api" - const val SERVER_BASE_URL = "http://111.198.10.15:22006" + const val SERVER_BASE_URL = "http://139.198.19.235:22006" //一体机DeviceMonitor程序TCP Server IP地址 const val GAS_BASE_IP = "192.168.10.139" diff --git a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt index 4af1b8e..e20f98b 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt @@ -14,7 +14,7 @@ import android.util.Log import android.view.MotionEvent import android.view.View -import android.widget.LinearLayout +import android.widget.FrameLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.databinding.ActivityDeviceControlByNativeBinding @@ -24,6 +24,7 @@ import com.casic.br.operationsite.utils.VideoPlayerManager import com.casic.br.operationsite.vm.AlarmViewModel import com.casic.br.operationsite.vm.DeviceViewModel +import com.casic.br.operationsite.vm.RegionViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -48,6 +49,7 @@ private lateinit var deviceParams: List private lateinit var deviceViewModel: DeviceViewModel private lateinit var alarmViewModel: AlarmViewModel + private lateinit var regionViewModel: RegionViewModel private var speed = 5 private var cameraIp = "" private var httpConfig = "" @@ -78,7 +80,7 @@ cameraIp = parameter.cameraIp //设置rtsp相机地址 - val rtsp = "rtsp://${parameter.cameraIp}:554/h265/ch1/sub/av_stream" + val rtsp = "rtsp://${parameter.cameraIp}:554/h264/ch1/sub/av_stream" VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, rtsp) Log.d(kTag, "wifi: ${parameter.wifi}, pwd: ${parameter.pwd}") @@ -181,6 +183,20 @@ }).build().show() } + binding.openVideoButton.setOnClickListener { + binding.rtspPlayerView.startPlayLogic() + } + + binding.clearVideoRegionButton.setOnClickListener { + binding.regionView.clearRoutePath() + } + + binding.setVideoRegionButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() + + regionViewModel.setVideoRegion(region) + } + binding.leftButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> executeCommand("Left") @@ -276,17 +292,29 @@ } } + regionViewModel = ViewModelProvider(this)[RegionViewModel::class.java] + regionViewModel.setVideoRegionResult.observe(this) { + if (it) { + "电子围栏设置成功".show(this) + } + } + //动态设置rtspPlayerView宽高 - val params = binding.rtspPlayerView.layoutParams as LinearLayout.LayoutParams + val rtspViewParams = binding.rtspPlayerView.layoutParams as FrameLayout.LayoutParams val videoWidth = getScreenWidth() val videoHeight = videoWidth * (9f / 16) - params.width = videoWidth - params.height = videoHeight.toInt() - binding.rtspPlayerView.layoutParams = params + rtspViewParams.width = videoWidth + rtspViewParams.height = videoHeight.toInt() + binding.rtspPlayerView.layoutParams = rtspViewParams binding.rtspPlayerView.titleTextView.visibility = View.GONE binding.rtspPlayerView.backButton.visibility = View.GONE binding.rtspPlayerView.fullscreenButton.visibility = View.GONE + val regionViewParams = binding.regionView.layoutParams as FrameLayout.LayoutParams + regionViewParams.width = videoWidth + regionViewParams.height = videoHeight.toInt() + binding.regionView.layoutParams = regionViewParams + binding.currentSpeedView.text = "速度:${speed}" } diff --git a/app/build.gradle b/app/build.gradle index d52b085..55c8383 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,8 +18,8 @@ applicationId "com.casic.br.operationsite" minSdkVersion 23 targetSdkVersion 33 - versionCode 1070 - versionName "1.0.7.0" + versionCode 1080 + versionName "1.0.8.0" } buildTypes { diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index 909d47d..23f3c83 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -91,19 +91,10 @@ ): String /** - * 切换场景阶段 + * 提交电子围栏区域 */ - @POST("/setPhase") - suspend fun setCurrentPhase(@Body requestBody: RequestBody): String - - /** - * 提交场景下的数据 - */ - @POST("/prepare/upload") - suspend fun uploadPhaseData( - @Header("token") token: String, - @Body requestBody: RequestBody - ): String + @POST("/emergency/syncElecFence") + suspend fun postRegion(@Body requestBody: RequestBody): String /** * 声光报警开关 @@ -130,12 +121,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/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index eb9095f..c0724b1 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -4,7 +4,6 @@ import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LocaleConstant -import com.casic.br.operationsite.utils.RuntimeCache import com.google.gson.Gson import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken @@ -192,40 +191,17 @@ } /** - * 提交场景下的数据 - */ - suspend fun uploadPhaseData( - phase: String, imageList: ArrayList, base64List: ArrayList - ): String { + * 设置区域 + * */ + suspend fun setVideoRegion(position: ArrayList): String { val param = JsonObject() - param.addProperty("projectId", RuntimeCache.projectId) - param.addProperty("phase", phase) - - val typeToken = object : TypeToken>() {}.type - param.add( - "pathList", gson.toJsonTree(imageList, typeToken).asJsonArray - ) - param.add("base64List", gson.toJsonTree(base64List, typeToken).asJsonArray) + param.addProperty("position", position.toJson()) val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) - return api.uploadPhaseData(AuthenticationHelper.token!!, requestBody) - } - - /** - * 设置当前阶段 - */ - suspend fun setCurrentPhase(httpConfig: String, phase: String): String { - val param = JsonObject() - param.addProperty("phase", phase) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") - return service.setCurrentPhase(requestBody) + return api.postRegion(requestBody) } /** @@ -281,21 +257,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/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 978d0c4..27e859e 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -50,7 +50,7 @@ } // const val SERVER_BASE_URL = "http://123.60.215.216:8065/api" - const val SERVER_BASE_URL = "http://111.198.10.15:22006" + const val SERVER_BASE_URL = "http://139.198.19.235:22006" //一体机DeviceMonitor程序TCP Server IP地址 const val GAS_BASE_IP = "192.168.10.139" diff --git a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt index 4af1b8e..e20f98b 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt @@ -14,7 +14,7 @@ import android.util.Log import android.view.MotionEvent import android.view.View -import android.widget.LinearLayout +import android.widget.FrameLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.databinding.ActivityDeviceControlByNativeBinding @@ -24,6 +24,7 @@ import com.casic.br.operationsite.utils.VideoPlayerManager import com.casic.br.operationsite.vm.AlarmViewModel import com.casic.br.operationsite.vm.DeviceViewModel +import com.casic.br.operationsite.vm.RegionViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -48,6 +49,7 @@ private lateinit var deviceParams: List private lateinit var deviceViewModel: DeviceViewModel private lateinit var alarmViewModel: AlarmViewModel + private lateinit var regionViewModel: RegionViewModel private var speed = 5 private var cameraIp = "" private var httpConfig = "" @@ -78,7 +80,7 @@ cameraIp = parameter.cameraIp //设置rtsp相机地址 - val rtsp = "rtsp://${parameter.cameraIp}:554/h265/ch1/sub/av_stream" + val rtsp = "rtsp://${parameter.cameraIp}:554/h264/ch1/sub/av_stream" VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, rtsp) Log.d(kTag, "wifi: ${parameter.wifi}, pwd: ${parameter.pwd}") @@ -181,6 +183,20 @@ }).build().show() } + binding.openVideoButton.setOnClickListener { + binding.rtspPlayerView.startPlayLogic() + } + + binding.clearVideoRegionButton.setOnClickListener { + binding.regionView.clearRoutePath() + } + + binding.setVideoRegionButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() + + regionViewModel.setVideoRegion(region) + } + binding.leftButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> executeCommand("Left") @@ -276,17 +292,29 @@ } } + regionViewModel = ViewModelProvider(this)[RegionViewModel::class.java] + regionViewModel.setVideoRegionResult.observe(this) { + if (it) { + "电子围栏设置成功".show(this) + } + } + //动态设置rtspPlayerView宽高 - val params = binding.rtspPlayerView.layoutParams as LinearLayout.LayoutParams + val rtspViewParams = binding.rtspPlayerView.layoutParams as FrameLayout.LayoutParams val videoWidth = getScreenWidth() val videoHeight = videoWidth * (9f / 16) - params.width = videoWidth - params.height = videoHeight.toInt() - binding.rtspPlayerView.layoutParams = params + rtspViewParams.width = videoWidth + rtspViewParams.height = videoHeight.toInt() + binding.rtspPlayerView.layoutParams = rtspViewParams binding.rtspPlayerView.titleTextView.visibility = View.GONE binding.rtspPlayerView.backButton.visibility = View.GONE binding.rtspPlayerView.fullscreenButton.visibility = View.GONE + val regionViewParams = binding.regionView.layoutParams as FrameLayout.LayoutParams + regionViewParams.width = videoWidth + regionViewParams.height = videoHeight.toInt() + binding.regionView.layoutParams = regionViewParams + binding.currentSpeedView.text = "速度:${speed}" } diff --git a/app/src/main/java/com/casic/br/operationsite/vm/ConstructionCheckViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/ConstructionCheckViewModel.kt deleted file mode 100644 index cd76dea..0000000 --- a/app/src/main/java/com/casic/br/operationsite/vm/ConstructionCheckViewModel.kt +++ /dev/null @@ -1,67 +0,0 @@ -package com.casic.br.operationsite.vm - -import android.content.Context -import androidx.lifecycle.MutableLiveData -import com.casic.br.operationsite.extensions.getResponseCode -import com.casic.br.operationsite.extensions.getResponseMessage -import com.casic.br.operationsite.retrofit.RetrofitServiceManager -import com.pengxh.kt.lite.base.BaseViewModel -import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.LoadState - -class ConstructionCheckViewModel : BaseViewModel() { - - val setCurrentPhaseResult = MutableLiveData() - val setVideoRegionResult = MutableLiveData() - val uploadDataResult = MutableLiveData() - - fun setVideoRegion(httpConfig: String, position: ArrayList) = launch({ - val response = RetrofitServiceManager.setVideoRegion(httpConfig, position) - setVideoRegionResult.value = response.getResponseCode() == 200 - }, { - it.printStackTrace() - }) - - fun setCurrentPhase(context: Context, httpConfig: String, phase: String) = launch({ - loadState.value = LoadState.Loading - val response = RetrofitServiceManager.setCurrentPhase(httpConfig, phase) - when (response.getResponseCode()) { - 200 -> { - loadState.value = LoadState.Success - setCurrentPhaseResult.value = true - } - - else -> { - loadState.value = LoadState.Fail - setCurrentPhaseResult.value = false - response.getResponseMessage().show(context) - } - } - }, { - loadState.value = LoadState.Fail - it.printStackTrace() - }) - - fun uploadPhaseData( - context: Context, phase: String, imageList: ArrayList, base64List: ArrayList - ) = launch({ - loadState.value = LoadState.Loading - val response = RetrofitServiceManager.uploadPhaseData(phase, imageList, base64List) - when (response.getResponseCode()) { - 200 -> { - loadState.value = LoadState.Success - uploadDataResult.value = true - } - - else -> { - loadState.value = LoadState.Fail - uploadDataResult.value = false - response.getResponseMessage().show(context) - } - } - }, { - loadState.value = LoadState.Fail - it.printStackTrace() - }) -} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index d52b085..55c8383 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,8 +18,8 @@ applicationId "com.casic.br.operationsite" minSdkVersion 23 targetSdkVersion 33 - versionCode 1070 - versionName "1.0.7.0" + versionCode 1080 + versionName "1.0.8.0" } buildTypes { diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index 909d47d..23f3c83 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -91,19 +91,10 @@ ): String /** - * 切换场景阶段 + * 提交电子围栏区域 */ - @POST("/setPhase") - suspend fun setCurrentPhase(@Body requestBody: RequestBody): String - - /** - * 提交场景下的数据 - */ - @POST("/prepare/upload") - suspend fun uploadPhaseData( - @Header("token") token: String, - @Body requestBody: RequestBody - ): String + @POST("/emergency/syncElecFence") + suspend fun postRegion(@Body requestBody: RequestBody): String /** * 声光报警开关 @@ -130,12 +121,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/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index eb9095f..c0724b1 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -4,7 +4,6 @@ import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LocaleConstant -import com.casic.br.operationsite.utils.RuntimeCache import com.google.gson.Gson import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken @@ -192,40 +191,17 @@ } /** - * 提交场景下的数据 - */ - suspend fun uploadPhaseData( - phase: String, imageList: ArrayList, base64List: ArrayList - ): String { + * 设置区域 + * */ + suspend fun setVideoRegion(position: ArrayList): String { val param = JsonObject() - param.addProperty("projectId", RuntimeCache.projectId) - param.addProperty("phase", phase) - - val typeToken = object : TypeToken>() {}.type - param.add( - "pathList", gson.toJsonTree(imageList, typeToken).asJsonArray - ) - param.add("base64List", gson.toJsonTree(base64List, typeToken).asJsonArray) + param.addProperty("position", position.toJson()) val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) - return api.uploadPhaseData(AuthenticationHelper.token!!, requestBody) - } - - /** - * 设置当前阶段 - */ - suspend fun setCurrentPhase(httpConfig: String, phase: String): String { - val param = JsonObject() - param.addProperty("phase", phase) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") - return service.setCurrentPhase(requestBody) + return api.postRegion(requestBody) } /** @@ -281,21 +257,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/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 978d0c4..27e859e 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -50,7 +50,7 @@ } // const val SERVER_BASE_URL = "http://123.60.215.216:8065/api" - const val SERVER_BASE_URL = "http://111.198.10.15:22006" + const val SERVER_BASE_URL = "http://139.198.19.235:22006" //一体机DeviceMonitor程序TCP Server IP地址 const val GAS_BASE_IP = "192.168.10.139" diff --git a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt index 4af1b8e..e20f98b 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt @@ -14,7 +14,7 @@ import android.util.Log import android.view.MotionEvent import android.view.View -import android.widget.LinearLayout +import android.widget.FrameLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.databinding.ActivityDeviceControlByNativeBinding @@ -24,6 +24,7 @@ import com.casic.br.operationsite.utils.VideoPlayerManager import com.casic.br.operationsite.vm.AlarmViewModel import com.casic.br.operationsite.vm.DeviceViewModel +import com.casic.br.operationsite.vm.RegionViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -48,6 +49,7 @@ private lateinit var deviceParams: List private lateinit var deviceViewModel: DeviceViewModel private lateinit var alarmViewModel: AlarmViewModel + private lateinit var regionViewModel: RegionViewModel private var speed = 5 private var cameraIp = "" private var httpConfig = "" @@ -78,7 +80,7 @@ cameraIp = parameter.cameraIp //设置rtsp相机地址 - val rtsp = "rtsp://${parameter.cameraIp}:554/h265/ch1/sub/av_stream" + val rtsp = "rtsp://${parameter.cameraIp}:554/h264/ch1/sub/av_stream" VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, rtsp) Log.d(kTag, "wifi: ${parameter.wifi}, pwd: ${parameter.pwd}") @@ -181,6 +183,20 @@ }).build().show() } + binding.openVideoButton.setOnClickListener { + binding.rtspPlayerView.startPlayLogic() + } + + binding.clearVideoRegionButton.setOnClickListener { + binding.regionView.clearRoutePath() + } + + binding.setVideoRegionButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() + + regionViewModel.setVideoRegion(region) + } + binding.leftButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> executeCommand("Left") @@ -276,17 +292,29 @@ } } + regionViewModel = ViewModelProvider(this)[RegionViewModel::class.java] + regionViewModel.setVideoRegionResult.observe(this) { + if (it) { + "电子围栏设置成功".show(this) + } + } + //动态设置rtspPlayerView宽高 - val params = binding.rtspPlayerView.layoutParams as LinearLayout.LayoutParams + val rtspViewParams = binding.rtspPlayerView.layoutParams as FrameLayout.LayoutParams val videoWidth = getScreenWidth() val videoHeight = videoWidth * (9f / 16) - params.width = videoWidth - params.height = videoHeight.toInt() - binding.rtspPlayerView.layoutParams = params + rtspViewParams.width = videoWidth + rtspViewParams.height = videoHeight.toInt() + binding.rtspPlayerView.layoutParams = rtspViewParams binding.rtspPlayerView.titleTextView.visibility = View.GONE binding.rtspPlayerView.backButton.visibility = View.GONE binding.rtspPlayerView.fullscreenButton.visibility = View.GONE + val regionViewParams = binding.regionView.layoutParams as FrameLayout.LayoutParams + regionViewParams.width = videoWidth + regionViewParams.height = videoHeight.toInt() + binding.regionView.layoutParams = regionViewParams + binding.currentSpeedView.text = "速度:${speed}" } diff --git a/app/src/main/java/com/casic/br/operationsite/vm/ConstructionCheckViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/ConstructionCheckViewModel.kt deleted file mode 100644 index cd76dea..0000000 --- a/app/src/main/java/com/casic/br/operationsite/vm/ConstructionCheckViewModel.kt +++ /dev/null @@ -1,67 +0,0 @@ -package com.casic.br.operationsite.vm - -import android.content.Context -import androidx.lifecycle.MutableLiveData -import com.casic.br.operationsite.extensions.getResponseCode -import com.casic.br.operationsite.extensions.getResponseMessage -import com.casic.br.operationsite.retrofit.RetrofitServiceManager -import com.pengxh.kt.lite.base.BaseViewModel -import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.LoadState - -class ConstructionCheckViewModel : BaseViewModel() { - - val setCurrentPhaseResult = MutableLiveData() - val setVideoRegionResult = MutableLiveData() - val uploadDataResult = MutableLiveData() - - fun setVideoRegion(httpConfig: String, position: ArrayList) = launch({ - val response = RetrofitServiceManager.setVideoRegion(httpConfig, position) - setVideoRegionResult.value = response.getResponseCode() == 200 - }, { - it.printStackTrace() - }) - - fun setCurrentPhase(context: Context, httpConfig: String, phase: String) = launch({ - loadState.value = LoadState.Loading - val response = RetrofitServiceManager.setCurrentPhase(httpConfig, phase) - when (response.getResponseCode()) { - 200 -> { - loadState.value = LoadState.Success - setCurrentPhaseResult.value = true - } - - else -> { - loadState.value = LoadState.Fail - setCurrentPhaseResult.value = false - response.getResponseMessage().show(context) - } - } - }, { - loadState.value = LoadState.Fail - it.printStackTrace() - }) - - fun uploadPhaseData( - context: Context, phase: String, imageList: ArrayList, base64List: ArrayList - ) = launch({ - loadState.value = LoadState.Loading - val response = RetrofitServiceManager.uploadPhaseData(phase, imageList, base64List) - when (response.getResponseCode()) { - 200 -> { - loadState.value = LoadState.Success - uploadDataResult.value = true - } - - else -> { - loadState.value = LoadState.Fail - uploadDataResult.value = false - response.getResponseMessage().show(context) - } - } - }, { - loadState.value = LoadState.Fail - it.printStackTrace() - }) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/RegionViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/RegionViewModel.kt new file mode 100644 index 0000000..721eab8 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/vm/RegionViewModel.kt @@ -0,0 +1,19 @@ +package com.casic.br.operationsite.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.br.operationsite.extensions.getResponseCode +import com.casic.br.operationsite.retrofit.RetrofitServiceManager +import com.pengxh.kt.lite.base.BaseViewModel +import com.pengxh.kt.lite.extensions.launch + +class RegionViewModel : BaseViewModel() { + + val setVideoRegionResult = MutableLiveData() + + fun setVideoRegion(position: ArrayList) = launch({ + val response = RetrofitServiceManager.setVideoRegion(position) + setVideoRegionResult.value = response.getResponseCode() == 200 + }, { + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index d52b085..55c8383 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,8 +18,8 @@ applicationId "com.casic.br.operationsite" minSdkVersion 23 targetSdkVersion 33 - versionCode 1070 - versionName "1.0.7.0" + versionCode 1080 + versionName "1.0.8.0" } buildTypes { diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index 909d47d..23f3c83 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -91,19 +91,10 @@ ): String /** - * 切换场景阶段 + * 提交电子围栏区域 */ - @POST("/setPhase") - suspend fun setCurrentPhase(@Body requestBody: RequestBody): String - - /** - * 提交场景下的数据 - */ - @POST("/prepare/upload") - suspend fun uploadPhaseData( - @Header("token") token: String, - @Body requestBody: RequestBody - ): String + @POST("/emergency/syncElecFence") + suspend fun postRegion(@Body requestBody: RequestBody): String /** * 声光报警开关 @@ -130,12 +121,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/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index eb9095f..c0724b1 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -4,7 +4,6 @@ import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LocaleConstant -import com.casic.br.operationsite.utils.RuntimeCache import com.google.gson.Gson import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken @@ -192,40 +191,17 @@ } /** - * 提交场景下的数据 - */ - suspend fun uploadPhaseData( - phase: String, imageList: ArrayList, base64List: ArrayList - ): String { + * 设置区域 + * */ + suspend fun setVideoRegion(position: ArrayList): String { val param = JsonObject() - param.addProperty("projectId", RuntimeCache.projectId) - param.addProperty("phase", phase) - - val typeToken = object : TypeToken>() {}.type - param.add( - "pathList", gson.toJsonTree(imageList, typeToken).asJsonArray - ) - param.add("base64List", gson.toJsonTree(base64List, typeToken).asJsonArray) + param.addProperty("position", position.toJson()) val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) - return api.uploadPhaseData(AuthenticationHelper.token!!, requestBody) - } - - /** - * 设置当前阶段 - */ - suspend fun setCurrentPhase(httpConfig: String, phase: String): String { - val param = JsonObject() - param.addProperty("phase", phase) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") - return service.setCurrentPhase(requestBody) + return api.postRegion(requestBody) } /** @@ -281,21 +257,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/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 978d0c4..27e859e 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -50,7 +50,7 @@ } // const val SERVER_BASE_URL = "http://123.60.215.216:8065/api" - const val SERVER_BASE_URL = "http://111.198.10.15:22006" + const val SERVER_BASE_URL = "http://139.198.19.235:22006" //一体机DeviceMonitor程序TCP Server IP地址 const val GAS_BASE_IP = "192.168.10.139" diff --git a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt index 4af1b8e..e20f98b 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt @@ -14,7 +14,7 @@ import android.util.Log import android.view.MotionEvent import android.view.View -import android.widget.LinearLayout +import android.widget.FrameLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.databinding.ActivityDeviceControlByNativeBinding @@ -24,6 +24,7 @@ import com.casic.br.operationsite.utils.VideoPlayerManager import com.casic.br.operationsite.vm.AlarmViewModel import com.casic.br.operationsite.vm.DeviceViewModel +import com.casic.br.operationsite.vm.RegionViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -48,6 +49,7 @@ private lateinit var deviceParams: List private lateinit var deviceViewModel: DeviceViewModel private lateinit var alarmViewModel: AlarmViewModel + private lateinit var regionViewModel: RegionViewModel private var speed = 5 private var cameraIp = "" private var httpConfig = "" @@ -78,7 +80,7 @@ cameraIp = parameter.cameraIp //设置rtsp相机地址 - val rtsp = "rtsp://${parameter.cameraIp}:554/h265/ch1/sub/av_stream" + val rtsp = "rtsp://${parameter.cameraIp}:554/h264/ch1/sub/av_stream" VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, rtsp) Log.d(kTag, "wifi: ${parameter.wifi}, pwd: ${parameter.pwd}") @@ -181,6 +183,20 @@ }).build().show() } + binding.openVideoButton.setOnClickListener { + binding.rtspPlayerView.startPlayLogic() + } + + binding.clearVideoRegionButton.setOnClickListener { + binding.regionView.clearRoutePath() + } + + binding.setVideoRegionButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() + + regionViewModel.setVideoRegion(region) + } + binding.leftButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> executeCommand("Left") @@ -276,17 +292,29 @@ } } + regionViewModel = ViewModelProvider(this)[RegionViewModel::class.java] + regionViewModel.setVideoRegionResult.observe(this) { + if (it) { + "电子围栏设置成功".show(this) + } + } + //动态设置rtspPlayerView宽高 - val params = binding.rtspPlayerView.layoutParams as LinearLayout.LayoutParams + val rtspViewParams = binding.rtspPlayerView.layoutParams as FrameLayout.LayoutParams val videoWidth = getScreenWidth() val videoHeight = videoWidth * (9f / 16) - params.width = videoWidth - params.height = videoHeight.toInt() - binding.rtspPlayerView.layoutParams = params + rtspViewParams.width = videoWidth + rtspViewParams.height = videoHeight.toInt() + binding.rtspPlayerView.layoutParams = rtspViewParams binding.rtspPlayerView.titleTextView.visibility = View.GONE binding.rtspPlayerView.backButton.visibility = View.GONE binding.rtspPlayerView.fullscreenButton.visibility = View.GONE + val regionViewParams = binding.regionView.layoutParams as FrameLayout.LayoutParams + regionViewParams.width = videoWidth + regionViewParams.height = videoHeight.toInt() + binding.regionView.layoutParams = regionViewParams + binding.currentSpeedView.text = "速度:${speed}" } diff --git a/app/src/main/java/com/casic/br/operationsite/vm/ConstructionCheckViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/ConstructionCheckViewModel.kt deleted file mode 100644 index cd76dea..0000000 --- a/app/src/main/java/com/casic/br/operationsite/vm/ConstructionCheckViewModel.kt +++ /dev/null @@ -1,67 +0,0 @@ -package com.casic.br.operationsite.vm - -import android.content.Context -import androidx.lifecycle.MutableLiveData -import com.casic.br.operationsite.extensions.getResponseCode -import com.casic.br.operationsite.extensions.getResponseMessage -import com.casic.br.operationsite.retrofit.RetrofitServiceManager -import com.pengxh.kt.lite.base.BaseViewModel -import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.LoadState - -class ConstructionCheckViewModel : BaseViewModel() { - - val setCurrentPhaseResult = MutableLiveData() - val setVideoRegionResult = MutableLiveData() - val uploadDataResult = MutableLiveData() - - fun setVideoRegion(httpConfig: String, position: ArrayList) = launch({ - val response = RetrofitServiceManager.setVideoRegion(httpConfig, position) - setVideoRegionResult.value = response.getResponseCode() == 200 - }, { - it.printStackTrace() - }) - - fun setCurrentPhase(context: Context, httpConfig: String, phase: String) = launch({ - loadState.value = LoadState.Loading - val response = RetrofitServiceManager.setCurrentPhase(httpConfig, phase) - when (response.getResponseCode()) { - 200 -> { - loadState.value = LoadState.Success - setCurrentPhaseResult.value = true - } - - else -> { - loadState.value = LoadState.Fail - setCurrentPhaseResult.value = false - response.getResponseMessage().show(context) - } - } - }, { - loadState.value = LoadState.Fail - it.printStackTrace() - }) - - fun uploadPhaseData( - context: Context, phase: String, imageList: ArrayList, base64List: ArrayList - ) = launch({ - loadState.value = LoadState.Loading - val response = RetrofitServiceManager.uploadPhaseData(phase, imageList, base64List) - when (response.getResponseCode()) { - 200 -> { - loadState.value = LoadState.Success - uploadDataResult.value = true - } - - else -> { - loadState.value = LoadState.Fail - uploadDataResult.value = false - response.getResponseMessage().show(context) - } - } - }, { - loadState.value = LoadState.Fail - it.printStackTrace() - }) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/RegionViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/RegionViewModel.kt new file mode 100644 index 0000000..721eab8 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/vm/RegionViewModel.kt @@ -0,0 +1,19 @@ +package com.casic.br.operationsite.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.br.operationsite.extensions.getResponseCode +import com.casic.br.operationsite.retrofit.RetrofitServiceManager +import com.pengxh.kt.lite.base.BaseViewModel +import com.pengxh.kt.lite.extensions.launch + +class RegionViewModel : BaseViewModel() { + + val setVideoRegionResult = MutableLiveData() + + fun setVideoRegion(position: ArrayList) = launch({ + val response = RetrofitServiceManager.setVideoRegion(position) + setVideoRegionResult.value = response.getResponseCode() == 200 + }, { + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/res/drawable/button_check_selector.xml b/app/src/main/res/drawable/button_check_selector.xml new file mode 100644 index 0000000..46c4f6b --- /dev/null +++ b/app/src/main/res/drawable/button_check_selector.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index d52b085..55c8383 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,8 +18,8 @@ applicationId "com.casic.br.operationsite" minSdkVersion 23 targetSdkVersion 33 - versionCode 1070 - versionName "1.0.7.0" + versionCode 1080 + versionName "1.0.8.0" } buildTypes { diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index 909d47d..23f3c83 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -91,19 +91,10 @@ ): String /** - * 切换场景阶段 + * 提交电子围栏区域 */ - @POST("/setPhase") - suspend fun setCurrentPhase(@Body requestBody: RequestBody): String - - /** - * 提交场景下的数据 - */ - @POST("/prepare/upload") - suspend fun uploadPhaseData( - @Header("token") token: String, - @Body requestBody: RequestBody - ): String + @POST("/emergency/syncElecFence") + suspend fun postRegion(@Body requestBody: RequestBody): String /** * 声光报警开关 @@ -130,12 +121,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/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index eb9095f..c0724b1 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -4,7 +4,6 @@ import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LocaleConstant -import com.casic.br.operationsite.utils.RuntimeCache import com.google.gson.Gson import com.google.gson.JsonObject import com.google.gson.reflect.TypeToken @@ -192,40 +191,17 @@ } /** - * 提交场景下的数据 - */ - suspend fun uploadPhaseData( - phase: String, imageList: ArrayList, base64List: ArrayList - ): String { + * 设置区域 + * */ + suspend fun setVideoRegion(position: ArrayList): String { val param = JsonObject() - param.addProperty("projectId", RuntimeCache.projectId) - param.addProperty("phase", phase) - - val typeToken = object : TypeToken>() {}.type - param.add( - "pathList", gson.toJsonTree(imageList, typeToken).asJsonArray - ) - param.add("base64List", gson.toJsonTree(base64List, typeToken).asJsonArray) + param.addProperty("position", position.toJson()) val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) - return api.uploadPhaseData(AuthenticationHelper.token!!, requestBody) - } - - /** - * 设置当前阶段 - */ - suspend fun setCurrentPhase(httpConfig: String, phase: String): String { - val param = JsonObject() - param.addProperty("phase", phase) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") - return service.setCurrentPhase(requestBody) + return api.postRegion(requestBody) } /** @@ -281,21 +257,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/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 978d0c4..27e859e 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -50,7 +50,7 @@ } // const val SERVER_BASE_URL = "http://123.60.215.216:8065/api" - const val SERVER_BASE_URL = "http://111.198.10.15:22006" + const val SERVER_BASE_URL = "http://139.198.19.235:22006" //一体机DeviceMonitor程序TCP Server IP地址 const val GAS_BASE_IP = "192.168.10.139" diff --git a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt index 4af1b8e..e20f98b 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByNativeActivity.kt @@ -14,7 +14,7 @@ import android.util.Log import android.view.MotionEvent import android.view.View -import android.widget.LinearLayout +import android.widget.FrameLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.databinding.ActivityDeviceControlByNativeBinding @@ -24,6 +24,7 @@ import com.casic.br.operationsite.utils.VideoPlayerManager import com.casic.br.operationsite.vm.AlarmViewModel import com.casic.br.operationsite.vm.DeviceViewModel +import com.casic.br.operationsite.vm.RegionViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -48,6 +49,7 @@ private lateinit var deviceParams: List private lateinit var deviceViewModel: DeviceViewModel private lateinit var alarmViewModel: AlarmViewModel + private lateinit var regionViewModel: RegionViewModel private var speed = 5 private var cameraIp = "" private var httpConfig = "" @@ -78,7 +80,7 @@ cameraIp = parameter.cameraIp //设置rtsp相机地址 - val rtsp = "rtsp://${parameter.cameraIp}:554/h265/ch1/sub/av_stream" + val rtsp = "rtsp://${parameter.cameraIp}:554/h264/ch1/sub/av_stream" VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, rtsp) Log.d(kTag, "wifi: ${parameter.wifi}, pwd: ${parameter.pwd}") @@ -181,6 +183,20 @@ }).build().show() } + binding.openVideoButton.setOnClickListener { + binding.rtspPlayerView.startPlayLogic() + } + + binding.clearVideoRegionButton.setOnClickListener { + binding.regionView.clearRoutePath() + } + + binding.setVideoRegionButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() + + regionViewModel.setVideoRegion(region) + } + binding.leftButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> executeCommand("Left") @@ -276,17 +292,29 @@ } } + regionViewModel = ViewModelProvider(this)[RegionViewModel::class.java] + regionViewModel.setVideoRegionResult.observe(this) { + if (it) { + "电子围栏设置成功".show(this) + } + } + //动态设置rtspPlayerView宽高 - val params = binding.rtspPlayerView.layoutParams as LinearLayout.LayoutParams + val rtspViewParams = binding.rtspPlayerView.layoutParams as FrameLayout.LayoutParams val videoWidth = getScreenWidth() val videoHeight = videoWidth * (9f / 16) - params.width = videoWidth - params.height = videoHeight.toInt() - binding.rtspPlayerView.layoutParams = params + rtspViewParams.width = videoWidth + rtspViewParams.height = videoHeight.toInt() + binding.rtspPlayerView.layoutParams = rtspViewParams binding.rtspPlayerView.titleTextView.visibility = View.GONE binding.rtspPlayerView.backButton.visibility = View.GONE binding.rtspPlayerView.fullscreenButton.visibility = View.GONE + val regionViewParams = binding.regionView.layoutParams as FrameLayout.LayoutParams + regionViewParams.width = videoWidth + regionViewParams.height = videoHeight.toInt() + binding.regionView.layoutParams = regionViewParams + binding.currentSpeedView.text = "速度:${speed}" } diff --git a/app/src/main/java/com/casic/br/operationsite/vm/ConstructionCheckViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/ConstructionCheckViewModel.kt deleted file mode 100644 index cd76dea..0000000 --- a/app/src/main/java/com/casic/br/operationsite/vm/ConstructionCheckViewModel.kt +++ /dev/null @@ -1,67 +0,0 @@ -package com.casic.br.operationsite.vm - -import android.content.Context -import androidx.lifecycle.MutableLiveData -import com.casic.br.operationsite.extensions.getResponseCode -import com.casic.br.operationsite.extensions.getResponseMessage -import com.casic.br.operationsite.retrofit.RetrofitServiceManager -import com.pengxh.kt.lite.base.BaseViewModel -import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.LoadState - -class ConstructionCheckViewModel : BaseViewModel() { - - val setCurrentPhaseResult = MutableLiveData() - val setVideoRegionResult = MutableLiveData() - val uploadDataResult = MutableLiveData() - - fun setVideoRegion(httpConfig: String, position: ArrayList) = launch({ - val response = RetrofitServiceManager.setVideoRegion(httpConfig, position) - setVideoRegionResult.value = response.getResponseCode() == 200 - }, { - it.printStackTrace() - }) - - fun setCurrentPhase(context: Context, httpConfig: String, phase: String) = launch({ - loadState.value = LoadState.Loading - val response = RetrofitServiceManager.setCurrentPhase(httpConfig, phase) - when (response.getResponseCode()) { - 200 -> { - loadState.value = LoadState.Success - setCurrentPhaseResult.value = true - } - - else -> { - loadState.value = LoadState.Fail - setCurrentPhaseResult.value = false - response.getResponseMessage().show(context) - } - } - }, { - loadState.value = LoadState.Fail - it.printStackTrace() - }) - - fun uploadPhaseData( - context: Context, phase: String, imageList: ArrayList, base64List: ArrayList - ) = launch({ - loadState.value = LoadState.Loading - val response = RetrofitServiceManager.uploadPhaseData(phase, imageList, base64List) - when (response.getResponseCode()) { - 200 -> { - loadState.value = LoadState.Success - uploadDataResult.value = true - } - - else -> { - loadState.value = LoadState.Fail - uploadDataResult.value = false - response.getResponseMessage().show(context) - } - } - }, { - loadState.value = LoadState.Fail - it.printStackTrace() - }) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/RegionViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/RegionViewModel.kt new file mode 100644 index 0000000..721eab8 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/vm/RegionViewModel.kt @@ -0,0 +1,19 @@ +package com.casic.br.operationsite.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.br.operationsite.extensions.getResponseCode +import com.casic.br.operationsite.retrofit.RetrofitServiceManager +import com.pengxh.kt.lite.base.BaseViewModel +import com.pengxh.kt.lite.extensions.launch + +class RegionViewModel : BaseViewModel() { + + val setVideoRegionResult = MutableLiveData() + + fun setVideoRegion(position: ArrayList) = launch({ + val response = RetrofitServiceManager.setVideoRegion(position) + setVideoRegionResult.value = response.getResponseCode() == 200 + }, { + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/res/drawable/button_check_selector.xml b/app/src/main/res/drawable/button_check_selector.xml new file mode 100644 index 0000000..46c4f6b --- /dev/null +++ b/app/src/main/res/drawable/button_check_selector.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_device_control_by_native.xml b/app/src/main/res/layout/activity_device_control_by_native.xml index d3c3363..0e955f6 100644 --- a/app/src/main/res/layout/activity_device_control_by_native.xml +++ b/app/src/main/res/layout/activity_device_control_by_native.xml @@ -25,14 +25,33 @@ android:layout_weight="1" android:orientation="vertical"> - + android:layout_height="wrap_content"> + + + + + + + + android:orientation="horizontal" + android:padding="@dimen/dp_10"> - +