diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java new file mode 100644 index 0000000..758b3bd --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java @@ -0,0 +1,82 @@ +package com.casic.br.operationsite.test.model; + +import java.util.List; + +public class AirConditionModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private double o2; + private int h2s; + private int co; + private int ch4; + + public double getO2() { + return o2; + } + + public void setO2(double o2) { + this.o2 = o2; + } + + public int getH2s() { + return h2s; + } + + public void setH2s(int h2s) { + this.h2s = h2s; + } + + public int getCo() { + return co; + } + + public void setCo(int co) { + this.co = co; + } + + public int getCh4() { + return ch4; + } + + public void setCh4(int ch4) { + this.ch4 = ch4; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java new file mode 100644 index 0000000..758b3bd --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java @@ -0,0 +1,82 @@ +package com.casic.br.operationsite.test.model; + +import java.util.List; + +public class AirConditionModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private double o2; + private int h2s; + private int co; + private int ch4; + + public double getO2() { + return o2; + } + + public void setO2(double o2) { + this.o2 = o2; + } + + public int getH2s() { + return h2s; + } + + public void setH2s(int h2s) { + this.h2s = h2s; + } + + public int getCo() { + return co; + } + + public void setCo(int co) { + this.co = co; + } + + public int getCh4() { + return ch4; + } + + public void setCh4(int ch4) { + this.ch4 = ch4; + } + } +} 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 0b16d05..30d5dbf 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 @@ -60,6 +60,12 @@ ): String /** + * 获取四合一数据 + */ + @GET("/emergency/startCheckOxygen") + suspend fun getAirCondition(@Header("token") token: String): String + + /** * 切换场景阶段 */ @POST("/setPhase") diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java new file mode 100644 index 0000000..758b3bd --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java @@ -0,0 +1,82 @@ +package com.casic.br.operationsite.test.model; + +import java.util.List; + +public class AirConditionModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private double o2; + private int h2s; + private int co; + private int ch4; + + public double getO2() { + return o2; + } + + public void setO2(double o2) { + this.o2 = o2; + } + + public int getH2s() { + return h2s; + } + + public void setH2s(int h2s) { + this.h2s = h2s; + } + + public int getCo() { + return co; + } + + public void setCo(int co) { + this.co = co; + } + + public int getCh4() { + return ch4; + } + + public void setCh4(int ch4) { + this.ch4 = ch4; + } + } +} 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 0b16d05..30d5dbf 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 @@ -60,6 +60,12 @@ ): String /** + * 获取四合一数据 + */ + @GET("/emergency/startCheckOxygen") + suspend fun getAirCondition(@Header("token") token: String): String + + /** * 切换场景阶段 */ @POST("/setPhase") 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 dbaa1da..19c7b19 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 @@ -81,6 +81,13 @@ } /** + * 获取四合一数据 + */ + suspend fun getAirCondition(): String { + return api.getAirCondition(AuthenticationHelper.token!!) + } + + /** * 设置当前阶段 */ suspend fun setCurrentPhase(httpConfig: String, phase: String): String { diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java new file mode 100644 index 0000000..758b3bd --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java @@ -0,0 +1,82 @@ +package com.casic.br.operationsite.test.model; + +import java.util.List; + +public class AirConditionModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private double o2; + private int h2s; + private int co; + private int ch4; + + public double getO2() { + return o2; + } + + public void setO2(double o2) { + this.o2 = o2; + } + + public int getH2s() { + return h2s; + } + + public void setH2s(int h2s) { + this.h2s = h2s; + } + + public int getCo() { + return co; + } + + public void setCo(int co) { + this.co = co; + } + + public int getCh4() { + return ch4; + } + + public void setCh4(int ch4) { + this.ch4 = ch4; + } + } +} 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 0b16d05..30d5dbf 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 @@ -60,6 +60,12 @@ ): String /** + * 获取四合一数据 + */ + @GET("/emergency/startCheckOxygen") + suspend fun getAirCondition(@Header("token") token: String): String + + /** * 切换场景阶段 */ @POST("/setPhase") 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 dbaa1da..19c7b19 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 @@ -81,6 +81,13 @@ } /** + * 获取四合一数据 + */ + suspend fun getAirCondition(): String { + return api.getAirCondition(AuthenticationHelper.token!!) + } + + /** * 设置当前阶段 */ suspend fun setCurrentPhase(httpConfig: String, phase: String): String { diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt b/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt index 302eb17..d2dbaf7 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt @@ -2,6 +2,11 @@ sealed class CurrentScene { /** + * 五必须 + */ + object SUPPLY : CurrentScene() + + /** * 交底 */ object DISCLOSURE : CurrentScene() @@ -12,11 +17,6 @@ object ENVIRONMENT : CurrentScene() /** - * 五必须 - */ - object SUPPLY : CurrentScene() - - /** * 人员监护 */ object GUARDIAN : CurrentScene() diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java new file mode 100644 index 0000000..758b3bd --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java @@ -0,0 +1,82 @@ +package com.casic.br.operationsite.test.model; + +import java.util.List; + +public class AirConditionModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private double o2; + private int h2s; + private int co; + private int ch4; + + public double getO2() { + return o2; + } + + public void setO2(double o2) { + this.o2 = o2; + } + + public int getH2s() { + return h2s; + } + + public void setH2s(int h2s) { + this.h2s = h2s; + } + + public int getCo() { + return co; + } + + public void setCo(int co) { + this.co = co; + } + + public int getCh4() { + return ch4; + } + + public void setCh4(int ch4) { + this.ch4 = ch4; + } + } +} 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 0b16d05..30d5dbf 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 @@ -60,6 +60,12 @@ ): String /** + * 获取四合一数据 + */ + @GET("/emergency/startCheckOxygen") + suspend fun getAirCondition(@Header("token") token: String): String + + /** * 切换场景阶段 */ @POST("/setPhase") 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 dbaa1da..19c7b19 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 @@ -81,6 +81,13 @@ } /** + * 获取四合一数据 + */ + suspend fun getAirCondition(): String { + return api.getAirCondition(AuthenticationHelper.token!!) + } + + /** * 设置当前阶段 */ suspend fun setCurrentPhase(httpConfig: String, phase: String): String { diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt b/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt index 302eb17..d2dbaf7 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt @@ -2,6 +2,11 @@ sealed class CurrentScene { /** + * 五必须 + */ + object SUPPLY : CurrentScene() + + /** * 交底 */ object DISCLOSURE : CurrentScene() @@ -12,11 +17,6 @@ object ENVIRONMENT : CurrentScene() /** - * 五必须 - */ - object SUPPLY : CurrentScene() - - /** * 人员监护 */ object GUARDIAN : CurrentScene() 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 57cef0e..2b27867 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,7 @@ ) } - const val SERVER_BASE_URL = "http://111.198.10.15:22006" + 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地址 @@ -44,7 +44,7 @@ const val MAIN_RTSP_URL = "rtsp://${CAMERA_IP}:554" //子码流 - const val SUB_RTSP_URL = "${MAIN_RTSP_URL}/h265/ch1/sub/av_stream" + const val SUB_RTSP_URL = "${MAIN_RTSP_URL}/h264/ch1/sub/av_stream" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig" const val ACCOUNT = "account" @@ -73,6 +73,8 @@ byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x06, 0x00, 0x9A.toByte()) val CONFIRM_BLOWER_COMMAND = byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x08, 0x00, 0x9C.toByte()) + val CONFIRM_AIR_COMMAND = + byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x19, 0x00, 0xAD.toByte()) val END_ENV_COMMAND = byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x09, 0x00, 0x9D.toByte()) diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java new file mode 100644 index 0000000..758b3bd --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java @@ -0,0 +1,82 @@ +package com.casic.br.operationsite.test.model; + +import java.util.List; + +public class AirConditionModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private double o2; + private int h2s; + private int co; + private int ch4; + + public double getO2() { + return o2; + } + + public void setO2(double o2) { + this.o2 = o2; + } + + public int getH2s() { + return h2s; + } + + public void setH2s(int h2s) { + this.h2s = h2s; + } + + public int getCo() { + return co; + } + + public void setCo(int co) { + this.co = co; + } + + public int getCh4() { + return ch4; + } + + public void setCh4(int ch4) { + this.ch4 = ch4; + } + } +} 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 0b16d05..30d5dbf 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 @@ -60,6 +60,12 @@ ): String /** + * 获取四合一数据 + */ + @GET("/emergency/startCheckOxygen") + suspend fun getAirCondition(@Header("token") token: String): String + + /** * 切换场景阶段 */ @POST("/setPhase") 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 dbaa1da..19c7b19 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 @@ -81,6 +81,13 @@ } /** + * 获取四合一数据 + */ + suspend fun getAirCondition(): String { + return api.getAirCondition(AuthenticationHelper.token!!) + } + + /** * 设置当前阶段 */ suspend fun setCurrentPhase(httpConfig: String, phase: String): String { diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt b/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt index 302eb17..d2dbaf7 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt @@ -2,6 +2,11 @@ sealed class CurrentScene { /** + * 五必须 + */ + object SUPPLY : CurrentScene() + + /** * 交底 */ object DISCLOSURE : CurrentScene() @@ -12,11 +17,6 @@ object ENVIRONMENT : CurrentScene() /** - * 五必须 - */ - object SUPPLY : CurrentScene() - - /** * 人员监护 */ object GUARDIAN : CurrentScene() 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 57cef0e..2b27867 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,7 @@ ) } - const val SERVER_BASE_URL = "http://111.198.10.15:22006" + 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地址 @@ -44,7 +44,7 @@ const val MAIN_RTSP_URL = "rtsp://${CAMERA_IP}:554" //子码流 - const val SUB_RTSP_URL = "${MAIN_RTSP_URL}/h265/ch1/sub/av_stream" + const val SUB_RTSP_URL = "${MAIN_RTSP_URL}/h264/ch1/sub/av_stream" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig" const val ACCOUNT = "account" @@ -73,6 +73,8 @@ byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x06, 0x00, 0x9A.toByte()) val CONFIRM_BLOWER_COMMAND = byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x08, 0x00, 0x9C.toByte()) + val CONFIRM_AIR_COMMAND = + byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x19, 0x00, 0xAD.toByte()) val END_ENV_COMMAND = byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x09, 0x00, 0x9D.toByte()) diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt b/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt index a85f94b..7ffdb5d 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt @@ -8,7 +8,6 @@ import com.casic.br.operationsite.test.util.CurrentScene import com.casic.br.operationsite.test.util.LocaleConstant import com.casic.br.operationsite.test.util.RuntimeCache -import com.casic.br.operationsite.test.view.EnvironmentActivity import com.casic.br.operationsite.test.view.GuardiansActivity import com.casic.br.operationsite.test.view.SuppliesActivity import com.pengxh.kt.lite.extensions.createImageFileDir @@ -108,14 +107,6 @@ bitmap.saveImage(imagePath) when (RuntimeCache.currentScene) { - CurrentScene.DISCLOSURE -> {} - CurrentScene.ENVIRONMENT -> { - val msg = EnvironmentActivity.weakReferenceHandler.obtainMessage() - msg.what = LocaleConstant.WEBSOCKET_MESSAGE_CODE - msg.obj = imagePath - EnvironmentActivity.weakReferenceHandler.sendMessage(msg) - } - CurrentScene.SUPPLY -> { val msg = SuppliesActivity.weakReferenceHandler.obtainMessage() msg.what = LocaleConstant.WEBSOCKET_MESSAGE_CODE @@ -123,6 +114,9 @@ SuppliesActivity.weakReferenceHandler.sendMessage(msg) } + CurrentScene.DISCLOSURE -> {} + CurrentScene.ENVIRONMENT -> {} + CurrentScene.GUARDIAN -> { val msg = GuardiansActivity.weakReferenceHandler.obtainMessage() msg.what = LocaleConstant.WEBSOCKET_MESSAGE_CODE diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java new file mode 100644 index 0000000..758b3bd --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java @@ -0,0 +1,82 @@ +package com.casic.br.operationsite.test.model; + +import java.util.List; + +public class AirConditionModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private double o2; + private int h2s; + private int co; + private int ch4; + + public double getO2() { + return o2; + } + + public void setO2(double o2) { + this.o2 = o2; + } + + public int getH2s() { + return h2s; + } + + public void setH2s(int h2s) { + this.h2s = h2s; + } + + public int getCo() { + return co; + } + + public void setCo(int co) { + this.co = co; + } + + public int getCh4() { + return ch4; + } + + public void setCh4(int ch4) { + this.ch4 = ch4; + } + } +} 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 0b16d05..30d5dbf 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 @@ -60,6 +60,12 @@ ): String /** + * 获取四合一数据 + */ + @GET("/emergency/startCheckOxygen") + suspend fun getAirCondition(@Header("token") token: String): String + + /** * 切换场景阶段 */ @POST("/setPhase") 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 dbaa1da..19c7b19 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 @@ -81,6 +81,13 @@ } /** + * 获取四合一数据 + */ + suspend fun getAirCondition(): String { + return api.getAirCondition(AuthenticationHelper.token!!) + } + + /** * 设置当前阶段 */ suspend fun setCurrentPhase(httpConfig: String, phase: String): String { diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt b/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt index 302eb17..d2dbaf7 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt @@ -2,6 +2,11 @@ sealed class CurrentScene { /** + * 五必须 + */ + object SUPPLY : CurrentScene() + + /** * 交底 */ object DISCLOSURE : CurrentScene() @@ -12,11 +17,6 @@ object ENVIRONMENT : CurrentScene() /** - * 五必须 - */ - object SUPPLY : CurrentScene() - - /** * 人员监护 */ object GUARDIAN : CurrentScene() 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 57cef0e..2b27867 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,7 @@ ) } - const val SERVER_BASE_URL = "http://111.198.10.15:22006" + 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地址 @@ -44,7 +44,7 @@ const val MAIN_RTSP_URL = "rtsp://${CAMERA_IP}:554" //子码流 - const val SUB_RTSP_URL = "${MAIN_RTSP_URL}/h265/ch1/sub/av_stream" + const val SUB_RTSP_URL = "${MAIN_RTSP_URL}/h264/ch1/sub/av_stream" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig" const val ACCOUNT = "account" @@ -73,6 +73,8 @@ byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x06, 0x00, 0x9A.toByte()) val CONFIRM_BLOWER_COMMAND = byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x08, 0x00, 0x9C.toByte()) + val CONFIRM_AIR_COMMAND = + byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x19, 0x00, 0xAD.toByte()) val END_ENV_COMMAND = byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x09, 0x00, 0x9D.toByte()) diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt b/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt index a85f94b..7ffdb5d 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt @@ -8,7 +8,6 @@ import com.casic.br.operationsite.test.util.CurrentScene import com.casic.br.operationsite.test.util.LocaleConstant import com.casic.br.operationsite.test.util.RuntimeCache -import com.casic.br.operationsite.test.view.EnvironmentActivity import com.casic.br.operationsite.test.view.GuardiansActivity import com.casic.br.operationsite.test.view.SuppliesActivity import com.pengxh.kt.lite.extensions.createImageFileDir @@ -108,14 +107,6 @@ bitmap.saveImage(imagePath) when (RuntimeCache.currentScene) { - CurrentScene.DISCLOSURE -> {} - CurrentScene.ENVIRONMENT -> { - val msg = EnvironmentActivity.weakReferenceHandler.obtainMessage() - msg.what = LocaleConstant.WEBSOCKET_MESSAGE_CODE - msg.obj = imagePath - EnvironmentActivity.weakReferenceHandler.sendMessage(msg) - } - CurrentScene.SUPPLY -> { val msg = SuppliesActivity.weakReferenceHandler.obtainMessage() msg.what = LocaleConstant.WEBSOCKET_MESSAGE_CODE @@ -123,6 +114,9 @@ SuppliesActivity.weakReferenceHandler.sendMessage(msg) } + CurrentScene.DISCLOSURE -> {} + CurrentScene.ENVIRONMENT -> {} + CurrentScene.GUARDIAN -> { val msg = GuardiansActivity.weakReferenceHandler.obtainMessage() msg.what = LocaleConstant.WEBSOCKET_MESSAGE_CODE diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt index 701a3cc..45b8bd5 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt @@ -1,7 +1,7 @@ package com.casic.br.operationsite.test.view import android.os.Bundle -import android.widget.FrameLayout +import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.test.R import com.casic.br.operationsite.test.databinding.ActivityDisclosureBinding @@ -11,6 +11,7 @@ import com.casic.br.operationsite.test.util.RuntimeCache import com.casic.br.operationsite.test.util.VideoPlayerManager import com.casic.br.operationsite.test.util.tcp.SocketManager +import com.casic.br.operationsite.test.vm.AirViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel import com.casic.br.operationsite.test.widget.BottomControlSheet import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -19,13 +20,15 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ActivityStackManager +import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.widget.TitleBarView class DisclosureActivity : KotlinBaseActivity() { private val kTag = "DisclosureActivity" - private val context = this private lateinit var constructionCheckViewModel: ConstructionCheckViewModel + private lateinit var airViewModel: AirViewModel override fun initEvent() { binding.startCheckButton.setOnClickListener { @@ -33,36 +36,29 @@ "指令发送失败,请确认是否处于同一网段".show(this) return@setOnClickListener } - //发送指令 - SocketManager.get.send(LocaleConstant.START_CONSTRUCTION_COMMAND) + //通知一体机开始算法 + constructionCheckViewModel.setCurrentPhase(LocaleConstant.AI_BASE_IP, "brief") } binding.showControlViewButton.setOnClickListener { BottomControlSheet(this).show() } - binding.restartVideoButton.setOnClickListener { - binding.rtspPlayerView.startPlayLogic() + binding.checkAirButton.setOnClickListener { + //通知后台可以返回四合一数据了 + airViewModel.getAirCondition(this) } - binding.clearVideoRegionButton.setOnClickListener { - binding.regionView.clearRoutePath() - } - - binding.setVideoRegionButton.setOnClickListener { - val region = binding.regionView.getConfirmedPoints() - -// constructionCheckViewModel.setVideoRegion(LocaleConstant.AI_BASE_IP, region) - } - - binding.endCheckButton.setOnClickListener { + binding.skipAirButton.setOnClickListener { if (!SocketManager.get.nettyClient.connectStatus) { "指令发送失败,请确认是否处于同一网段".show(this) return@setOnClickListener } - //发送指令 -// SocketManager.get.send(LocaleConstant.END_CONSTRUCTION_COMMAND) - navigatePageTo() + //下发指令 + SocketManager.get.send(LocaleConstant.CONFIRM_AIR_COMMAND) + + //跳转 + navigatePageTo() } } @@ -71,30 +67,45 @@ RuntimeCache.currentScene = CurrentScene.DISCLOSURE + constructionCheckViewModel = ViewModelProvider(this)[ConstructionCheckViewModel::class.java] + airViewModel = ViewModelProvider(this)[AirViewModel::class.java] + airViewModel.airConditionResult.observe(this) { + if (it.code == 200) { + //绑定数据 + it.data[0].apply { + binding.firstCOValueView.text = "一氧化碳:${co}ppm" + binding.firstCH4ValueView.text = "可燃气:${ch4}%LEL" + binding.firstH2SValueView.text = "硫化氢:${co}ppm" + binding.firstO2ValueView.text = "氧气:${o2}%VOL" + } + + it.data[1].apply { + binding.secondCOValueView.text = "一氧化碳:${co}ppm" + binding.secondCH4ValueView.text = "可燃气:${ch4}%LEL" + binding.secondH2SValueView.text = "硫化氢:${co}ppm" + binding.secondO2ValueView.text = "氧气:${o2}%VOL" + } + + it.data[2].apply { + binding.thirdCOValueView.text = "一氧化碳:${co}ppm" + binding.thirdCH4ValueView.text = "可燃气:${ch4}%LEL" + binding.thirdH2SValueView.text = "硫化氢:${co}ppm" + binding.thirdO2ValueView.text = "氧气:${o2}%VOL" + } + } + } + //动态设置rtspPlayerView宽高 - val rtspViewParams = binding.rtspPlayerView.layoutParams as FrameLayout.LayoutParams + val rtspViewParams = binding.rtspPlayerView.layoutParams as LinearLayout.LayoutParams val videoWidth = getScreenWidth() - 20.dp2px(this) val videoHeight = videoWidth * (9f / 16) rtspViewParams.width = videoWidth rtspViewParams.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = rtspViewParams - - val regionViewParams = binding.regionView.layoutParams as FrameLayout.LayoutParams - regionViewParams.width = videoWidth - regionViewParams.height = videoHeight.toInt() - binding.rtspPlayerView.layoutParams = regionViewParams - VideoPlayerManager.setGSYVideoPlayerOptions( binding.rtspPlayerView, LocaleConstant.MAIN_RTSP_URL ) binding.rtspPlayerView.startPlayLogic() - - constructionCheckViewModel = ViewModelProvider(this)[ConstructionCheckViewModel::class.java] -// constructionCheckViewModel.setVideoRegionResult.observe(this) { -// if (it) { -// "区域配置成功".show(this) -// } -// } } override fun initViewBinding(): ActivityDisclosureBinding { @@ -102,7 +113,12 @@ } override fun observeRequestState() { - + airViewModel.loadState.observe(this) { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "获取四合一数据中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + } } override fun setupTopBarLayout() { diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java new file mode 100644 index 0000000..758b3bd --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java @@ -0,0 +1,82 @@ +package com.casic.br.operationsite.test.model; + +import java.util.List; + +public class AirConditionModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private double o2; + private int h2s; + private int co; + private int ch4; + + public double getO2() { + return o2; + } + + public void setO2(double o2) { + this.o2 = o2; + } + + public int getH2s() { + return h2s; + } + + public void setH2s(int h2s) { + this.h2s = h2s; + } + + public int getCo() { + return co; + } + + public void setCo(int co) { + this.co = co; + } + + public int getCh4() { + return ch4; + } + + public void setCh4(int ch4) { + this.ch4 = ch4; + } + } +} 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 0b16d05..30d5dbf 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 @@ -60,6 +60,12 @@ ): String /** + * 获取四合一数据 + */ + @GET("/emergency/startCheckOxygen") + suspend fun getAirCondition(@Header("token") token: String): String + + /** * 切换场景阶段 */ @POST("/setPhase") 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 dbaa1da..19c7b19 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 @@ -81,6 +81,13 @@ } /** + * 获取四合一数据 + */ + suspend fun getAirCondition(): String { + return api.getAirCondition(AuthenticationHelper.token!!) + } + + /** * 设置当前阶段 */ suspend fun setCurrentPhase(httpConfig: String, phase: String): String { diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt b/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt index 302eb17..d2dbaf7 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt @@ -2,6 +2,11 @@ sealed class CurrentScene { /** + * 五必须 + */ + object SUPPLY : CurrentScene() + + /** * 交底 */ object DISCLOSURE : CurrentScene() @@ -12,11 +17,6 @@ object ENVIRONMENT : CurrentScene() /** - * 五必须 - */ - object SUPPLY : CurrentScene() - - /** * 人员监护 */ object GUARDIAN : CurrentScene() 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 57cef0e..2b27867 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,7 @@ ) } - const val SERVER_BASE_URL = "http://111.198.10.15:22006" + 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地址 @@ -44,7 +44,7 @@ const val MAIN_RTSP_URL = "rtsp://${CAMERA_IP}:554" //子码流 - const val SUB_RTSP_URL = "${MAIN_RTSP_URL}/h265/ch1/sub/av_stream" + const val SUB_RTSP_URL = "${MAIN_RTSP_URL}/h264/ch1/sub/av_stream" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig" const val ACCOUNT = "account" @@ -73,6 +73,8 @@ byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x06, 0x00, 0x9A.toByte()) val CONFIRM_BLOWER_COMMAND = byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x08, 0x00, 0x9C.toByte()) + val CONFIRM_AIR_COMMAND = + byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x19, 0x00, 0xAD.toByte()) val END_ENV_COMMAND = byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x09, 0x00, 0x9D.toByte()) diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt b/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt index a85f94b..7ffdb5d 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt @@ -8,7 +8,6 @@ import com.casic.br.operationsite.test.util.CurrentScene import com.casic.br.operationsite.test.util.LocaleConstant import com.casic.br.operationsite.test.util.RuntimeCache -import com.casic.br.operationsite.test.view.EnvironmentActivity import com.casic.br.operationsite.test.view.GuardiansActivity import com.casic.br.operationsite.test.view.SuppliesActivity import com.pengxh.kt.lite.extensions.createImageFileDir @@ -108,14 +107,6 @@ bitmap.saveImage(imagePath) when (RuntimeCache.currentScene) { - CurrentScene.DISCLOSURE -> {} - CurrentScene.ENVIRONMENT -> { - val msg = EnvironmentActivity.weakReferenceHandler.obtainMessage() - msg.what = LocaleConstant.WEBSOCKET_MESSAGE_CODE - msg.obj = imagePath - EnvironmentActivity.weakReferenceHandler.sendMessage(msg) - } - CurrentScene.SUPPLY -> { val msg = SuppliesActivity.weakReferenceHandler.obtainMessage() msg.what = LocaleConstant.WEBSOCKET_MESSAGE_CODE @@ -123,6 +114,9 @@ SuppliesActivity.weakReferenceHandler.sendMessage(msg) } + CurrentScene.DISCLOSURE -> {} + CurrentScene.ENVIRONMENT -> {} + CurrentScene.GUARDIAN -> { val msg = GuardiansActivity.weakReferenceHandler.obtainMessage() msg.what = LocaleConstant.WEBSOCKET_MESSAGE_CODE diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt index 701a3cc..45b8bd5 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt @@ -1,7 +1,7 @@ package com.casic.br.operationsite.test.view import android.os.Bundle -import android.widget.FrameLayout +import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.test.R import com.casic.br.operationsite.test.databinding.ActivityDisclosureBinding @@ -11,6 +11,7 @@ import com.casic.br.operationsite.test.util.RuntimeCache import com.casic.br.operationsite.test.util.VideoPlayerManager import com.casic.br.operationsite.test.util.tcp.SocketManager +import com.casic.br.operationsite.test.vm.AirViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel import com.casic.br.operationsite.test.widget.BottomControlSheet import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -19,13 +20,15 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ActivityStackManager +import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.widget.TitleBarView class DisclosureActivity : KotlinBaseActivity() { private val kTag = "DisclosureActivity" - private val context = this private lateinit var constructionCheckViewModel: ConstructionCheckViewModel + private lateinit var airViewModel: AirViewModel override fun initEvent() { binding.startCheckButton.setOnClickListener { @@ -33,36 +36,29 @@ "指令发送失败,请确认是否处于同一网段".show(this) return@setOnClickListener } - //发送指令 - SocketManager.get.send(LocaleConstant.START_CONSTRUCTION_COMMAND) + //通知一体机开始算法 + constructionCheckViewModel.setCurrentPhase(LocaleConstant.AI_BASE_IP, "brief") } binding.showControlViewButton.setOnClickListener { BottomControlSheet(this).show() } - binding.restartVideoButton.setOnClickListener { - binding.rtspPlayerView.startPlayLogic() + binding.checkAirButton.setOnClickListener { + //通知后台可以返回四合一数据了 + airViewModel.getAirCondition(this) } - binding.clearVideoRegionButton.setOnClickListener { - binding.regionView.clearRoutePath() - } - - binding.setVideoRegionButton.setOnClickListener { - val region = binding.regionView.getConfirmedPoints() - -// constructionCheckViewModel.setVideoRegion(LocaleConstant.AI_BASE_IP, region) - } - - binding.endCheckButton.setOnClickListener { + binding.skipAirButton.setOnClickListener { if (!SocketManager.get.nettyClient.connectStatus) { "指令发送失败,请确认是否处于同一网段".show(this) return@setOnClickListener } - //发送指令 -// SocketManager.get.send(LocaleConstant.END_CONSTRUCTION_COMMAND) - navigatePageTo() + //下发指令 + SocketManager.get.send(LocaleConstant.CONFIRM_AIR_COMMAND) + + //跳转 + navigatePageTo() } } @@ -71,30 +67,45 @@ RuntimeCache.currentScene = CurrentScene.DISCLOSURE + constructionCheckViewModel = ViewModelProvider(this)[ConstructionCheckViewModel::class.java] + airViewModel = ViewModelProvider(this)[AirViewModel::class.java] + airViewModel.airConditionResult.observe(this) { + if (it.code == 200) { + //绑定数据 + it.data[0].apply { + binding.firstCOValueView.text = "一氧化碳:${co}ppm" + binding.firstCH4ValueView.text = "可燃气:${ch4}%LEL" + binding.firstH2SValueView.text = "硫化氢:${co}ppm" + binding.firstO2ValueView.text = "氧气:${o2}%VOL" + } + + it.data[1].apply { + binding.secondCOValueView.text = "一氧化碳:${co}ppm" + binding.secondCH4ValueView.text = "可燃气:${ch4}%LEL" + binding.secondH2SValueView.text = "硫化氢:${co}ppm" + binding.secondO2ValueView.text = "氧气:${o2}%VOL" + } + + it.data[2].apply { + binding.thirdCOValueView.text = "一氧化碳:${co}ppm" + binding.thirdCH4ValueView.text = "可燃气:${ch4}%LEL" + binding.thirdH2SValueView.text = "硫化氢:${co}ppm" + binding.thirdO2ValueView.text = "氧气:${o2}%VOL" + } + } + } + //动态设置rtspPlayerView宽高 - val rtspViewParams = binding.rtspPlayerView.layoutParams as FrameLayout.LayoutParams + val rtspViewParams = binding.rtspPlayerView.layoutParams as LinearLayout.LayoutParams val videoWidth = getScreenWidth() - 20.dp2px(this) val videoHeight = videoWidth * (9f / 16) rtspViewParams.width = videoWidth rtspViewParams.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = rtspViewParams - - val regionViewParams = binding.regionView.layoutParams as FrameLayout.LayoutParams - regionViewParams.width = videoWidth - regionViewParams.height = videoHeight.toInt() - binding.rtspPlayerView.layoutParams = regionViewParams - VideoPlayerManager.setGSYVideoPlayerOptions( binding.rtspPlayerView, LocaleConstant.MAIN_RTSP_URL ) binding.rtspPlayerView.startPlayLogic() - - constructionCheckViewModel = ViewModelProvider(this)[ConstructionCheckViewModel::class.java] -// constructionCheckViewModel.setVideoRegionResult.observe(this) { -// if (it) { -// "区域配置成功".show(this) -// } -// } } override fun initViewBinding(): ActivityDisclosureBinding { @@ -102,7 +113,12 @@ } override fun observeRequestState() { - + airViewModel.loadState.observe(this) { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "获取四合一数据中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + } } override fun setupTopBarLayout() { 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 59c25b2..55512b3 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 @@ -120,8 +120,7 @@ .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { -// SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) - navigatePageTo() + navigatePageTo() } override fun onCancelClick() { @@ -220,13 +219,13 @@ 5 -> AlertControlDialog.Builder() .setContext(this) .setTitle("温馨提示") - .setMessage("检测到施工前劳保用品准备完毕,是否开始施工?") + .setMessage("检测到施工前劳保用品准备完毕,是否开始施工交底?") .setNegativeButton("取消").setPositiveButton("确定") .setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { -// SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) - navigatePageTo() + SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) + navigatePageTo() } override fun onCancelClick() { diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java new file mode 100644 index 0000000..758b3bd --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java @@ -0,0 +1,82 @@ +package com.casic.br.operationsite.test.model; + +import java.util.List; + +public class AirConditionModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private double o2; + private int h2s; + private int co; + private int ch4; + + public double getO2() { + return o2; + } + + public void setO2(double o2) { + this.o2 = o2; + } + + public int getH2s() { + return h2s; + } + + public void setH2s(int h2s) { + this.h2s = h2s; + } + + public int getCo() { + return co; + } + + public void setCo(int co) { + this.co = co; + } + + public int getCh4() { + return ch4; + } + + public void setCh4(int ch4) { + this.ch4 = ch4; + } + } +} 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 0b16d05..30d5dbf 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 @@ -60,6 +60,12 @@ ): String /** + * 获取四合一数据 + */ + @GET("/emergency/startCheckOxygen") + suspend fun getAirCondition(@Header("token") token: String): String + + /** * 切换场景阶段 */ @POST("/setPhase") 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 dbaa1da..19c7b19 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 @@ -81,6 +81,13 @@ } /** + * 获取四合一数据 + */ + suspend fun getAirCondition(): String { + return api.getAirCondition(AuthenticationHelper.token!!) + } + + /** * 设置当前阶段 */ suspend fun setCurrentPhase(httpConfig: String, phase: String): String { diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt b/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt index 302eb17..d2dbaf7 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt @@ -2,6 +2,11 @@ sealed class CurrentScene { /** + * 五必须 + */ + object SUPPLY : CurrentScene() + + /** * 交底 */ object DISCLOSURE : CurrentScene() @@ -12,11 +17,6 @@ object ENVIRONMENT : CurrentScene() /** - * 五必须 - */ - object SUPPLY : CurrentScene() - - /** * 人员监护 */ object GUARDIAN : CurrentScene() 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 57cef0e..2b27867 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,7 @@ ) } - const val SERVER_BASE_URL = "http://111.198.10.15:22006" + 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地址 @@ -44,7 +44,7 @@ const val MAIN_RTSP_URL = "rtsp://${CAMERA_IP}:554" //子码流 - const val SUB_RTSP_URL = "${MAIN_RTSP_URL}/h265/ch1/sub/av_stream" + const val SUB_RTSP_URL = "${MAIN_RTSP_URL}/h264/ch1/sub/av_stream" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig" const val ACCOUNT = "account" @@ -73,6 +73,8 @@ byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x06, 0x00, 0x9A.toByte()) val CONFIRM_BLOWER_COMMAND = byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x08, 0x00, 0x9C.toByte()) + val CONFIRM_AIR_COMMAND = + byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x19, 0x00, 0xAD.toByte()) val END_ENV_COMMAND = byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x09, 0x00, 0x9D.toByte()) diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt b/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt index a85f94b..7ffdb5d 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt @@ -8,7 +8,6 @@ import com.casic.br.operationsite.test.util.CurrentScene import com.casic.br.operationsite.test.util.LocaleConstant import com.casic.br.operationsite.test.util.RuntimeCache -import com.casic.br.operationsite.test.view.EnvironmentActivity import com.casic.br.operationsite.test.view.GuardiansActivity import com.casic.br.operationsite.test.view.SuppliesActivity import com.pengxh.kt.lite.extensions.createImageFileDir @@ -108,14 +107,6 @@ bitmap.saveImage(imagePath) when (RuntimeCache.currentScene) { - CurrentScene.DISCLOSURE -> {} - CurrentScene.ENVIRONMENT -> { - val msg = EnvironmentActivity.weakReferenceHandler.obtainMessage() - msg.what = LocaleConstant.WEBSOCKET_MESSAGE_CODE - msg.obj = imagePath - EnvironmentActivity.weakReferenceHandler.sendMessage(msg) - } - CurrentScene.SUPPLY -> { val msg = SuppliesActivity.weakReferenceHandler.obtainMessage() msg.what = LocaleConstant.WEBSOCKET_MESSAGE_CODE @@ -123,6 +114,9 @@ SuppliesActivity.weakReferenceHandler.sendMessage(msg) } + CurrentScene.DISCLOSURE -> {} + CurrentScene.ENVIRONMENT -> {} + CurrentScene.GUARDIAN -> { val msg = GuardiansActivity.weakReferenceHandler.obtainMessage() msg.what = LocaleConstant.WEBSOCKET_MESSAGE_CODE diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt index 701a3cc..45b8bd5 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt @@ -1,7 +1,7 @@ package com.casic.br.operationsite.test.view import android.os.Bundle -import android.widget.FrameLayout +import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.test.R import com.casic.br.operationsite.test.databinding.ActivityDisclosureBinding @@ -11,6 +11,7 @@ import com.casic.br.operationsite.test.util.RuntimeCache import com.casic.br.operationsite.test.util.VideoPlayerManager import com.casic.br.operationsite.test.util.tcp.SocketManager +import com.casic.br.operationsite.test.vm.AirViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel import com.casic.br.operationsite.test.widget.BottomControlSheet import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -19,13 +20,15 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ActivityStackManager +import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.widget.TitleBarView class DisclosureActivity : KotlinBaseActivity() { private val kTag = "DisclosureActivity" - private val context = this private lateinit var constructionCheckViewModel: ConstructionCheckViewModel + private lateinit var airViewModel: AirViewModel override fun initEvent() { binding.startCheckButton.setOnClickListener { @@ -33,36 +36,29 @@ "指令发送失败,请确认是否处于同一网段".show(this) return@setOnClickListener } - //发送指令 - SocketManager.get.send(LocaleConstant.START_CONSTRUCTION_COMMAND) + //通知一体机开始算法 + constructionCheckViewModel.setCurrentPhase(LocaleConstant.AI_BASE_IP, "brief") } binding.showControlViewButton.setOnClickListener { BottomControlSheet(this).show() } - binding.restartVideoButton.setOnClickListener { - binding.rtspPlayerView.startPlayLogic() + binding.checkAirButton.setOnClickListener { + //通知后台可以返回四合一数据了 + airViewModel.getAirCondition(this) } - binding.clearVideoRegionButton.setOnClickListener { - binding.regionView.clearRoutePath() - } - - binding.setVideoRegionButton.setOnClickListener { - val region = binding.regionView.getConfirmedPoints() - -// constructionCheckViewModel.setVideoRegion(LocaleConstant.AI_BASE_IP, region) - } - - binding.endCheckButton.setOnClickListener { + binding.skipAirButton.setOnClickListener { if (!SocketManager.get.nettyClient.connectStatus) { "指令发送失败,请确认是否处于同一网段".show(this) return@setOnClickListener } - //发送指令 -// SocketManager.get.send(LocaleConstant.END_CONSTRUCTION_COMMAND) - navigatePageTo() + //下发指令 + SocketManager.get.send(LocaleConstant.CONFIRM_AIR_COMMAND) + + //跳转 + navigatePageTo() } } @@ -71,30 +67,45 @@ RuntimeCache.currentScene = CurrentScene.DISCLOSURE + constructionCheckViewModel = ViewModelProvider(this)[ConstructionCheckViewModel::class.java] + airViewModel = ViewModelProvider(this)[AirViewModel::class.java] + airViewModel.airConditionResult.observe(this) { + if (it.code == 200) { + //绑定数据 + it.data[0].apply { + binding.firstCOValueView.text = "一氧化碳:${co}ppm" + binding.firstCH4ValueView.text = "可燃气:${ch4}%LEL" + binding.firstH2SValueView.text = "硫化氢:${co}ppm" + binding.firstO2ValueView.text = "氧气:${o2}%VOL" + } + + it.data[1].apply { + binding.secondCOValueView.text = "一氧化碳:${co}ppm" + binding.secondCH4ValueView.text = "可燃气:${ch4}%LEL" + binding.secondH2SValueView.text = "硫化氢:${co}ppm" + binding.secondO2ValueView.text = "氧气:${o2}%VOL" + } + + it.data[2].apply { + binding.thirdCOValueView.text = "一氧化碳:${co}ppm" + binding.thirdCH4ValueView.text = "可燃气:${ch4}%LEL" + binding.thirdH2SValueView.text = "硫化氢:${co}ppm" + binding.thirdO2ValueView.text = "氧气:${o2}%VOL" + } + } + } + //动态设置rtspPlayerView宽高 - val rtspViewParams = binding.rtspPlayerView.layoutParams as FrameLayout.LayoutParams + val rtspViewParams = binding.rtspPlayerView.layoutParams as LinearLayout.LayoutParams val videoWidth = getScreenWidth() - 20.dp2px(this) val videoHeight = videoWidth * (9f / 16) rtspViewParams.width = videoWidth rtspViewParams.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = rtspViewParams - - val regionViewParams = binding.regionView.layoutParams as FrameLayout.LayoutParams - regionViewParams.width = videoWidth - regionViewParams.height = videoHeight.toInt() - binding.rtspPlayerView.layoutParams = regionViewParams - VideoPlayerManager.setGSYVideoPlayerOptions( binding.rtspPlayerView, LocaleConstant.MAIN_RTSP_URL ) binding.rtspPlayerView.startPlayLogic() - - constructionCheckViewModel = ViewModelProvider(this)[ConstructionCheckViewModel::class.java] -// constructionCheckViewModel.setVideoRegionResult.observe(this) { -// if (it) { -// "区域配置成功".show(this) -// } -// } } override fun initViewBinding(): ActivityDisclosureBinding { @@ -102,7 +113,12 @@ } override fun observeRequestState() { - + airViewModel.loadState.observe(this) { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "获取四合一数据中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + } } override fun setupTopBarLayout() { 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 59c25b2..55512b3 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 @@ -120,8 +120,7 @@ .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { -// SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) - navigatePageTo() + navigatePageTo() } override fun onCancelClick() { @@ -220,13 +219,13 @@ 5 -> AlertControlDialog.Builder() .setContext(this) .setTitle("温馨提示") - .setMessage("检测到施工前劳保用品准备完毕,是否开始施工?") + .setMessage("检测到施工前劳保用品准备完毕,是否开始施工交底?") .setNegativeButton("取消").setPositiveButton("确定") .setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { -// SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) - navigatePageTo() + SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) + navigatePageTo() } override fun onCancelClick() { diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/WorkTaskActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/WorkTaskActivity.kt index aa577b1..52678e4 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/WorkTaskActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/WorkTaskActivity.kt @@ -144,7 +144,7 @@ ) { RuntimeCache.projectId = t.id RuntimeCache.uploadFileTaskId = System.currentTimeMillis().toString() - navigatePageTo() + navigatePageTo() } }) } diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java new file mode 100644 index 0000000..758b3bd --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java @@ -0,0 +1,82 @@ +package com.casic.br.operationsite.test.model; + +import java.util.List; + +public class AirConditionModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private double o2; + private int h2s; + private int co; + private int ch4; + + public double getO2() { + return o2; + } + + public void setO2(double o2) { + this.o2 = o2; + } + + public int getH2s() { + return h2s; + } + + public void setH2s(int h2s) { + this.h2s = h2s; + } + + public int getCo() { + return co; + } + + public void setCo(int co) { + this.co = co; + } + + public int getCh4() { + return ch4; + } + + public void setCh4(int ch4) { + this.ch4 = ch4; + } + } +} 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 0b16d05..30d5dbf 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 @@ -60,6 +60,12 @@ ): String /** + * 获取四合一数据 + */ + @GET("/emergency/startCheckOxygen") + suspend fun getAirCondition(@Header("token") token: String): String + + /** * 切换场景阶段 */ @POST("/setPhase") 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 dbaa1da..19c7b19 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 @@ -81,6 +81,13 @@ } /** + * 获取四合一数据 + */ + suspend fun getAirCondition(): String { + return api.getAirCondition(AuthenticationHelper.token!!) + } + + /** * 设置当前阶段 */ suspend fun setCurrentPhase(httpConfig: String, phase: String): String { diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt b/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt index 302eb17..d2dbaf7 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt @@ -2,6 +2,11 @@ sealed class CurrentScene { /** + * 五必须 + */ + object SUPPLY : CurrentScene() + + /** * 交底 */ object DISCLOSURE : CurrentScene() @@ -12,11 +17,6 @@ object ENVIRONMENT : CurrentScene() /** - * 五必须 - */ - object SUPPLY : CurrentScene() - - /** * 人员监护 */ object GUARDIAN : CurrentScene() 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 57cef0e..2b27867 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,7 @@ ) } - const val SERVER_BASE_URL = "http://111.198.10.15:22006" + 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地址 @@ -44,7 +44,7 @@ const val MAIN_RTSP_URL = "rtsp://${CAMERA_IP}:554" //子码流 - const val SUB_RTSP_URL = "${MAIN_RTSP_URL}/h265/ch1/sub/av_stream" + const val SUB_RTSP_URL = "${MAIN_RTSP_URL}/h264/ch1/sub/av_stream" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig" const val ACCOUNT = "account" @@ -73,6 +73,8 @@ byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x06, 0x00, 0x9A.toByte()) val CONFIRM_BLOWER_COMMAND = byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x08, 0x00, 0x9C.toByte()) + val CONFIRM_AIR_COMMAND = + byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x19, 0x00, 0xAD.toByte()) val END_ENV_COMMAND = byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x09, 0x00, 0x9D.toByte()) diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt b/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt index a85f94b..7ffdb5d 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt @@ -8,7 +8,6 @@ import com.casic.br.operationsite.test.util.CurrentScene import com.casic.br.operationsite.test.util.LocaleConstant import com.casic.br.operationsite.test.util.RuntimeCache -import com.casic.br.operationsite.test.view.EnvironmentActivity import com.casic.br.operationsite.test.view.GuardiansActivity import com.casic.br.operationsite.test.view.SuppliesActivity import com.pengxh.kt.lite.extensions.createImageFileDir @@ -108,14 +107,6 @@ bitmap.saveImage(imagePath) when (RuntimeCache.currentScene) { - CurrentScene.DISCLOSURE -> {} - CurrentScene.ENVIRONMENT -> { - val msg = EnvironmentActivity.weakReferenceHandler.obtainMessage() - msg.what = LocaleConstant.WEBSOCKET_MESSAGE_CODE - msg.obj = imagePath - EnvironmentActivity.weakReferenceHandler.sendMessage(msg) - } - CurrentScene.SUPPLY -> { val msg = SuppliesActivity.weakReferenceHandler.obtainMessage() msg.what = LocaleConstant.WEBSOCKET_MESSAGE_CODE @@ -123,6 +114,9 @@ SuppliesActivity.weakReferenceHandler.sendMessage(msg) } + CurrentScene.DISCLOSURE -> {} + CurrentScene.ENVIRONMENT -> {} + CurrentScene.GUARDIAN -> { val msg = GuardiansActivity.weakReferenceHandler.obtainMessage() msg.what = LocaleConstant.WEBSOCKET_MESSAGE_CODE diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt index 701a3cc..45b8bd5 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt @@ -1,7 +1,7 @@ package com.casic.br.operationsite.test.view import android.os.Bundle -import android.widget.FrameLayout +import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.test.R import com.casic.br.operationsite.test.databinding.ActivityDisclosureBinding @@ -11,6 +11,7 @@ import com.casic.br.operationsite.test.util.RuntimeCache import com.casic.br.operationsite.test.util.VideoPlayerManager import com.casic.br.operationsite.test.util.tcp.SocketManager +import com.casic.br.operationsite.test.vm.AirViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel import com.casic.br.operationsite.test.widget.BottomControlSheet import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -19,13 +20,15 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ActivityStackManager +import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.widget.TitleBarView class DisclosureActivity : KotlinBaseActivity() { private val kTag = "DisclosureActivity" - private val context = this private lateinit var constructionCheckViewModel: ConstructionCheckViewModel + private lateinit var airViewModel: AirViewModel override fun initEvent() { binding.startCheckButton.setOnClickListener { @@ -33,36 +36,29 @@ "指令发送失败,请确认是否处于同一网段".show(this) return@setOnClickListener } - //发送指令 - SocketManager.get.send(LocaleConstant.START_CONSTRUCTION_COMMAND) + //通知一体机开始算法 + constructionCheckViewModel.setCurrentPhase(LocaleConstant.AI_BASE_IP, "brief") } binding.showControlViewButton.setOnClickListener { BottomControlSheet(this).show() } - binding.restartVideoButton.setOnClickListener { - binding.rtspPlayerView.startPlayLogic() + binding.checkAirButton.setOnClickListener { + //通知后台可以返回四合一数据了 + airViewModel.getAirCondition(this) } - binding.clearVideoRegionButton.setOnClickListener { - binding.regionView.clearRoutePath() - } - - binding.setVideoRegionButton.setOnClickListener { - val region = binding.regionView.getConfirmedPoints() - -// constructionCheckViewModel.setVideoRegion(LocaleConstant.AI_BASE_IP, region) - } - - binding.endCheckButton.setOnClickListener { + binding.skipAirButton.setOnClickListener { if (!SocketManager.get.nettyClient.connectStatus) { "指令发送失败,请确认是否处于同一网段".show(this) return@setOnClickListener } - //发送指令 -// SocketManager.get.send(LocaleConstant.END_CONSTRUCTION_COMMAND) - navigatePageTo() + //下发指令 + SocketManager.get.send(LocaleConstant.CONFIRM_AIR_COMMAND) + + //跳转 + navigatePageTo() } } @@ -71,30 +67,45 @@ RuntimeCache.currentScene = CurrentScene.DISCLOSURE + constructionCheckViewModel = ViewModelProvider(this)[ConstructionCheckViewModel::class.java] + airViewModel = ViewModelProvider(this)[AirViewModel::class.java] + airViewModel.airConditionResult.observe(this) { + if (it.code == 200) { + //绑定数据 + it.data[0].apply { + binding.firstCOValueView.text = "一氧化碳:${co}ppm" + binding.firstCH4ValueView.text = "可燃气:${ch4}%LEL" + binding.firstH2SValueView.text = "硫化氢:${co}ppm" + binding.firstO2ValueView.text = "氧气:${o2}%VOL" + } + + it.data[1].apply { + binding.secondCOValueView.text = "一氧化碳:${co}ppm" + binding.secondCH4ValueView.text = "可燃气:${ch4}%LEL" + binding.secondH2SValueView.text = "硫化氢:${co}ppm" + binding.secondO2ValueView.text = "氧气:${o2}%VOL" + } + + it.data[2].apply { + binding.thirdCOValueView.text = "一氧化碳:${co}ppm" + binding.thirdCH4ValueView.text = "可燃气:${ch4}%LEL" + binding.thirdH2SValueView.text = "硫化氢:${co}ppm" + binding.thirdO2ValueView.text = "氧气:${o2}%VOL" + } + } + } + //动态设置rtspPlayerView宽高 - val rtspViewParams = binding.rtspPlayerView.layoutParams as FrameLayout.LayoutParams + val rtspViewParams = binding.rtspPlayerView.layoutParams as LinearLayout.LayoutParams val videoWidth = getScreenWidth() - 20.dp2px(this) val videoHeight = videoWidth * (9f / 16) rtspViewParams.width = videoWidth rtspViewParams.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = rtspViewParams - - val regionViewParams = binding.regionView.layoutParams as FrameLayout.LayoutParams - regionViewParams.width = videoWidth - regionViewParams.height = videoHeight.toInt() - binding.rtspPlayerView.layoutParams = regionViewParams - VideoPlayerManager.setGSYVideoPlayerOptions( binding.rtspPlayerView, LocaleConstant.MAIN_RTSP_URL ) binding.rtspPlayerView.startPlayLogic() - - constructionCheckViewModel = ViewModelProvider(this)[ConstructionCheckViewModel::class.java] -// constructionCheckViewModel.setVideoRegionResult.observe(this) { -// if (it) { -// "区域配置成功".show(this) -// } -// } } override fun initViewBinding(): ActivityDisclosureBinding { @@ -102,7 +113,12 @@ } override fun observeRequestState() { - + airViewModel.loadState.observe(this) { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "获取四合一数据中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + } } override fun setupTopBarLayout() { 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 59c25b2..55512b3 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 @@ -120,8 +120,7 @@ .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { -// SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) - navigatePageTo() + navigatePageTo() } override fun onCancelClick() { @@ -220,13 +219,13 @@ 5 -> AlertControlDialog.Builder() .setContext(this) .setTitle("温馨提示") - .setMessage("检测到施工前劳保用品准备完毕,是否开始施工?") + .setMessage("检测到施工前劳保用品准备完毕,是否开始施工交底?") .setNegativeButton("取消").setPositiveButton("确定") .setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { -// SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) - navigatePageTo() + SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) + navigatePageTo() } override fun onCancelClick() { diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/WorkTaskActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/WorkTaskActivity.kt index aa577b1..52678e4 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/WorkTaskActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/WorkTaskActivity.kt @@ -144,7 +144,7 @@ ) { RuntimeCache.projectId = t.id RuntimeCache.uploadFileTaskId = System.currentTimeMillis().toString() - navigatePageTo() + navigatePageTo() } }) } diff --git a/app/src/main/java/com/casic/br/operationsite/test/vm/AirViewModel.kt b/app/src/main/java/com/casic/br/operationsite/test/vm/AirViewModel.kt new file mode 100644 index 0000000..0a6b01f --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/vm/AirViewModel.kt @@ -0,0 +1,41 @@ +package com.casic.br.operationsite.test.vm + +import android.content.Context +import androidx.lifecycle.MutableLiveData +import com.casic.br.operationsite.test.extensions.getResponseCode +import com.casic.br.operationsite.test.extensions.getResponseMessage +import com.casic.br.operationsite.test.model.AirConditionModel +import com.casic.br.operationsite.test.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +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 AirViewModel : BaseViewModel() { + + private val gson = Gson() + val airConditionResult = MutableLiveData() + + fun getAirCondition(context: Context) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getAirCondition() + when (response.getResponseCode()) { + 200 -> { + loadState.value = LoadState.Success + airConditionResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } + + else -> { + loadState.value = LoadState.Fail + 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/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java new file mode 100644 index 0000000..758b3bd --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java @@ -0,0 +1,82 @@ +package com.casic.br.operationsite.test.model; + +import java.util.List; + +public class AirConditionModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private double o2; + private int h2s; + private int co; + private int ch4; + + public double getO2() { + return o2; + } + + public void setO2(double o2) { + this.o2 = o2; + } + + public int getH2s() { + return h2s; + } + + public void setH2s(int h2s) { + this.h2s = h2s; + } + + public int getCo() { + return co; + } + + public void setCo(int co) { + this.co = co; + } + + public int getCh4() { + return ch4; + } + + public void setCh4(int ch4) { + this.ch4 = ch4; + } + } +} 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 0b16d05..30d5dbf 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 @@ -60,6 +60,12 @@ ): String /** + * 获取四合一数据 + */ + @GET("/emergency/startCheckOxygen") + suspend fun getAirCondition(@Header("token") token: String): String + + /** * 切换场景阶段 */ @POST("/setPhase") 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 dbaa1da..19c7b19 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 @@ -81,6 +81,13 @@ } /** + * 获取四合一数据 + */ + suspend fun getAirCondition(): String { + return api.getAirCondition(AuthenticationHelper.token!!) + } + + /** * 设置当前阶段 */ suspend fun setCurrentPhase(httpConfig: String, phase: String): String { diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt b/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt index 302eb17..d2dbaf7 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/CurrentScene.kt @@ -2,6 +2,11 @@ sealed class CurrentScene { /** + * 五必须 + */ + object SUPPLY : CurrentScene() + + /** * 交底 */ object DISCLOSURE : CurrentScene() @@ -12,11 +17,6 @@ object ENVIRONMENT : CurrentScene() /** - * 五必须 - */ - object SUPPLY : CurrentScene() - - /** * 人员监护 */ object GUARDIAN : CurrentScene() 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 57cef0e..2b27867 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,7 @@ ) } - const val SERVER_BASE_URL = "http://111.198.10.15:22006" + 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地址 @@ -44,7 +44,7 @@ const val MAIN_RTSP_URL = "rtsp://${CAMERA_IP}:554" //子码流 - const val SUB_RTSP_URL = "${MAIN_RTSP_URL}/h265/ch1/sub/av_stream" + const val SUB_RTSP_URL = "${MAIN_RTSP_URL}/h264/ch1/sub/av_stream" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig" const val ACCOUNT = "account" @@ -73,6 +73,8 @@ byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x06, 0x00, 0x9A.toByte()) val CONFIRM_BLOWER_COMMAND = byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x08, 0x00, 0x9C.toByte()) + val CONFIRM_AIR_COMMAND = + byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x19, 0x00, 0xAD.toByte()) val END_ENV_COMMAND = byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x09, 0x00, 0x9D.toByte()) diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt b/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt index a85f94b..7ffdb5d 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/util/websocket/WebSocketManager.kt @@ -8,7 +8,6 @@ import com.casic.br.operationsite.test.util.CurrentScene import com.casic.br.operationsite.test.util.LocaleConstant import com.casic.br.operationsite.test.util.RuntimeCache -import com.casic.br.operationsite.test.view.EnvironmentActivity import com.casic.br.operationsite.test.view.GuardiansActivity import com.casic.br.operationsite.test.view.SuppliesActivity import com.pengxh.kt.lite.extensions.createImageFileDir @@ -108,14 +107,6 @@ bitmap.saveImage(imagePath) when (RuntimeCache.currentScene) { - CurrentScene.DISCLOSURE -> {} - CurrentScene.ENVIRONMENT -> { - val msg = EnvironmentActivity.weakReferenceHandler.obtainMessage() - msg.what = LocaleConstant.WEBSOCKET_MESSAGE_CODE - msg.obj = imagePath - EnvironmentActivity.weakReferenceHandler.sendMessage(msg) - } - CurrentScene.SUPPLY -> { val msg = SuppliesActivity.weakReferenceHandler.obtainMessage() msg.what = LocaleConstant.WEBSOCKET_MESSAGE_CODE @@ -123,6 +114,9 @@ SuppliesActivity.weakReferenceHandler.sendMessage(msg) } + CurrentScene.DISCLOSURE -> {} + CurrentScene.ENVIRONMENT -> {} + CurrentScene.GUARDIAN -> { val msg = GuardiansActivity.weakReferenceHandler.obtainMessage() msg.what = LocaleConstant.WEBSOCKET_MESSAGE_CODE diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt index 701a3cc..45b8bd5 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt @@ -1,7 +1,7 @@ package com.casic.br.operationsite.test.view import android.os.Bundle -import android.widget.FrameLayout +import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.test.R import com.casic.br.operationsite.test.databinding.ActivityDisclosureBinding @@ -11,6 +11,7 @@ import com.casic.br.operationsite.test.util.RuntimeCache import com.casic.br.operationsite.test.util.VideoPlayerManager import com.casic.br.operationsite.test.util.tcp.SocketManager +import com.casic.br.operationsite.test.vm.AirViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel import com.casic.br.operationsite.test.widget.BottomControlSheet import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -19,13 +20,15 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ActivityStackManager +import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.widget.TitleBarView class DisclosureActivity : KotlinBaseActivity() { private val kTag = "DisclosureActivity" - private val context = this private lateinit var constructionCheckViewModel: ConstructionCheckViewModel + private lateinit var airViewModel: AirViewModel override fun initEvent() { binding.startCheckButton.setOnClickListener { @@ -33,36 +36,29 @@ "指令发送失败,请确认是否处于同一网段".show(this) return@setOnClickListener } - //发送指令 - SocketManager.get.send(LocaleConstant.START_CONSTRUCTION_COMMAND) + //通知一体机开始算法 + constructionCheckViewModel.setCurrentPhase(LocaleConstant.AI_BASE_IP, "brief") } binding.showControlViewButton.setOnClickListener { BottomControlSheet(this).show() } - binding.restartVideoButton.setOnClickListener { - binding.rtspPlayerView.startPlayLogic() + binding.checkAirButton.setOnClickListener { + //通知后台可以返回四合一数据了 + airViewModel.getAirCondition(this) } - binding.clearVideoRegionButton.setOnClickListener { - binding.regionView.clearRoutePath() - } - - binding.setVideoRegionButton.setOnClickListener { - val region = binding.regionView.getConfirmedPoints() - -// constructionCheckViewModel.setVideoRegion(LocaleConstant.AI_BASE_IP, region) - } - - binding.endCheckButton.setOnClickListener { + binding.skipAirButton.setOnClickListener { if (!SocketManager.get.nettyClient.connectStatus) { "指令发送失败,请确认是否处于同一网段".show(this) return@setOnClickListener } - //发送指令 -// SocketManager.get.send(LocaleConstant.END_CONSTRUCTION_COMMAND) - navigatePageTo() + //下发指令 + SocketManager.get.send(LocaleConstant.CONFIRM_AIR_COMMAND) + + //跳转 + navigatePageTo() } } @@ -71,30 +67,45 @@ RuntimeCache.currentScene = CurrentScene.DISCLOSURE + constructionCheckViewModel = ViewModelProvider(this)[ConstructionCheckViewModel::class.java] + airViewModel = ViewModelProvider(this)[AirViewModel::class.java] + airViewModel.airConditionResult.observe(this) { + if (it.code == 200) { + //绑定数据 + it.data[0].apply { + binding.firstCOValueView.text = "一氧化碳:${co}ppm" + binding.firstCH4ValueView.text = "可燃气:${ch4}%LEL" + binding.firstH2SValueView.text = "硫化氢:${co}ppm" + binding.firstO2ValueView.text = "氧气:${o2}%VOL" + } + + it.data[1].apply { + binding.secondCOValueView.text = "一氧化碳:${co}ppm" + binding.secondCH4ValueView.text = "可燃气:${ch4}%LEL" + binding.secondH2SValueView.text = "硫化氢:${co}ppm" + binding.secondO2ValueView.text = "氧气:${o2}%VOL" + } + + it.data[2].apply { + binding.thirdCOValueView.text = "一氧化碳:${co}ppm" + binding.thirdCH4ValueView.text = "可燃气:${ch4}%LEL" + binding.thirdH2SValueView.text = "硫化氢:${co}ppm" + binding.thirdO2ValueView.text = "氧气:${o2}%VOL" + } + } + } + //动态设置rtspPlayerView宽高 - val rtspViewParams = binding.rtspPlayerView.layoutParams as FrameLayout.LayoutParams + val rtspViewParams = binding.rtspPlayerView.layoutParams as LinearLayout.LayoutParams val videoWidth = getScreenWidth() - 20.dp2px(this) val videoHeight = videoWidth * (9f / 16) rtspViewParams.width = videoWidth rtspViewParams.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = rtspViewParams - - val regionViewParams = binding.regionView.layoutParams as FrameLayout.LayoutParams - regionViewParams.width = videoWidth - regionViewParams.height = videoHeight.toInt() - binding.rtspPlayerView.layoutParams = regionViewParams - VideoPlayerManager.setGSYVideoPlayerOptions( binding.rtspPlayerView, LocaleConstant.MAIN_RTSP_URL ) binding.rtspPlayerView.startPlayLogic() - - constructionCheckViewModel = ViewModelProvider(this)[ConstructionCheckViewModel::class.java] -// constructionCheckViewModel.setVideoRegionResult.observe(this) { -// if (it) { -// "区域配置成功".show(this) -// } -// } } override fun initViewBinding(): ActivityDisclosureBinding { @@ -102,7 +113,12 @@ } override fun observeRequestState() { - + airViewModel.loadState.observe(this) { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "获取四合一数据中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + } } override fun setupTopBarLayout() { 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 59c25b2..55512b3 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 @@ -120,8 +120,7 @@ .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { -// SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) - navigatePageTo() + navigatePageTo() } override fun onCancelClick() { @@ -220,13 +219,13 @@ 5 -> AlertControlDialog.Builder() .setContext(this) .setTitle("温馨提示") - .setMessage("检测到施工前劳保用品准备完毕,是否开始施工?") + .setMessage("检测到施工前劳保用品准备完毕,是否开始施工交底?") .setNegativeButton("取消").setPositiveButton("确定") .setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { -// SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) - navigatePageTo() + SocketManager.get.send(LocaleConstant.START_VIDEO_COMMAND) + navigatePageTo() } override fun onCancelClick() { diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/WorkTaskActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/WorkTaskActivity.kt index aa577b1..52678e4 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/WorkTaskActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/WorkTaskActivity.kt @@ -144,7 +144,7 @@ ) { RuntimeCache.projectId = t.id RuntimeCache.uploadFileTaskId = System.currentTimeMillis().toString() - navigatePageTo() + navigatePageTo() } }) } diff --git a/app/src/main/java/com/casic/br/operationsite/test/vm/AirViewModel.kt b/app/src/main/java/com/casic/br/operationsite/test/vm/AirViewModel.kt new file mode 100644 index 0000000..0a6b01f --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/vm/AirViewModel.kt @@ -0,0 +1,41 @@ +package com.casic.br.operationsite.test.vm + +import android.content.Context +import androidx.lifecycle.MutableLiveData +import com.casic.br.operationsite.test.extensions.getResponseCode +import com.casic.br.operationsite.test.extensions.getResponseMessage +import com.casic.br.operationsite.test.model.AirConditionModel +import com.casic.br.operationsite.test.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +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 AirViewModel : BaseViewModel() { + + private val gson = Gson() + val airConditionResult = MutableLiveData() + + fun getAirCondition(context: Context) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getAirCondition() + when (response.getResponseCode()) { + 200 -> { + loadState.value = LoadState.Success + airConditionResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } + + else -> { + loadState.value = LoadState.Fail + response.getResponseMessage().show(context) + } + } + }, { + loadState.value = LoadState.Fail + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_disclosure.xml b/app/src/main/res/layout/activity_disclosure.xml index c047f83..bd7814f 100644 --- a/app/src/main/res/layout/activity_disclosure.xml +++ b/app/src/main/res/layout/activity_disclosure.xml @@ -55,71 +55,228 @@ android:textColor="@color/black" /> - + android:layout_height="220dp" + android:clickable="false" + android:focusable="false" /> - - - - - - + android:layout_marginVertical="@dimen/dp_10" + android:background="@drawable/button_check_selector" + android:text="作业气体检测" + android:textColor="@color/black" /> + android:background="@drawable/bg_stroke_layout" + android:gravity="center_vertical" + android:orientation="vertical" + android:padding="@dimen/dp_5"> -