diff --git a/app/src/main/assets/DeviceParameter.json b/app/src/main/assets/DeviceParameter.json index 90efdc9..203bc53 100644 --- a/app/src/main/assets/DeviceParameter.json +++ b/app/src/main/assets/DeviceParameter.json @@ -1,24 +1,28 @@ [ { "deviceName": "AQS001", + "aiServerIp": "192.168.10.141", "wifi": "YTJ_010001_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.151" }, { "deviceName": "AQS002", + "aiServerIp": "192.168.10.139", "wifi": "YTJ010002_5G", "pwd": "zhsz20311hw", "cameraIp": "192.168.10.137" }, { "deviceName": "AQS003", + "aiServerIp": "192.168.10.143", "wifi": "YTJ010003_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.153" }, { "deviceName": "AQS004", + "aiServerIp": "192.168.10.144", "wifi": "YTJ010004_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.154" diff --git a/app/src/main/assets/DeviceParameter.json b/app/src/main/assets/DeviceParameter.json index 90efdc9..203bc53 100644 --- a/app/src/main/assets/DeviceParameter.json +++ b/app/src/main/assets/DeviceParameter.json @@ -1,24 +1,28 @@ [ { "deviceName": "AQS001", + "aiServerIp": "192.168.10.141", "wifi": "YTJ_010001_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.151" }, { "deviceName": "AQS002", + "aiServerIp": "192.168.10.139", "wifi": "YTJ010002_5G", "pwd": "zhsz20311hw", "cameraIp": "192.168.10.137" }, { "deviceName": "AQS003", + "aiServerIp": "192.168.10.143", "wifi": "YTJ010003_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.153" }, { "deviceName": "AQS004", + "aiServerIp": "192.168.10.144", "wifi": "YTJ010004_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.154" diff --git a/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java new file mode 100644 index 0000000..387de3a --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java @@ -0,0 +1,53 @@ +package com.casic.br.operationsite.model; + +public class AlarmStateModel { + + private int code; + private DataModel data; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String deviceIp; + private String state; + + public String getDeviceIp() { + return deviceIp; + } + + public void setDeviceIp(String deviceIp) { + this.deviceIp = deviceIp; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + } +} diff --git a/app/src/main/assets/DeviceParameter.json b/app/src/main/assets/DeviceParameter.json index 90efdc9..203bc53 100644 --- a/app/src/main/assets/DeviceParameter.json +++ b/app/src/main/assets/DeviceParameter.json @@ -1,24 +1,28 @@ [ { "deviceName": "AQS001", + "aiServerIp": "192.168.10.141", "wifi": "YTJ_010001_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.151" }, { "deviceName": "AQS002", + "aiServerIp": "192.168.10.139", "wifi": "YTJ010002_5G", "pwd": "zhsz20311hw", "cameraIp": "192.168.10.137" }, { "deviceName": "AQS003", + "aiServerIp": "192.168.10.143", "wifi": "YTJ010003_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.153" }, { "deviceName": "AQS004", + "aiServerIp": "192.168.10.144", "wifi": "YTJ010004_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.154" diff --git a/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java new file mode 100644 index 0000000..387de3a --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java @@ -0,0 +1,53 @@ +package com.casic.br.operationsite.model; + +public class AlarmStateModel { + + private int code; + private DataModel data; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String deviceIp; + private String state; + + public String getDeviceIp() { + return deviceIp; + } + + public void setDeviceIp(String deviceIp) { + this.deviceIp = deviceIp; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java index 0398681..7e8f38e 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java @@ -3,6 +3,7 @@ public class DeviceParameterModel { private String deviceName; + private String aiServerIp; private String wifi; private String pwd; private String cameraIp; @@ -15,6 +16,14 @@ this.deviceName = deviceName; } + public String getAiServerIp() { + return aiServerIp; + } + + public void setAiServerIp(String aiServerIp) { + this.aiServerIp = aiServerIp; + } + public String getWifi() { return wifi; } diff --git a/app/src/main/assets/DeviceParameter.json b/app/src/main/assets/DeviceParameter.json index 90efdc9..203bc53 100644 --- a/app/src/main/assets/DeviceParameter.json +++ b/app/src/main/assets/DeviceParameter.json @@ -1,24 +1,28 @@ [ { "deviceName": "AQS001", + "aiServerIp": "192.168.10.141", "wifi": "YTJ_010001_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.151" }, { "deviceName": "AQS002", + "aiServerIp": "192.168.10.139", "wifi": "YTJ010002_5G", "pwd": "zhsz20311hw", "cameraIp": "192.168.10.137" }, { "deviceName": "AQS003", + "aiServerIp": "192.168.10.143", "wifi": "YTJ010003_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.153" }, { "deviceName": "AQS004", + "aiServerIp": "192.168.10.144", "wifi": "YTJ010004_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.154" diff --git a/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java new file mode 100644 index 0000000..387de3a --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java @@ -0,0 +1,53 @@ +package com.casic.br.operationsite.model; + +public class AlarmStateModel { + + private int code; + private DataModel data; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String deviceIp; + private String state; + + public String getDeviceIp() { + return deviceIp; + } + + public void setDeviceIp(String deviceIp) { + this.deviceIp = deviceIp; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java index 0398681..7e8f38e 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java @@ -3,6 +3,7 @@ public class DeviceParameterModel { private String deviceName; + private String aiServerIp; private String wifi; private String pwd; private String cameraIp; @@ -15,6 +16,14 @@ this.deviceName = deviceName; } + public String getAiServerIp() { + return aiServerIp; + } + + public void setAiServerIp(String aiServerIp) { + this.aiServerIp = aiServerIp; + } + public String getWifi() { return wifi; } 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 ad2074b..7e04f19 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 @@ -154,6 +154,12 @@ suspend fun changeAlarmState(@Body requestBody: RequestBody): String /** + * 查询声光报警状态 + */ + @GET("/getAlarmState") + suspend fun getAlarmState(@Query("deviceIp") deviceIp: String): String + + /** * 提交算法区域 */ @POST("/setPosition") diff --git a/app/src/main/assets/DeviceParameter.json b/app/src/main/assets/DeviceParameter.json index 90efdc9..203bc53 100644 --- a/app/src/main/assets/DeviceParameter.json +++ b/app/src/main/assets/DeviceParameter.json @@ -1,24 +1,28 @@ [ { "deviceName": "AQS001", + "aiServerIp": "192.168.10.141", "wifi": "YTJ_010001_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.151" }, { "deviceName": "AQS002", + "aiServerIp": "192.168.10.139", "wifi": "YTJ010002_5G", "pwd": "zhsz20311hw", "cameraIp": "192.168.10.137" }, { "deviceName": "AQS003", + "aiServerIp": "192.168.10.143", "wifi": "YTJ010003_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.153" }, { "deviceName": "AQS004", + "aiServerIp": "192.168.10.144", "wifi": "YTJ010004_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.154" diff --git a/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java new file mode 100644 index 0000000..387de3a --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java @@ -0,0 +1,53 @@ +package com.casic.br.operationsite.model; + +public class AlarmStateModel { + + private int code; + private DataModel data; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String deviceIp; + private String state; + + public String getDeviceIp() { + return deviceIp; + } + + public void setDeviceIp(String deviceIp) { + this.deviceIp = deviceIp; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java index 0398681..7e8f38e 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java @@ -3,6 +3,7 @@ public class DeviceParameterModel { private String deviceName; + private String aiServerIp; private String wifi; private String pwd; private String cameraIp; @@ -15,6 +16,14 @@ this.deviceName = deviceName; } + public String getAiServerIp() { + return aiServerIp; + } + + public void setAiServerIp(String aiServerIp) { + this.aiServerIp = aiServerIp; + } + public String getWifi() { return wifi; } 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 ad2074b..7e04f19 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 @@ -154,6 +154,12 @@ suspend fun changeAlarmState(@Body requestBody: RequestBody): String /** + * 查询声光报警状态 + */ + @GET("/getAlarmState") + suspend fun getAlarmState(@Query("deviceIp") deviceIp: String): String + + /** * 提交算法区域 */ @POST("/setPosition") 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 f99d6d4..13efeec 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 @@ -30,13 +30,6 @@ RetrofitFactory.createRetrofit(httpConfig) } - private val aiApi by lazy { - val httpConfig = SaveKeyValues.getValue( - LocaleConstant.AI_SERVER_CONFIG, LocaleConstant.AI_BASE_URL - ) as String - RetrofitFactory.createRetrofit(httpConfig) - } - /** * 验证PublicKey */ @@ -233,20 +226,6 @@ } /** - * 设置当前阶段 - */ - suspend fun setCurrentPhase(phase: String): String { - val param = JsonObject() - param.addProperty("phase", phase) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - return aiApi.setCurrentPhase(requestBody) - } - - /** * 提交场景下的数据 */ suspend fun uploadPhaseData( @@ -270,30 +249,55 @@ } /** + * 设置当前阶段 + */ + 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) + } + + /** * 设置声光报警开关 */ - suspend fun changeAlarmState(state: String): String { + suspend fun changeAlarmState(httpConfig: String, deviceIp: String, state: String): String { val param = JsonObject() + param.addProperty("deviceIp", deviceIp) param.addProperty("state", state) val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.changeAlarmState(requestBody) + } - return aiApi.changeAlarmState(requestBody) + /** + * 查询声光报警状态 + */ + suspend fun getAlarmState(httpConfig: String, deviceIp: String): String { + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.getAlarmState(deviceIp) } /** * 设置区域 * */ - suspend fun setVideoRegion(position: ArrayList): String { + 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() ) - return aiApi.postRegion(requestBody) + + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.postRegion(requestBody) } /** @@ -307,7 +311,7 @@ Log.d(kTag, "executeDeviceCommand: httpConfig is null") return "" } - val service = RetrofitFactory.createRetrofit("http://${httpConfig}") + val service = RetrofitFactory.createRetrofit("http://$httpConfig") return service.executeDeviceCommand(action, "admin", "admin", speed.toString()) } } \ No newline at end of file diff --git a/app/src/main/assets/DeviceParameter.json b/app/src/main/assets/DeviceParameter.json index 90efdc9..203bc53 100644 --- a/app/src/main/assets/DeviceParameter.json +++ b/app/src/main/assets/DeviceParameter.json @@ -1,24 +1,28 @@ [ { "deviceName": "AQS001", + "aiServerIp": "192.168.10.141", "wifi": "YTJ_010001_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.151" }, { "deviceName": "AQS002", + "aiServerIp": "192.168.10.139", "wifi": "YTJ010002_5G", "pwd": "zhsz20311hw", "cameraIp": "192.168.10.137" }, { "deviceName": "AQS003", + "aiServerIp": "192.168.10.143", "wifi": "YTJ010003_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.153" }, { "deviceName": "AQS004", + "aiServerIp": "192.168.10.144", "wifi": "YTJ010004_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.154" diff --git a/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java new file mode 100644 index 0000000..387de3a --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java @@ -0,0 +1,53 @@ +package com.casic.br.operationsite.model; + +public class AlarmStateModel { + + private int code; + private DataModel data; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String deviceIp; + private String state; + + public String getDeviceIp() { + return deviceIp; + } + + public void setDeviceIp(String deviceIp) { + this.deviceIp = deviceIp; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java index 0398681..7e8f38e 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java @@ -3,6 +3,7 @@ public class DeviceParameterModel { private String deviceName; + private String aiServerIp; private String wifi; private String pwd; private String cameraIp; @@ -15,6 +16,14 @@ this.deviceName = deviceName; } + public String getAiServerIp() { + return aiServerIp; + } + + public void setAiServerIp(String aiServerIp) { + this.aiServerIp = aiServerIp; + } + public String getWifi() { return wifi; } 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 ad2074b..7e04f19 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 @@ -154,6 +154,12 @@ suspend fun changeAlarmState(@Body requestBody: RequestBody): String /** + * 查询声光报警状态 + */ + @GET("/getAlarmState") + suspend fun getAlarmState(@Query("deviceIp") deviceIp: String): String + + /** * 提交算法区域 */ @POST("/setPosition") 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 f99d6d4..13efeec 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 @@ -30,13 +30,6 @@ RetrofitFactory.createRetrofit(httpConfig) } - private val aiApi by lazy { - val httpConfig = SaveKeyValues.getValue( - LocaleConstant.AI_SERVER_CONFIG, LocaleConstant.AI_BASE_URL - ) as String - RetrofitFactory.createRetrofit(httpConfig) - } - /** * 验证PublicKey */ @@ -233,20 +226,6 @@ } /** - * 设置当前阶段 - */ - suspend fun setCurrentPhase(phase: String): String { - val param = JsonObject() - param.addProperty("phase", phase) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - return aiApi.setCurrentPhase(requestBody) - } - - /** * 提交场景下的数据 */ suspend fun uploadPhaseData( @@ -270,30 +249,55 @@ } /** + * 设置当前阶段 + */ + 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) + } + + /** * 设置声光报警开关 */ - suspend fun changeAlarmState(state: String): String { + suspend fun changeAlarmState(httpConfig: String, deviceIp: String, state: String): String { val param = JsonObject() + param.addProperty("deviceIp", deviceIp) param.addProperty("state", state) val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.changeAlarmState(requestBody) + } - return aiApi.changeAlarmState(requestBody) + /** + * 查询声光报警状态 + */ + suspend fun getAlarmState(httpConfig: String, deviceIp: String): String { + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.getAlarmState(deviceIp) } /** * 设置区域 * */ - suspend fun setVideoRegion(position: ArrayList): String { + 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() ) - return aiApi.postRegion(requestBody) + + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.postRegion(requestBody) } /** @@ -307,7 +311,7 @@ Log.d(kTag, "executeDeviceCommand: httpConfig is null") return "" } - val service = RetrofitFactory.createRetrofit("http://${httpConfig}") + val service = RetrofitFactory.createRetrofit("http://$httpConfig") return service.executeDeviceCommand(action, "admin", "admin", speed.toString()) } } \ No newline at end of file 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 17e6688..07f2cf5 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 @@ -64,9 +64,8 @@ //子码流 const val SUB_RTSP_URL = "rtsp://192.168.10.137:554/h265/ch1/sub/av_stream" - const val DEVICE_CONTROLLER_URL = "https://gbs.ntvgbs.cn/login/" + const val DEVICE_CONTROL_URL = "https://gbs.ntvgbs.cn/login/" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val AI_SERVER_CONFIG = "aiServerConfig" const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/assets/DeviceParameter.json b/app/src/main/assets/DeviceParameter.json index 90efdc9..203bc53 100644 --- a/app/src/main/assets/DeviceParameter.json +++ b/app/src/main/assets/DeviceParameter.json @@ -1,24 +1,28 @@ [ { "deviceName": "AQS001", + "aiServerIp": "192.168.10.141", "wifi": "YTJ_010001_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.151" }, { "deviceName": "AQS002", + "aiServerIp": "192.168.10.139", "wifi": "YTJ010002_5G", "pwd": "zhsz20311hw", "cameraIp": "192.168.10.137" }, { "deviceName": "AQS003", + "aiServerIp": "192.168.10.143", "wifi": "YTJ010003_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.153" }, { "deviceName": "AQS004", + "aiServerIp": "192.168.10.144", "wifi": "YTJ010004_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.154" diff --git a/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java new file mode 100644 index 0000000..387de3a --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java @@ -0,0 +1,53 @@ +package com.casic.br.operationsite.model; + +public class AlarmStateModel { + + private int code; + private DataModel data; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String deviceIp; + private String state; + + public String getDeviceIp() { + return deviceIp; + } + + public void setDeviceIp(String deviceIp) { + this.deviceIp = deviceIp; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java index 0398681..7e8f38e 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java @@ -3,6 +3,7 @@ public class DeviceParameterModel { private String deviceName; + private String aiServerIp; private String wifi; private String pwd; private String cameraIp; @@ -15,6 +16,14 @@ this.deviceName = deviceName; } + public String getAiServerIp() { + return aiServerIp; + } + + public void setAiServerIp(String aiServerIp) { + this.aiServerIp = aiServerIp; + } + public String getWifi() { return wifi; } 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 ad2074b..7e04f19 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 @@ -154,6 +154,12 @@ suspend fun changeAlarmState(@Body requestBody: RequestBody): String /** + * 查询声光报警状态 + */ + @GET("/getAlarmState") + suspend fun getAlarmState(@Query("deviceIp") deviceIp: String): String + + /** * 提交算法区域 */ @POST("/setPosition") 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 f99d6d4..13efeec 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 @@ -30,13 +30,6 @@ RetrofitFactory.createRetrofit(httpConfig) } - private val aiApi by lazy { - val httpConfig = SaveKeyValues.getValue( - LocaleConstant.AI_SERVER_CONFIG, LocaleConstant.AI_BASE_URL - ) as String - RetrofitFactory.createRetrofit(httpConfig) - } - /** * 验证PublicKey */ @@ -233,20 +226,6 @@ } /** - * 设置当前阶段 - */ - suspend fun setCurrentPhase(phase: String): String { - val param = JsonObject() - param.addProperty("phase", phase) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - return aiApi.setCurrentPhase(requestBody) - } - - /** * 提交场景下的数据 */ suspend fun uploadPhaseData( @@ -270,30 +249,55 @@ } /** + * 设置当前阶段 + */ + 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) + } + + /** * 设置声光报警开关 */ - suspend fun changeAlarmState(state: String): String { + suspend fun changeAlarmState(httpConfig: String, deviceIp: String, state: String): String { val param = JsonObject() + param.addProperty("deviceIp", deviceIp) param.addProperty("state", state) val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.changeAlarmState(requestBody) + } - return aiApi.changeAlarmState(requestBody) + /** + * 查询声光报警状态 + */ + suspend fun getAlarmState(httpConfig: String, deviceIp: String): String { + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.getAlarmState(deviceIp) } /** * 设置区域 * */ - suspend fun setVideoRegion(position: ArrayList): String { + 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() ) - return aiApi.postRegion(requestBody) + + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.postRegion(requestBody) } /** @@ -307,7 +311,7 @@ Log.d(kTag, "executeDeviceCommand: httpConfig is null") return "" } - val service = RetrofitFactory.createRetrofit("http://${httpConfig}") + val service = RetrofitFactory.createRetrofit("http://$httpConfig") return service.executeDeviceCommand(action, "admin", "admin", speed.toString()) } } \ No newline at end of file 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 17e6688..07f2cf5 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 @@ -64,9 +64,8 @@ //子码流 const val SUB_RTSP_URL = "rtsp://192.168.10.137:554/h265/ch1/sub/av_stream" - const val DEVICE_CONTROLLER_URL = "https://gbs.ntvgbs.cn/login/" + const val DEVICE_CONTROL_URL = "https://gbs.ntvgbs.cn/login/" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val AI_SERVER_CONFIG = "aiServerConfig" const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" 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 b037b0a..78bfef2 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 @@ -21,6 +21,7 @@ import com.casic.br.operationsite.model.DeviceParameterModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.utils.VideoPlayerManager +import com.casic.br.operationsite.vm.AlarmViewModel import com.casic.br.operationsite.vm.DeviceViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -44,7 +45,10 @@ private val wifiManager by lazy { getSystemService()!! } private lateinit var deviceParams: List private lateinit var deviceViewModel: DeviceViewModel + private lateinit var alarmViewModel: AlarmViewModel private var speed = 5 + private var cameraIp = "" + private var httpConfig = "" @SuppressLint("ClickableViewAccessibility") override fun initEvent() { @@ -68,6 +72,9 @@ LocaleConstant.DEVICE_CONTROL_SERVER_CONFIG, parameter.cameraIp ) + httpConfig = parameter.aiServerIp + cameraIp = parameter.cameraIp + //设置rtsp相机地址 val rtsp = "rtsp://${parameter.cameraIp}:554/h265/ch1/sub/av_stream" VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, rtsp) @@ -107,6 +114,21 @@ }).build().show() } + binding.alarmSwitch.setOnCheckedChangeListener { _, isChecked -> + if (cameraIp == "") { + "请先选择设备".show(this) + return@setOnCheckedChangeListener + } + + val state = if (isChecked) { + "1" + } else { + "0" + } + + alarmViewModel.changeAlarmState(httpConfig, cameraIp, state) + } + binding.leftButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> executeCommand("Left") @@ -185,8 +207,15 @@ ) deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - deviceViewModel.commandResult.observe(this) { - Log.d(kTag, "initOnCreate: $it") + + alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] + alarmViewModel.changeStateResult.observe(this) { + alarmViewModel.getAlarmState(context, httpConfig, cameraIp) + } + alarmViewModel.stateResult.observe(this) { + if (it.code == 200) { + binding.alarmSwitch.isChecked = it.data.state == "1" + } } //动态设置rtspPlayerView宽高 @@ -229,6 +258,7 @@ super.onAvailable(network) if (connectivityManager?.bindProcessToNetwork(network) == true) { "设备连接成功".show(context) + alarmViewModel.getAlarmState(context, httpConfig, cameraIp) } } diff --git a/app/src/main/assets/DeviceParameter.json b/app/src/main/assets/DeviceParameter.json index 90efdc9..203bc53 100644 --- a/app/src/main/assets/DeviceParameter.json +++ b/app/src/main/assets/DeviceParameter.json @@ -1,24 +1,28 @@ [ { "deviceName": "AQS001", + "aiServerIp": "192.168.10.141", "wifi": "YTJ_010001_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.151" }, { "deviceName": "AQS002", + "aiServerIp": "192.168.10.139", "wifi": "YTJ010002_5G", "pwd": "zhsz20311hw", "cameraIp": "192.168.10.137" }, { "deviceName": "AQS003", + "aiServerIp": "192.168.10.143", "wifi": "YTJ010003_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.153" }, { "deviceName": "AQS004", + "aiServerIp": "192.168.10.144", "wifi": "YTJ010004_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.154" diff --git a/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java new file mode 100644 index 0000000..387de3a --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java @@ -0,0 +1,53 @@ +package com.casic.br.operationsite.model; + +public class AlarmStateModel { + + private int code; + private DataModel data; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String deviceIp; + private String state; + + public String getDeviceIp() { + return deviceIp; + } + + public void setDeviceIp(String deviceIp) { + this.deviceIp = deviceIp; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java index 0398681..7e8f38e 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java @@ -3,6 +3,7 @@ public class DeviceParameterModel { private String deviceName; + private String aiServerIp; private String wifi; private String pwd; private String cameraIp; @@ -15,6 +16,14 @@ this.deviceName = deviceName; } + public String getAiServerIp() { + return aiServerIp; + } + + public void setAiServerIp(String aiServerIp) { + this.aiServerIp = aiServerIp; + } + public String getWifi() { return wifi; } 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 ad2074b..7e04f19 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 @@ -154,6 +154,12 @@ suspend fun changeAlarmState(@Body requestBody: RequestBody): String /** + * 查询声光报警状态 + */ + @GET("/getAlarmState") + suspend fun getAlarmState(@Query("deviceIp") deviceIp: String): String + + /** * 提交算法区域 */ @POST("/setPosition") 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 f99d6d4..13efeec 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 @@ -30,13 +30,6 @@ RetrofitFactory.createRetrofit(httpConfig) } - private val aiApi by lazy { - val httpConfig = SaveKeyValues.getValue( - LocaleConstant.AI_SERVER_CONFIG, LocaleConstant.AI_BASE_URL - ) as String - RetrofitFactory.createRetrofit(httpConfig) - } - /** * 验证PublicKey */ @@ -233,20 +226,6 @@ } /** - * 设置当前阶段 - */ - suspend fun setCurrentPhase(phase: String): String { - val param = JsonObject() - param.addProperty("phase", phase) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - return aiApi.setCurrentPhase(requestBody) - } - - /** * 提交场景下的数据 */ suspend fun uploadPhaseData( @@ -270,30 +249,55 @@ } /** + * 设置当前阶段 + */ + 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) + } + + /** * 设置声光报警开关 */ - suspend fun changeAlarmState(state: String): String { + suspend fun changeAlarmState(httpConfig: String, deviceIp: String, state: String): String { val param = JsonObject() + param.addProperty("deviceIp", deviceIp) param.addProperty("state", state) val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.changeAlarmState(requestBody) + } - return aiApi.changeAlarmState(requestBody) + /** + * 查询声光报警状态 + */ + suspend fun getAlarmState(httpConfig: String, deviceIp: String): String { + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.getAlarmState(deviceIp) } /** * 设置区域 * */ - suspend fun setVideoRegion(position: ArrayList): String { + 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() ) - return aiApi.postRegion(requestBody) + + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.postRegion(requestBody) } /** @@ -307,7 +311,7 @@ Log.d(kTag, "executeDeviceCommand: httpConfig is null") return "" } - val service = RetrofitFactory.createRetrofit("http://${httpConfig}") + val service = RetrofitFactory.createRetrofit("http://$httpConfig") return service.executeDeviceCommand(action, "admin", "admin", speed.toString()) } } \ No newline at end of file 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 17e6688..07f2cf5 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 @@ -64,9 +64,8 @@ //子码流 const val SUB_RTSP_URL = "rtsp://192.168.10.137:554/h265/ch1/sub/av_stream" - const val DEVICE_CONTROLLER_URL = "https://gbs.ntvgbs.cn/login/" + const val DEVICE_CONTROL_URL = "https://gbs.ntvgbs.cn/login/" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val AI_SERVER_CONFIG = "aiServerConfig" const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" 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 b037b0a..78bfef2 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 @@ -21,6 +21,7 @@ import com.casic.br.operationsite.model.DeviceParameterModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.utils.VideoPlayerManager +import com.casic.br.operationsite.vm.AlarmViewModel import com.casic.br.operationsite.vm.DeviceViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -44,7 +45,10 @@ private val wifiManager by lazy { getSystemService()!! } private lateinit var deviceParams: List private lateinit var deviceViewModel: DeviceViewModel + private lateinit var alarmViewModel: AlarmViewModel private var speed = 5 + private var cameraIp = "" + private var httpConfig = "" @SuppressLint("ClickableViewAccessibility") override fun initEvent() { @@ -68,6 +72,9 @@ LocaleConstant.DEVICE_CONTROL_SERVER_CONFIG, parameter.cameraIp ) + httpConfig = parameter.aiServerIp + cameraIp = parameter.cameraIp + //设置rtsp相机地址 val rtsp = "rtsp://${parameter.cameraIp}:554/h265/ch1/sub/av_stream" VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, rtsp) @@ -107,6 +114,21 @@ }).build().show() } + binding.alarmSwitch.setOnCheckedChangeListener { _, isChecked -> + if (cameraIp == "") { + "请先选择设备".show(this) + return@setOnCheckedChangeListener + } + + val state = if (isChecked) { + "1" + } else { + "0" + } + + alarmViewModel.changeAlarmState(httpConfig, cameraIp, state) + } + binding.leftButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> executeCommand("Left") @@ -185,8 +207,15 @@ ) deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - deviceViewModel.commandResult.observe(this) { - Log.d(kTag, "initOnCreate: $it") + + alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] + alarmViewModel.changeStateResult.observe(this) { + alarmViewModel.getAlarmState(context, httpConfig, cameraIp) + } + alarmViewModel.stateResult.observe(this) { + if (it.code == 200) { + binding.alarmSwitch.isChecked = it.data.state == "1" + } } //动态设置rtspPlayerView宽高 @@ -229,6 +258,7 @@ super.onAvailable(network) if (connectivityManager?.bindProcessToNetwork(network) == true) { "设备连接成功".show(context) + alarmViewModel.getAlarmState(context, httpConfig, cameraIp) } } diff --git a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt index 59ebef1..3026da3 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt @@ -41,7 +41,7 @@ .interceptUnkownUrl() .createAgentWeb() .ready() - .go(LocaleConstant.DEVICE_CONTROLLER_URL) + .go(LocaleConstant.DEVICE_CONTROL_URL) val webView = agentWeb.webCreator.webView webView.settings.useWideViewPort = true webView.settings.builtInZoomControls = true diff --git a/app/src/main/assets/DeviceParameter.json b/app/src/main/assets/DeviceParameter.json index 90efdc9..203bc53 100644 --- a/app/src/main/assets/DeviceParameter.json +++ b/app/src/main/assets/DeviceParameter.json @@ -1,24 +1,28 @@ [ { "deviceName": "AQS001", + "aiServerIp": "192.168.10.141", "wifi": "YTJ_010001_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.151" }, { "deviceName": "AQS002", + "aiServerIp": "192.168.10.139", "wifi": "YTJ010002_5G", "pwd": "zhsz20311hw", "cameraIp": "192.168.10.137" }, { "deviceName": "AQS003", + "aiServerIp": "192.168.10.143", "wifi": "YTJ010003_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.153" }, { "deviceName": "AQS004", + "aiServerIp": "192.168.10.144", "wifi": "YTJ010004_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.154" diff --git a/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java new file mode 100644 index 0000000..387de3a --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java @@ -0,0 +1,53 @@ +package com.casic.br.operationsite.model; + +public class AlarmStateModel { + + private int code; + private DataModel data; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String deviceIp; + private String state; + + public String getDeviceIp() { + return deviceIp; + } + + public void setDeviceIp(String deviceIp) { + this.deviceIp = deviceIp; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java index 0398681..7e8f38e 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java @@ -3,6 +3,7 @@ public class DeviceParameterModel { private String deviceName; + private String aiServerIp; private String wifi; private String pwd; private String cameraIp; @@ -15,6 +16,14 @@ this.deviceName = deviceName; } + public String getAiServerIp() { + return aiServerIp; + } + + public void setAiServerIp(String aiServerIp) { + this.aiServerIp = aiServerIp; + } + public String getWifi() { return wifi; } 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 ad2074b..7e04f19 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 @@ -154,6 +154,12 @@ suspend fun changeAlarmState(@Body requestBody: RequestBody): String /** + * 查询声光报警状态 + */ + @GET("/getAlarmState") + suspend fun getAlarmState(@Query("deviceIp") deviceIp: String): String + + /** * 提交算法区域 */ @POST("/setPosition") 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 f99d6d4..13efeec 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 @@ -30,13 +30,6 @@ RetrofitFactory.createRetrofit(httpConfig) } - private val aiApi by lazy { - val httpConfig = SaveKeyValues.getValue( - LocaleConstant.AI_SERVER_CONFIG, LocaleConstant.AI_BASE_URL - ) as String - RetrofitFactory.createRetrofit(httpConfig) - } - /** * 验证PublicKey */ @@ -233,20 +226,6 @@ } /** - * 设置当前阶段 - */ - suspend fun setCurrentPhase(phase: String): String { - val param = JsonObject() - param.addProperty("phase", phase) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - return aiApi.setCurrentPhase(requestBody) - } - - /** * 提交场景下的数据 */ suspend fun uploadPhaseData( @@ -270,30 +249,55 @@ } /** + * 设置当前阶段 + */ + 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) + } + + /** * 设置声光报警开关 */ - suspend fun changeAlarmState(state: String): String { + suspend fun changeAlarmState(httpConfig: String, deviceIp: String, state: String): String { val param = JsonObject() + param.addProperty("deviceIp", deviceIp) param.addProperty("state", state) val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.changeAlarmState(requestBody) + } - return aiApi.changeAlarmState(requestBody) + /** + * 查询声光报警状态 + */ + suspend fun getAlarmState(httpConfig: String, deviceIp: String): String { + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.getAlarmState(deviceIp) } /** * 设置区域 * */ - suspend fun setVideoRegion(position: ArrayList): String { + 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() ) - return aiApi.postRegion(requestBody) + + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.postRegion(requestBody) } /** @@ -307,7 +311,7 @@ Log.d(kTag, "executeDeviceCommand: httpConfig is null") return "" } - val service = RetrofitFactory.createRetrofit("http://${httpConfig}") + val service = RetrofitFactory.createRetrofit("http://$httpConfig") return service.executeDeviceCommand(action, "admin", "admin", speed.toString()) } } \ No newline at end of file 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 17e6688..07f2cf5 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 @@ -64,9 +64,8 @@ //子码流 const val SUB_RTSP_URL = "rtsp://192.168.10.137:554/h265/ch1/sub/av_stream" - const val DEVICE_CONTROLLER_URL = "https://gbs.ntvgbs.cn/login/" + const val DEVICE_CONTROL_URL = "https://gbs.ntvgbs.cn/login/" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val AI_SERVER_CONFIG = "aiServerConfig" const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" 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 b037b0a..78bfef2 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 @@ -21,6 +21,7 @@ import com.casic.br.operationsite.model.DeviceParameterModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.utils.VideoPlayerManager +import com.casic.br.operationsite.vm.AlarmViewModel import com.casic.br.operationsite.vm.DeviceViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -44,7 +45,10 @@ private val wifiManager by lazy { getSystemService()!! } private lateinit var deviceParams: List private lateinit var deviceViewModel: DeviceViewModel + private lateinit var alarmViewModel: AlarmViewModel private var speed = 5 + private var cameraIp = "" + private var httpConfig = "" @SuppressLint("ClickableViewAccessibility") override fun initEvent() { @@ -68,6 +72,9 @@ LocaleConstant.DEVICE_CONTROL_SERVER_CONFIG, parameter.cameraIp ) + httpConfig = parameter.aiServerIp + cameraIp = parameter.cameraIp + //设置rtsp相机地址 val rtsp = "rtsp://${parameter.cameraIp}:554/h265/ch1/sub/av_stream" VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, rtsp) @@ -107,6 +114,21 @@ }).build().show() } + binding.alarmSwitch.setOnCheckedChangeListener { _, isChecked -> + if (cameraIp == "") { + "请先选择设备".show(this) + return@setOnCheckedChangeListener + } + + val state = if (isChecked) { + "1" + } else { + "0" + } + + alarmViewModel.changeAlarmState(httpConfig, cameraIp, state) + } + binding.leftButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> executeCommand("Left") @@ -185,8 +207,15 @@ ) deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - deviceViewModel.commandResult.observe(this) { - Log.d(kTag, "initOnCreate: $it") + + alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] + alarmViewModel.changeStateResult.observe(this) { + alarmViewModel.getAlarmState(context, httpConfig, cameraIp) + } + alarmViewModel.stateResult.observe(this) { + if (it.code == 200) { + binding.alarmSwitch.isChecked = it.data.state == "1" + } } //动态设置rtspPlayerView宽高 @@ -229,6 +258,7 @@ super.onAvailable(network) if (connectivityManager?.bindProcessToNetwork(network) == true) { "设备连接成功".show(context) + alarmViewModel.getAlarmState(context, httpConfig, cameraIp) } } diff --git a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt index 59ebef1..3026da3 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt @@ -41,7 +41,7 @@ .interceptUnkownUrl() .createAgentWeb() .ready() - .go(LocaleConstant.DEVICE_CONTROLLER_URL) + .go(LocaleConstant.DEVICE_CONTROL_URL) val webView = agentWeb.webCreator.webView webView.settings.useWideViewPort = true webView.settings.builtInZoomControls = true diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt index e6812f7..ae0810a 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt @@ -91,7 +91,9 @@ return@setOnClickListener } SocketManager.get.send(LocaleConstant.START_ENV_COMMAND) - constructionCheckViewModel.setCurrentPhase(this, "before_operation_environment") + constructionCheckViewModel.setCurrentPhase( + this, LocaleConstant.AI_BASE_URL, "before_operation_environment" + ) } binding.blowerImageView.setOnClickListener { @@ -159,7 +161,10 @@ params.width = videoWidth params.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = params - VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, LocaleConstant.SUB_RTSP_URL) + VideoPlayerManager.setGSYVideoPlayerOptions( + binding.rtspPlayerView, + LocaleConstant.SUB_RTSP_URL + ) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.workerResult.observe(this) { diff --git a/app/src/main/assets/DeviceParameter.json b/app/src/main/assets/DeviceParameter.json index 90efdc9..203bc53 100644 --- a/app/src/main/assets/DeviceParameter.json +++ b/app/src/main/assets/DeviceParameter.json @@ -1,24 +1,28 @@ [ { "deviceName": "AQS001", + "aiServerIp": "192.168.10.141", "wifi": "YTJ_010001_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.151" }, { "deviceName": "AQS002", + "aiServerIp": "192.168.10.139", "wifi": "YTJ010002_5G", "pwd": "zhsz20311hw", "cameraIp": "192.168.10.137" }, { "deviceName": "AQS003", + "aiServerIp": "192.168.10.143", "wifi": "YTJ010003_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.153" }, { "deviceName": "AQS004", + "aiServerIp": "192.168.10.144", "wifi": "YTJ010004_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.154" diff --git a/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java new file mode 100644 index 0000000..387de3a --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java @@ -0,0 +1,53 @@ +package com.casic.br.operationsite.model; + +public class AlarmStateModel { + + private int code; + private DataModel data; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String deviceIp; + private String state; + + public String getDeviceIp() { + return deviceIp; + } + + public void setDeviceIp(String deviceIp) { + this.deviceIp = deviceIp; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java index 0398681..7e8f38e 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java @@ -3,6 +3,7 @@ public class DeviceParameterModel { private String deviceName; + private String aiServerIp; private String wifi; private String pwd; private String cameraIp; @@ -15,6 +16,14 @@ this.deviceName = deviceName; } + public String getAiServerIp() { + return aiServerIp; + } + + public void setAiServerIp(String aiServerIp) { + this.aiServerIp = aiServerIp; + } + public String getWifi() { return wifi; } 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 ad2074b..7e04f19 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 @@ -154,6 +154,12 @@ suspend fun changeAlarmState(@Body requestBody: RequestBody): String /** + * 查询声光报警状态 + */ + @GET("/getAlarmState") + suspend fun getAlarmState(@Query("deviceIp") deviceIp: String): String + + /** * 提交算法区域 */ @POST("/setPosition") 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 f99d6d4..13efeec 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 @@ -30,13 +30,6 @@ RetrofitFactory.createRetrofit(httpConfig) } - private val aiApi by lazy { - val httpConfig = SaveKeyValues.getValue( - LocaleConstant.AI_SERVER_CONFIG, LocaleConstant.AI_BASE_URL - ) as String - RetrofitFactory.createRetrofit(httpConfig) - } - /** * 验证PublicKey */ @@ -233,20 +226,6 @@ } /** - * 设置当前阶段 - */ - suspend fun setCurrentPhase(phase: String): String { - val param = JsonObject() - param.addProperty("phase", phase) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - return aiApi.setCurrentPhase(requestBody) - } - - /** * 提交场景下的数据 */ suspend fun uploadPhaseData( @@ -270,30 +249,55 @@ } /** + * 设置当前阶段 + */ + 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) + } + + /** * 设置声光报警开关 */ - suspend fun changeAlarmState(state: String): String { + suspend fun changeAlarmState(httpConfig: String, deviceIp: String, state: String): String { val param = JsonObject() + param.addProperty("deviceIp", deviceIp) param.addProperty("state", state) val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.changeAlarmState(requestBody) + } - return aiApi.changeAlarmState(requestBody) + /** + * 查询声光报警状态 + */ + suspend fun getAlarmState(httpConfig: String, deviceIp: String): String { + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.getAlarmState(deviceIp) } /** * 设置区域 * */ - suspend fun setVideoRegion(position: ArrayList): String { + 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() ) - return aiApi.postRegion(requestBody) + + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.postRegion(requestBody) } /** @@ -307,7 +311,7 @@ Log.d(kTag, "executeDeviceCommand: httpConfig is null") return "" } - val service = RetrofitFactory.createRetrofit("http://${httpConfig}") + val service = RetrofitFactory.createRetrofit("http://$httpConfig") return service.executeDeviceCommand(action, "admin", "admin", speed.toString()) } } \ No newline at end of file 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 17e6688..07f2cf5 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 @@ -64,9 +64,8 @@ //子码流 const val SUB_RTSP_URL = "rtsp://192.168.10.137:554/h265/ch1/sub/av_stream" - const val DEVICE_CONTROLLER_URL = "https://gbs.ntvgbs.cn/login/" + const val DEVICE_CONTROL_URL = "https://gbs.ntvgbs.cn/login/" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val AI_SERVER_CONFIG = "aiServerConfig" const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" 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 b037b0a..78bfef2 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 @@ -21,6 +21,7 @@ import com.casic.br.operationsite.model.DeviceParameterModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.utils.VideoPlayerManager +import com.casic.br.operationsite.vm.AlarmViewModel import com.casic.br.operationsite.vm.DeviceViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -44,7 +45,10 @@ private val wifiManager by lazy { getSystemService()!! } private lateinit var deviceParams: List private lateinit var deviceViewModel: DeviceViewModel + private lateinit var alarmViewModel: AlarmViewModel private var speed = 5 + private var cameraIp = "" + private var httpConfig = "" @SuppressLint("ClickableViewAccessibility") override fun initEvent() { @@ -68,6 +72,9 @@ LocaleConstant.DEVICE_CONTROL_SERVER_CONFIG, parameter.cameraIp ) + httpConfig = parameter.aiServerIp + cameraIp = parameter.cameraIp + //设置rtsp相机地址 val rtsp = "rtsp://${parameter.cameraIp}:554/h265/ch1/sub/av_stream" VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, rtsp) @@ -107,6 +114,21 @@ }).build().show() } + binding.alarmSwitch.setOnCheckedChangeListener { _, isChecked -> + if (cameraIp == "") { + "请先选择设备".show(this) + return@setOnCheckedChangeListener + } + + val state = if (isChecked) { + "1" + } else { + "0" + } + + alarmViewModel.changeAlarmState(httpConfig, cameraIp, state) + } + binding.leftButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> executeCommand("Left") @@ -185,8 +207,15 @@ ) deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - deviceViewModel.commandResult.observe(this) { - Log.d(kTag, "initOnCreate: $it") + + alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] + alarmViewModel.changeStateResult.observe(this) { + alarmViewModel.getAlarmState(context, httpConfig, cameraIp) + } + alarmViewModel.stateResult.observe(this) { + if (it.code == 200) { + binding.alarmSwitch.isChecked = it.data.state == "1" + } } //动态设置rtspPlayerView宽高 @@ -229,6 +258,7 @@ super.onAvailable(network) if (connectivityManager?.bindProcessToNetwork(network) == true) { "设备连接成功".show(context) + alarmViewModel.getAlarmState(context, httpConfig, cameraIp) } } diff --git a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt index 59ebef1..3026da3 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt @@ -41,7 +41,7 @@ .interceptUnkownUrl() .createAgentWeb() .ready() - .go(LocaleConstant.DEVICE_CONTROLLER_URL) + .go(LocaleConstant.DEVICE_CONTROL_URL) val webView = agentWeb.webCreator.webView webView.settings.useWideViewPort = true webView.settings.builtInZoomControls = true diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt index e6812f7..ae0810a 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt @@ -91,7 +91,9 @@ return@setOnClickListener } SocketManager.get.send(LocaleConstant.START_ENV_COMMAND) - constructionCheckViewModel.setCurrentPhase(this, "before_operation_environment") + constructionCheckViewModel.setCurrentPhase( + this, LocaleConstant.AI_BASE_URL, "before_operation_environment" + ) } binding.blowerImageView.setOnClickListener { @@ -159,7 +161,10 @@ params.width = videoWidth params.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = params - VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, LocaleConstant.SUB_RTSP_URL) + VideoPlayerManager.setGSYVideoPlayerOptions( + binding.rtspPlayerView, + LocaleConstant.SUB_RTSP_URL + ) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.workerResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt index 2b7f2bb..0c2bfd8 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt @@ -77,7 +77,7 @@ } else { "0" } - alarmViewModel.changeAlarmState("", state) + alarmViewModel.changeAlarmState(LocaleConstant.AI_BASE_URL, "", state) } binding.restartVideoButton.setOnClickListener { @@ -91,11 +91,13 @@ binding.setVideoRegionButton.setOnClickListener { val region = binding.regionView.getConfirmedPoints() - constructionCheckViewModel.setVideoRegion(region) + constructionCheckViewModel.setVideoRegion(LocaleConstant.AI_BASE_URL, region) } binding.startVideoCheckButton.setOnClickListener { - constructionCheckViewModel.setCurrentPhase(this, "in_operation") + constructionCheckViewModel.setCurrentPhase( + this, LocaleConstant.AI_BASE_URL, "in_operation" + ) } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { @@ -144,7 +146,10 @@ regionViewParams.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = regionViewParams - VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, LocaleConstant.MAIN_RTSP_URL) + VideoPlayerManager.setGSYVideoPlayerOptions( + binding.rtspPlayerView, + LocaleConstant.MAIN_RTSP_URL + ) binding.rtspPlayerView.startPlayLogic() alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] @@ -322,7 +327,9 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { isEndTask = true - constructionCheckViewModel.setCurrentPhase(context, "stop") + constructionCheckViewModel.setCurrentPhase( + context, LocaleConstant.AI_BASE_URL, "stop" + ) } override fun onCancelClick() { diff --git a/app/src/main/assets/DeviceParameter.json b/app/src/main/assets/DeviceParameter.json index 90efdc9..203bc53 100644 --- a/app/src/main/assets/DeviceParameter.json +++ b/app/src/main/assets/DeviceParameter.json @@ -1,24 +1,28 @@ [ { "deviceName": "AQS001", + "aiServerIp": "192.168.10.141", "wifi": "YTJ_010001_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.151" }, { "deviceName": "AQS002", + "aiServerIp": "192.168.10.139", "wifi": "YTJ010002_5G", "pwd": "zhsz20311hw", "cameraIp": "192.168.10.137" }, { "deviceName": "AQS003", + "aiServerIp": "192.168.10.143", "wifi": "YTJ010003_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.153" }, { "deviceName": "AQS004", + "aiServerIp": "192.168.10.144", "wifi": "YTJ010004_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.154" diff --git a/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java new file mode 100644 index 0000000..387de3a --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java @@ -0,0 +1,53 @@ +package com.casic.br.operationsite.model; + +public class AlarmStateModel { + + private int code; + private DataModel data; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String deviceIp; + private String state; + + public String getDeviceIp() { + return deviceIp; + } + + public void setDeviceIp(String deviceIp) { + this.deviceIp = deviceIp; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java index 0398681..7e8f38e 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java @@ -3,6 +3,7 @@ public class DeviceParameterModel { private String deviceName; + private String aiServerIp; private String wifi; private String pwd; private String cameraIp; @@ -15,6 +16,14 @@ this.deviceName = deviceName; } + public String getAiServerIp() { + return aiServerIp; + } + + public void setAiServerIp(String aiServerIp) { + this.aiServerIp = aiServerIp; + } + public String getWifi() { return wifi; } 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 ad2074b..7e04f19 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 @@ -154,6 +154,12 @@ suspend fun changeAlarmState(@Body requestBody: RequestBody): String /** + * 查询声光报警状态 + */ + @GET("/getAlarmState") + suspend fun getAlarmState(@Query("deviceIp") deviceIp: String): String + + /** * 提交算法区域 */ @POST("/setPosition") 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 f99d6d4..13efeec 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 @@ -30,13 +30,6 @@ RetrofitFactory.createRetrofit(httpConfig) } - private val aiApi by lazy { - val httpConfig = SaveKeyValues.getValue( - LocaleConstant.AI_SERVER_CONFIG, LocaleConstant.AI_BASE_URL - ) as String - RetrofitFactory.createRetrofit(httpConfig) - } - /** * 验证PublicKey */ @@ -233,20 +226,6 @@ } /** - * 设置当前阶段 - */ - suspend fun setCurrentPhase(phase: String): String { - val param = JsonObject() - param.addProperty("phase", phase) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - return aiApi.setCurrentPhase(requestBody) - } - - /** * 提交场景下的数据 */ suspend fun uploadPhaseData( @@ -270,30 +249,55 @@ } /** + * 设置当前阶段 + */ + 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) + } + + /** * 设置声光报警开关 */ - suspend fun changeAlarmState(state: String): String { + suspend fun changeAlarmState(httpConfig: String, deviceIp: String, state: String): String { val param = JsonObject() + param.addProperty("deviceIp", deviceIp) param.addProperty("state", state) val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.changeAlarmState(requestBody) + } - return aiApi.changeAlarmState(requestBody) + /** + * 查询声光报警状态 + */ + suspend fun getAlarmState(httpConfig: String, deviceIp: String): String { + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.getAlarmState(deviceIp) } /** * 设置区域 * */ - suspend fun setVideoRegion(position: ArrayList): String { + 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() ) - return aiApi.postRegion(requestBody) + + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.postRegion(requestBody) } /** @@ -307,7 +311,7 @@ Log.d(kTag, "executeDeviceCommand: httpConfig is null") return "" } - val service = RetrofitFactory.createRetrofit("http://${httpConfig}") + val service = RetrofitFactory.createRetrofit("http://$httpConfig") return service.executeDeviceCommand(action, "admin", "admin", speed.toString()) } } \ No newline at end of file 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 17e6688..07f2cf5 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 @@ -64,9 +64,8 @@ //子码流 const val SUB_RTSP_URL = "rtsp://192.168.10.137:554/h265/ch1/sub/av_stream" - const val DEVICE_CONTROLLER_URL = "https://gbs.ntvgbs.cn/login/" + const val DEVICE_CONTROL_URL = "https://gbs.ntvgbs.cn/login/" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val AI_SERVER_CONFIG = "aiServerConfig" const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" 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 b037b0a..78bfef2 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 @@ -21,6 +21,7 @@ import com.casic.br.operationsite.model.DeviceParameterModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.utils.VideoPlayerManager +import com.casic.br.operationsite.vm.AlarmViewModel import com.casic.br.operationsite.vm.DeviceViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -44,7 +45,10 @@ private val wifiManager by lazy { getSystemService()!! } private lateinit var deviceParams: List private lateinit var deviceViewModel: DeviceViewModel + private lateinit var alarmViewModel: AlarmViewModel private var speed = 5 + private var cameraIp = "" + private var httpConfig = "" @SuppressLint("ClickableViewAccessibility") override fun initEvent() { @@ -68,6 +72,9 @@ LocaleConstant.DEVICE_CONTROL_SERVER_CONFIG, parameter.cameraIp ) + httpConfig = parameter.aiServerIp + cameraIp = parameter.cameraIp + //设置rtsp相机地址 val rtsp = "rtsp://${parameter.cameraIp}:554/h265/ch1/sub/av_stream" VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, rtsp) @@ -107,6 +114,21 @@ }).build().show() } + binding.alarmSwitch.setOnCheckedChangeListener { _, isChecked -> + if (cameraIp == "") { + "请先选择设备".show(this) + return@setOnCheckedChangeListener + } + + val state = if (isChecked) { + "1" + } else { + "0" + } + + alarmViewModel.changeAlarmState(httpConfig, cameraIp, state) + } + binding.leftButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> executeCommand("Left") @@ -185,8 +207,15 @@ ) deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - deviceViewModel.commandResult.observe(this) { - Log.d(kTag, "initOnCreate: $it") + + alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] + alarmViewModel.changeStateResult.observe(this) { + alarmViewModel.getAlarmState(context, httpConfig, cameraIp) + } + alarmViewModel.stateResult.observe(this) { + if (it.code == 200) { + binding.alarmSwitch.isChecked = it.data.state == "1" + } } //动态设置rtspPlayerView宽高 @@ -229,6 +258,7 @@ super.onAvailable(network) if (connectivityManager?.bindProcessToNetwork(network) == true) { "设备连接成功".show(context) + alarmViewModel.getAlarmState(context, httpConfig, cameraIp) } } diff --git a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt index 59ebef1..3026da3 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt @@ -41,7 +41,7 @@ .interceptUnkownUrl() .createAgentWeb() .ready() - .go(LocaleConstant.DEVICE_CONTROLLER_URL) + .go(LocaleConstant.DEVICE_CONTROL_URL) val webView = agentWeb.webCreator.webView webView.settings.useWideViewPort = true webView.settings.builtInZoomControls = true diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt index e6812f7..ae0810a 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt @@ -91,7 +91,9 @@ return@setOnClickListener } SocketManager.get.send(LocaleConstant.START_ENV_COMMAND) - constructionCheckViewModel.setCurrentPhase(this, "before_operation_environment") + constructionCheckViewModel.setCurrentPhase( + this, LocaleConstant.AI_BASE_URL, "before_operation_environment" + ) } binding.blowerImageView.setOnClickListener { @@ -159,7 +161,10 @@ params.width = videoWidth params.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = params - VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, LocaleConstant.SUB_RTSP_URL) + VideoPlayerManager.setGSYVideoPlayerOptions( + binding.rtspPlayerView, + LocaleConstant.SUB_RTSP_URL + ) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.workerResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt index 2b7f2bb..0c2bfd8 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt @@ -77,7 +77,7 @@ } else { "0" } - alarmViewModel.changeAlarmState("", state) + alarmViewModel.changeAlarmState(LocaleConstant.AI_BASE_URL, "", state) } binding.restartVideoButton.setOnClickListener { @@ -91,11 +91,13 @@ binding.setVideoRegionButton.setOnClickListener { val region = binding.regionView.getConfirmedPoints() - constructionCheckViewModel.setVideoRegion(region) + constructionCheckViewModel.setVideoRegion(LocaleConstant.AI_BASE_URL, region) } binding.startVideoCheckButton.setOnClickListener { - constructionCheckViewModel.setCurrentPhase(this, "in_operation") + constructionCheckViewModel.setCurrentPhase( + this, LocaleConstant.AI_BASE_URL, "in_operation" + ) } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { @@ -144,7 +146,10 @@ regionViewParams.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = regionViewParams - VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, LocaleConstant.MAIN_RTSP_URL) + VideoPlayerManager.setGSYVideoPlayerOptions( + binding.rtspPlayerView, + LocaleConstant.MAIN_RTSP_URL + ) binding.rtspPlayerView.startPlayLogic() alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] @@ -322,7 +327,9 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { isEndTask = true - constructionCheckViewModel.setCurrentPhase(context, "stop") + constructionCheckViewModel.setCurrentPhase( + context, LocaleConstant.AI_BASE_URL, "stop" + ) } override fun onCancelClick() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt index 0aad7ad..a1cc474 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt @@ -73,7 +73,9 @@ lifecycleScope.launch(Dispatchers.IO) { SocketManager.get.send(LocaleConstant.START_SUPPLIES_COMMAND) delay(2000) - constructionCheckViewModel.setCurrentPhase(context, "before_operation_protection") + constructionCheckViewModel.setCurrentPhase( + context, LocaleConstant.AI_BASE_URL, "before_operation_protection" + ) withContext(Dispatchers.Main) { binding.stepView.text = "稍后开始检查第一项:四合一,请准备" } @@ -128,7 +130,9 @@ ActivityResultContracts.StartActivityForResult() ) { Log.d(kTag, "startVideoLauncher: ") - constructionCheckViewModel.setCurrentPhase(this, "before_operation_protection") + constructionCheckViewModel.setCurrentPhase( + this, LocaleConstant.AI_BASE_URL, "before_operation_protection" + ) binding.stepView.text = "稍后开始检查第一项:四合一,请准备" } @@ -189,7 +193,10 @@ params.width = videoWidth params.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = params - VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, LocaleConstant.SUB_RTSP_URL) + VideoPlayerManager.setGSYVideoPlayerOptions( + binding.rtspPlayerView, + LocaleConstant.SUB_RTSP_URL + ) timer = Timer() timer.schedule(object : TimerTask() { diff --git a/app/src/main/assets/DeviceParameter.json b/app/src/main/assets/DeviceParameter.json index 90efdc9..203bc53 100644 --- a/app/src/main/assets/DeviceParameter.json +++ b/app/src/main/assets/DeviceParameter.json @@ -1,24 +1,28 @@ [ { "deviceName": "AQS001", + "aiServerIp": "192.168.10.141", "wifi": "YTJ_010001_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.151" }, { "deviceName": "AQS002", + "aiServerIp": "192.168.10.139", "wifi": "YTJ010002_5G", "pwd": "zhsz20311hw", "cameraIp": "192.168.10.137" }, { "deviceName": "AQS003", + "aiServerIp": "192.168.10.143", "wifi": "YTJ010003_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.153" }, { "deviceName": "AQS004", + "aiServerIp": "192.168.10.144", "wifi": "YTJ010004_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.154" diff --git a/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java new file mode 100644 index 0000000..387de3a --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java @@ -0,0 +1,53 @@ +package com.casic.br.operationsite.model; + +public class AlarmStateModel { + + private int code; + private DataModel data; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String deviceIp; + private String state; + + public String getDeviceIp() { + return deviceIp; + } + + public void setDeviceIp(String deviceIp) { + this.deviceIp = deviceIp; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java index 0398681..7e8f38e 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java @@ -3,6 +3,7 @@ public class DeviceParameterModel { private String deviceName; + private String aiServerIp; private String wifi; private String pwd; private String cameraIp; @@ -15,6 +16,14 @@ this.deviceName = deviceName; } + public String getAiServerIp() { + return aiServerIp; + } + + public void setAiServerIp(String aiServerIp) { + this.aiServerIp = aiServerIp; + } + public String getWifi() { return wifi; } 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 ad2074b..7e04f19 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 @@ -154,6 +154,12 @@ suspend fun changeAlarmState(@Body requestBody: RequestBody): String /** + * 查询声光报警状态 + */ + @GET("/getAlarmState") + suspend fun getAlarmState(@Query("deviceIp") deviceIp: String): String + + /** * 提交算法区域 */ @POST("/setPosition") 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 f99d6d4..13efeec 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 @@ -30,13 +30,6 @@ RetrofitFactory.createRetrofit(httpConfig) } - private val aiApi by lazy { - val httpConfig = SaveKeyValues.getValue( - LocaleConstant.AI_SERVER_CONFIG, LocaleConstant.AI_BASE_URL - ) as String - RetrofitFactory.createRetrofit(httpConfig) - } - /** * 验证PublicKey */ @@ -233,20 +226,6 @@ } /** - * 设置当前阶段 - */ - suspend fun setCurrentPhase(phase: String): String { - val param = JsonObject() - param.addProperty("phase", phase) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - return aiApi.setCurrentPhase(requestBody) - } - - /** * 提交场景下的数据 */ suspend fun uploadPhaseData( @@ -270,30 +249,55 @@ } /** + * 设置当前阶段 + */ + 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) + } + + /** * 设置声光报警开关 */ - suspend fun changeAlarmState(state: String): String { + suspend fun changeAlarmState(httpConfig: String, deviceIp: String, state: String): String { val param = JsonObject() + param.addProperty("deviceIp", deviceIp) param.addProperty("state", state) val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.changeAlarmState(requestBody) + } - return aiApi.changeAlarmState(requestBody) + /** + * 查询声光报警状态 + */ + suspend fun getAlarmState(httpConfig: String, deviceIp: String): String { + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.getAlarmState(deviceIp) } /** * 设置区域 * */ - suspend fun setVideoRegion(position: ArrayList): String { + 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() ) - return aiApi.postRegion(requestBody) + + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.postRegion(requestBody) } /** @@ -307,7 +311,7 @@ Log.d(kTag, "executeDeviceCommand: httpConfig is null") return "" } - val service = RetrofitFactory.createRetrofit("http://${httpConfig}") + val service = RetrofitFactory.createRetrofit("http://$httpConfig") return service.executeDeviceCommand(action, "admin", "admin", speed.toString()) } } \ No newline at end of file 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 17e6688..07f2cf5 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 @@ -64,9 +64,8 @@ //子码流 const val SUB_RTSP_URL = "rtsp://192.168.10.137:554/h265/ch1/sub/av_stream" - const val DEVICE_CONTROLLER_URL = "https://gbs.ntvgbs.cn/login/" + const val DEVICE_CONTROL_URL = "https://gbs.ntvgbs.cn/login/" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val AI_SERVER_CONFIG = "aiServerConfig" const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" 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 b037b0a..78bfef2 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 @@ -21,6 +21,7 @@ import com.casic.br.operationsite.model.DeviceParameterModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.utils.VideoPlayerManager +import com.casic.br.operationsite.vm.AlarmViewModel import com.casic.br.operationsite.vm.DeviceViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -44,7 +45,10 @@ private val wifiManager by lazy { getSystemService()!! } private lateinit var deviceParams: List private lateinit var deviceViewModel: DeviceViewModel + private lateinit var alarmViewModel: AlarmViewModel private var speed = 5 + private var cameraIp = "" + private var httpConfig = "" @SuppressLint("ClickableViewAccessibility") override fun initEvent() { @@ -68,6 +72,9 @@ LocaleConstant.DEVICE_CONTROL_SERVER_CONFIG, parameter.cameraIp ) + httpConfig = parameter.aiServerIp + cameraIp = parameter.cameraIp + //设置rtsp相机地址 val rtsp = "rtsp://${parameter.cameraIp}:554/h265/ch1/sub/av_stream" VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, rtsp) @@ -107,6 +114,21 @@ }).build().show() } + binding.alarmSwitch.setOnCheckedChangeListener { _, isChecked -> + if (cameraIp == "") { + "请先选择设备".show(this) + return@setOnCheckedChangeListener + } + + val state = if (isChecked) { + "1" + } else { + "0" + } + + alarmViewModel.changeAlarmState(httpConfig, cameraIp, state) + } + binding.leftButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> executeCommand("Left") @@ -185,8 +207,15 @@ ) deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - deviceViewModel.commandResult.observe(this) { - Log.d(kTag, "initOnCreate: $it") + + alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] + alarmViewModel.changeStateResult.observe(this) { + alarmViewModel.getAlarmState(context, httpConfig, cameraIp) + } + alarmViewModel.stateResult.observe(this) { + if (it.code == 200) { + binding.alarmSwitch.isChecked = it.data.state == "1" + } } //动态设置rtspPlayerView宽高 @@ -229,6 +258,7 @@ super.onAvailable(network) if (connectivityManager?.bindProcessToNetwork(network) == true) { "设备连接成功".show(context) + alarmViewModel.getAlarmState(context, httpConfig, cameraIp) } } diff --git a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt index 59ebef1..3026da3 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt @@ -41,7 +41,7 @@ .interceptUnkownUrl() .createAgentWeb() .ready() - .go(LocaleConstant.DEVICE_CONTROLLER_URL) + .go(LocaleConstant.DEVICE_CONTROL_URL) val webView = agentWeb.webCreator.webView webView.settings.useWideViewPort = true webView.settings.builtInZoomControls = true diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt index e6812f7..ae0810a 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt @@ -91,7 +91,9 @@ return@setOnClickListener } SocketManager.get.send(LocaleConstant.START_ENV_COMMAND) - constructionCheckViewModel.setCurrentPhase(this, "before_operation_environment") + constructionCheckViewModel.setCurrentPhase( + this, LocaleConstant.AI_BASE_URL, "before_operation_environment" + ) } binding.blowerImageView.setOnClickListener { @@ -159,7 +161,10 @@ params.width = videoWidth params.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = params - VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, LocaleConstant.SUB_RTSP_URL) + VideoPlayerManager.setGSYVideoPlayerOptions( + binding.rtspPlayerView, + LocaleConstant.SUB_RTSP_URL + ) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.workerResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt index 2b7f2bb..0c2bfd8 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt @@ -77,7 +77,7 @@ } else { "0" } - alarmViewModel.changeAlarmState("", state) + alarmViewModel.changeAlarmState(LocaleConstant.AI_BASE_URL, "", state) } binding.restartVideoButton.setOnClickListener { @@ -91,11 +91,13 @@ binding.setVideoRegionButton.setOnClickListener { val region = binding.regionView.getConfirmedPoints() - constructionCheckViewModel.setVideoRegion(region) + constructionCheckViewModel.setVideoRegion(LocaleConstant.AI_BASE_URL, region) } binding.startVideoCheckButton.setOnClickListener { - constructionCheckViewModel.setCurrentPhase(this, "in_operation") + constructionCheckViewModel.setCurrentPhase( + this, LocaleConstant.AI_BASE_URL, "in_operation" + ) } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { @@ -144,7 +146,10 @@ regionViewParams.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = regionViewParams - VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, LocaleConstant.MAIN_RTSP_URL) + VideoPlayerManager.setGSYVideoPlayerOptions( + binding.rtspPlayerView, + LocaleConstant.MAIN_RTSP_URL + ) binding.rtspPlayerView.startPlayLogic() alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] @@ -322,7 +327,9 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { isEndTask = true - constructionCheckViewModel.setCurrentPhase(context, "stop") + constructionCheckViewModel.setCurrentPhase( + context, LocaleConstant.AI_BASE_URL, "stop" + ) } override fun onCancelClick() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt index 0aad7ad..a1cc474 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt @@ -73,7 +73,9 @@ lifecycleScope.launch(Dispatchers.IO) { SocketManager.get.send(LocaleConstant.START_SUPPLIES_COMMAND) delay(2000) - constructionCheckViewModel.setCurrentPhase(context, "before_operation_protection") + constructionCheckViewModel.setCurrentPhase( + context, LocaleConstant.AI_BASE_URL, "before_operation_protection" + ) withContext(Dispatchers.Main) { binding.stepView.text = "稍后开始检查第一项:四合一,请准备" } @@ -128,7 +130,9 @@ ActivityResultContracts.StartActivityForResult() ) { Log.d(kTag, "startVideoLauncher: ") - constructionCheckViewModel.setCurrentPhase(this, "before_operation_protection") + constructionCheckViewModel.setCurrentPhase( + this, LocaleConstant.AI_BASE_URL, "before_operation_protection" + ) binding.stepView.text = "稍后开始检查第一项:四合一,请准备" } @@ -189,7 +193,10 @@ params.width = videoWidth params.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = params - VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, LocaleConstant.SUB_RTSP_URL) + VideoPlayerManager.setGSYVideoPlayerOptions( + binding.rtspPlayerView, + LocaleConstant.SUB_RTSP_URL + ) timer = Timer() timer.schedule(object : TimerTask() { diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt index a29dde0..265b27b 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt @@ -6,6 +6,7 @@ import com.casic.br.operationsite.extensions.getResponseMessage import com.casic.br.operationsite.model.AlarmDetailModel import com.casic.br.operationsite.model.AlarmListModel +import com.casic.br.operationsite.model.AlarmStateModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -19,6 +20,8 @@ private val gson = Gson() val alarmModel = MutableLiveData() val detailModel = MutableLiveData() + val changeStateResult = MutableLiveData() + val stateResult = MutableLiveData() fun getAlarmListByPage(context: Context, keywords: String, page: Int) = launch({ loadState.value = LoadState.Loading @@ -62,7 +65,25 @@ it.printStackTrace() }) - fun changeAlarmState(deviceIp: String, state: String) = launch({ - RetrofitServiceManager.changeAlarmState(state) + fun changeAlarmState(httpConfig: String, deviceIp: String, state: String) = launch({ + val response = RetrofitServiceManager.changeAlarmState(httpConfig, deviceIp, state) + changeStateResult.value = response.getResponseCode() == 200 + }) + + fun getAlarmState(context: Context, httpConfig: String, deviceIp: String) = launch({ + val response = RetrofitServiceManager.getAlarmState(httpConfig, deviceIp) + when (response.getResponseCode()) { + 200 -> { + stateResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } + + else -> { + response.getResponseMessage().show(context) + } + } + }, { + it.printStackTrace() }) } \ No newline at end of file diff --git a/app/src/main/assets/DeviceParameter.json b/app/src/main/assets/DeviceParameter.json index 90efdc9..203bc53 100644 --- a/app/src/main/assets/DeviceParameter.json +++ b/app/src/main/assets/DeviceParameter.json @@ -1,24 +1,28 @@ [ { "deviceName": "AQS001", + "aiServerIp": "192.168.10.141", "wifi": "YTJ_010001_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.151" }, { "deviceName": "AQS002", + "aiServerIp": "192.168.10.139", "wifi": "YTJ010002_5G", "pwd": "zhsz20311hw", "cameraIp": "192.168.10.137" }, { "deviceName": "AQS003", + "aiServerIp": "192.168.10.143", "wifi": "YTJ010003_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.153" }, { "deviceName": "AQS004", + "aiServerIp": "192.168.10.144", "wifi": "YTJ010004_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.154" diff --git a/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java new file mode 100644 index 0000000..387de3a --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java @@ -0,0 +1,53 @@ +package com.casic.br.operationsite.model; + +public class AlarmStateModel { + + private int code; + private DataModel data; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String deviceIp; + private String state; + + public String getDeviceIp() { + return deviceIp; + } + + public void setDeviceIp(String deviceIp) { + this.deviceIp = deviceIp; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java index 0398681..7e8f38e 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java @@ -3,6 +3,7 @@ public class DeviceParameterModel { private String deviceName; + private String aiServerIp; private String wifi; private String pwd; private String cameraIp; @@ -15,6 +16,14 @@ this.deviceName = deviceName; } + public String getAiServerIp() { + return aiServerIp; + } + + public void setAiServerIp(String aiServerIp) { + this.aiServerIp = aiServerIp; + } + public String getWifi() { return wifi; } 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 ad2074b..7e04f19 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 @@ -154,6 +154,12 @@ suspend fun changeAlarmState(@Body requestBody: RequestBody): String /** + * 查询声光报警状态 + */ + @GET("/getAlarmState") + suspend fun getAlarmState(@Query("deviceIp") deviceIp: String): String + + /** * 提交算法区域 */ @POST("/setPosition") 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 f99d6d4..13efeec 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 @@ -30,13 +30,6 @@ RetrofitFactory.createRetrofit(httpConfig) } - private val aiApi by lazy { - val httpConfig = SaveKeyValues.getValue( - LocaleConstant.AI_SERVER_CONFIG, LocaleConstant.AI_BASE_URL - ) as String - RetrofitFactory.createRetrofit(httpConfig) - } - /** * 验证PublicKey */ @@ -233,20 +226,6 @@ } /** - * 设置当前阶段 - */ - suspend fun setCurrentPhase(phase: String): String { - val param = JsonObject() - param.addProperty("phase", phase) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - return aiApi.setCurrentPhase(requestBody) - } - - /** * 提交场景下的数据 */ suspend fun uploadPhaseData( @@ -270,30 +249,55 @@ } /** + * 设置当前阶段 + */ + 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) + } + + /** * 设置声光报警开关 */ - suspend fun changeAlarmState(state: String): String { + suspend fun changeAlarmState(httpConfig: String, deviceIp: String, state: String): String { val param = JsonObject() + param.addProperty("deviceIp", deviceIp) param.addProperty("state", state) val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.changeAlarmState(requestBody) + } - return aiApi.changeAlarmState(requestBody) + /** + * 查询声光报警状态 + */ + suspend fun getAlarmState(httpConfig: String, deviceIp: String): String { + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.getAlarmState(deviceIp) } /** * 设置区域 * */ - suspend fun setVideoRegion(position: ArrayList): String { + 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() ) - return aiApi.postRegion(requestBody) + + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.postRegion(requestBody) } /** @@ -307,7 +311,7 @@ Log.d(kTag, "executeDeviceCommand: httpConfig is null") return "" } - val service = RetrofitFactory.createRetrofit("http://${httpConfig}") + val service = RetrofitFactory.createRetrofit("http://$httpConfig") return service.executeDeviceCommand(action, "admin", "admin", speed.toString()) } } \ No newline at end of file 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 17e6688..07f2cf5 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 @@ -64,9 +64,8 @@ //子码流 const val SUB_RTSP_URL = "rtsp://192.168.10.137:554/h265/ch1/sub/av_stream" - const val DEVICE_CONTROLLER_URL = "https://gbs.ntvgbs.cn/login/" + const val DEVICE_CONTROL_URL = "https://gbs.ntvgbs.cn/login/" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val AI_SERVER_CONFIG = "aiServerConfig" const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" 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 b037b0a..78bfef2 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 @@ -21,6 +21,7 @@ import com.casic.br.operationsite.model.DeviceParameterModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.utils.VideoPlayerManager +import com.casic.br.operationsite.vm.AlarmViewModel import com.casic.br.operationsite.vm.DeviceViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -44,7 +45,10 @@ private val wifiManager by lazy { getSystemService()!! } private lateinit var deviceParams: List private lateinit var deviceViewModel: DeviceViewModel + private lateinit var alarmViewModel: AlarmViewModel private var speed = 5 + private var cameraIp = "" + private var httpConfig = "" @SuppressLint("ClickableViewAccessibility") override fun initEvent() { @@ -68,6 +72,9 @@ LocaleConstant.DEVICE_CONTROL_SERVER_CONFIG, parameter.cameraIp ) + httpConfig = parameter.aiServerIp + cameraIp = parameter.cameraIp + //设置rtsp相机地址 val rtsp = "rtsp://${parameter.cameraIp}:554/h265/ch1/sub/av_stream" VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, rtsp) @@ -107,6 +114,21 @@ }).build().show() } + binding.alarmSwitch.setOnCheckedChangeListener { _, isChecked -> + if (cameraIp == "") { + "请先选择设备".show(this) + return@setOnCheckedChangeListener + } + + val state = if (isChecked) { + "1" + } else { + "0" + } + + alarmViewModel.changeAlarmState(httpConfig, cameraIp, state) + } + binding.leftButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> executeCommand("Left") @@ -185,8 +207,15 @@ ) deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - deviceViewModel.commandResult.observe(this) { - Log.d(kTag, "initOnCreate: $it") + + alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] + alarmViewModel.changeStateResult.observe(this) { + alarmViewModel.getAlarmState(context, httpConfig, cameraIp) + } + alarmViewModel.stateResult.observe(this) { + if (it.code == 200) { + binding.alarmSwitch.isChecked = it.data.state == "1" + } } //动态设置rtspPlayerView宽高 @@ -229,6 +258,7 @@ super.onAvailable(network) if (connectivityManager?.bindProcessToNetwork(network) == true) { "设备连接成功".show(context) + alarmViewModel.getAlarmState(context, httpConfig, cameraIp) } } diff --git a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt index 59ebef1..3026da3 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt @@ -41,7 +41,7 @@ .interceptUnkownUrl() .createAgentWeb() .ready() - .go(LocaleConstant.DEVICE_CONTROLLER_URL) + .go(LocaleConstant.DEVICE_CONTROL_URL) val webView = agentWeb.webCreator.webView webView.settings.useWideViewPort = true webView.settings.builtInZoomControls = true diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt index e6812f7..ae0810a 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt @@ -91,7 +91,9 @@ return@setOnClickListener } SocketManager.get.send(LocaleConstant.START_ENV_COMMAND) - constructionCheckViewModel.setCurrentPhase(this, "before_operation_environment") + constructionCheckViewModel.setCurrentPhase( + this, LocaleConstant.AI_BASE_URL, "before_operation_environment" + ) } binding.blowerImageView.setOnClickListener { @@ -159,7 +161,10 @@ params.width = videoWidth params.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = params - VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, LocaleConstant.SUB_RTSP_URL) + VideoPlayerManager.setGSYVideoPlayerOptions( + binding.rtspPlayerView, + LocaleConstant.SUB_RTSP_URL + ) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.workerResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt index 2b7f2bb..0c2bfd8 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt @@ -77,7 +77,7 @@ } else { "0" } - alarmViewModel.changeAlarmState("", state) + alarmViewModel.changeAlarmState(LocaleConstant.AI_BASE_URL, "", state) } binding.restartVideoButton.setOnClickListener { @@ -91,11 +91,13 @@ binding.setVideoRegionButton.setOnClickListener { val region = binding.regionView.getConfirmedPoints() - constructionCheckViewModel.setVideoRegion(region) + constructionCheckViewModel.setVideoRegion(LocaleConstant.AI_BASE_URL, region) } binding.startVideoCheckButton.setOnClickListener { - constructionCheckViewModel.setCurrentPhase(this, "in_operation") + constructionCheckViewModel.setCurrentPhase( + this, LocaleConstant.AI_BASE_URL, "in_operation" + ) } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { @@ -144,7 +146,10 @@ regionViewParams.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = regionViewParams - VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, LocaleConstant.MAIN_RTSP_URL) + VideoPlayerManager.setGSYVideoPlayerOptions( + binding.rtspPlayerView, + LocaleConstant.MAIN_RTSP_URL + ) binding.rtspPlayerView.startPlayLogic() alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] @@ -322,7 +327,9 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { isEndTask = true - constructionCheckViewModel.setCurrentPhase(context, "stop") + constructionCheckViewModel.setCurrentPhase( + context, LocaleConstant.AI_BASE_URL, "stop" + ) } override fun onCancelClick() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt index 0aad7ad..a1cc474 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt @@ -73,7 +73,9 @@ lifecycleScope.launch(Dispatchers.IO) { SocketManager.get.send(LocaleConstant.START_SUPPLIES_COMMAND) delay(2000) - constructionCheckViewModel.setCurrentPhase(context, "before_operation_protection") + constructionCheckViewModel.setCurrentPhase( + context, LocaleConstant.AI_BASE_URL, "before_operation_protection" + ) withContext(Dispatchers.Main) { binding.stepView.text = "稍后开始检查第一项:四合一,请准备" } @@ -128,7 +130,9 @@ ActivityResultContracts.StartActivityForResult() ) { Log.d(kTag, "startVideoLauncher: ") - constructionCheckViewModel.setCurrentPhase(this, "before_operation_protection") + constructionCheckViewModel.setCurrentPhase( + this, LocaleConstant.AI_BASE_URL, "before_operation_protection" + ) binding.stepView.text = "稍后开始检查第一项:四合一,请准备" } @@ -189,7 +193,10 @@ params.width = videoWidth params.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = params - VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, LocaleConstant.SUB_RTSP_URL) + VideoPlayerManager.setGSYVideoPlayerOptions( + binding.rtspPlayerView, + LocaleConstant.SUB_RTSP_URL + ) timer = Timer() timer.schedule(object : TimerTask() { diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt index a29dde0..265b27b 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt @@ -6,6 +6,7 @@ import com.casic.br.operationsite.extensions.getResponseMessage import com.casic.br.operationsite.model.AlarmDetailModel import com.casic.br.operationsite.model.AlarmListModel +import com.casic.br.operationsite.model.AlarmStateModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -19,6 +20,8 @@ private val gson = Gson() val alarmModel = MutableLiveData() val detailModel = MutableLiveData() + val changeStateResult = MutableLiveData() + val stateResult = MutableLiveData() fun getAlarmListByPage(context: Context, keywords: String, page: Int) = launch({ loadState.value = LoadState.Loading @@ -62,7 +65,25 @@ it.printStackTrace() }) - fun changeAlarmState(deviceIp: String, state: String) = launch({ - RetrofitServiceManager.changeAlarmState(state) + fun changeAlarmState(httpConfig: String, deviceIp: String, state: String) = launch({ + val response = RetrofitServiceManager.changeAlarmState(httpConfig, deviceIp, state) + changeStateResult.value = response.getResponseCode() == 200 + }) + + fun getAlarmState(context: Context, httpConfig: String, deviceIp: String) = launch({ + val response = RetrofitServiceManager.getAlarmState(httpConfig, deviceIp) + when (response.getResponseCode()) { + 200 -> { + stateResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } + + else -> { + response.getResponseMessage().show(context) + } + } + }, { + it.printStackTrace() }) } \ No newline at end of file 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 index 9a38c5d..cd76dea 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/ConstructionCheckViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/ConstructionCheckViewModel.kt @@ -16,16 +16,16 @@ val setVideoRegionResult = MutableLiveData() val uploadDataResult = MutableLiveData() - fun setVideoRegion(position: ArrayList) = launch({ - val response = RetrofitServiceManager.setVideoRegion(position) + fun setVideoRegion(httpConfig: String, position: ArrayList) = launch({ + val response = RetrofitServiceManager.setVideoRegion(httpConfig, position) setVideoRegionResult.value = response.getResponseCode() == 200 }, { it.printStackTrace() }) - fun setCurrentPhase(context: Context, phase: String) = launch({ + fun setCurrentPhase(context: Context, httpConfig: String, phase: String) = launch({ loadState.value = LoadState.Loading - val response = RetrofitServiceManager.setCurrentPhase(phase) + val response = RetrofitServiceManager.setCurrentPhase(httpConfig, phase) when (response.getResponseCode()) { 200 -> { loadState.value = LoadState.Success diff --git a/app/src/main/assets/DeviceParameter.json b/app/src/main/assets/DeviceParameter.json index 90efdc9..203bc53 100644 --- a/app/src/main/assets/DeviceParameter.json +++ b/app/src/main/assets/DeviceParameter.json @@ -1,24 +1,28 @@ [ { "deviceName": "AQS001", + "aiServerIp": "192.168.10.141", "wifi": "YTJ_010001_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.151" }, { "deviceName": "AQS002", + "aiServerIp": "192.168.10.139", "wifi": "YTJ010002_5G", "pwd": "zhsz20311hw", "cameraIp": "192.168.10.137" }, { "deviceName": "AQS003", + "aiServerIp": "192.168.10.143", "wifi": "YTJ010003_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.153" }, { "deviceName": "AQS004", + "aiServerIp": "192.168.10.144", "wifi": "YTJ010004_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.154" diff --git a/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java new file mode 100644 index 0000000..387de3a --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java @@ -0,0 +1,53 @@ +package com.casic.br.operationsite.model; + +public class AlarmStateModel { + + private int code; + private DataModel data; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String deviceIp; + private String state; + + public String getDeviceIp() { + return deviceIp; + } + + public void setDeviceIp(String deviceIp) { + this.deviceIp = deviceIp; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java index 0398681..7e8f38e 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java @@ -3,6 +3,7 @@ public class DeviceParameterModel { private String deviceName; + private String aiServerIp; private String wifi; private String pwd; private String cameraIp; @@ -15,6 +16,14 @@ this.deviceName = deviceName; } + public String getAiServerIp() { + return aiServerIp; + } + + public void setAiServerIp(String aiServerIp) { + this.aiServerIp = aiServerIp; + } + public String getWifi() { return wifi; } 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 ad2074b..7e04f19 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 @@ -154,6 +154,12 @@ suspend fun changeAlarmState(@Body requestBody: RequestBody): String /** + * 查询声光报警状态 + */ + @GET("/getAlarmState") + suspend fun getAlarmState(@Query("deviceIp") deviceIp: String): String + + /** * 提交算法区域 */ @POST("/setPosition") 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 f99d6d4..13efeec 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 @@ -30,13 +30,6 @@ RetrofitFactory.createRetrofit(httpConfig) } - private val aiApi by lazy { - val httpConfig = SaveKeyValues.getValue( - LocaleConstant.AI_SERVER_CONFIG, LocaleConstant.AI_BASE_URL - ) as String - RetrofitFactory.createRetrofit(httpConfig) - } - /** * 验证PublicKey */ @@ -233,20 +226,6 @@ } /** - * 设置当前阶段 - */ - suspend fun setCurrentPhase(phase: String): String { - val param = JsonObject() - param.addProperty("phase", phase) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - return aiApi.setCurrentPhase(requestBody) - } - - /** * 提交场景下的数据 */ suspend fun uploadPhaseData( @@ -270,30 +249,55 @@ } /** + * 设置当前阶段 + */ + 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) + } + + /** * 设置声光报警开关 */ - suspend fun changeAlarmState(state: String): String { + suspend fun changeAlarmState(httpConfig: String, deviceIp: String, state: String): String { val param = JsonObject() + param.addProperty("deviceIp", deviceIp) param.addProperty("state", state) val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.changeAlarmState(requestBody) + } - return aiApi.changeAlarmState(requestBody) + /** + * 查询声光报警状态 + */ + suspend fun getAlarmState(httpConfig: String, deviceIp: String): String { + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.getAlarmState(deviceIp) } /** * 设置区域 * */ - suspend fun setVideoRegion(position: ArrayList): String { + 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() ) - return aiApi.postRegion(requestBody) + + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.postRegion(requestBody) } /** @@ -307,7 +311,7 @@ Log.d(kTag, "executeDeviceCommand: httpConfig is null") return "" } - val service = RetrofitFactory.createRetrofit("http://${httpConfig}") + val service = RetrofitFactory.createRetrofit("http://$httpConfig") return service.executeDeviceCommand(action, "admin", "admin", speed.toString()) } } \ No newline at end of file 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 17e6688..07f2cf5 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 @@ -64,9 +64,8 @@ //子码流 const val SUB_RTSP_URL = "rtsp://192.168.10.137:554/h265/ch1/sub/av_stream" - const val DEVICE_CONTROLLER_URL = "https://gbs.ntvgbs.cn/login/" + const val DEVICE_CONTROL_URL = "https://gbs.ntvgbs.cn/login/" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val AI_SERVER_CONFIG = "aiServerConfig" const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" 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 b037b0a..78bfef2 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 @@ -21,6 +21,7 @@ import com.casic.br.operationsite.model.DeviceParameterModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.utils.VideoPlayerManager +import com.casic.br.operationsite.vm.AlarmViewModel import com.casic.br.operationsite.vm.DeviceViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -44,7 +45,10 @@ private val wifiManager by lazy { getSystemService()!! } private lateinit var deviceParams: List private lateinit var deviceViewModel: DeviceViewModel + private lateinit var alarmViewModel: AlarmViewModel private var speed = 5 + private var cameraIp = "" + private var httpConfig = "" @SuppressLint("ClickableViewAccessibility") override fun initEvent() { @@ -68,6 +72,9 @@ LocaleConstant.DEVICE_CONTROL_SERVER_CONFIG, parameter.cameraIp ) + httpConfig = parameter.aiServerIp + cameraIp = parameter.cameraIp + //设置rtsp相机地址 val rtsp = "rtsp://${parameter.cameraIp}:554/h265/ch1/sub/av_stream" VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, rtsp) @@ -107,6 +114,21 @@ }).build().show() } + binding.alarmSwitch.setOnCheckedChangeListener { _, isChecked -> + if (cameraIp == "") { + "请先选择设备".show(this) + return@setOnCheckedChangeListener + } + + val state = if (isChecked) { + "1" + } else { + "0" + } + + alarmViewModel.changeAlarmState(httpConfig, cameraIp, state) + } + binding.leftButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> executeCommand("Left") @@ -185,8 +207,15 @@ ) deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - deviceViewModel.commandResult.observe(this) { - Log.d(kTag, "initOnCreate: $it") + + alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] + alarmViewModel.changeStateResult.observe(this) { + alarmViewModel.getAlarmState(context, httpConfig, cameraIp) + } + alarmViewModel.stateResult.observe(this) { + if (it.code == 200) { + binding.alarmSwitch.isChecked = it.data.state == "1" + } } //动态设置rtspPlayerView宽高 @@ -229,6 +258,7 @@ super.onAvailable(network) if (connectivityManager?.bindProcessToNetwork(network) == true) { "设备连接成功".show(context) + alarmViewModel.getAlarmState(context, httpConfig, cameraIp) } } diff --git a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt index 59ebef1..3026da3 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt @@ -41,7 +41,7 @@ .interceptUnkownUrl() .createAgentWeb() .ready() - .go(LocaleConstant.DEVICE_CONTROLLER_URL) + .go(LocaleConstant.DEVICE_CONTROL_URL) val webView = agentWeb.webCreator.webView webView.settings.useWideViewPort = true webView.settings.builtInZoomControls = true diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt index e6812f7..ae0810a 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt @@ -91,7 +91,9 @@ return@setOnClickListener } SocketManager.get.send(LocaleConstant.START_ENV_COMMAND) - constructionCheckViewModel.setCurrentPhase(this, "before_operation_environment") + constructionCheckViewModel.setCurrentPhase( + this, LocaleConstant.AI_BASE_URL, "before_operation_environment" + ) } binding.blowerImageView.setOnClickListener { @@ -159,7 +161,10 @@ params.width = videoWidth params.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = params - VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, LocaleConstant.SUB_RTSP_URL) + VideoPlayerManager.setGSYVideoPlayerOptions( + binding.rtspPlayerView, + LocaleConstant.SUB_RTSP_URL + ) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.workerResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt index 2b7f2bb..0c2bfd8 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt @@ -77,7 +77,7 @@ } else { "0" } - alarmViewModel.changeAlarmState("", state) + alarmViewModel.changeAlarmState(LocaleConstant.AI_BASE_URL, "", state) } binding.restartVideoButton.setOnClickListener { @@ -91,11 +91,13 @@ binding.setVideoRegionButton.setOnClickListener { val region = binding.regionView.getConfirmedPoints() - constructionCheckViewModel.setVideoRegion(region) + constructionCheckViewModel.setVideoRegion(LocaleConstant.AI_BASE_URL, region) } binding.startVideoCheckButton.setOnClickListener { - constructionCheckViewModel.setCurrentPhase(this, "in_operation") + constructionCheckViewModel.setCurrentPhase( + this, LocaleConstant.AI_BASE_URL, "in_operation" + ) } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { @@ -144,7 +146,10 @@ regionViewParams.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = regionViewParams - VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, LocaleConstant.MAIN_RTSP_URL) + VideoPlayerManager.setGSYVideoPlayerOptions( + binding.rtspPlayerView, + LocaleConstant.MAIN_RTSP_URL + ) binding.rtspPlayerView.startPlayLogic() alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] @@ -322,7 +327,9 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { isEndTask = true - constructionCheckViewModel.setCurrentPhase(context, "stop") + constructionCheckViewModel.setCurrentPhase( + context, LocaleConstant.AI_BASE_URL, "stop" + ) } override fun onCancelClick() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt index 0aad7ad..a1cc474 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt @@ -73,7 +73,9 @@ lifecycleScope.launch(Dispatchers.IO) { SocketManager.get.send(LocaleConstant.START_SUPPLIES_COMMAND) delay(2000) - constructionCheckViewModel.setCurrentPhase(context, "before_operation_protection") + constructionCheckViewModel.setCurrentPhase( + context, LocaleConstant.AI_BASE_URL, "before_operation_protection" + ) withContext(Dispatchers.Main) { binding.stepView.text = "稍后开始检查第一项:四合一,请准备" } @@ -128,7 +130,9 @@ ActivityResultContracts.StartActivityForResult() ) { Log.d(kTag, "startVideoLauncher: ") - constructionCheckViewModel.setCurrentPhase(this, "before_operation_protection") + constructionCheckViewModel.setCurrentPhase( + this, LocaleConstant.AI_BASE_URL, "before_operation_protection" + ) binding.stepView.text = "稍后开始检查第一项:四合一,请准备" } @@ -189,7 +193,10 @@ params.width = videoWidth params.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = params - VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, LocaleConstant.SUB_RTSP_URL) + VideoPlayerManager.setGSYVideoPlayerOptions( + binding.rtspPlayerView, + LocaleConstant.SUB_RTSP_URL + ) timer = Timer() timer.schedule(object : TimerTask() { diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt index a29dde0..265b27b 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt @@ -6,6 +6,7 @@ import com.casic.br.operationsite.extensions.getResponseMessage import com.casic.br.operationsite.model.AlarmDetailModel import com.casic.br.operationsite.model.AlarmListModel +import com.casic.br.operationsite.model.AlarmStateModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -19,6 +20,8 @@ private val gson = Gson() val alarmModel = MutableLiveData() val detailModel = MutableLiveData() + val changeStateResult = MutableLiveData() + val stateResult = MutableLiveData() fun getAlarmListByPage(context: Context, keywords: String, page: Int) = launch({ loadState.value = LoadState.Loading @@ -62,7 +65,25 @@ it.printStackTrace() }) - fun changeAlarmState(deviceIp: String, state: String) = launch({ - RetrofitServiceManager.changeAlarmState(state) + fun changeAlarmState(httpConfig: String, deviceIp: String, state: String) = launch({ + val response = RetrofitServiceManager.changeAlarmState(httpConfig, deviceIp, state) + changeStateResult.value = response.getResponseCode() == 200 + }) + + fun getAlarmState(context: Context, httpConfig: String, deviceIp: String) = launch({ + val response = RetrofitServiceManager.getAlarmState(httpConfig, deviceIp) + when (response.getResponseCode()) { + 200 -> { + stateResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } + + else -> { + response.getResponseMessage().show(context) + } + } + }, { + it.printStackTrace() }) } \ No newline at end of file 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 index 9a38c5d..cd76dea 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/ConstructionCheckViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/ConstructionCheckViewModel.kt @@ -16,16 +16,16 @@ val setVideoRegionResult = MutableLiveData() val uploadDataResult = MutableLiveData() - fun setVideoRegion(position: ArrayList) = launch({ - val response = RetrofitServiceManager.setVideoRegion(position) + fun setVideoRegion(httpConfig: String, position: ArrayList) = launch({ + val response = RetrofitServiceManager.setVideoRegion(httpConfig, position) setVideoRegionResult.value = response.getResponseCode() == 200 }, { it.printStackTrace() }) - fun setCurrentPhase(context: Context, phase: String) = launch({ + fun setCurrentPhase(context: Context, httpConfig: String, phase: String) = launch({ loadState.value = LoadState.Loading - val response = RetrofitServiceManager.setCurrentPhase(phase) + val response = RetrofitServiceManager.setCurrentPhase(httpConfig, phase) when (response.getResponseCode()) { 200 -> { loadState.value = LoadState.Success diff --git a/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt index 3e1e90e..434b22a 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt @@ -21,7 +21,6 @@ val deviceModels = MutableLiveData() val setThresholdResult = MutableLiveData() val thresholdResult = MutableLiveData() - val commandResult = MutableLiveData() fun getDeviceList( context: Context, @@ -101,8 +100,6 @@ * 执行设备控制指令 */ fun executeDeviceCommand(action: String, speed: Int) = launch({ - commandResult.value = RetrofitServiceManager.executeDeviceCommand(action, speed) - }, { - it.printStackTrace() + RetrofitServiceManager.executeDeviceCommand(action, speed) }) } \ No newline at end of file diff --git a/app/src/main/assets/DeviceParameter.json b/app/src/main/assets/DeviceParameter.json index 90efdc9..203bc53 100644 --- a/app/src/main/assets/DeviceParameter.json +++ b/app/src/main/assets/DeviceParameter.json @@ -1,24 +1,28 @@ [ { "deviceName": "AQS001", + "aiServerIp": "192.168.10.141", "wifi": "YTJ_010001_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.151" }, { "deviceName": "AQS002", + "aiServerIp": "192.168.10.139", "wifi": "YTJ010002_5G", "pwd": "zhsz20311hw", "cameraIp": "192.168.10.137" }, { "deviceName": "AQS003", + "aiServerIp": "192.168.10.143", "wifi": "YTJ010003_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.153" }, { "deviceName": "AQS004", + "aiServerIp": "192.168.10.144", "wifi": "YTJ010004_5G", "pwd": "abcd1234", "cameraIp": "192.168.10.154" diff --git a/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java new file mode 100644 index 0000000..387de3a --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/AlarmStateModel.java @@ -0,0 +1,53 @@ +package com.casic.br.operationsite.model; + +public class AlarmStateModel { + + private int code; + private DataModel data; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String deviceIp; + private String state; + + public String getDeviceIp() { + return deviceIp; + } + + public void setDeviceIp(String deviceIp) { + this.deviceIp = deviceIp; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java index 0398681..7e8f38e 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/DeviceParameterModel.java @@ -3,6 +3,7 @@ public class DeviceParameterModel { private String deviceName; + private String aiServerIp; private String wifi; private String pwd; private String cameraIp; @@ -15,6 +16,14 @@ this.deviceName = deviceName; } + public String getAiServerIp() { + return aiServerIp; + } + + public void setAiServerIp(String aiServerIp) { + this.aiServerIp = aiServerIp; + } + public String getWifi() { return wifi; } 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 ad2074b..7e04f19 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 @@ -154,6 +154,12 @@ suspend fun changeAlarmState(@Body requestBody: RequestBody): String /** + * 查询声光报警状态 + */ + @GET("/getAlarmState") + suspend fun getAlarmState(@Query("deviceIp") deviceIp: String): String + + /** * 提交算法区域 */ @POST("/setPosition") 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 f99d6d4..13efeec 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 @@ -30,13 +30,6 @@ RetrofitFactory.createRetrofit(httpConfig) } - private val aiApi by lazy { - val httpConfig = SaveKeyValues.getValue( - LocaleConstant.AI_SERVER_CONFIG, LocaleConstant.AI_BASE_URL - ) as String - RetrofitFactory.createRetrofit(httpConfig) - } - /** * 验证PublicKey */ @@ -233,20 +226,6 @@ } /** - * 设置当前阶段 - */ - suspend fun setCurrentPhase(phase: String): String { - val param = JsonObject() - param.addProperty("phase", phase) - - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - return aiApi.setCurrentPhase(requestBody) - } - - /** * 提交场景下的数据 */ suspend fun uploadPhaseData( @@ -270,30 +249,55 @@ } /** + * 设置当前阶段 + */ + 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) + } + + /** * 设置声光报警开关 */ - suspend fun changeAlarmState(state: String): String { + suspend fun changeAlarmState(httpConfig: String, deviceIp: String, state: String): String { val param = JsonObject() + param.addProperty("deviceIp", deviceIp) param.addProperty("state", state) val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.changeAlarmState(requestBody) + } - return aiApi.changeAlarmState(requestBody) + /** + * 查询声光报警状态 + */ + suspend fun getAlarmState(httpConfig: String, deviceIp: String): String { + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.getAlarmState(deviceIp) } /** * 设置区域 * */ - suspend fun setVideoRegion(position: ArrayList): String { + 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() ) - return aiApi.postRegion(requestBody) + + val service = RetrofitFactory.createRetrofit("http://$httpConfig:5000") + return service.postRegion(requestBody) } /** @@ -307,7 +311,7 @@ Log.d(kTag, "executeDeviceCommand: httpConfig is null") return "" } - val service = RetrofitFactory.createRetrofit("http://${httpConfig}") + val service = RetrofitFactory.createRetrofit("http://$httpConfig") return service.executeDeviceCommand(action, "admin", "admin", speed.toString()) } } \ No newline at end of file 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 17e6688..07f2cf5 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 @@ -64,9 +64,8 @@ //子码流 const val SUB_RTSP_URL = "rtsp://192.168.10.137:554/h265/ch1/sub/av_stream" - const val DEVICE_CONTROLLER_URL = "https://gbs.ntvgbs.cn/login/" + const val DEVICE_CONTROL_URL = "https://gbs.ntvgbs.cn/login/" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val AI_SERVER_CONFIG = "aiServerConfig" const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" 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 b037b0a..78bfef2 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 @@ -21,6 +21,7 @@ import com.casic.br.operationsite.model.DeviceParameterModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.utils.VideoPlayerManager +import com.casic.br.operationsite.vm.AlarmViewModel import com.casic.br.operationsite.vm.DeviceViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -44,7 +45,10 @@ private val wifiManager by lazy { getSystemService()!! } private lateinit var deviceParams: List private lateinit var deviceViewModel: DeviceViewModel + private lateinit var alarmViewModel: AlarmViewModel private var speed = 5 + private var cameraIp = "" + private var httpConfig = "" @SuppressLint("ClickableViewAccessibility") override fun initEvent() { @@ -68,6 +72,9 @@ LocaleConstant.DEVICE_CONTROL_SERVER_CONFIG, parameter.cameraIp ) + httpConfig = parameter.aiServerIp + cameraIp = parameter.cameraIp + //设置rtsp相机地址 val rtsp = "rtsp://${parameter.cameraIp}:554/h265/ch1/sub/av_stream" VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, rtsp) @@ -107,6 +114,21 @@ }).build().show() } + binding.alarmSwitch.setOnCheckedChangeListener { _, isChecked -> + if (cameraIp == "") { + "请先选择设备".show(this) + return@setOnCheckedChangeListener + } + + val state = if (isChecked) { + "1" + } else { + "0" + } + + alarmViewModel.changeAlarmState(httpConfig, cameraIp, state) + } + binding.leftButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> executeCommand("Left") @@ -185,8 +207,15 @@ ) deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - deviceViewModel.commandResult.observe(this) { - Log.d(kTag, "initOnCreate: $it") + + alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] + alarmViewModel.changeStateResult.observe(this) { + alarmViewModel.getAlarmState(context, httpConfig, cameraIp) + } + alarmViewModel.stateResult.observe(this) { + if (it.code == 200) { + binding.alarmSwitch.isChecked = it.data.state == "1" + } } //动态设置rtspPlayerView宽高 @@ -229,6 +258,7 @@ super.onAvailable(network) if (connectivityManager?.bindProcessToNetwork(network) == true) { "设备连接成功".show(context) + alarmViewModel.getAlarmState(context, httpConfig, cameraIp) } } diff --git a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt index 59ebef1..3026da3 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/DeviceControlByWebActivity.kt @@ -41,7 +41,7 @@ .interceptUnkownUrl() .createAgentWeb() .ready() - .go(LocaleConstant.DEVICE_CONTROLLER_URL) + .go(LocaleConstant.DEVICE_CONTROL_URL) val webView = agentWeb.webCreator.webView webView.settings.useWideViewPort = true webView.settings.builtInZoomControls = true diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt index e6812f7..ae0810a 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt @@ -91,7 +91,9 @@ return@setOnClickListener } SocketManager.get.send(LocaleConstant.START_ENV_COMMAND) - constructionCheckViewModel.setCurrentPhase(this, "before_operation_environment") + constructionCheckViewModel.setCurrentPhase( + this, LocaleConstant.AI_BASE_URL, "before_operation_environment" + ) } binding.blowerImageView.setOnClickListener { @@ -159,7 +161,10 @@ params.width = videoWidth params.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = params - VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, LocaleConstant.SUB_RTSP_URL) + VideoPlayerManager.setGSYVideoPlayerOptions( + binding.rtspPlayerView, + LocaleConstant.SUB_RTSP_URL + ) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.workerResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt index 2b7f2bb..0c2bfd8 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt @@ -77,7 +77,7 @@ } else { "0" } - alarmViewModel.changeAlarmState("", state) + alarmViewModel.changeAlarmState(LocaleConstant.AI_BASE_URL, "", state) } binding.restartVideoButton.setOnClickListener { @@ -91,11 +91,13 @@ binding.setVideoRegionButton.setOnClickListener { val region = binding.regionView.getConfirmedPoints() - constructionCheckViewModel.setVideoRegion(region) + constructionCheckViewModel.setVideoRegion(LocaleConstant.AI_BASE_URL, region) } binding.startVideoCheckButton.setOnClickListener { - constructionCheckViewModel.setCurrentPhase(this, "in_operation") + constructionCheckViewModel.setCurrentPhase( + this, LocaleConstant.AI_BASE_URL, "in_operation" + ) } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { @@ -144,7 +146,10 @@ regionViewParams.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = regionViewParams - VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, LocaleConstant.MAIN_RTSP_URL) + VideoPlayerManager.setGSYVideoPlayerOptions( + binding.rtspPlayerView, + LocaleConstant.MAIN_RTSP_URL + ) binding.rtspPlayerView.startPlayLogic() alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] @@ -322,7 +327,9 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { isEndTask = true - constructionCheckViewModel.setCurrentPhase(context, "stop") + constructionCheckViewModel.setCurrentPhase( + context, LocaleConstant.AI_BASE_URL, "stop" + ) } override fun onCancelClick() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt index 0aad7ad..a1cc474 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt @@ -73,7 +73,9 @@ lifecycleScope.launch(Dispatchers.IO) { SocketManager.get.send(LocaleConstant.START_SUPPLIES_COMMAND) delay(2000) - constructionCheckViewModel.setCurrentPhase(context, "before_operation_protection") + constructionCheckViewModel.setCurrentPhase( + context, LocaleConstant.AI_BASE_URL, "before_operation_protection" + ) withContext(Dispatchers.Main) { binding.stepView.text = "稍后开始检查第一项:四合一,请准备" } @@ -128,7 +130,9 @@ ActivityResultContracts.StartActivityForResult() ) { Log.d(kTag, "startVideoLauncher: ") - constructionCheckViewModel.setCurrentPhase(this, "before_operation_protection") + constructionCheckViewModel.setCurrentPhase( + this, LocaleConstant.AI_BASE_URL, "before_operation_protection" + ) binding.stepView.text = "稍后开始检查第一项:四合一,请准备" } @@ -189,7 +193,10 @@ params.width = videoWidth params.height = videoHeight.toInt() binding.rtspPlayerView.layoutParams = params - VideoPlayerManager.setGSYVideoPlayerOptions(binding.rtspPlayerView, LocaleConstant.SUB_RTSP_URL) + VideoPlayerManager.setGSYVideoPlayerOptions( + binding.rtspPlayerView, + LocaleConstant.SUB_RTSP_URL + ) timer = Timer() timer.schedule(object : TimerTask() { diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt index a29dde0..265b27b 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt @@ -6,6 +6,7 @@ import com.casic.br.operationsite.extensions.getResponseMessage import com.casic.br.operationsite.model.AlarmDetailModel import com.casic.br.operationsite.model.AlarmListModel +import com.casic.br.operationsite.model.AlarmStateModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -19,6 +20,8 @@ private val gson = Gson() val alarmModel = MutableLiveData() val detailModel = MutableLiveData() + val changeStateResult = MutableLiveData() + val stateResult = MutableLiveData() fun getAlarmListByPage(context: Context, keywords: String, page: Int) = launch({ loadState.value = LoadState.Loading @@ -62,7 +65,25 @@ it.printStackTrace() }) - fun changeAlarmState(deviceIp: String, state: String) = launch({ - RetrofitServiceManager.changeAlarmState(state) + fun changeAlarmState(httpConfig: String, deviceIp: String, state: String) = launch({ + val response = RetrofitServiceManager.changeAlarmState(httpConfig, deviceIp, state) + changeStateResult.value = response.getResponseCode() == 200 + }) + + fun getAlarmState(context: Context, httpConfig: String, deviceIp: String) = launch({ + val response = RetrofitServiceManager.getAlarmState(httpConfig, deviceIp) + when (response.getResponseCode()) { + 200 -> { + stateResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } + + else -> { + response.getResponseMessage().show(context) + } + } + }, { + it.printStackTrace() }) } \ No newline at end of file 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 index 9a38c5d..cd76dea 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/ConstructionCheckViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/ConstructionCheckViewModel.kt @@ -16,16 +16,16 @@ val setVideoRegionResult = MutableLiveData() val uploadDataResult = MutableLiveData() - fun setVideoRegion(position: ArrayList) = launch({ - val response = RetrofitServiceManager.setVideoRegion(position) + fun setVideoRegion(httpConfig: String, position: ArrayList) = launch({ + val response = RetrofitServiceManager.setVideoRegion(httpConfig, position) setVideoRegionResult.value = response.getResponseCode() == 200 }, { it.printStackTrace() }) - fun setCurrentPhase(context: Context, phase: String) = launch({ + fun setCurrentPhase(context: Context, httpConfig: String, phase: String) = launch({ loadState.value = LoadState.Loading - val response = RetrofitServiceManager.setCurrentPhase(phase) + val response = RetrofitServiceManager.setCurrentPhase(httpConfig, phase) when (response.getResponseCode()) { 200 -> { loadState.value = LoadState.Success diff --git a/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt index 3e1e90e..434b22a 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt @@ -21,7 +21,6 @@ val deviceModels = MutableLiveData() val setThresholdResult = MutableLiveData() val thresholdResult = MutableLiveData() - val commandResult = MutableLiveData() fun getDeviceList( context: Context, @@ -101,8 +100,6 @@ * 执行设备控制指令 */ fun executeDeviceCommand(action: String, speed: Int) = launch({ - commandResult.value = RetrofitServiceManager.executeDeviceCommand(action, speed) - }, { - it.printStackTrace() + RetrofitServiceManager.executeDeviceCommand(action, speed) }) } \ 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 725e71a..b491b9a 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 @@ -58,6 +58,31 @@ + + + + + + +