diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7df3629..f8a5cfe 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -58,7 +58,7 @@
android:screenOrientation="landscape" />
data;
+ private String message;
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static class DataModel {
+ private String alarmCode;
+ private String alarmContent;
+ private String alarmLatitude;
+ private String alarmLongitude;
+ private String alarmPicture;
+ private String alarmStatus;
+ private Integer alarmThresh;
+ private String alarmTime;
+ private String alarmType;
+ private Integer alarmValue;
+ private String alarmVideo;
+ private String cancelReason;
+ private String cancelResult;
+ private String cancelTime;
+ private String cancelUser;
+ private String deviceId;
+ private String id;
+ private String taskId;
+ private String ts;
+
+ public String getAlarmCode() {
+ return alarmCode;
+ }
+
+ public void setAlarmCode(String alarmCode) {
+ this.alarmCode = alarmCode;
+ }
+
+ public String getAlarmContent() {
+ return alarmContent;
+ }
+
+ public void setAlarmContent(String alarmContent) {
+ this.alarmContent = alarmContent;
+ }
+
+ public String getAlarmLatitude() {
+ return alarmLatitude;
+ }
+
+ public void setAlarmLatitude(String alarmLatitude) {
+ this.alarmLatitude = alarmLatitude;
+ }
+
+ public String getAlarmLongitude() {
+ return alarmLongitude;
+ }
+
+ public void setAlarmLongitude(String alarmLongitude) {
+ this.alarmLongitude = alarmLongitude;
+ }
+
+ public String getAlarmPicture() {
+ return alarmPicture;
+ }
+
+ public void setAlarmPicture(String alarmPicture) {
+ this.alarmPicture = alarmPicture;
+ }
+
+ public String getAlarmStatus() {
+ return alarmStatus;
+ }
+
+ public void setAlarmStatus(String alarmStatus) {
+ this.alarmStatus = alarmStatus;
+ }
+
+ public Integer getAlarmThresh() {
+ return alarmThresh;
+ }
+
+ public void setAlarmThresh(Integer alarmThresh) {
+ this.alarmThresh = alarmThresh;
+ }
+
+ public String getAlarmTime() {
+ return alarmTime;
+ }
+
+ public void setAlarmTime(String alarmTime) {
+ this.alarmTime = alarmTime;
+ }
+
+ public String getAlarmType() {
+ return alarmType;
+ }
+
+ public void setAlarmType(String alarmType) {
+ this.alarmType = alarmType;
+ }
+
+ public Integer getAlarmValue() {
+ return alarmValue;
+ }
+
+ public void setAlarmValue(Integer alarmValue) {
+ this.alarmValue = alarmValue;
+ }
+
+ public String getAlarmVideo() {
+ return alarmVideo;
+ }
+
+ public void setAlarmVideo(String alarmVideo) {
+ this.alarmVideo = alarmVideo;
+ }
+
+ public String getCancelReason() {
+ return cancelReason;
+ }
+
+ public void setCancelReason(String cancelReason) {
+ this.cancelReason = cancelReason;
+ }
+
+ public String getCancelResult() {
+ return cancelResult;
+ }
+
+ public void setCancelResult(String cancelResult) {
+ this.cancelResult = cancelResult;
+ }
+
+ public String getCancelTime() {
+ return cancelTime;
+ }
+
+ public void setCancelTime(String cancelTime) {
+ this.cancelTime = cancelTime;
+ }
+
+ public String getCancelUser() {
+ return cancelUser;
+ }
+
+ public void setCancelUser(String cancelUser) {
+ this.cancelUser = cancelUser;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public String getTs() {
+ return ts;
+ }
+
+ public void setTs(String ts) {
+ this.ts = ts;
+ }
+ }
+}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7df3629..f8a5cfe 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -58,7 +58,7 @@
android:screenOrientation="landscape" />
data;
+ private String message;
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static class DataModel {
+ private String alarmCode;
+ private String alarmContent;
+ private String alarmLatitude;
+ private String alarmLongitude;
+ private String alarmPicture;
+ private String alarmStatus;
+ private Integer alarmThresh;
+ private String alarmTime;
+ private String alarmType;
+ private Integer alarmValue;
+ private String alarmVideo;
+ private String cancelReason;
+ private String cancelResult;
+ private String cancelTime;
+ private String cancelUser;
+ private String deviceId;
+ private String id;
+ private String taskId;
+ private String ts;
+
+ public String getAlarmCode() {
+ return alarmCode;
+ }
+
+ public void setAlarmCode(String alarmCode) {
+ this.alarmCode = alarmCode;
+ }
+
+ public String getAlarmContent() {
+ return alarmContent;
+ }
+
+ public void setAlarmContent(String alarmContent) {
+ this.alarmContent = alarmContent;
+ }
+
+ public String getAlarmLatitude() {
+ return alarmLatitude;
+ }
+
+ public void setAlarmLatitude(String alarmLatitude) {
+ this.alarmLatitude = alarmLatitude;
+ }
+
+ public String getAlarmLongitude() {
+ return alarmLongitude;
+ }
+
+ public void setAlarmLongitude(String alarmLongitude) {
+ this.alarmLongitude = alarmLongitude;
+ }
+
+ public String getAlarmPicture() {
+ return alarmPicture;
+ }
+
+ public void setAlarmPicture(String alarmPicture) {
+ this.alarmPicture = alarmPicture;
+ }
+
+ public String getAlarmStatus() {
+ return alarmStatus;
+ }
+
+ public void setAlarmStatus(String alarmStatus) {
+ this.alarmStatus = alarmStatus;
+ }
+
+ public Integer getAlarmThresh() {
+ return alarmThresh;
+ }
+
+ public void setAlarmThresh(Integer alarmThresh) {
+ this.alarmThresh = alarmThresh;
+ }
+
+ public String getAlarmTime() {
+ return alarmTime;
+ }
+
+ public void setAlarmTime(String alarmTime) {
+ this.alarmTime = alarmTime;
+ }
+
+ public String getAlarmType() {
+ return alarmType;
+ }
+
+ public void setAlarmType(String alarmType) {
+ this.alarmType = alarmType;
+ }
+
+ public Integer getAlarmValue() {
+ return alarmValue;
+ }
+
+ public void setAlarmValue(Integer alarmValue) {
+ this.alarmValue = alarmValue;
+ }
+
+ public String getAlarmVideo() {
+ return alarmVideo;
+ }
+
+ public void setAlarmVideo(String alarmVideo) {
+ this.alarmVideo = alarmVideo;
+ }
+
+ public String getCancelReason() {
+ return cancelReason;
+ }
+
+ public void setCancelReason(String cancelReason) {
+ this.cancelReason = cancelReason;
+ }
+
+ public String getCancelResult() {
+ return cancelResult;
+ }
+
+ public void setCancelResult(String cancelResult) {
+ this.cancelResult = cancelResult;
+ }
+
+ public String getCancelTime() {
+ return cancelTime;
+ }
+
+ public void setCancelTime(String cancelTime) {
+ this.cancelTime = cancelTime;
+ }
+
+ public String getCancelUser() {
+ return cancelUser;
+ }
+
+ public void setCancelUser(String cancelUser) {
+ this.cancelUser = cancelUser;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public String getTs() {
+ return ts;
+ }
+
+ public void setTs(String ts) {
+ this.ts = ts;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
index 8a06ac4..d65bbd2 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
@@ -203,6 +203,15 @@
): String
/**
+ * 报警图片或者视频
+ */
+ @POST("/alarm/getAlarmPath")
+ suspend fun getAlarmMedia(
+ @Header("token") token: String,
+ @Body requestBody: RequestBody
+ ): String
+
+ /**
* 根据时间获取巡检任务和公里数
*/
@POST("/system/busOverView/taskCount")
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7df3629..f8a5cfe 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -58,7 +58,7 @@
android:screenOrientation="landscape" />
data;
+ private String message;
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static class DataModel {
+ private String alarmCode;
+ private String alarmContent;
+ private String alarmLatitude;
+ private String alarmLongitude;
+ private String alarmPicture;
+ private String alarmStatus;
+ private Integer alarmThresh;
+ private String alarmTime;
+ private String alarmType;
+ private Integer alarmValue;
+ private String alarmVideo;
+ private String cancelReason;
+ private String cancelResult;
+ private String cancelTime;
+ private String cancelUser;
+ private String deviceId;
+ private String id;
+ private String taskId;
+ private String ts;
+
+ public String getAlarmCode() {
+ return alarmCode;
+ }
+
+ public void setAlarmCode(String alarmCode) {
+ this.alarmCode = alarmCode;
+ }
+
+ public String getAlarmContent() {
+ return alarmContent;
+ }
+
+ public void setAlarmContent(String alarmContent) {
+ this.alarmContent = alarmContent;
+ }
+
+ public String getAlarmLatitude() {
+ return alarmLatitude;
+ }
+
+ public void setAlarmLatitude(String alarmLatitude) {
+ this.alarmLatitude = alarmLatitude;
+ }
+
+ public String getAlarmLongitude() {
+ return alarmLongitude;
+ }
+
+ public void setAlarmLongitude(String alarmLongitude) {
+ this.alarmLongitude = alarmLongitude;
+ }
+
+ public String getAlarmPicture() {
+ return alarmPicture;
+ }
+
+ public void setAlarmPicture(String alarmPicture) {
+ this.alarmPicture = alarmPicture;
+ }
+
+ public String getAlarmStatus() {
+ return alarmStatus;
+ }
+
+ public void setAlarmStatus(String alarmStatus) {
+ this.alarmStatus = alarmStatus;
+ }
+
+ public Integer getAlarmThresh() {
+ return alarmThresh;
+ }
+
+ public void setAlarmThresh(Integer alarmThresh) {
+ this.alarmThresh = alarmThresh;
+ }
+
+ public String getAlarmTime() {
+ return alarmTime;
+ }
+
+ public void setAlarmTime(String alarmTime) {
+ this.alarmTime = alarmTime;
+ }
+
+ public String getAlarmType() {
+ return alarmType;
+ }
+
+ public void setAlarmType(String alarmType) {
+ this.alarmType = alarmType;
+ }
+
+ public Integer getAlarmValue() {
+ return alarmValue;
+ }
+
+ public void setAlarmValue(Integer alarmValue) {
+ this.alarmValue = alarmValue;
+ }
+
+ public String getAlarmVideo() {
+ return alarmVideo;
+ }
+
+ public void setAlarmVideo(String alarmVideo) {
+ this.alarmVideo = alarmVideo;
+ }
+
+ public String getCancelReason() {
+ return cancelReason;
+ }
+
+ public void setCancelReason(String cancelReason) {
+ this.cancelReason = cancelReason;
+ }
+
+ public String getCancelResult() {
+ return cancelResult;
+ }
+
+ public void setCancelResult(String cancelResult) {
+ this.cancelResult = cancelResult;
+ }
+
+ public String getCancelTime() {
+ return cancelTime;
+ }
+
+ public void setCancelTime(String cancelTime) {
+ this.cancelTime = cancelTime;
+ }
+
+ public String getCancelUser() {
+ return cancelUser;
+ }
+
+ public void setCancelUser(String cancelUser) {
+ this.cancelUser = cancelUser;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public String getTs() {
+ return ts;
+ }
+
+ public void setTs(String ts) {
+ this.ts = ts;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
index 8a06ac4..d65bbd2 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
@@ -203,6 +203,15 @@
): String
/**
+ * 报警图片或者视频
+ */
+ @POST("/alarm/getAlarmPath")
+ suspend fun getAlarmMedia(
+ @Header("token") token: String,
+ @Body requestBody: RequestBody
+ ): String
+
+ /**
* 根据时间获取巡检任务和公里数
*/
@POST("/system/busOverView/taskCount")
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
index d186587..c05841c 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
@@ -393,6 +393,31 @@
}
/**
+ * 报警图片或者视频
+ */
+ suspend fun getAlarmMedia(
+ alarmCode: String,
+ beginDate: String,
+ alarmStatus: String,
+ alarmType: String,
+ endDate: String,
+ taskName: String
+ ): String {
+ val param = JsonObject()
+ param.addProperty("beginDate", beginDate)
+ param.addProperty("alarmStatus", alarmStatus)
+ param.addProperty("alarmType", alarmType)
+ param.addProperty("endDate", endDate)
+ param.addProperty("taskName", taskName)
+ param.addProperty("alarmCode", alarmCode)
+
+ val requestBody = param.toString().toRequestBody(
+ "application/json;charset=UTF-8".toMediaType()
+ )
+ return api.getAlarmMedia(AuthenticationHelper.token, requestBody)
+ }
+
+ /**
* 根据时间获取巡检任务和公里数
*/
suspend fun getTaskCount(beginDate: String, endDate: String): String {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7df3629..f8a5cfe 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -58,7 +58,7 @@
android:screenOrientation="landscape" />
data;
+ private String message;
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static class DataModel {
+ private String alarmCode;
+ private String alarmContent;
+ private String alarmLatitude;
+ private String alarmLongitude;
+ private String alarmPicture;
+ private String alarmStatus;
+ private Integer alarmThresh;
+ private String alarmTime;
+ private String alarmType;
+ private Integer alarmValue;
+ private String alarmVideo;
+ private String cancelReason;
+ private String cancelResult;
+ private String cancelTime;
+ private String cancelUser;
+ private String deviceId;
+ private String id;
+ private String taskId;
+ private String ts;
+
+ public String getAlarmCode() {
+ return alarmCode;
+ }
+
+ public void setAlarmCode(String alarmCode) {
+ this.alarmCode = alarmCode;
+ }
+
+ public String getAlarmContent() {
+ return alarmContent;
+ }
+
+ public void setAlarmContent(String alarmContent) {
+ this.alarmContent = alarmContent;
+ }
+
+ public String getAlarmLatitude() {
+ return alarmLatitude;
+ }
+
+ public void setAlarmLatitude(String alarmLatitude) {
+ this.alarmLatitude = alarmLatitude;
+ }
+
+ public String getAlarmLongitude() {
+ return alarmLongitude;
+ }
+
+ public void setAlarmLongitude(String alarmLongitude) {
+ this.alarmLongitude = alarmLongitude;
+ }
+
+ public String getAlarmPicture() {
+ return alarmPicture;
+ }
+
+ public void setAlarmPicture(String alarmPicture) {
+ this.alarmPicture = alarmPicture;
+ }
+
+ public String getAlarmStatus() {
+ return alarmStatus;
+ }
+
+ public void setAlarmStatus(String alarmStatus) {
+ this.alarmStatus = alarmStatus;
+ }
+
+ public Integer getAlarmThresh() {
+ return alarmThresh;
+ }
+
+ public void setAlarmThresh(Integer alarmThresh) {
+ this.alarmThresh = alarmThresh;
+ }
+
+ public String getAlarmTime() {
+ return alarmTime;
+ }
+
+ public void setAlarmTime(String alarmTime) {
+ this.alarmTime = alarmTime;
+ }
+
+ public String getAlarmType() {
+ return alarmType;
+ }
+
+ public void setAlarmType(String alarmType) {
+ this.alarmType = alarmType;
+ }
+
+ public Integer getAlarmValue() {
+ return alarmValue;
+ }
+
+ public void setAlarmValue(Integer alarmValue) {
+ this.alarmValue = alarmValue;
+ }
+
+ public String getAlarmVideo() {
+ return alarmVideo;
+ }
+
+ public void setAlarmVideo(String alarmVideo) {
+ this.alarmVideo = alarmVideo;
+ }
+
+ public String getCancelReason() {
+ return cancelReason;
+ }
+
+ public void setCancelReason(String cancelReason) {
+ this.cancelReason = cancelReason;
+ }
+
+ public String getCancelResult() {
+ return cancelResult;
+ }
+
+ public void setCancelResult(String cancelResult) {
+ this.cancelResult = cancelResult;
+ }
+
+ public String getCancelTime() {
+ return cancelTime;
+ }
+
+ public void setCancelTime(String cancelTime) {
+ this.cancelTime = cancelTime;
+ }
+
+ public String getCancelUser() {
+ return cancelUser;
+ }
+
+ public void setCancelUser(String cancelUser) {
+ this.cancelUser = cancelUser;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public String getTs() {
+ return ts;
+ }
+
+ public void setTs(String ts) {
+ this.ts = ts;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
index 8a06ac4..d65bbd2 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
@@ -203,6 +203,15 @@
): String
/**
+ * 报警图片或者视频
+ */
+ @POST("/alarm/getAlarmPath")
+ suspend fun getAlarmMedia(
+ @Header("token") token: String,
+ @Body requestBody: RequestBody
+ ): String
+
+ /**
* 根据时间获取巡检任务和公里数
*/
@POST("/system/busOverView/taskCount")
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
index d186587..c05841c 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
@@ -393,6 +393,31 @@
}
/**
+ * 报警图片或者视频
+ */
+ suspend fun getAlarmMedia(
+ alarmCode: String,
+ beginDate: String,
+ alarmStatus: String,
+ alarmType: String,
+ endDate: String,
+ taskName: String
+ ): String {
+ val param = JsonObject()
+ param.addProperty("beginDate", beginDate)
+ param.addProperty("alarmStatus", alarmStatus)
+ param.addProperty("alarmType", alarmType)
+ param.addProperty("endDate", endDate)
+ param.addProperty("taskName", taskName)
+ param.addProperty("alarmCode", alarmCode)
+
+ val requestBody = param.toString().toRequestBody(
+ "application/json;charset=UTF-8".toMediaType()
+ )
+ return api.getAlarmMedia(AuthenticationHelper.token, requestBody)
+ }
+
+ /**
* 根据时间获取巡检任务和公里数
*/
suspend fun getTaskCount(beginDate: String, endDate: String): String {
diff --git a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
index 44e2a29..e8719ca 100644
--- a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
@@ -132,6 +132,7 @@
taskId = intent.getStringExtra(Constant.INTENT_PARAM)!!
taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
+ getTaskRouteByPage()
taskViewModel.detailResult.observe(this) {
if (it.code == 200) {
val dataRows = it.data?.rows!!
@@ -178,7 +179,11 @@
taskDetailAdapter.setOnClickedListener(object :
TaskDetailAdapter.OnClickedListener {
override fun onShowTextClicked(item: TaskDetailModel.DataModel.RowsModel) {
- navigatePageTo(item.taskId)
+ if (item.alarmCode.isNullOrEmpty()) {
+ "报警视频或图片已丢失,无法查看".show(this@TaskDetailActivity)
+ return
+ }
+ navigatePageTo(item.alarmCode)
}
})
}
@@ -189,7 +194,6 @@
override fun onResume() {
super.onResume()
swipeAction.clear()
- getTaskRouteByPage()
}
private fun getTaskRouteByPage() {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7df3629..f8a5cfe 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -58,7 +58,7 @@
android:screenOrientation="landscape" />
data;
+ private String message;
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static class DataModel {
+ private String alarmCode;
+ private String alarmContent;
+ private String alarmLatitude;
+ private String alarmLongitude;
+ private String alarmPicture;
+ private String alarmStatus;
+ private Integer alarmThresh;
+ private String alarmTime;
+ private String alarmType;
+ private Integer alarmValue;
+ private String alarmVideo;
+ private String cancelReason;
+ private String cancelResult;
+ private String cancelTime;
+ private String cancelUser;
+ private String deviceId;
+ private String id;
+ private String taskId;
+ private String ts;
+
+ public String getAlarmCode() {
+ return alarmCode;
+ }
+
+ public void setAlarmCode(String alarmCode) {
+ this.alarmCode = alarmCode;
+ }
+
+ public String getAlarmContent() {
+ return alarmContent;
+ }
+
+ public void setAlarmContent(String alarmContent) {
+ this.alarmContent = alarmContent;
+ }
+
+ public String getAlarmLatitude() {
+ return alarmLatitude;
+ }
+
+ public void setAlarmLatitude(String alarmLatitude) {
+ this.alarmLatitude = alarmLatitude;
+ }
+
+ public String getAlarmLongitude() {
+ return alarmLongitude;
+ }
+
+ public void setAlarmLongitude(String alarmLongitude) {
+ this.alarmLongitude = alarmLongitude;
+ }
+
+ public String getAlarmPicture() {
+ return alarmPicture;
+ }
+
+ public void setAlarmPicture(String alarmPicture) {
+ this.alarmPicture = alarmPicture;
+ }
+
+ public String getAlarmStatus() {
+ return alarmStatus;
+ }
+
+ public void setAlarmStatus(String alarmStatus) {
+ this.alarmStatus = alarmStatus;
+ }
+
+ public Integer getAlarmThresh() {
+ return alarmThresh;
+ }
+
+ public void setAlarmThresh(Integer alarmThresh) {
+ this.alarmThresh = alarmThresh;
+ }
+
+ public String getAlarmTime() {
+ return alarmTime;
+ }
+
+ public void setAlarmTime(String alarmTime) {
+ this.alarmTime = alarmTime;
+ }
+
+ public String getAlarmType() {
+ return alarmType;
+ }
+
+ public void setAlarmType(String alarmType) {
+ this.alarmType = alarmType;
+ }
+
+ public Integer getAlarmValue() {
+ return alarmValue;
+ }
+
+ public void setAlarmValue(Integer alarmValue) {
+ this.alarmValue = alarmValue;
+ }
+
+ public String getAlarmVideo() {
+ return alarmVideo;
+ }
+
+ public void setAlarmVideo(String alarmVideo) {
+ this.alarmVideo = alarmVideo;
+ }
+
+ public String getCancelReason() {
+ return cancelReason;
+ }
+
+ public void setCancelReason(String cancelReason) {
+ this.cancelReason = cancelReason;
+ }
+
+ public String getCancelResult() {
+ return cancelResult;
+ }
+
+ public void setCancelResult(String cancelResult) {
+ this.cancelResult = cancelResult;
+ }
+
+ public String getCancelTime() {
+ return cancelTime;
+ }
+
+ public void setCancelTime(String cancelTime) {
+ this.cancelTime = cancelTime;
+ }
+
+ public String getCancelUser() {
+ return cancelUser;
+ }
+
+ public void setCancelUser(String cancelUser) {
+ this.cancelUser = cancelUser;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public String getTs() {
+ return ts;
+ }
+
+ public void setTs(String ts) {
+ this.ts = ts;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
index 8a06ac4..d65bbd2 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
@@ -203,6 +203,15 @@
): String
/**
+ * 报警图片或者视频
+ */
+ @POST("/alarm/getAlarmPath")
+ suspend fun getAlarmMedia(
+ @Header("token") token: String,
+ @Body requestBody: RequestBody
+ ): String
+
+ /**
* 根据时间获取巡检任务和公里数
*/
@POST("/system/busOverView/taskCount")
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
index d186587..c05841c 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
@@ -393,6 +393,31 @@
}
/**
+ * 报警图片或者视频
+ */
+ suspend fun getAlarmMedia(
+ alarmCode: String,
+ beginDate: String,
+ alarmStatus: String,
+ alarmType: String,
+ endDate: String,
+ taskName: String
+ ): String {
+ val param = JsonObject()
+ param.addProperty("beginDate", beginDate)
+ param.addProperty("alarmStatus", alarmStatus)
+ param.addProperty("alarmType", alarmType)
+ param.addProperty("endDate", endDate)
+ param.addProperty("taskName", taskName)
+ param.addProperty("alarmCode", alarmCode)
+
+ val requestBody = param.toString().toRequestBody(
+ "application/json;charset=UTF-8".toMediaType()
+ )
+ return api.getAlarmMedia(AuthenticationHelper.token, requestBody)
+ }
+
+ /**
* 根据时间获取巡检任务和公里数
*/
suspend fun getTaskCount(beginDate: String, endDate: String): String {
diff --git a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
index 44e2a29..e8719ca 100644
--- a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
@@ -132,6 +132,7 @@
taskId = intent.getStringExtra(Constant.INTENT_PARAM)!!
taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
+ getTaskRouteByPage()
taskViewModel.detailResult.observe(this) {
if (it.code == 200) {
val dataRows = it.data?.rows!!
@@ -178,7 +179,11 @@
taskDetailAdapter.setOnClickedListener(object :
TaskDetailAdapter.OnClickedListener {
override fun onShowTextClicked(item: TaskDetailModel.DataModel.RowsModel) {
- navigatePageTo(item.taskId)
+ if (item.alarmCode.isNullOrEmpty()) {
+ "报警视频或图片已丢失,无法查看".show(this@TaskDetailActivity)
+ return
+ }
+ navigatePageTo(item.alarmCode)
}
})
}
@@ -189,7 +194,6 @@
override fun onResume() {
super.onResume()
swipeAction.clear()
- getTaskRouteByPage()
}
private fun getTaskRouteByPage() {
diff --git a/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt b/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt
index 9b04bb6..bed0221 100644
--- a/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt
@@ -2,17 +2,30 @@
import android.content.res.Configuration
import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.bumptech.glide.Glide
import com.casic.br.ktd.databinding.ActivityVideoPlayerBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.getScreenHeight
import com.pengxh.kt.lite.extensions.getScreenWidth
+import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.vm.LoadState
import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
import com.shuyu.gsyvideoplayer.utils.OrientationUtils
class VideoPlayerActivity : KotlinBaseActivity() {
+ private val kTag = "VideoPlayerActivity"
private lateinit var orientationUtils: OrientationUtils
+ private lateinit var alarmViewModel: AlarmViewModel
private var isPlay = false
private var isPause = false
@@ -30,7 +43,62 @@
//初始化不打开外部的旋转
orientationUtils.isEnable = false
- val taskId = intent.getStringExtra(Constant.INTENT_PARAM)
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ val alarmCode = intent.getStringExtra(Constant.INTENT_PARAM) as String
+ alarmViewModel.getAlarmMedia(alarmCode, "", "", "", "", "")
+ alarmViewModel.alarmMediaModel.observe(this) {
+ if (it.code == 200) {
+ if (it.data.isNotEmpty()) {
+ val model = it.data[0]
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.imageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+
+ val imagePath = model.alarmPicture.combineImagePath()
+ Log.d(kTag, "initOnCreate => $imagePath")
+
+ Glide.with(this).load(imagePath).into(binding.imageView)
+ } else {
+ binding.imageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true)
+ .setRotateViewAuto(false)
+ .setLockLand(false)
+ .setAutoFullWithSize(true)
+ .setShowFullAnimation(false)
+ .setNeedLockFull(true)
+ .setUrl(videoPath)
+ .setCacheWithPlay(false)
+ .setVideoTitle(model.alarmContent)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
}
override fun initViewBinding(): ActivityVideoPlayerBinding {
@@ -38,7 +106,16 @@
}
override fun observeRequestState() {
-
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
}
override fun setupTopBarLayout() {
@@ -78,11 +155,7 @@
//如果旋转了就全屏
if (isPlay && !isPause) {
binding.videoPlayerView.onConfigurationChanged(
- this,
- newConfig,
- orientationUtils,
- true,
- true
+ this, newConfig, orientationUtils, true, true
)
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7df3629..f8a5cfe 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -58,7 +58,7 @@
android:screenOrientation="landscape" />
data;
+ private String message;
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static class DataModel {
+ private String alarmCode;
+ private String alarmContent;
+ private String alarmLatitude;
+ private String alarmLongitude;
+ private String alarmPicture;
+ private String alarmStatus;
+ private Integer alarmThresh;
+ private String alarmTime;
+ private String alarmType;
+ private Integer alarmValue;
+ private String alarmVideo;
+ private String cancelReason;
+ private String cancelResult;
+ private String cancelTime;
+ private String cancelUser;
+ private String deviceId;
+ private String id;
+ private String taskId;
+ private String ts;
+
+ public String getAlarmCode() {
+ return alarmCode;
+ }
+
+ public void setAlarmCode(String alarmCode) {
+ this.alarmCode = alarmCode;
+ }
+
+ public String getAlarmContent() {
+ return alarmContent;
+ }
+
+ public void setAlarmContent(String alarmContent) {
+ this.alarmContent = alarmContent;
+ }
+
+ public String getAlarmLatitude() {
+ return alarmLatitude;
+ }
+
+ public void setAlarmLatitude(String alarmLatitude) {
+ this.alarmLatitude = alarmLatitude;
+ }
+
+ public String getAlarmLongitude() {
+ return alarmLongitude;
+ }
+
+ public void setAlarmLongitude(String alarmLongitude) {
+ this.alarmLongitude = alarmLongitude;
+ }
+
+ public String getAlarmPicture() {
+ return alarmPicture;
+ }
+
+ public void setAlarmPicture(String alarmPicture) {
+ this.alarmPicture = alarmPicture;
+ }
+
+ public String getAlarmStatus() {
+ return alarmStatus;
+ }
+
+ public void setAlarmStatus(String alarmStatus) {
+ this.alarmStatus = alarmStatus;
+ }
+
+ public Integer getAlarmThresh() {
+ return alarmThresh;
+ }
+
+ public void setAlarmThresh(Integer alarmThresh) {
+ this.alarmThresh = alarmThresh;
+ }
+
+ public String getAlarmTime() {
+ return alarmTime;
+ }
+
+ public void setAlarmTime(String alarmTime) {
+ this.alarmTime = alarmTime;
+ }
+
+ public String getAlarmType() {
+ return alarmType;
+ }
+
+ public void setAlarmType(String alarmType) {
+ this.alarmType = alarmType;
+ }
+
+ public Integer getAlarmValue() {
+ return alarmValue;
+ }
+
+ public void setAlarmValue(Integer alarmValue) {
+ this.alarmValue = alarmValue;
+ }
+
+ public String getAlarmVideo() {
+ return alarmVideo;
+ }
+
+ public void setAlarmVideo(String alarmVideo) {
+ this.alarmVideo = alarmVideo;
+ }
+
+ public String getCancelReason() {
+ return cancelReason;
+ }
+
+ public void setCancelReason(String cancelReason) {
+ this.cancelReason = cancelReason;
+ }
+
+ public String getCancelResult() {
+ return cancelResult;
+ }
+
+ public void setCancelResult(String cancelResult) {
+ this.cancelResult = cancelResult;
+ }
+
+ public String getCancelTime() {
+ return cancelTime;
+ }
+
+ public void setCancelTime(String cancelTime) {
+ this.cancelTime = cancelTime;
+ }
+
+ public String getCancelUser() {
+ return cancelUser;
+ }
+
+ public void setCancelUser(String cancelUser) {
+ this.cancelUser = cancelUser;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public String getTs() {
+ return ts;
+ }
+
+ public void setTs(String ts) {
+ this.ts = ts;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
index 8a06ac4..d65bbd2 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
@@ -203,6 +203,15 @@
): String
/**
+ * 报警图片或者视频
+ */
+ @POST("/alarm/getAlarmPath")
+ suspend fun getAlarmMedia(
+ @Header("token") token: String,
+ @Body requestBody: RequestBody
+ ): String
+
+ /**
* 根据时间获取巡检任务和公里数
*/
@POST("/system/busOverView/taskCount")
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
index d186587..c05841c 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
@@ -393,6 +393,31 @@
}
/**
+ * 报警图片或者视频
+ */
+ suspend fun getAlarmMedia(
+ alarmCode: String,
+ beginDate: String,
+ alarmStatus: String,
+ alarmType: String,
+ endDate: String,
+ taskName: String
+ ): String {
+ val param = JsonObject()
+ param.addProperty("beginDate", beginDate)
+ param.addProperty("alarmStatus", alarmStatus)
+ param.addProperty("alarmType", alarmType)
+ param.addProperty("endDate", endDate)
+ param.addProperty("taskName", taskName)
+ param.addProperty("alarmCode", alarmCode)
+
+ val requestBody = param.toString().toRequestBody(
+ "application/json;charset=UTF-8".toMediaType()
+ )
+ return api.getAlarmMedia(AuthenticationHelper.token, requestBody)
+ }
+
+ /**
* 根据时间获取巡检任务和公里数
*/
suspend fun getTaskCount(beginDate: String, endDate: String): String {
diff --git a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
index 44e2a29..e8719ca 100644
--- a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
@@ -132,6 +132,7 @@
taskId = intent.getStringExtra(Constant.INTENT_PARAM)!!
taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
+ getTaskRouteByPage()
taskViewModel.detailResult.observe(this) {
if (it.code == 200) {
val dataRows = it.data?.rows!!
@@ -178,7 +179,11 @@
taskDetailAdapter.setOnClickedListener(object :
TaskDetailAdapter.OnClickedListener {
override fun onShowTextClicked(item: TaskDetailModel.DataModel.RowsModel) {
- navigatePageTo(item.taskId)
+ if (item.alarmCode.isNullOrEmpty()) {
+ "报警视频或图片已丢失,无法查看".show(this@TaskDetailActivity)
+ return
+ }
+ navigatePageTo(item.alarmCode)
}
})
}
@@ -189,7 +194,6 @@
override fun onResume() {
super.onResume()
swipeAction.clear()
- getTaskRouteByPage()
}
private fun getTaskRouteByPage() {
diff --git a/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt b/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt
index 9b04bb6..bed0221 100644
--- a/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt
@@ -2,17 +2,30 @@
import android.content.res.Configuration
import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.bumptech.glide.Glide
import com.casic.br.ktd.databinding.ActivityVideoPlayerBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.getScreenHeight
import com.pengxh.kt.lite.extensions.getScreenWidth
+import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.vm.LoadState
import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
import com.shuyu.gsyvideoplayer.utils.OrientationUtils
class VideoPlayerActivity : KotlinBaseActivity() {
+ private val kTag = "VideoPlayerActivity"
private lateinit var orientationUtils: OrientationUtils
+ private lateinit var alarmViewModel: AlarmViewModel
private var isPlay = false
private var isPause = false
@@ -30,7 +43,62 @@
//初始化不打开外部的旋转
orientationUtils.isEnable = false
- val taskId = intent.getStringExtra(Constant.INTENT_PARAM)
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ val alarmCode = intent.getStringExtra(Constant.INTENT_PARAM) as String
+ alarmViewModel.getAlarmMedia(alarmCode, "", "", "", "", "")
+ alarmViewModel.alarmMediaModel.observe(this) {
+ if (it.code == 200) {
+ if (it.data.isNotEmpty()) {
+ val model = it.data[0]
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.imageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+
+ val imagePath = model.alarmPicture.combineImagePath()
+ Log.d(kTag, "initOnCreate => $imagePath")
+
+ Glide.with(this).load(imagePath).into(binding.imageView)
+ } else {
+ binding.imageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true)
+ .setRotateViewAuto(false)
+ .setLockLand(false)
+ .setAutoFullWithSize(true)
+ .setShowFullAnimation(false)
+ .setNeedLockFull(true)
+ .setUrl(videoPath)
+ .setCacheWithPlay(false)
+ .setVideoTitle(model.alarmContent)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
}
override fun initViewBinding(): ActivityVideoPlayerBinding {
@@ -38,7 +106,16 @@
}
override fun observeRequestState() {
-
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
}
override fun setupTopBarLayout() {
@@ -78,11 +155,7 @@
//如果旋转了就全屏
if (isPlay && !isPause) {
binding.videoPlayerView.onConfigurationChanged(
- this,
- newConfig,
- orientationUtils,
- true,
- true
+ this, newConfig, orientationUtils, true, true
)
}
}
diff --git a/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
index 757ef79..b4506a5 100644
--- a/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
+++ b/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
@@ -7,6 +7,7 @@
import com.casic.br.ktd.model.ActionResultModel
import com.casic.br.ktd.model.AlarmDetailModel
import com.casic.br.ktd.model.AlarmListModel
+import com.casic.br.ktd.model.AlarmMediaModel
import com.casic.br.ktd.model.AlarmRuleListModel
import com.casic.br.ktd.retrofit.RetrofitServiceManager
import com.casic.br.ktd.utils.LocaleConstant
@@ -29,6 +30,7 @@
val alarmList = MutableLiveData()
val alarmDetail = MutableLiveData()
val resultModel = MutableLiveData()
+ val alarmMediaModel = MutableLiveData()
fun addAlarmRule(high: String, deviceId: String, ts: String) = launch({
loadState.value = LoadState.Loading
@@ -161,4 +163,36 @@
loadState.value = LoadState.Fail
it.printStackTrace()
})
+
+ fun getAlarmMedia(
+ alarmCode: String,
+ beginDate: String,
+ alarmStatus: String,
+ alarmType: String,
+ endDate: String,
+ taskName: String
+ ) = launch({
+ loadState.value = LoadState.Loading
+ val response = RetrofitServiceManager.getAlarmMedia(
+ alarmCode,
+ beginDate,
+ alarmStatus,
+ alarmType,
+ endDate,
+ taskName
+ )
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ loadState.value = LoadState.Success
+ alarmMediaModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ loadState.value = LoadState.Fail
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ loadState.value = LoadState.Fail
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7df3629..f8a5cfe 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -58,7 +58,7 @@
android:screenOrientation="landscape" />
data;
+ private String message;
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static class DataModel {
+ private String alarmCode;
+ private String alarmContent;
+ private String alarmLatitude;
+ private String alarmLongitude;
+ private String alarmPicture;
+ private String alarmStatus;
+ private Integer alarmThresh;
+ private String alarmTime;
+ private String alarmType;
+ private Integer alarmValue;
+ private String alarmVideo;
+ private String cancelReason;
+ private String cancelResult;
+ private String cancelTime;
+ private String cancelUser;
+ private String deviceId;
+ private String id;
+ private String taskId;
+ private String ts;
+
+ public String getAlarmCode() {
+ return alarmCode;
+ }
+
+ public void setAlarmCode(String alarmCode) {
+ this.alarmCode = alarmCode;
+ }
+
+ public String getAlarmContent() {
+ return alarmContent;
+ }
+
+ public void setAlarmContent(String alarmContent) {
+ this.alarmContent = alarmContent;
+ }
+
+ public String getAlarmLatitude() {
+ return alarmLatitude;
+ }
+
+ public void setAlarmLatitude(String alarmLatitude) {
+ this.alarmLatitude = alarmLatitude;
+ }
+
+ public String getAlarmLongitude() {
+ return alarmLongitude;
+ }
+
+ public void setAlarmLongitude(String alarmLongitude) {
+ this.alarmLongitude = alarmLongitude;
+ }
+
+ public String getAlarmPicture() {
+ return alarmPicture;
+ }
+
+ public void setAlarmPicture(String alarmPicture) {
+ this.alarmPicture = alarmPicture;
+ }
+
+ public String getAlarmStatus() {
+ return alarmStatus;
+ }
+
+ public void setAlarmStatus(String alarmStatus) {
+ this.alarmStatus = alarmStatus;
+ }
+
+ public Integer getAlarmThresh() {
+ return alarmThresh;
+ }
+
+ public void setAlarmThresh(Integer alarmThresh) {
+ this.alarmThresh = alarmThresh;
+ }
+
+ public String getAlarmTime() {
+ return alarmTime;
+ }
+
+ public void setAlarmTime(String alarmTime) {
+ this.alarmTime = alarmTime;
+ }
+
+ public String getAlarmType() {
+ return alarmType;
+ }
+
+ public void setAlarmType(String alarmType) {
+ this.alarmType = alarmType;
+ }
+
+ public Integer getAlarmValue() {
+ return alarmValue;
+ }
+
+ public void setAlarmValue(Integer alarmValue) {
+ this.alarmValue = alarmValue;
+ }
+
+ public String getAlarmVideo() {
+ return alarmVideo;
+ }
+
+ public void setAlarmVideo(String alarmVideo) {
+ this.alarmVideo = alarmVideo;
+ }
+
+ public String getCancelReason() {
+ return cancelReason;
+ }
+
+ public void setCancelReason(String cancelReason) {
+ this.cancelReason = cancelReason;
+ }
+
+ public String getCancelResult() {
+ return cancelResult;
+ }
+
+ public void setCancelResult(String cancelResult) {
+ this.cancelResult = cancelResult;
+ }
+
+ public String getCancelTime() {
+ return cancelTime;
+ }
+
+ public void setCancelTime(String cancelTime) {
+ this.cancelTime = cancelTime;
+ }
+
+ public String getCancelUser() {
+ return cancelUser;
+ }
+
+ public void setCancelUser(String cancelUser) {
+ this.cancelUser = cancelUser;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public String getTs() {
+ return ts;
+ }
+
+ public void setTs(String ts) {
+ this.ts = ts;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
index 8a06ac4..d65bbd2 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
@@ -203,6 +203,15 @@
): String
/**
+ * 报警图片或者视频
+ */
+ @POST("/alarm/getAlarmPath")
+ suspend fun getAlarmMedia(
+ @Header("token") token: String,
+ @Body requestBody: RequestBody
+ ): String
+
+ /**
* 根据时间获取巡检任务和公里数
*/
@POST("/system/busOverView/taskCount")
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
index d186587..c05841c 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
@@ -393,6 +393,31 @@
}
/**
+ * 报警图片或者视频
+ */
+ suspend fun getAlarmMedia(
+ alarmCode: String,
+ beginDate: String,
+ alarmStatus: String,
+ alarmType: String,
+ endDate: String,
+ taskName: String
+ ): String {
+ val param = JsonObject()
+ param.addProperty("beginDate", beginDate)
+ param.addProperty("alarmStatus", alarmStatus)
+ param.addProperty("alarmType", alarmType)
+ param.addProperty("endDate", endDate)
+ param.addProperty("taskName", taskName)
+ param.addProperty("alarmCode", alarmCode)
+
+ val requestBody = param.toString().toRequestBody(
+ "application/json;charset=UTF-8".toMediaType()
+ )
+ return api.getAlarmMedia(AuthenticationHelper.token, requestBody)
+ }
+
+ /**
* 根据时间获取巡检任务和公里数
*/
suspend fun getTaskCount(beginDate: String, endDate: String): String {
diff --git a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
index 44e2a29..e8719ca 100644
--- a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
@@ -132,6 +132,7 @@
taskId = intent.getStringExtra(Constant.INTENT_PARAM)!!
taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
+ getTaskRouteByPage()
taskViewModel.detailResult.observe(this) {
if (it.code == 200) {
val dataRows = it.data?.rows!!
@@ -178,7 +179,11 @@
taskDetailAdapter.setOnClickedListener(object :
TaskDetailAdapter.OnClickedListener {
override fun onShowTextClicked(item: TaskDetailModel.DataModel.RowsModel) {
- navigatePageTo(item.taskId)
+ if (item.alarmCode.isNullOrEmpty()) {
+ "报警视频或图片已丢失,无法查看".show(this@TaskDetailActivity)
+ return
+ }
+ navigatePageTo(item.alarmCode)
}
})
}
@@ -189,7 +194,6 @@
override fun onResume() {
super.onResume()
swipeAction.clear()
- getTaskRouteByPage()
}
private fun getTaskRouteByPage() {
diff --git a/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt b/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt
index 9b04bb6..bed0221 100644
--- a/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt
@@ -2,17 +2,30 @@
import android.content.res.Configuration
import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.bumptech.glide.Glide
import com.casic.br.ktd.databinding.ActivityVideoPlayerBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.getScreenHeight
import com.pengxh.kt.lite.extensions.getScreenWidth
+import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.vm.LoadState
import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
import com.shuyu.gsyvideoplayer.utils.OrientationUtils
class VideoPlayerActivity : KotlinBaseActivity() {
+ private val kTag = "VideoPlayerActivity"
private lateinit var orientationUtils: OrientationUtils
+ private lateinit var alarmViewModel: AlarmViewModel
private var isPlay = false
private var isPause = false
@@ -30,7 +43,62 @@
//初始化不打开外部的旋转
orientationUtils.isEnable = false
- val taskId = intent.getStringExtra(Constant.INTENT_PARAM)
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ val alarmCode = intent.getStringExtra(Constant.INTENT_PARAM) as String
+ alarmViewModel.getAlarmMedia(alarmCode, "", "", "", "", "")
+ alarmViewModel.alarmMediaModel.observe(this) {
+ if (it.code == 200) {
+ if (it.data.isNotEmpty()) {
+ val model = it.data[0]
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.imageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+
+ val imagePath = model.alarmPicture.combineImagePath()
+ Log.d(kTag, "initOnCreate => $imagePath")
+
+ Glide.with(this).load(imagePath).into(binding.imageView)
+ } else {
+ binding.imageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true)
+ .setRotateViewAuto(false)
+ .setLockLand(false)
+ .setAutoFullWithSize(true)
+ .setShowFullAnimation(false)
+ .setNeedLockFull(true)
+ .setUrl(videoPath)
+ .setCacheWithPlay(false)
+ .setVideoTitle(model.alarmContent)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
}
override fun initViewBinding(): ActivityVideoPlayerBinding {
@@ -38,7 +106,16 @@
}
override fun observeRequestState() {
-
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
}
override fun setupTopBarLayout() {
@@ -78,11 +155,7 @@
//如果旋转了就全屏
if (isPlay && !isPause) {
binding.videoPlayerView.onConfigurationChanged(
- this,
- newConfig,
- orientationUtils,
- true,
- true
+ this, newConfig, orientationUtils, true, true
)
}
}
diff --git a/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
index 757ef79..b4506a5 100644
--- a/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
+++ b/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
@@ -7,6 +7,7 @@
import com.casic.br.ktd.model.ActionResultModel
import com.casic.br.ktd.model.AlarmDetailModel
import com.casic.br.ktd.model.AlarmListModel
+import com.casic.br.ktd.model.AlarmMediaModel
import com.casic.br.ktd.model.AlarmRuleListModel
import com.casic.br.ktd.retrofit.RetrofitServiceManager
import com.casic.br.ktd.utils.LocaleConstant
@@ -29,6 +30,7 @@
val alarmList = MutableLiveData()
val alarmDetail = MutableLiveData()
val resultModel = MutableLiveData()
+ val alarmMediaModel = MutableLiveData()
fun addAlarmRule(high: String, deviceId: String, ts: String) = launch({
loadState.value = LoadState.Loading
@@ -161,4 +163,36 @@
loadState.value = LoadState.Fail
it.printStackTrace()
})
+
+ fun getAlarmMedia(
+ alarmCode: String,
+ beginDate: String,
+ alarmStatus: String,
+ alarmType: String,
+ endDate: String,
+ taskName: String
+ ) = launch({
+ loadState.value = LoadState.Loading
+ val response = RetrofitServiceManager.getAlarmMedia(
+ alarmCode,
+ beginDate,
+ alarmStatus,
+ alarmType,
+ endDate,
+ taskName
+ )
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ loadState.value = LoadState.Success
+ alarmMediaModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ loadState.value = LoadState.Fail
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ loadState.value = LoadState.Fail
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_alarm_detail.xml b/app/src/main/res/layout/activity_alarm_detail.xml
index e24a9b0..d707aca 100644
--- a/app/src/main/res/layout/activity_alarm_detail.xml
+++ b/app/src/main/res/layout/activity_alarm_detail.xml
@@ -293,8 +293,7 @@
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7df3629..f8a5cfe 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -58,7 +58,7 @@
android:screenOrientation="landscape" />
data;
+ private String message;
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static class DataModel {
+ private String alarmCode;
+ private String alarmContent;
+ private String alarmLatitude;
+ private String alarmLongitude;
+ private String alarmPicture;
+ private String alarmStatus;
+ private Integer alarmThresh;
+ private String alarmTime;
+ private String alarmType;
+ private Integer alarmValue;
+ private String alarmVideo;
+ private String cancelReason;
+ private String cancelResult;
+ private String cancelTime;
+ private String cancelUser;
+ private String deviceId;
+ private String id;
+ private String taskId;
+ private String ts;
+
+ public String getAlarmCode() {
+ return alarmCode;
+ }
+
+ public void setAlarmCode(String alarmCode) {
+ this.alarmCode = alarmCode;
+ }
+
+ public String getAlarmContent() {
+ return alarmContent;
+ }
+
+ public void setAlarmContent(String alarmContent) {
+ this.alarmContent = alarmContent;
+ }
+
+ public String getAlarmLatitude() {
+ return alarmLatitude;
+ }
+
+ public void setAlarmLatitude(String alarmLatitude) {
+ this.alarmLatitude = alarmLatitude;
+ }
+
+ public String getAlarmLongitude() {
+ return alarmLongitude;
+ }
+
+ public void setAlarmLongitude(String alarmLongitude) {
+ this.alarmLongitude = alarmLongitude;
+ }
+
+ public String getAlarmPicture() {
+ return alarmPicture;
+ }
+
+ public void setAlarmPicture(String alarmPicture) {
+ this.alarmPicture = alarmPicture;
+ }
+
+ public String getAlarmStatus() {
+ return alarmStatus;
+ }
+
+ public void setAlarmStatus(String alarmStatus) {
+ this.alarmStatus = alarmStatus;
+ }
+
+ public Integer getAlarmThresh() {
+ return alarmThresh;
+ }
+
+ public void setAlarmThresh(Integer alarmThresh) {
+ this.alarmThresh = alarmThresh;
+ }
+
+ public String getAlarmTime() {
+ return alarmTime;
+ }
+
+ public void setAlarmTime(String alarmTime) {
+ this.alarmTime = alarmTime;
+ }
+
+ public String getAlarmType() {
+ return alarmType;
+ }
+
+ public void setAlarmType(String alarmType) {
+ this.alarmType = alarmType;
+ }
+
+ public Integer getAlarmValue() {
+ return alarmValue;
+ }
+
+ public void setAlarmValue(Integer alarmValue) {
+ this.alarmValue = alarmValue;
+ }
+
+ public String getAlarmVideo() {
+ return alarmVideo;
+ }
+
+ public void setAlarmVideo(String alarmVideo) {
+ this.alarmVideo = alarmVideo;
+ }
+
+ public String getCancelReason() {
+ return cancelReason;
+ }
+
+ public void setCancelReason(String cancelReason) {
+ this.cancelReason = cancelReason;
+ }
+
+ public String getCancelResult() {
+ return cancelResult;
+ }
+
+ public void setCancelResult(String cancelResult) {
+ this.cancelResult = cancelResult;
+ }
+
+ public String getCancelTime() {
+ return cancelTime;
+ }
+
+ public void setCancelTime(String cancelTime) {
+ this.cancelTime = cancelTime;
+ }
+
+ public String getCancelUser() {
+ return cancelUser;
+ }
+
+ public void setCancelUser(String cancelUser) {
+ this.cancelUser = cancelUser;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public String getTs() {
+ return ts;
+ }
+
+ public void setTs(String ts) {
+ this.ts = ts;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
index 8a06ac4..d65bbd2 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
@@ -203,6 +203,15 @@
): String
/**
+ * 报警图片或者视频
+ */
+ @POST("/alarm/getAlarmPath")
+ suspend fun getAlarmMedia(
+ @Header("token") token: String,
+ @Body requestBody: RequestBody
+ ): String
+
+ /**
* 根据时间获取巡检任务和公里数
*/
@POST("/system/busOverView/taskCount")
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
index d186587..c05841c 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
@@ -393,6 +393,31 @@
}
/**
+ * 报警图片或者视频
+ */
+ suspend fun getAlarmMedia(
+ alarmCode: String,
+ beginDate: String,
+ alarmStatus: String,
+ alarmType: String,
+ endDate: String,
+ taskName: String
+ ): String {
+ val param = JsonObject()
+ param.addProperty("beginDate", beginDate)
+ param.addProperty("alarmStatus", alarmStatus)
+ param.addProperty("alarmType", alarmType)
+ param.addProperty("endDate", endDate)
+ param.addProperty("taskName", taskName)
+ param.addProperty("alarmCode", alarmCode)
+
+ val requestBody = param.toString().toRequestBody(
+ "application/json;charset=UTF-8".toMediaType()
+ )
+ return api.getAlarmMedia(AuthenticationHelper.token, requestBody)
+ }
+
+ /**
* 根据时间获取巡检任务和公里数
*/
suspend fun getTaskCount(beginDate: String, endDate: String): String {
diff --git a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
index 44e2a29..e8719ca 100644
--- a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
@@ -132,6 +132,7 @@
taskId = intent.getStringExtra(Constant.INTENT_PARAM)!!
taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
+ getTaskRouteByPage()
taskViewModel.detailResult.observe(this) {
if (it.code == 200) {
val dataRows = it.data?.rows!!
@@ -178,7 +179,11 @@
taskDetailAdapter.setOnClickedListener(object :
TaskDetailAdapter.OnClickedListener {
override fun onShowTextClicked(item: TaskDetailModel.DataModel.RowsModel) {
- navigatePageTo(item.taskId)
+ if (item.alarmCode.isNullOrEmpty()) {
+ "报警视频或图片已丢失,无法查看".show(this@TaskDetailActivity)
+ return
+ }
+ navigatePageTo(item.alarmCode)
}
})
}
@@ -189,7 +194,6 @@
override fun onResume() {
super.onResume()
swipeAction.clear()
- getTaskRouteByPage()
}
private fun getTaskRouteByPage() {
diff --git a/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt b/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt
index 9b04bb6..bed0221 100644
--- a/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt
@@ -2,17 +2,30 @@
import android.content.res.Configuration
import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.bumptech.glide.Glide
import com.casic.br.ktd.databinding.ActivityVideoPlayerBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.getScreenHeight
import com.pengxh.kt.lite.extensions.getScreenWidth
+import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.vm.LoadState
import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
import com.shuyu.gsyvideoplayer.utils.OrientationUtils
class VideoPlayerActivity : KotlinBaseActivity() {
+ private val kTag = "VideoPlayerActivity"
private lateinit var orientationUtils: OrientationUtils
+ private lateinit var alarmViewModel: AlarmViewModel
private var isPlay = false
private var isPause = false
@@ -30,7 +43,62 @@
//初始化不打开外部的旋转
orientationUtils.isEnable = false
- val taskId = intent.getStringExtra(Constant.INTENT_PARAM)
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ val alarmCode = intent.getStringExtra(Constant.INTENT_PARAM) as String
+ alarmViewModel.getAlarmMedia(alarmCode, "", "", "", "", "")
+ alarmViewModel.alarmMediaModel.observe(this) {
+ if (it.code == 200) {
+ if (it.data.isNotEmpty()) {
+ val model = it.data[0]
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.imageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+
+ val imagePath = model.alarmPicture.combineImagePath()
+ Log.d(kTag, "initOnCreate => $imagePath")
+
+ Glide.with(this).load(imagePath).into(binding.imageView)
+ } else {
+ binding.imageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true)
+ .setRotateViewAuto(false)
+ .setLockLand(false)
+ .setAutoFullWithSize(true)
+ .setShowFullAnimation(false)
+ .setNeedLockFull(true)
+ .setUrl(videoPath)
+ .setCacheWithPlay(false)
+ .setVideoTitle(model.alarmContent)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
}
override fun initViewBinding(): ActivityVideoPlayerBinding {
@@ -38,7 +106,16 @@
}
override fun observeRequestState() {
-
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
}
override fun setupTopBarLayout() {
@@ -78,11 +155,7 @@
//如果旋转了就全屏
if (isPlay && !isPause) {
binding.videoPlayerView.onConfigurationChanged(
- this,
- newConfig,
- orientationUtils,
- true,
- true
+ this, newConfig, orientationUtils, true, true
)
}
}
diff --git a/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
index 757ef79..b4506a5 100644
--- a/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
+++ b/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
@@ -7,6 +7,7 @@
import com.casic.br.ktd.model.ActionResultModel
import com.casic.br.ktd.model.AlarmDetailModel
import com.casic.br.ktd.model.AlarmListModel
+import com.casic.br.ktd.model.AlarmMediaModel
import com.casic.br.ktd.model.AlarmRuleListModel
import com.casic.br.ktd.retrofit.RetrofitServiceManager
import com.casic.br.ktd.utils.LocaleConstant
@@ -29,6 +30,7 @@
val alarmList = MutableLiveData()
val alarmDetail = MutableLiveData()
val resultModel = MutableLiveData()
+ val alarmMediaModel = MutableLiveData()
fun addAlarmRule(high: String, deviceId: String, ts: String) = launch({
loadState.value = LoadState.Loading
@@ -161,4 +163,36 @@
loadState.value = LoadState.Fail
it.printStackTrace()
})
+
+ fun getAlarmMedia(
+ alarmCode: String,
+ beginDate: String,
+ alarmStatus: String,
+ alarmType: String,
+ endDate: String,
+ taskName: String
+ ) = launch({
+ loadState.value = LoadState.Loading
+ val response = RetrofitServiceManager.getAlarmMedia(
+ alarmCode,
+ beginDate,
+ alarmStatus,
+ alarmType,
+ endDate,
+ taskName
+ )
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ loadState.value = LoadState.Success
+ alarmMediaModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ loadState.value = LoadState.Fail
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ loadState.value = LoadState.Fail
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_alarm_detail.xml b/app/src/main/res/layout/activity_alarm_detail.xml
index e24a9b0..d707aca 100644
--- a/app/src/main/res/layout/activity_alarm_detail.xml
+++ b/app/src/main/res/layout/activity_alarm_detail.xml
@@ -293,8 +293,7 @@
diff --git a/app/src/main/res/layout/activity_video_player.xml b/app/src/main/res/layout/activity_video_player.xml
index c33aa1c..70f2a39 100644
--- a/app/src/main/res/layout/activity_video_player.xml
+++ b/app/src/main/res/layout/activity_video_player.xml
@@ -4,7 +4,7 @@
android:layout_height="match_parent">
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7df3629..f8a5cfe 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -58,7 +58,7 @@
android:screenOrientation="landscape" />
data;
+ private String message;
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static class DataModel {
+ private String alarmCode;
+ private String alarmContent;
+ private String alarmLatitude;
+ private String alarmLongitude;
+ private String alarmPicture;
+ private String alarmStatus;
+ private Integer alarmThresh;
+ private String alarmTime;
+ private String alarmType;
+ private Integer alarmValue;
+ private String alarmVideo;
+ private String cancelReason;
+ private String cancelResult;
+ private String cancelTime;
+ private String cancelUser;
+ private String deviceId;
+ private String id;
+ private String taskId;
+ private String ts;
+
+ public String getAlarmCode() {
+ return alarmCode;
+ }
+
+ public void setAlarmCode(String alarmCode) {
+ this.alarmCode = alarmCode;
+ }
+
+ public String getAlarmContent() {
+ return alarmContent;
+ }
+
+ public void setAlarmContent(String alarmContent) {
+ this.alarmContent = alarmContent;
+ }
+
+ public String getAlarmLatitude() {
+ return alarmLatitude;
+ }
+
+ public void setAlarmLatitude(String alarmLatitude) {
+ this.alarmLatitude = alarmLatitude;
+ }
+
+ public String getAlarmLongitude() {
+ return alarmLongitude;
+ }
+
+ public void setAlarmLongitude(String alarmLongitude) {
+ this.alarmLongitude = alarmLongitude;
+ }
+
+ public String getAlarmPicture() {
+ return alarmPicture;
+ }
+
+ public void setAlarmPicture(String alarmPicture) {
+ this.alarmPicture = alarmPicture;
+ }
+
+ public String getAlarmStatus() {
+ return alarmStatus;
+ }
+
+ public void setAlarmStatus(String alarmStatus) {
+ this.alarmStatus = alarmStatus;
+ }
+
+ public Integer getAlarmThresh() {
+ return alarmThresh;
+ }
+
+ public void setAlarmThresh(Integer alarmThresh) {
+ this.alarmThresh = alarmThresh;
+ }
+
+ public String getAlarmTime() {
+ return alarmTime;
+ }
+
+ public void setAlarmTime(String alarmTime) {
+ this.alarmTime = alarmTime;
+ }
+
+ public String getAlarmType() {
+ return alarmType;
+ }
+
+ public void setAlarmType(String alarmType) {
+ this.alarmType = alarmType;
+ }
+
+ public Integer getAlarmValue() {
+ return alarmValue;
+ }
+
+ public void setAlarmValue(Integer alarmValue) {
+ this.alarmValue = alarmValue;
+ }
+
+ public String getAlarmVideo() {
+ return alarmVideo;
+ }
+
+ public void setAlarmVideo(String alarmVideo) {
+ this.alarmVideo = alarmVideo;
+ }
+
+ public String getCancelReason() {
+ return cancelReason;
+ }
+
+ public void setCancelReason(String cancelReason) {
+ this.cancelReason = cancelReason;
+ }
+
+ public String getCancelResult() {
+ return cancelResult;
+ }
+
+ public void setCancelResult(String cancelResult) {
+ this.cancelResult = cancelResult;
+ }
+
+ public String getCancelTime() {
+ return cancelTime;
+ }
+
+ public void setCancelTime(String cancelTime) {
+ this.cancelTime = cancelTime;
+ }
+
+ public String getCancelUser() {
+ return cancelUser;
+ }
+
+ public void setCancelUser(String cancelUser) {
+ this.cancelUser = cancelUser;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public String getTs() {
+ return ts;
+ }
+
+ public void setTs(String ts) {
+ this.ts = ts;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
index 8a06ac4..d65bbd2 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
@@ -203,6 +203,15 @@
): String
/**
+ * 报警图片或者视频
+ */
+ @POST("/alarm/getAlarmPath")
+ suspend fun getAlarmMedia(
+ @Header("token") token: String,
+ @Body requestBody: RequestBody
+ ): String
+
+ /**
* 根据时间获取巡检任务和公里数
*/
@POST("/system/busOverView/taskCount")
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
index d186587..c05841c 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
@@ -393,6 +393,31 @@
}
/**
+ * 报警图片或者视频
+ */
+ suspend fun getAlarmMedia(
+ alarmCode: String,
+ beginDate: String,
+ alarmStatus: String,
+ alarmType: String,
+ endDate: String,
+ taskName: String
+ ): String {
+ val param = JsonObject()
+ param.addProperty("beginDate", beginDate)
+ param.addProperty("alarmStatus", alarmStatus)
+ param.addProperty("alarmType", alarmType)
+ param.addProperty("endDate", endDate)
+ param.addProperty("taskName", taskName)
+ param.addProperty("alarmCode", alarmCode)
+
+ val requestBody = param.toString().toRequestBody(
+ "application/json;charset=UTF-8".toMediaType()
+ )
+ return api.getAlarmMedia(AuthenticationHelper.token, requestBody)
+ }
+
+ /**
* 根据时间获取巡检任务和公里数
*/
suspend fun getTaskCount(beginDate: String, endDate: String): String {
diff --git a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
index 44e2a29..e8719ca 100644
--- a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
@@ -132,6 +132,7 @@
taskId = intent.getStringExtra(Constant.INTENT_PARAM)!!
taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
+ getTaskRouteByPage()
taskViewModel.detailResult.observe(this) {
if (it.code == 200) {
val dataRows = it.data?.rows!!
@@ -178,7 +179,11 @@
taskDetailAdapter.setOnClickedListener(object :
TaskDetailAdapter.OnClickedListener {
override fun onShowTextClicked(item: TaskDetailModel.DataModel.RowsModel) {
- navigatePageTo(item.taskId)
+ if (item.alarmCode.isNullOrEmpty()) {
+ "报警视频或图片已丢失,无法查看".show(this@TaskDetailActivity)
+ return
+ }
+ navigatePageTo(item.alarmCode)
}
})
}
@@ -189,7 +194,6 @@
override fun onResume() {
super.onResume()
swipeAction.clear()
- getTaskRouteByPage()
}
private fun getTaskRouteByPage() {
diff --git a/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt b/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt
index 9b04bb6..bed0221 100644
--- a/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt
@@ -2,17 +2,30 @@
import android.content.res.Configuration
import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.bumptech.glide.Glide
import com.casic.br.ktd.databinding.ActivityVideoPlayerBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.getScreenHeight
import com.pengxh.kt.lite.extensions.getScreenWidth
+import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.vm.LoadState
import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
import com.shuyu.gsyvideoplayer.utils.OrientationUtils
class VideoPlayerActivity : KotlinBaseActivity() {
+ private val kTag = "VideoPlayerActivity"
private lateinit var orientationUtils: OrientationUtils
+ private lateinit var alarmViewModel: AlarmViewModel
private var isPlay = false
private var isPause = false
@@ -30,7 +43,62 @@
//初始化不打开外部的旋转
orientationUtils.isEnable = false
- val taskId = intent.getStringExtra(Constant.INTENT_PARAM)
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ val alarmCode = intent.getStringExtra(Constant.INTENT_PARAM) as String
+ alarmViewModel.getAlarmMedia(alarmCode, "", "", "", "", "")
+ alarmViewModel.alarmMediaModel.observe(this) {
+ if (it.code == 200) {
+ if (it.data.isNotEmpty()) {
+ val model = it.data[0]
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.imageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+
+ val imagePath = model.alarmPicture.combineImagePath()
+ Log.d(kTag, "initOnCreate => $imagePath")
+
+ Glide.with(this).load(imagePath).into(binding.imageView)
+ } else {
+ binding.imageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true)
+ .setRotateViewAuto(false)
+ .setLockLand(false)
+ .setAutoFullWithSize(true)
+ .setShowFullAnimation(false)
+ .setNeedLockFull(true)
+ .setUrl(videoPath)
+ .setCacheWithPlay(false)
+ .setVideoTitle(model.alarmContent)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
}
override fun initViewBinding(): ActivityVideoPlayerBinding {
@@ -38,7 +106,16 @@
}
override fun observeRequestState() {
-
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
}
override fun setupTopBarLayout() {
@@ -78,11 +155,7 @@
//如果旋转了就全屏
if (isPlay && !isPause) {
binding.videoPlayerView.onConfigurationChanged(
- this,
- newConfig,
- orientationUtils,
- true,
- true
+ this, newConfig, orientationUtils, true, true
)
}
}
diff --git a/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
index 757ef79..b4506a5 100644
--- a/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
+++ b/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
@@ -7,6 +7,7 @@
import com.casic.br.ktd.model.ActionResultModel
import com.casic.br.ktd.model.AlarmDetailModel
import com.casic.br.ktd.model.AlarmListModel
+import com.casic.br.ktd.model.AlarmMediaModel
import com.casic.br.ktd.model.AlarmRuleListModel
import com.casic.br.ktd.retrofit.RetrofitServiceManager
import com.casic.br.ktd.utils.LocaleConstant
@@ -29,6 +30,7 @@
val alarmList = MutableLiveData()
val alarmDetail = MutableLiveData()
val resultModel = MutableLiveData()
+ val alarmMediaModel = MutableLiveData()
fun addAlarmRule(high: String, deviceId: String, ts: String) = launch({
loadState.value = LoadState.Loading
@@ -161,4 +163,36 @@
loadState.value = LoadState.Fail
it.printStackTrace()
})
+
+ fun getAlarmMedia(
+ alarmCode: String,
+ beginDate: String,
+ alarmStatus: String,
+ alarmType: String,
+ endDate: String,
+ taskName: String
+ ) = launch({
+ loadState.value = LoadState.Loading
+ val response = RetrofitServiceManager.getAlarmMedia(
+ alarmCode,
+ beginDate,
+ alarmStatus,
+ alarmType,
+ endDate,
+ taskName
+ )
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ loadState.value = LoadState.Success
+ alarmMediaModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ loadState.value = LoadState.Fail
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ loadState.value = LoadState.Fail
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_alarm_detail.xml b/app/src/main/res/layout/activity_alarm_detail.xml
index e24a9b0..d707aca 100644
--- a/app/src/main/res/layout/activity_alarm_detail.xml
+++ b/app/src/main/res/layout/activity_alarm_detail.xml
@@ -293,8 +293,7 @@
diff --git a/app/src/main/res/layout/activity_video_player.xml b/app/src/main/res/layout/activity_video_player.xml
index c33aa1c..70f2a39 100644
--- a/app/src/main/res/layout/activity_video_player.xml
+++ b/app/src/main/res/layout/activity_video_player.xml
@@ -4,7 +4,7 @@
android:layout_height="match_parent">
diff --git a/app/src/main/res/layout/item_task_detail_rv_l.xml b/app/src/main/res/layout/item_task_detail_rv_l.xml
index 05f93fb..a762bf8 100644
--- a/app/src/main/res/layout/item_task_detail_rv_l.xml
+++ b/app/src/main/res/layout/item_task_detail_rv_l.xml
@@ -89,7 +89,7 @@
android:layout_weight="1"
android:fontFamily="@font/fzzdhjt"
android:gravity="center"
- android:text="回放"
+ android:text="查看"
android:textColor="@color/blue"
android:textSize="@dimen/sp_16" />
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7df3629..f8a5cfe 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -58,7 +58,7 @@
android:screenOrientation="landscape" />
data;
+ private String message;
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static class DataModel {
+ private String alarmCode;
+ private String alarmContent;
+ private String alarmLatitude;
+ private String alarmLongitude;
+ private String alarmPicture;
+ private String alarmStatus;
+ private Integer alarmThresh;
+ private String alarmTime;
+ private String alarmType;
+ private Integer alarmValue;
+ private String alarmVideo;
+ private String cancelReason;
+ private String cancelResult;
+ private String cancelTime;
+ private String cancelUser;
+ private String deviceId;
+ private String id;
+ private String taskId;
+ private String ts;
+
+ public String getAlarmCode() {
+ return alarmCode;
+ }
+
+ public void setAlarmCode(String alarmCode) {
+ this.alarmCode = alarmCode;
+ }
+
+ public String getAlarmContent() {
+ return alarmContent;
+ }
+
+ public void setAlarmContent(String alarmContent) {
+ this.alarmContent = alarmContent;
+ }
+
+ public String getAlarmLatitude() {
+ return alarmLatitude;
+ }
+
+ public void setAlarmLatitude(String alarmLatitude) {
+ this.alarmLatitude = alarmLatitude;
+ }
+
+ public String getAlarmLongitude() {
+ return alarmLongitude;
+ }
+
+ public void setAlarmLongitude(String alarmLongitude) {
+ this.alarmLongitude = alarmLongitude;
+ }
+
+ public String getAlarmPicture() {
+ return alarmPicture;
+ }
+
+ public void setAlarmPicture(String alarmPicture) {
+ this.alarmPicture = alarmPicture;
+ }
+
+ public String getAlarmStatus() {
+ return alarmStatus;
+ }
+
+ public void setAlarmStatus(String alarmStatus) {
+ this.alarmStatus = alarmStatus;
+ }
+
+ public Integer getAlarmThresh() {
+ return alarmThresh;
+ }
+
+ public void setAlarmThresh(Integer alarmThresh) {
+ this.alarmThresh = alarmThresh;
+ }
+
+ public String getAlarmTime() {
+ return alarmTime;
+ }
+
+ public void setAlarmTime(String alarmTime) {
+ this.alarmTime = alarmTime;
+ }
+
+ public String getAlarmType() {
+ return alarmType;
+ }
+
+ public void setAlarmType(String alarmType) {
+ this.alarmType = alarmType;
+ }
+
+ public Integer getAlarmValue() {
+ return alarmValue;
+ }
+
+ public void setAlarmValue(Integer alarmValue) {
+ this.alarmValue = alarmValue;
+ }
+
+ public String getAlarmVideo() {
+ return alarmVideo;
+ }
+
+ public void setAlarmVideo(String alarmVideo) {
+ this.alarmVideo = alarmVideo;
+ }
+
+ public String getCancelReason() {
+ return cancelReason;
+ }
+
+ public void setCancelReason(String cancelReason) {
+ this.cancelReason = cancelReason;
+ }
+
+ public String getCancelResult() {
+ return cancelResult;
+ }
+
+ public void setCancelResult(String cancelResult) {
+ this.cancelResult = cancelResult;
+ }
+
+ public String getCancelTime() {
+ return cancelTime;
+ }
+
+ public void setCancelTime(String cancelTime) {
+ this.cancelTime = cancelTime;
+ }
+
+ public String getCancelUser() {
+ return cancelUser;
+ }
+
+ public void setCancelUser(String cancelUser) {
+ this.cancelUser = cancelUser;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public String getTs() {
+ return ts;
+ }
+
+ public void setTs(String ts) {
+ this.ts = ts;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
index 8a06ac4..d65bbd2 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt
@@ -203,6 +203,15 @@
): String
/**
+ * 报警图片或者视频
+ */
+ @POST("/alarm/getAlarmPath")
+ suspend fun getAlarmMedia(
+ @Header("token") token: String,
+ @Body requestBody: RequestBody
+ ): String
+
+ /**
* 根据时间获取巡检任务和公里数
*/
@POST("/system/busOverView/taskCount")
diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
index d186587..c05841c 100644
--- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt
@@ -393,6 +393,31 @@
}
/**
+ * 报警图片或者视频
+ */
+ suspend fun getAlarmMedia(
+ alarmCode: String,
+ beginDate: String,
+ alarmStatus: String,
+ alarmType: String,
+ endDate: String,
+ taskName: String
+ ): String {
+ val param = JsonObject()
+ param.addProperty("beginDate", beginDate)
+ param.addProperty("alarmStatus", alarmStatus)
+ param.addProperty("alarmType", alarmType)
+ param.addProperty("endDate", endDate)
+ param.addProperty("taskName", taskName)
+ param.addProperty("alarmCode", alarmCode)
+
+ val requestBody = param.toString().toRequestBody(
+ "application/json;charset=UTF-8".toMediaType()
+ )
+ return api.getAlarmMedia(AuthenticationHelper.token, requestBody)
+ }
+
+ /**
* 根据时间获取巡检任务和公里数
*/
suspend fun getTaskCount(beginDate: String, endDate: String): String {
diff --git a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
index 44e2a29..e8719ca 100644
--- a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
@@ -132,6 +132,7 @@
taskId = intent.getStringExtra(Constant.INTENT_PARAM)!!
taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
+ getTaskRouteByPage()
taskViewModel.detailResult.observe(this) {
if (it.code == 200) {
val dataRows = it.data?.rows!!
@@ -178,7 +179,11 @@
taskDetailAdapter.setOnClickedListener(object :
TaskDetailAdapter.OnClickedListener {
override fun onShowTextClicked(item: TaskDetailModel.DataModel.RowsModel) {
- navigatePageTo(item.taskId)
+ if (item.alarmCode.isNullOrEmpty()) {
+ "报警视频或图片已丢失,无法查看".show(this@TaskDetailActivity)
+ return
+ }
+ navigatePageTo(item.alarmCode)
}
})
}
@@ -189,7 +194,6 @@
override fun onResume() {
super.onResume()
swipeAction.clear()
- getTaskRouteByPage()
}
private fun getTaskRouteByPage() {
diff --git a/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt b/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt
index 9b04bb6..bed0221 100644
--- a/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt
+++ b/app/src/main/java/com/casic/br/ktd/view/VideoPlayerActivity.kt
@@ -2,17 +2,30 @@
import android.content.res.Configuration
import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.bumptech.glide.Glide
import com.casic.br.ktd.databinding.ActivityVideoPlayerBinding
+import com.casic.br.ktd.extensions.combineImagePath
+import com.casic.br.ktd.utils.LoadingDialogHub
+import com.casic.br.ktd.vm.AlarmViewModel
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.getScreenHeight
import com.pengxh.kt.lite.extensions.getScreenWidth
+import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.vm.LoadState
import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
import com.shuyu.gsyvideoplayer.utils.OrientationUtils
class VideoPlayerActivity : KotlinBaseActivity() {
+ private val kTag = "VideoPlayerActivity"
private lateinit var orientationUtils: OrientationUtils
+ private lateinit var alarmViewModel: AlarmViewModel
private var isPlay = false
private var isPause = false
@@ -30,7 +43,62 @@
//初始化不打开外部的旋转
orientationUtils.isEnable = false
- val taskId = intent.getStringExtra(Constant.INTENT_PARAM)
+ alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java]
+ val alarmCode = intent.getStringExtra(Constant.INTENT_PARAM) as String
+ alarmViewModel.getAlarmMedia(alarmCode, "", "", "", "", "")
+ alarmViewModel.alarmMediaModel.observe(this) {
+ if (it.code == 200) {
+ if (it.data.isNotEmpty()) {
+ val model = it.data[0]
+ if (model.alarmVideo.isNullOrEmpty()) {
+ binding.imageView.visibility = View.VISIBLE
+ binding.videoPlayerView.visibility = View.GONE
+
+ val imagePath = model.alarmPicture.combineImagePath()
+ Log.d(kTag, "initOnCreate => $imagePath")
+
+ Glide.with(this).load(imagePath).into(binding.imageView)
+ } else {
+ binding.imageView.visibility = View.GONE
+ binding.videoPlayerView.visibility = View.VISIBLE
+
+ val videoPath = model.alarmVideo.combineImagePath()
+ Log.d(kTag, "initOnCreate => $videoPath")
+
+ val videoOption = GSYVideoOptionBuilder()
+ videoOption.setIsTouchWiget(true)
+ .setRotateViewAuto(false)
+ .setLockLand(false)
+ .setAutoFullWithSize(true)
+ .setShowFullAnimation(false)
+ .setNeedLockFull(true)
+ .setUrl(videoPath)
+ .setCacheWithPlay(false)
+ .setVideoTitle(model.alarmContent)
+ .setVideoAllCallBack(object : GSYSampleCallBack() {
+ override fun onPrepared(url: String, vararg objects: Any) {
+ super.onPrepared(url, *objects)
+ //开始播放了才能旋转和全屏
+ orientationUtils.isEnable = true
+ isPlay = true
+ }
+
+ override fun onQuitFullscreen(url: String, vararg objects: Any) {
+ super.onQuitFullscreen(url, *objects)
+ orientationUtils.backToProtVideo()
+ }
+ }).setLockClickListener { _, lock ->
+ orientationUtils.isEnable = !lock
+ }.build(binding.videoPlayerView)
+ binding.videoPlayerView.fullscreenButton.setOnClickListener {
+ //直接横屏
+ orientationUtils.resolveByClick()
+ binding.videoPlayerView.startWindowFullscreen(this, true, true)
+ }
+ }
+ }
+ }
+ }
}
override fun initViewBinding(): ActivityVideoPlayerBinding {
@@ -38,7 +106,16 @@
}
override fun observeRequestState() {
-
+ alarmViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...")
+ LoadState.Success -> LoadingDialogHub.dismiss()
+ else -> {
+ LoadingDialogHub.dismiss()
+ "数据加载失败,请重新操作".show(this)
+ }
+ }
+ }
}
override fun setupTopBarLayout() {
@@ -78,11 +155,7 @@
//如果旋转了就全屏
if (isPlay && !isPause) {
binding.videoPlayerView.onConfigurationChanged(
- this,
- newConfig,
- orientationUtils,
- true,
- true
+ this, newConfig, orientationUtils, true, true
)
}
}
diff --git a/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
index 757ef79..b4506a5 100644
--- a/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
+++ b/app/src/main/java/com/casic/br/ktd/vm/AlarmViewModel.kt
@@ -7,6 +7,7 @@
import com.casic.br.ktd.model.ActionResultModel
import com.casic.br.ktd.model.AlarmDetailModel
import com.casic.br.ktd.model.AlarmListModel
+import com.casic.br.ktd.model.AlarmMediaModel
import com.casic.br.ktd.model.AlarmRuleListModel
import com.casic.br.ktd.retrofit.RetrofitServiceManager
import com.casic.br.ktd.utils.LocaleConstant
@@ -29,6 +30,7 @@
val alarmList = MutableLiveData()
val alarmDetail = MutableLiveData()
val resultModel = MutableLiveData()
+ val alarmMediaModel = MutableLiveData()
fun addAlarmRule(high: String, deviceId: String, ts: String) = launch({
loadState.value = LoadState.Loading
@@ -161,4 +163,36 @@
loadState.value = LoadState.Fail
it.printStackTrace()
})
+
+ fun getAlarmMedia(
+ alarmCode: String,
+ beginDate: String,
+ alarmStatus: String,
+ alarmType: String,
+ endDate: String,
+ taskName: String
+ ) = launch({
+ loadState.value = LoadState.Loading
+ val response = RetrofitServiceManager.getAlarmMedia(
+ alarmCode,
+ beginDate,
+ alarmStatus,
+ alarmType,
+ endDate,
+ taskName
+ )
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ loadState.value = LoadState.Success
+ alarmMediaModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ loadState.value = LoadState.Fail
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ loadState.value = LoadState.Fail
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_alarm_detail.xml b/app/src/main/res/layout/activity_alarm_detail.xml
index e24a9b0..d707aca 100644
--- a/app/src/main/res/layout/activity_alarm_detail.xml
+++ b/app/src/main/res/layout/activity_alarm_detail.xml
@@ -293,8 +293,7 @@
diff --git a/app/src/main/res/layout/activity_video_player.xml b/app/src/main/res/layout/activity_video_player.xml
index c33aa1c..70f2a39 100644
--- a/app/src/main/res/layout/activity_video_player.xml
+++ b/app/src/main/res/layout/activity_video_player.xml
@@ -4,7 +4,7 @@
android:layout_height="match_parent">
diff --git a/app/src/main/res/layout/item_task_detail_rv_l.xml b/app/src/main/res/layout/item_task_detail_rv_l.xml
index 05f93fb..a762bf8 100644
--- a/app/src/main/res/layout/item_task_detail_rv_l.xml
+++ b/app/src/main/res/layout/item_task_detail_rv_l.xml
@@ -89,7 +89,7 @@
android:layout_weight="1"
android:fontFamily="@font/fzzdhjt"
android:gravity="center"
- android:text="回放"
+ android:text="查看"
android:textColor="@color/blue"
android:textSize="@dimen/sp_16" />
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 06ee556..2c58d6f 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -50,4 +50,23 @@
- @color/hintColor
- @dimen/sp_18
+
+
\ No newline at end of file