diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 60826c9..0d76a8e 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -183,20 +183,9 @@ /** * 获取指导视频 */ - suspend fun getGuideVideoByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getGuideVideoByPage(keywords: String, classId: String, offset: Int): String { return api.getGuideVideoByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, keywords, classId, offset, LocaleConstant.PAGE_LIMIT ) } diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 60826c9..0d76a8e 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -183,20 +183,9 @@ /** * 获取指导视频 */ - suspend fun getGuideVideoByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getGuideVideoByPage(keywords: String, classId: String, offset: Int): String { return api.getGuideVideoByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, keywords, classId, offset, LocaleConstant.PAGE_LIMIT ) } diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index 88c69eb..3b49732 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -58,9 +58,4 @@ const val SERVER_BASE_URL = "http://111.198.10.15:22003" const val AI_SERVER_CONFIG = "aiServerConfig" const val AI_BASE_URL = "http://192.168.186.127:5000" - - /** - * Array - * */ - val SUB_PAGE_TITLES = arrayOf("配电箱检查清单", "隐患列表") } \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 60826c9..0d76a8e 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -183,20 +183,9 @@ /** * 获取指导视频 */ - suspend fun getGuideVideoByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getGuideVideoByPage(keywords: String, classId: String, offset: Int): String { return api.getGuideVideoByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, keywords, classId, offset, LocaleConstant.PAGE_LIMIT ) } diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index 88c69eb..3b49732 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -58,9 +58,4 @@ const val SERVER_BASE_URL = "http://111.198.10.15:22003" const val AI_SERVER_CONFIG = "aiServerConfig" const val AI_BASE_URL = "http://192.168.186.127:5000" - - /** - * Array - * */ - val SUB_PAGE_TITLES = arrayOf("配电箱检查清单", "隐患列表") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt index 02e4998..7959a06 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt @@ -52,7 +52,7 @@ override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { - scene = resources.getStringArray(R.array.type_data)[position] +// scene = resources.getStringArray(R.array.type_data)[position] } override fun onNothingSelected(parent: AdapterView<*>?) { @@ -80,6 +80,10 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) + + + + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] getCheckManifestByPage() checkManifestViewModel.manifestResult.observe(this) { diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 60826c9..0d76a8e 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -183,20 +183,9 @@ /** * 获取指导视频 */ - suspend fun getGuideVideoByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getGuideVideoByPage(keywords: String, classId: String, offset: Int): String { return api.getGuideVideoByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, keywords, classId, offset, LocaleConstant.PAGE_LIMIT ) } diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index 88c69eb..3b49732 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -58,9 +58,4 @@ const val SERVER_BASE_URL = "http://111.198.10.15:22003" const val AI_SERVER_CONFIG = "aiServerConfig" const val AI_BASE_URL = "http://192.168.186.127:5000" - - /** - * Array - * */ - val SUB_PAGE_TITLES = arrayOf("配电箱检查清单", "隐患列表") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt index 02e4998..7959a06 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt @@ -52,7 +52,7 @@ override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { - scene = resources.getStringArray(R.array.type_data)[position] +// scene = resources.getStringArray(R.array.type_data)[position] } override fun onNothingSelected(parent: AdapterView<*>?) { @@ -80,6 +80,10 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) + + + + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] getCheckManifestByPage() checkManifestViewModel.manifestResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index dfc956f..ac49cae 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -6,7 +6,6 @@ import com.casic.br.app.databinding.ActivityCheckManifestBySceneBinding import com.casic.br.app.fragment.CheckManifestFragment import com.casic.br.app.fragment.HiddenTroubleFragment -import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant @@ -21,11 +20,12 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList + val subPageTitles = arrayOf("${args[0]}检查清单", "隐患列表") fragmentPages.add(CheckManifestFragment(args[0])) fragmentPages.add(HiddenTroubleFragment(args[1])) val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages + supportFragmentManager, subPageTitles, fragmentPages ) //页面永不销毁 binding.viewPager.offscreenPageLimit = fragmentPages.size diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 60826c9..0d76a8e 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -183,20 +183,9 @@ /** * 获取指导视频 */ - suspend fun getGuideVideoByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getGuideVideoByPage(keywords: String, classId: String, offset: Int): String { return api.getGuideVideoByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, keywords, classId, offset, LocaleConstant.PAGE_LIMIT ) } diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index 88c69eb..3b49732 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -58,9 +58,4 @@ const val SERVER_BASE_URL = "http://111.198.10.15:22003" const val AI_SERVER_CONFIG = "aiServerConfig" const val AI_BASE_URL = "http://192.168.186.127:5000" - - /** - * Array - * */ - val SUB_PAGE_TITLES = arrayOf("配电箱检查清单", "隐患列表") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt index 02e4998..7959a06 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt @@ -52,7 +52,7 @@ override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { - scene = resources.getStringArray(R.array.type_data)[position] +// scene = resources.getStringArray(R.array.type_data)[position] } override fun onNothingSelected(parent: AdapterView<*>?) { @@ -80,6 +80,10 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) + + + + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] getCheckManifestByPage() checkManifestViewModel.manifestResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index dfc956f..ac49cae 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -6,7 +6,6 @@ import com.casic.br.app.databinding.ActivityCheckManifestBySceneBinding import com.casic.br.app.fragment.CheckManifestFragment import com.casic.br.app.fragment.HiddenTroubleFragment -import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant @@ -21,11 +20,12 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList + val subPageTitles = arrayOf("${args[0]}检查清单", "隐患列表") fragmentPages.add(CheckManifestFragment(args[0])) fragmentPages.add(HiddenTroubleFragment(args[1])) val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages + supportFragmentManager, subPageTitles, fragmentPages ) //页面永不销毁 binding.viewPager.offscreenPageLimit = fragmentPages.size diff --git a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt index 382ab7b..fc80862 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt @@ -2,12 +2,10 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.amap.api.location.AMapLocation import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckResultBinding import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.model.HiddenTroubleListResultModel -import com.casic.br.app.utils.LocationManager import com.casic.br.app.vm.InspectionViewModel import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder @@ -22,7 +20,6 @@ private val kTag = "CheckResultActivity" private val context = this - private val locationManager by lazy { LocationManager(this) } private lateinit var inspectionViewModel: InspectionViewModel private lateinit var inspectionId: String @@ -72,14 +69,6 @@ binding.recyclerView.adapter = troublesAdapter } } - - locationManager.getCurrentLocation(false, object : LocationManager.OnGetLocationListener { - override fun onAMapLocationGet(location: AMapLocation?) { - location?.apply { - binding.inputSiteView.setText(address) - } - } - }) } override fun initViewBinding(): ActivityCheckResultBinding { @@ -103,9 +92,4 @@ override fun setupTopBarLayout() { } - - override fun onDestroy() { - super.onDestroy() - locationManager.stopLocation() - } } \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 60826c9..0d76a8e 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -183,20 +183,9 @@ /** * 获取指导视频 */ - suspend fun getGuideVideoByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getGuideVideoByPage(keywords: String, classId: String, offset: Int): String { return api.getGuideVideoByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, keywords, classId, offset, LocaleConstant.PAGE_LIMIT ) } diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index 88c69eb..3b49732 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -58,9 +58,4 @@ const val SERVER_BASE_URL = "http://111.198.10.15:22003" const val AI_SERVER_CONFIG = "aiServerConfig" const val AI_BASE_URL = "http://192.168.186.127:5000" - - /** - * Array - * */ - val SUB_PAGE_TITLES = arrayOf("配电箱检查清单", "隐患列表") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt index 02e4998..7959a06 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt @@ -52,7 +52,7 @@ override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { - scene = resources.getStringArray(R.array.type_data)[position] +// scene = resources.getStringArray(R.array.type_data)[position] } override fun onNothingSelected(parent: AdapterView<*>?) { @@ -80,6 +80,10 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) + + + + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] getCheckManifestByPage() checkManifestViewModel.manifestResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index dfc956f..ac49cae 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -6,7 +6,6 @@ import com.casic.br.app.databinding.ActivityCheckManifestBySceneBinding import com.casic.br.app.fragment.CheckManifestFragment import com.casic.br.app.fragment.HiddenTroubleFragment -import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant @@ -21,11 +20,12 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList + val subPageTitles = arrayOf("${args[0]}检查清单", "隐患列表") fragmentPages.add(CheckManifestFragment(args[0])) fragmentPages.add(HiddenTroubleFragment(args[1])) val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages + supportFragmentManager, subPageTitles, fragmentPages ) //页面永不销毁 binding.viewPager.offscreenPageLimit = fragmentPages.size diff --git a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt index 382ab7b..fc80862 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt @@ -2,12 +2,10 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.amap.api.location.AMapLocation import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckResultBinding import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.model.HiddenTroubleListResultModel -import com.casic.br.app.utils.LocationManager import com.casic.br.app.vm.InspectionViewModel import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder @@ -22,7 +20,6 @@ private val kTag = "CheckResultActivity" private val context = this - private val locationManager by lazy { LocationManager(this) } private lateinit var inspectionViewModel: InspectionViewModel private lateinit var inspectionId: String @@ -72,14 +69,6 @@ binding.recyclerView.adapter = troublesAdapter } } - - locationManager.getCurrentLocation(false, object : LocationManager.OnGetLocationListener { - override fun onAMapLocationGet(location: AMapLocation?) { - location?.apply { - binding.inputSiteView.setText(address) - } - } - }) } override fun initViewBinding(): ActivityCheckResultBinding { @@ -103,9 +92,4 @@ override fun setupTopBarLayout() { } - - override fun onDestroy() { - super.onDestroy() - locationManager.stopLocation() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt new file mode 100644 index 0000000..f59fc02 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt @@ -0,0 +1,73 @@ +package com.casic.br.app.view + +import android.os.Bundle +import android.view.View +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityFullScreenVideoBinding +import com.casic.br.app.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import com.shuyu.gsyvideoplayer.GSYVideoManager +import com.shuyu.gsyvideoplayer.utils.OrientationUtils + +class FullScreenVideoActivity : KotlinBaseActivity() { + + private var orientationUtils: OrientationUtils? = null + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + val videoPath = intent.getStringExtra(Constant.INTENT_PARAM) + binding.videoPlayer.setUp(videoPath, true, "") + + binding.videoPlayer.titleTextView.visibility = View.GONE + binding.videoPlayer.fullscreenButton.visibility = View.GONE + //设置旋转 + orientationUtils = OrientationUtils(this, binding.videoPlayer) + //是否可以滑动调整 + binding.videoPlayer.setIsTouchWiget(true) + + //不需要屏幕旋转 + binding.videoPlayer.isNeedOrientationUtils = false + binding.videoPlayer.startPlayLogic() + + binding.videoPlayer.backButton.setOnClickListener { onBackPressed() } + } + + override fun initViewBinding(): ActivityFullScreenVideoBinding { + return ActivityFullScreenVideoBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + } + + override fun onPause() { + super.onPause() + binding.videoPlayer.onVideoPause() + } + + override fun onResume() { + super.onResume() + binding.videoPlayer.onVideoResume() + } + + override fun onDestroy() { + super.onDestroy() + GSYVideoManager.releaseAllVideos() + orientationUtils?.releaseListener() + } + + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + //释放所有 + binding.videoPlayer.setVideoAllCallBack(null) + super.onBackPressed() + } +} \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 60826c9..0d76a8e 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -183,20 +183,9 @@ /** * 获取指导视频 */ - suspend fun getGuideVideoByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getGuideVideoByPage(keywords: String, classId: String, offset: Int): String { return api.getGuideVideoByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, keywords, classId, offset, LocaleConstant.PAGE_LIMIT ) } diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index 88c69eb..3b49732 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -58,9 +58,4 @@ const val SERVER_BASE_URL = "http://111.198.10.15:22003" const val AI_SERVER_CONFIG = "aiServerConfig" const val AI_BASE_URL = "http://192.168.186.127:5000" - - /** - * Array - * */ - val SUB_PAGE_TITLES = arrayOf("配电箱检查清单", "隐患列表") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt index 02e4998..7959a06 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt @@ -52,7 +52,7 @@ override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { - scene = resources.getStringArray(R.array.type_data)[position] +// scene = resources.getStringArray(R.array.type_data)[position] } override fun onNothingSelected(parent: AdapterView<*>?) { @@ -80,6 +80,10 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) + + + + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] getCheckManifestByPage() checkManifestViewModel.manifestResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index dfc956f..ac49cae 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -6,7 +6,6 @@ import com.casic.br.app.databinding.ActivityCheckManifestBySceneBinding import com.casic.br.app.fragment.CheckManifestFragment import com.casic.br.app.fragment.HiddenTroubleFragment -import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant @@ -21,11 +20,12 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList + val subPageTitles = arrayOf("${args[0]}检查清单", "隐患列表") fragmentPages.add(CheckManifestFragment(args[0])) fragmentPages.add(HiddenTroubleFragment(args[1])) val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages + supportFragmentManager, subPageTitles, fragmentPages ) //页面永不销毁 binding.viewPager.offscreenPageLimit = fragmentPages.size diff --git a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt index 382ab7b..fc80862 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt @@ -2,12 +2,10 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.amap.api.location.AMapLocation import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckResultBinding import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.model.HiddenTroubleListResultModel -import com.casic.br.app.utils.LocationManager import com.casic.br.app.vm.InspectionViewModel import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder @@ -22,7 +20,6 @@ private val kTag = "CheckResultActivity" private val context = this - private val locationManager by lazy { LocationManager(this) } private lateinit var inspectionViewModel: InspectionViewModel private lateinit var inspectionId: String @@ -72,14 +69,6 @@ binding.recyclerView.adapter = troublesAdapter } } - - locationManager.getCurrentLocation(false, object : LocationManager.OnGetLocationListener { - override fun onAMapLocationGet(location: AMapLocation?) { - location?.apply { - binding.inputSiteView.setText(address) - } - } - }) } override fun initViewBinding(): ActivityCheckResultBinding { @@ -103,9 +92,4 @@ override fun setupTopBarLayout() { } - - override fun onDestroy() { - super.onDestroy() - locationManager.stopLocation() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt new file mode 100644 index 0000000..f59fc02 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt @@ -0,0 +1,73 @@ +package com.casic.br.app.view + +import android.os.Bundle +import android.view.View +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityFullScreenVideoBinding +import com.casic.br.app.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import com.shuyu.gsyvideoplayer.GSYVideoManager +import com.shuyu.gsyvideoplayer.utils.OrientationUtils + +class FullScreenVideoActivity : KotlinBaseActivity() { + + private var orientationUtils: OrientationUtils? = null + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + val videoPath = intent.getStringExtra(Constant.INTENT_PARAM) + binding.videoPlayer.setUp(videoPath, true, "") + + binding.videoPlayer.titleTextView.visibility = View.GONE + binding.videoPlayer.fullscreenButton.visibility = View.GONE + //设置旋转 + orientationUtils = OrientationUtils(this, binding.videoPlayer) + //是否可以滑动调整 + binding.videoPlayer.setIsTouchWiget(true) + + //不需要屏幕旋转 + binding.videoPlayer.isNeedOrientationUtils = false + binding.videoPlayer.startPlayLogic() + + binding.videoPlayer.backButton.setOnClickListener { onBackPressed() } + } + + override fun initViewBinding(): ActivityFullScreenVideoBinding { + return ActivityFullScreenVideoBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + } + + override fun onPause() { + super.onPause() + binding.videoPlayer.onVideoPause() + } + + override fun onResume() { + super.onResume() + binding.videoPlayer.onVideoResume() + } + + override fun onDestroy() { + super.onDestroy() + GSYVideoManager.releaseAllVideos() + orientationUtils?.releaseListener() + } + + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + //释放所有 + binding.videoPlayer.setVideoAllCallBack(null) + super.onBackPressed() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt index bd8ebec..38b97bd 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt @@ -105,9 +105,10 @@ viewHolder: ViewHolder, position: Int, item: HiddenTroubleModel.DataModel.RowsModel ) { - viewHolder.setText(R.id.troubleTypeView, item.mainClassName) - .setText(R.id.troubleNameView, item.subClassName) - .setText(R.id.troubleContentView, item.sceneName) + viewHolder.setText( + R.id.troubleTypeView, "${item.mainClassName}/${item.subClassName}" + ).setText(R.id.troubleNameView, item.name) + .setText(R.id.troubleContentView, item.content) } } binding.recyclerView.adapter = hiddenTroubleAdapter diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 60826c9..0d76a8e 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -183,20 +183,9 @@ /** * 获取指导视频 */ - suspend fun getGuideVideoByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getGuideVideoByPage(keywords: String, classId: String, offset: Int): String { return api.getGuideVideoByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, keywords, classId, offset, LocaleConstant.PAGE_LIMIT ) } diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index 88c69eb..3b49732 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -58,9 +58,4 @@ const val SERVER_BASE_URL = "http://111.198.10.15:22003" const val AI_SERVER_CONFIG = "aiServerConfig" const val AI_BASE_URL = "http://192.168.186.127:5000" - - /** - * Array - * */ - val SUB_PAGE_TITLES = arrayOf("配电箱检查清单", "隐患列表") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt index 02e4998..7959a06 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt @@ -52,7 +52,7 @@ override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { - scene = resources.getStringArray(R.array.type_data)[position] +// scene = resources.getStringArray(R.array.type_data)[position] } override fun onNothingSelected(parent: AdapterView<*>?) { @@ -80,6 +80,10 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) + + + + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] getCheckManifestByPage() checkManifestViewModel.manifestResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index dfc956f..ac49cae 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -6,7 +6,6 @@ import com.casic.br.app.databinding.ActivityCheckManifestBySceneBinding import com.casic.br.app.fragment.CheckManifestFragment import com.casic.br.app.fragment.HiddenTroubleFragment -import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant @@ -21,11 +20,12 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList + val subPageTitles = arrayOf("${args[0]}检查清单", "隐患列表") fragmentPages.add(CheckManifestFragment(args[0])) fragmentPages.add(HiddenTroubleFragment(args[1])) val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages + supportFragmentManager, subPageTitles, fragmentPages ) //页面永不销毁 binding.viewPager.offscreenPageLimit = fragmentPages.size diff --git a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt index 382ab7b..fc80862 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt @@ -2,12 +2,10 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.amap.api.location.AMapLocation import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckResultBinding import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.model.HiddenTroubleListResultModel -import com.casic.br.app.utils.LocationManager import com.casic.br.app.vm.InspectionViewModel import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder @@ -22,7 +20,6 @@ private val kTag = "CheckResultActivity" private val context = this - private val locationManager by lazy { LocationManager(this) } private lateinit var inspectionViewModel: InspectionViewModel private lateinit var inspectionId: String @@ -72,14 +69,6 @@ binding.recyclerView.adapter = troublesAdapter } } - - locationManager.getCurrentLocation(false, object : LocationManager.OnGetLocationListener { - override fun onAMapLocationGet(location: AMapLocation?) { - location?.apply { - binding.inputSiteView.setText(address) - } - } - }) } override fun initViewBinding(): ActivityCheckResultBinding { @@ -103,9 +92,4 @@ override fun setupTopBarLayout() { } - - override fun onDestroy() { - super.onDestroy() - locationManager.stopLocation() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt new file mode 100644 index 0000000..f59fc02 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt @@ -0,0 +1,73 @@ +package com.casic.br.app.view + +import android.os.Bundle +import android.view.View +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityFullScreenVideoBinding +import com.casic.br.app.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import com.shuyu.gsyvideoplayer.GSYVideoManager +import com.shuyu.gsyvideoplayer.utils.OrientationUtils + +class FullScreenVideoActivity : KotlinBaseActivity() { + + private var orientationUtils: OrientationUtils? = null + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + val videoPath = intent.getStringExtra(Constant.INTENT_PARAM) + binding.videoPlayer.setUp(videoPath, true, "") + + binding.videoPlayer.titleTextView.visibility = View.GONE + binding.videoPlayer.fullscreenButton.visibility = View.GONE + //设置旋转 + orientationUtils = OrientationUtils(this, binding.videoPlayer) + //是否可以滑动调整 + binding.videoPlayer.setIsTouchWiget(true) + + //不需要屏幕旋转 + binding.videoPlayer.isNeedOrientationUtils = false + binding.videoPlayer.startPlayLogic() + + binding.videoPlayer.backButton.setOnClickListener { onBackPressed() } + } + + override fun initViewBinding(): ActivityFullScreenVideoBinding { + return ActivityFullScreenVideoBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + } + + override fun onPause() { + super.onPause() + binding.videoPlayer.onVideoPause() + } + + override fun onResume() { + super.onResume() + binding.videoPlayer.onVideoResume() + } + + override fun onDestroy() { + super.onDestroy() + GSYVideoManager.releaseAllVideos() + orientationUtils?.releaseListener() + } + + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + //释放所有 + binding.videoPlayer.setVideoAllCallBack(null) + super.onBackPressed() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt index bd8ebec..38b97bd 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt @@ -105,9 +105,10 @@ viewHolder: ViewHolder, position: Int, item: HiddenTroubleModel.DataModel.RowsModel ) { - viewHolder.setText(R.id.troubleTypeView, item.mainClassName) - .setText(R.id.troubleNameView, item.subClassName) - .setText(R.id.troubleContentView, item.sceneName) + viewHolder.setText( + R.id.troubleTypeView, "${item.mainClassName}/${item.subClassName}" + ).setText(R.id.troubleNameView, item.name) + .setText(R.id.troubleContentView, item.content) } } binding.recyclerView.adapter = hiddenTroubleAdapter diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt index 0d663df..d8aeb4f 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityHiddenTroubleDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.vm.HiddenTroubleViewModel import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -41,9 +42,9 @@ val alarmImageList = it.data.alarmImageList if (alarmImageList.isNotEmpty()) { val images = ArrayList() -// alarmImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + alarmImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.troubleImageGridView.adapter = imageAdapter binding.troubleImageGridView.onItemClickListener = @@ -55,9 +56,9 @@ val normalImageList = it.data.normalImageList if (normalImageList.isNotEmpty()) { val images = ArrayList() -// normalImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + normalImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.normalImageGridView.adapter = imageAdapter binding.normalImageGridView.onItemClickListener = diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 60826c9..0d76a8e 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -183,20 +183,9 @@ /** * 获取指导视频 */ - suspend fun getGuideVideoByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getGuideVideoByPage(keywords: String, classId: String, offset: Int): String { return api.getGuideVideoByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, keywords, classId, offset, LocaleConstant.PAGE_LIMIT ) } diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index 88c69eb..3b49732 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -58,9 +58,4 @@ const val SERVER_BASE_URL = "http://111.198.10.15:22003" const val AI_SERVER_CONFIG = "aiServerConfig" const val AI_BASE_URL = "http://192.168.186.127:5000" - - /** - * Array - * */ - val SUB_PAGE_TITLES = arrayOf("配电箱检查清单", "隐患列表") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt index 02e4998..7959a06 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt @@ -52,7 +52,7 @@ override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { - scene = resources.getStringArray(R.array.type_data)[position] +// scene = resources.getStringArray(R.array.type_data)[position] } override fun onNothingSelected(parent: AdapterView<*>?) { @@ -80,6 +80,10 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) + + + + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] getCheckManifestByPage() checkManifestViewModel.manifestResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index dfc956f..ac49cae 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -6,7 +6,6 @@ import com.casic.br.app.databinding.ActivityCheckManifestBySceneBinding import com.casic.br.app.fragment.CheckManifestFragment import com.casic.br.app.fragment.HiddenTroubleFragment -import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant @@ -21,11 +20,12 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList + val subPageTitles = arrayOf("${args[0]}检查清单", "隐患列表") fragmentPages.add(CheckManifestFragment(args[0])) fragmentPages.add(HiddenTroubleFragment(args[1])) val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages + supportFragmentManager, subPageTitles, fragmentPages ) //页面永不销毁 binding.viewPager.offscreenPageLimit = fragmentPages.size diff --git a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt index 382ab7b..fc80862 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt @@ -2,12 +2,10 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.amap.api.location.AMapLocation import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckResultBinding import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.model.HiddenTroubleListResultModel -import com.casic.br.app.utils.LocationManager import com.casic.br.app.vm.InspectionViewModel import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder @@ -22,7 +20,6 @@ private val kTag = "CheckResultActivity" private val context = this - private val locationManager by lazy { LocationManager(this) } private lateinit var inspectionViewModel: InspectionViewModel private lateinit var inspectionId: String @@ -72,14 +69,6 @@ binding.recyclerView.adapter = troublesAdapter } } - - locationManager.getCurrentLocation(false, object : LocationManager.OnGetLocationListener { - override fun onAMapLocationGet(location: AMapLocation?) { - location?.apply { - binding.inputSiteView.setText(address) - } - } - }) } override fun initViewBinding(): ActivityCheckResultBinding { @@ -103,9 +92,4 @@ override fun setupTopBarLayout() { } - - override fun onDestroy() { - super.onDestroy() - locationManager.stopLocation() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt new file mode 100644 index 0000000..f59fc02 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt @@ -0,0 +1,73 @@ +package com.casic.br.app.view + +import android.os.Bundle +import android.view.View +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityFullScreenVideoBinding +import com.casic.br.app.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import com.shuyu.gsyvideoplayer.GSYVideoManager +import com.shuyu.gsyvideoplayer.utils.OrientationUtils + +class FullScreenVideoActivity : KotlinBaseActivity() { + + private var orientationUtils: OrientationUtils? = null + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + val videoPath = intent.getStringExtra(Constant.INTENT_PARAM) + binding.videoPlayer.setUp(videoPath, true, "") + + binding.videoPlayer.titleTextView.visibility = View.GONE + binding.videoPlayer.fullscreenButton.visibility = View.GONE + //设置旋转 + orientationUtils = OrientationUtils(this, binding.videoPlayer) + //是否可以滑动调整 + binding.videoPlayer.setIsTouchWiget(true) + + //不需要屏幕旋转 + binding.videoPlayer.isNeedOrientationUtils = false + binding.videoPlayer.startPlayLogic() + + binding.videoPlayer.backButton.setOnClickListener { onBackPressed() } + } + + override fun initViewBinding(): ActivityFullScreenVideoBinding { + return ActivityFullScreenVideoBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + } + + override fun onPause() { + super.onPause() + binding.videoPlayer.onVideoPause() + } + + override fun onResume() { + super.onResume() + binding.videoPlayer.onVideoResume() + } + + override fun onDestroy() { + super.onDestroy() + GSYVideoManager.releaseAllVideos() + orientationUtils?.releaseListener() + } + + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + //释放所有 + binding.videoPlayer.setVideoAllCallBack(null) + super.onBackPressed() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt index bd8ebec..38b97bd 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt @@ -105,9 +105,10 @@ viewHolder: ViewHolder, position: Int, item: HiddenTroubleModel.DataModel.RowsModel ) { - viewHolder.setText(R.id.troubleTypeView, item.mainClassName) - .setText(R.id.troubleNameView, item.subClassName) - .setText(R.id.troubleContentView, item.sceneName) + viewHolder.setText( + R.id.troubleTypeView, "${item.mainClassName}/${item.subClassName}" + ).setText(R.id.troubleNameView, item.name) + .setText(R.id.troubleContentView, item.content) } } binding.recyclerView.adapter = hiddenTroubleAdapter diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt index 0d663df..d8aeb4f 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityHiddenTroubleDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.vm.HiddenTroubleViewModel import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -41,9 +42,9 @@ val alarmImageList = it.data.alarmImageList if (alarmImageList.isNotEmpty()) { val images = ArrayList() -// alarmImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + alarmImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.troubleImageGridView.adapter = imageAdapter binding.troubleImageGridView.onItemClickListener = @@ -55,9 +56,9 @@ val normalImageList = it.data.normalImageList if (normalImageList.isNotEmpty()) { val images = ArrayList() -// normalImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + normalImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.normalImageGridView.adapter = imageAdapter binding.normalImageGridView.onItemClickListener = diff --git a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt index 054eb45..6a0c42e 100644 --- a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt @@ -61,7 +61,7 @@ NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: LibraryModel.DataModel) { when (position) { - 0 -> navigatePageTo() + 0 -> navigatePageTo(t.id) else -> "未实现".show(context) } } diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 60826c9..0d76a8e 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -183,20 +183,9 @@ /** * 获取指导视频 */ - suspend fun getGuideVideoByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getGuideVideoByPage(keywords: String, classId: String, offset: Int): String { return api.getGuideVideoByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, keywords, classId, offset, LocaleConstant.PAGE_LIMIT ) } diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index 88c69eb..3b49732 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -58,9 +58,4 @@ const val SERVER_BASE_URL = "http://111.198.10.15:22003" const val AI_SERVER_CONFIG = "aiServerConfig" const val AI_BASE_URL = "http://192.168.186.127:5000" - - /** - * Array - * */ - val SUB_PAGE_TITLES = arrayOf("配电箱检查清单", "隐患列表") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt index 02e4998..7959a06 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt @@ -52,7 +52,7 @@ override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { - scene = resources.getStringArray(R.array.type_data)[position] +// scene = resources.getStringArray(R.array.type_data)[position] } override fun onNothingSelected(parent: AdapterView<*>?) { @@ -80,6 +80,10 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) + + + + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] getCheckManifestByPage() checkManifestViewModel.manifestResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index dfc956f..ac49cae 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -6,7 +6,6 @@ import com.casic.br.app.databinding.ActivityCheckManifestBySceneBinding import com.casic.br.app.fragment.CheckManifestFragment import com.casic.br.app.fragment.HiddenTroubleFragment -import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant @@ -21,11 +20,12 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList + val subPageTitles = arrayOf("${args[0]}检查清单", "隐患列表") fragmentPages.add(CheckManifestFragment(args[0])) fragmentPages.add(HiddenTroubleFragment(args[1])) val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages + supportFragmentManager, subPageTitles, fragmentPages ) //页面永不销毁 binding.viewPager.offscreenPageLimit = fragmentPages.size diff --git a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt index 382ab7b..fc80862 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt @@ -2,12 +2,10 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.amap.api.location.AMapLocation import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckResultBinding import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.model.HiddenTroubleListResultModel -import com.casic.br.app.utils.LocationManager import com.casic.br.app.vm.InspectionViewModel import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder @@ -22,7 +20,6 @@ private val kTag = "CheckResultActivity" private val context = this - private val locationManager by lazy { LocationManager(this) } private lateinit var inspectionViewModel: InspectionViewModel private lateinit var inspectionId: String @@ -72,14 +69,6 @@ binding.recyclerView.adapter = troublesAdapter } } - - locationManager.getCurrentLocation(false, object : LocationManager.OnGetLocationListener { - override fun onAMapLocationGet(location: AMapLocation?) { - location?.apply { - binding.inputSiteView.setText(address) - } - } - }) } override fun initViewBinding(): ActivityCheckResultBinding { @@ -103,9 +92,4 @@ override fun setupTopBarLayout() { } - - override fun onDestroy() { - super.onDestroy() - locationManager.stopLocation() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt new file mode 100644 index 0000000..f59fc02 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt @@ -0,0 +1,73 @@ +package com.casic.br.app.view + +import android.os.Bundle +import android.view.View +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityFullScreenVideoBinding +import com.casic.br.app.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import com.shuyu.gsyvideoplayer.GSYVideoManager +import com.shuyu.gsyvideoplayer.utils.OrientationUtils + +class FullScreenVideoActivity : KotlinBaseActivity() { + + private var orientationUtils: OrientationUtils? = null + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + val videoPath = intent.getStringExtra(Constant.INTENT_PARAM) + binding.videoPlayer.setUp(videoPath, true, "") + + binding.videoPlayer.titleTextView.visibility = View.GONE + binding.videoPlayer.fullscreenButton.visibility = View.GONE + //设置旋转 + orientationUtils = OrientationUtils(this, binding.videoPlayer) + //是否可以滑动调整 + binding.videoPlayer.setIsTouchWiget(true) + + //不需要屏幕旋转 + binding.videoPlayer.isNeedOrientationUtils = false + binding.videoPlayer.startPlayLogic() + + binding.videoPlayer.backButton.setOnClickListener { onBackPressed() } + } + + override fun initViewBinding(): ActivityFullScreenVideoBinding { + return ActivityFullScreenVideoBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + } + + override fun onPause() { + super.onPause() + binding.videoPlayer.onVideoPause() + } + + override fun onResume() { + super.onResume() + binding.videoPlayer.onVideoResume() + } + + override fun onDestroy() { + super.onDestroy() + GSYVideoManager.releaseAllVideos() + orientationUtils?.releaseListener() + } + + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + //释放所有 + binding.videoPlayer.setVideoAllCallBack(null) + super.onBackPressed() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt index bd8ebec..38b97bd 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt @@ -105,9 +105,10 @@ viewHolder: ViewHolder, position: Int, item: HiddenTroubleModel.DataModel.RowsModel ) { - viewHolder.setText(R.id.troubleTypeView, item.mainClassName) - .setText(R.id.troubleNameView, item.subClassName) - .setText(R.id.troubleContentView, item.sceneName) + viewHolder.setText( + R.id.troubleTypeView, "${item.mainClassName}/${item.subClassName}" + ).setText(R.id.troubleNameView, item.name) + .setText(R.id.troubleContentView, item.content) } } binding.recyclerView.adapter = hiddenTroubleAdapter diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt index 0d663df..d8aeb4f 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityHiddenTroubleDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.vm.HiddenTroubleViewModel import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -41,9 +42,9 @@ val alarmImageList = it.data.alarmImageList if (alarmImageList.isNotEmpty()) { val images = ArrayList() -// alarmImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + alarmImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.troubleImageGridView.adapter = imageAdapter binding.troubleImageGridView.onItemClickListener = @@ -55,9 +56,9 @@ val normalImageList = it.data.normalImageList if (normalImageList.isNotEmpty()) { val images = ArrayList() -// normalImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + normalImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.normalImageGridView.adapter = imageAdapter binding.normalImageGridView.onItemClickListener = diff --git a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt index 054eb45..6a0c42e 100644 --- a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt @@ -61,7 +61,7 @@ NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: LibraryModel.DataModel) { when (position) { - 0 -> navigatePageTo() + 0 -> navigatePageTo(t.id) else -> "未实现".show(context) } } diff --git a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt index 2b350d5..f24dd7c 100644 --- a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt @@ -170,7 +170,7 @@ // 检查 CameraProvider 可用性 cameraProviderFuture.addListener({ try { -// bindPreview(cameraProviderFuture.get()) + bindPreview(cameraProviderFuture.get()) } catch (e: ExecutionException) { e.printStackTrace() } catch (e: InterruptedException) { @@ -318,6 +318,10 @@ * 根据场景查看检查清单 * */ binding.listButton.setOnClickListener { + if (inspectionId.isBlank()) { + "请先选择场景或者识别出场景再试".show(this) + return@setOnClickListener + } navigatePageTo(arrayListOf(detectedScene, inspectionId)) } } diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 60826c9..0d76a8e 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -183,20 +183,9 @@ /** * 获取指导视频 */ - suspend fun getGuideVideoByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getGuideVideoByPage(keywords: String, classId: String, offset: Int): String { return api.getGuideVideoByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, keywords, classId, offset, LocaleConstant.PAGE_LIMIT ) } diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index 88c69eb..3b49732 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -58,9 +58,4 @@ const val SERVER_BASE_URL = "http://111.198.10.15:22003" const val AI_SERVER_CONFIG = "aiServerConfig" const val AI_BASE_URL = "http://192.168.186.127:5000" - - /** - * Array - * */ - val SUB_PAGE_TITLES = arrayOf("配电箱检查清单", "隐患列表") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt index 02e4998..7959a06 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt @@ -52,7 +52,7 @@ override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { - scene = resources.getStringArray(R.array.type_data)[position] +// scene = resources.getStringArray(R.array.type_data)[position] } override fun onNothingSelected(parent: AdapterView<*>?) { @@ -80,6 +80,10 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) + + + + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] getCheckManifestByPage() checkManifestViewModel.manifestResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index dfc956f..ac49cae 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -6,7 +6,6 @@ import com.casic.br.app.databinding.ActivityCheckManifestBySceneBinding import com.casic.br.app.fragment.CheckManifestFragment import com.casic.br.app.fragment.HiddenTroubleFragment -import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant @@ -21,11 +20,12 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList + val subPageTitles = arrayOf("${args[0]}检查清单", "隐患列表") fragmentPages.add(CheckManifestFragment(args[0])) fragmentPages.add(HiddenTroubleFragment(args[1])) val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages + supportFragmentManager, subPageTitles, fragmentPages ) //页面永不销毁 binding.viewPager.offscreenPageLimit = fragmentPages.size diff --git a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt index 382ab7b..fc80862 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt @@ -2,12 +2,10 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.amap.api.location.AMapLocation import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckResultBinding import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.model.HiddenTroubleListResultModel -import com.casic.br.app.utils.LocationManager import com.casic.br.app.vm.InspectionViewModel import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder @@ -22,7 +20,6 @@ private val kTag = "CheckResultActivity" private val context = this - private val locationManager by lazy { LocationManager(this) } private lateinit var inspectionViewModel: InspectionViewModel private lateinit var inspectionId: String @@ -72,14 +69,6 @@ binding.recyclerView.adapter = troublesAdapter } } - - locationManager.getCurrentLocation(false, object : LocationManager.OnGetLocationListener { - override fun onAMapLocationGet(location: AMapLocation?) { - location?.apply { - binding.inputSiteView.setText(address) - } - } - }) } override fun initViewBinding(): ActivityCheckResultBinding { @@ -103,9 +92,4 @@ override fun setupTopBarLayout() { } - - override fun onDestroy() { - super.onDestroy() - locationManager.stopLocation() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt new file mode 100644 index 0000000..f59fc02 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt @@ -0,0 +1,73 @@ +package com.casic.br.app.view + +import android.os.Bundle +import android.view.View +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityFullScreenVideoBinding +import com.casic.br.app.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import com.shuyu.gsyvideoplayer.GSYVideoManager +import com.shuyu.gsyvideoplayer.utils.OrientationUtils + +class FullScreenVideoActivity : KotlinBaseActivity() { + + private var orientationUtils: OrientationUtils? = null + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + val videoPath = intent.getStringExtra(Constant.INTENT_PARAM) + binding.videoPlayer.setUp(videoPath, true, "") + + binding.videoPlayer.titleTextView.visibility = View.GONE + binding.videoPlayer.fullscreenButton.visibility = View.GONE + //设置旋转 + orientationUtils = OrientationUtils(this, binding.videoPlayer) + //是否可以滑动调整 + binding.videoPlayer.setIsTouchWiget(true) + + //不需要屏幕旋转 + binding.videoPlayer.isNeedOrientationUtils = false + binding.videoPlayer.startPlayLogic() + + binding.videoPlayer.backButton.setOnClickListener { onBackPressed() } + } + + override fun initViewBinding(): ActivityFullScreenVideoBinding { + return ActivityFullScreenVideoBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + } + + override fun onPause() { + super.onPause() + binding.videoPlayer.onVideoPause() + } + + override fun onResume() { + super.onResume() + binding.videoPlayer.onVideoResume() + } + + override fun onDestroy() { + super.onDestroy() + GSYVideoManager.releaseAllVideos() + orientationUtils?.releaseListener() + } + + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + //释放所有 + binding.videoPlayer.setVideoAllCallBack(null) + super.onBackPressed() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt index bd8ebec..38b97bd 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt @@ -105,9 +105,10 @@ viewHolder: ViewHolder, position: Int, item: HiddenTroubleModel.DataModel.RowsModel ) { - viewHolder.setText(R.id.troubleTypeView, item.mainClassName) - .setText(R.id.troubleNameView, item.subClassName) - .setText(R.id.troubleContentView, item.sceneName) + viewHolder.setText( + R.id.troubleTypeView, "${item.mainClassName}/${item.subClassName}" + ).setText(R.id.troubleNameView, item.name) + .setText(R.id.troubleContentView, item.content) } } binding.recyclerView.adapter = hiddenTroubleAdapter diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt index 0d663df..d8aeb4f 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityHiddenTroubleDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.vm.HiddenTroubleViewModel import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -41,9 +42,9 @@ val alarmImageList = it.data.alarmImageList if (alarmImageList.isNotEmpty()) { val images = ArrayList() -// alarmImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + alarmImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.troubleImageGridView.adapter = imageAdapter binding.troubleImageGridView.onItemClickListener = @@ -55,9 +56,9 @@ val normalImageList = it.data.normalImageList if (normalImageList.isNotEmpty()) { val images = ArrayList() -// normalImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + normalImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.normalImageGridView.adapter = imageAdapter binding.normalImageGridView.onItemClickListener = diff --git a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt index 054eb45..6a0c42e 100644 --- a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt @@ -61,7 +61,7 @@ NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: LibraryModel.DataModel) { when (position) { - 0 -> navigatePageTo() + 0 -> navigatePageTo(t.id) else -> "未实现".show(context) } } diff --git a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt index 2b350d5..f24dd7c 100644 --- a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt @@ -170,7 +170,7 @@ // 检查 CameraProvider 可用性 cameraProviderFuture.addListener({ try { -// bindPreview(cameraProviderFuture.get()) + bindPreview(cameraProviderFuture.get()) } catch (e: ExecutionException) { e.printStackTrace() } catch (e: InterruptedException) { @@ -318,6 +318,10 @@ * 根据场景查看检查清单 * */ binding.listButton.setOnClickListener { + if (inspectionId.isBlank()) { + "请先选择场景或者识别出场景再试".show(this) + return@setOnClickListener + } navigatePageTo(arrayListOf(detectedScene, inspectionId)) } } diff --git a/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt b/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt index 11c66ea..692d72b 100644 --- a/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt @@ -3,9 +3,14 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.View +import android.widget.ImageView import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope +import com.bumptech.glide.Glide import com.casic.br.app.R import com.casic.br.app.databinding.ActivityVideoGuideBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.model.VideoGuideModel import com.casic.br.app.vm.VideoGuideViewModel @@ -13,19 +18,29 @@ import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.TitleBarView +import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext class VideoGuideActivity : KotlinBaseActivity(), Handler.Callback { + private val context = this + private val marginOffset by lazy { 5.dp2px(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var videoGuideViewModel: VideoGuideViewModel - private lateinit var videoGuideAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() + private lateinit var videoGuideAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var keywords = "" + private var classId = "" private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -49,62 +64,88 @@ } override fun initOnCreate(savedInstanceState: Bundle?) { + classId = intent.getStringExtra(Constant.INTENT_PARAM) as String + weakReferenceHandler = WeakReferenceHandler(this) videoGuideViewModel = ViewModelProvider(this)[VideoGuideViewModel::class.java] + getGuideVideoByPage() videoGuideViewModel.videosResult.observe(this) { -// if (it.code == 200) { -// val dataRows = it.data?.rows!! -// when { -// isRefresh -> { -// videoGuideAdapter.setRefreshData(dataRows) -// binding.refreshLayout.finishRefresh() -// isRefresh = false -// } -// -// isLoadMore -> { -// if (dataRows.size == 0) { -// "到底了,别拉了".show(this) -// } -// videoGuideAdapter.setLoadMoreData(dataRows) -// binding.refreshLayout.finishLoadMore() -// isLoadMore = false -// } -// -// else -> { -// dataBeans = dataRows -// weakReferenceHandler.sendEmptyMessage(2024030502) -// } -// } -// } + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + videoGuideAdapter.setRefreshData(dataRows) + binding.refreshLayout.finishRefresh() + isRefresh = false + } + + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + videoGuideAdapter.setLoadMoreData(dataRows) + binding.refreshLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2024030502) + } + } + } } } private fun getGuideVideoByPage() { - videoGuideViewModel.getGuideVideoByPage(this, keywords, page) + videoGuideViewModel.getGuideVideoByPage(this, keywords, classId, page) } override fun handleMessage(msg: Message): Boolean { when (msg.what) { 2024030502 -> { - videoGuideAdapter = object : - NormalRecyclerAdapter( + videoGuideAdapter = + object : NormalRecyclerAdapter( R.layout.item_guide_video, dataBeans ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: VideoGuideModel - ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: VideoGuideModel.DataModel.RowsModel + ) { + if (item.attachment.endsWith(".mp4")) { + viewHolder.setVisibility(R.id.videoPlayer, View.VISIBLE) + .setVisibility(R.id.imageView, View.GONE) + val videoPlayer = viewHolder.getView( + R.id.videoPlayer + ) + initVideoPlayer(videoPlayer, item.attachment.combineFilePath()) + } else { + viewHolder.setVisibility(R.id.videoPlayer, View.GONE) + .setVisibility(R.id.imageView, View.VISIBLE) + .setImageResource( + R.id.imageView, item.attachment.combineFilePath() + ) + } + viewHolder.setText(R.id.guideNameView, item.title) + } } - } binding.recyclerView.adapter = videoGuideAdapter - binding.recyclerView.addItemDecoration(RecyclerViewItemOffsets(0, 7, 0, 7)) + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) videoGuideAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: VideoGuideModel + position: Int, t: VideoGuideModel.DataModel.RowsModel ) { - //TODO 查看指导视频详情 + if (t.attachment.endsWith(".mp4")) { + navigatePageTo(t.attachment.combineFilePath()) + } else { + navigatePageTo( + 0, arrayListOf(t.attachment.combineFilePath()) + ) + } } }) } @@ -112,6 +153,30 @@ return true } + private fun initVideoPlayer(videoPlayer: StandardGSYVideoPlayer, source: String) { + videoPlayer.titleTextView.visibility = View.GONE + videoPlayer.backButton.visibility = View.GONE + lifecycleScope.launch(Dispatchers.Main) { + try { + val drawable = withContext(Dispatchers.IO) { + Glide.with(context).load(source).submit().get() + } + val coverImg = ImageView(context) + coverImg.setImageDrawable(drawable) + videoPlayer.thumbImageView = coverImg + } catch (e: Exception) { + e.printStackTrace() + } + } + videoPlayer.setUp(source, true, "") + videoPlayer.fullscreenButton.setOnClickListener { + navigatePageTo(source) + } + videoPlayer.playTag = System.currentTimeMillis().toString() + videoPlayer.isReleaseWhenLossAudio = false + videoPlayer.setIsTouchWiget(false) + } + override fun initViewBinding(): ActivityVideoGuideBinding { return ActivityVideoGuideBinding.inflate(layoutInflater) } diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 60826c9..0d76a8e 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -183,20 +183,9 @@ /** * 获取指导视频 */ - suspend fun getGuideVideoByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getGuideVideoByPage(keywords: String, classId: String, offset: Int): String { return api.getGuideVideoByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, keywords, classId, offset, LocaleConstant.PAGE_LIMIT ) } diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index 88c69eb..3b49732 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -58,9 +58,4 @@ const val SERVER_BASE_URL = "http://111.198.10.15:22003" const val AI_SERVER_CONFIG = "aiServerConfig" const val AI_BASE_URL = "http://192.168.186.127:5000" - - /** - * Array - * */ - val SUB_PAGE_TITLES = arrayOf("配电箱检查清单", "隐患列表") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt index 02e4998..7959a06 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt @@ -52,7 +52,7 @@ override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { - scene = resources.getStringArray(R.array.type_data)[position] +// scene = resources.getStringArray(R.array.type_data)[position] } override fun onNothingSelected(parent: AdapterView<*>?) { @@ -80,6 +80,10 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) + + + + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] getCheckManifestByPage() checkManifestViewModel.manifestResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index dfc956f..ac49cae 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -6,7 +6,6 @@ import com.casic.br.app.databinding.ActivityCheckManifestBySceneBinding import com.casic.br.app.fragment.CheckManifestFragment import com.casic.br.app.fragment.HiddenTroubleFragment -import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant @@ -21,11 +20,12 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList + val subPageTitles = arrayOf("${args[0]}检查清单", "隐患列表") fragmentPages.add(CheckManifestFragment(args[0])) fragmentPages.add(HiddenTroubleFragment(args[1])) val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages + supportFragmentManager, subPageTitles, fragmentPages ) //页面永不销毁 binding.viewPager.offscreenPageLimit = fragmentPages.size diff --git a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt index 382ab7b..fc80862 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt @@ -2,12 +2,10 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.amap.api.location.AMapLocation import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckResultBinding import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.model.HiddenTroubleListResultModel -import com.casic.br.app.utils.LocationManager import com.casic.br.app.vm.InspectionViewModel import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder @@ -22,7 +20,6 @@ private val kTag = "CheckResultActivity" private val context = this - private val locationManager by lazy { LocationManager(this) } private lateinit var inspectionViewModel: InspectionViewModel private lateinit var inspectionId: String @@ -72,14 +69,6 @@ binding.recyclerView.adapter = troublesAdapter } } - - locationManager.getCurrentLocation(false, object : LocationManager.OnGetLocationListener { - override fun onAMapLocationGet(location: AMapLocation?) { - location?.apply { - binding.inputSiteView.setText(address) - } - } - }) } override fun initViewBinding(): ActivityCheckResultBinding { @@ -103,9 +92,4 @@ override fun setupTopBarLayout() { } - - override fun onDestroy() { - super.onDestroy() - locationManager.stopLocation() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt new file mode 100644 index 0000000..f59fc02 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt @@ -0,0 +1,73 @@ +package com.casic.br.app.view + +import android.os.Bundle +import android.view.View +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityFullScreenVideoBinding +import com.casic.br.app.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import com.shuyu.gsyvideoplayer.GSYVideoManager +import com.shuyu.gsyvideoplayer.utils.OrientationUtils + +class FullScreenVideoActivity : KotlinBaseActivity() { + + private var orientationUtils: OrientationUtils? = null + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + val videoPath = intent.getStringExtra(Constant.INTENT_PARAM) + binding.videoPlayer.setUp(videoPath, true, "") + + binding.videoPlayer.titleTextView.visibility = View.GONE + binding.videoPlayer.fullscreenButton.visibility = View.GONE + //设置旋转 + orientationUtils = OrientationUtils(this, binding.videoPlayer) + //是否可以滑动调整 + binding.videoPlayer.setIsTouchWiget(true) + + //不需要屏幕旋转 + binding.videoPlayer.isNeedOrientationUtils = false + binding.videoPlayer.startPlayLogic() + + binding.videoPlayer.backButton.setOnClickListener { onBackPressed() } + } + + override fun initViewBinding(): ActivityFullScreenVideoBinding { + return ActivityFullScreenVideoBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + } + + override fun onPause() { + super.onPause() + binding.videoPlayer.onVideoPause() + } + + override fun onResume() { + super.onResume() + binding.videoPlayer.onVideoResume() + } + + override fun onDestroy() { + super.onDestroy() + GSYVideoManager.releaseAllVideos() + orientationUtils?.releaseListener() + } + + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + //释放所有 + binding.videoPlayer.setVideoAllCallBack(null) + super.onBackPressed() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt index bd8ebec..38b97bd 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt @@ -105,9 +105,10 @@ viewHolder: ViewHolder, position: Int, item: HiddenTroubleModel.DataModel.RowsModel ) { - viewHolder.setText(R.id.troubleTypeView, item.mainClassName) - .setText(R.id.troubleNameView, item.subClassName) - .setText(R.id.troubleContentView, item.sceneName) + viewHolder.setText( + R.id.troubleTypeView, "${item.mainClassName}/${item.subClassName}" + ).setText(R.id.troubleNameView, item.name) + .setText(R.id.troubleContentView, item.content) } } binding.recyclerView.adapter = hiddenTroubleAdapter diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt index 0d663df..d8aeb4f 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityHiddenTroubleDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.vm.HiddenTroubleViewModel import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -41,9 +42,9 @@ val alarmImageList = it.data.alarmImageList if (alarmImageList.isNotEmpty()) { val images = ArrayList() -// alarmImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + alarmImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.troubleImageGridView.adapter = imageAdapter binding.troubleImageGridView.onItemClickListener = @@ -55,9 +56,9 @@ val normalImageList = it.data.normalImageList if (normalImageList.isNotEmpty()) { val images = ArrayList() -// normalImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + normalImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.normalImageGridView.adapter = imageAdapter binding.normalImageGridView.onItemClickListener = diff --git a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt index 054eb45..6a0c42e 100644 --- a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt @@ -61,7 +61,7 @@ NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: LibraryModel.DataModel) { when (position) { - 0 -> navigatePageTo() + 0 -> navigatePageTo(t.id) else -> "未实现".show(context) } } diff --git a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt index 2b350d5..f24dd7c 100644 --- a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt @@ -170,7 +170,7 @@ // 检查 CameraProvider 可用性 cameraProviderFuture.addListener({ try { -// bindPreview(cameraProviderFuture.get()) + bindPreview(cameraProviderFuture.get()) } catch (e: ExecutionException) { e.printStackTrace() } catch (e: InterruptedException) { @@ -318,6 +318,10 @@ * 根据场景查看检查清单 * */ binding.listButton.setOnClickListener { + if (inspectionId.isBlank()) { + "请先选择场景或者识别出场景再试".show(this) + return@setOnClickListener + } navigatePageTo(arrayListOf(detectedScene, inspectionId)) } } diff --git a/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt b/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt index 11c66ea..692d72b 100644 --- a/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt @@ -3,9 +3,14 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.View +import android.widget.ImageView import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope +import com.bumptech.glide.Glide import com.casic.br.app.R import com.casic.br.app.databinding.ActivityVideoGuideBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.model.VideoGuideModel import com.casic.br.app.vm.VideoGuideViewModel @@ -13,19 +18,29 @@ import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.TitleBarView +import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext class VideoGuideActivity : KotlinBaseActivity(), Handler.Callback { + private val context = this + private val marginOffset by lazy { 5.dp2px(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var videoGuideViewModel: VideoGuideViewModel - private lateinit var videoGuideAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() + private lateinit var videoGuideAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var keywords = "" + private var classId = "" private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -49,62 +64,88 @@ } override fun initOnCreate(savedInstanceState: Bundle?) { + classId = intent.getStringExtra(Constant.INTENT_PARAM) as String + weakReferenceHandler = WeakReferenceHandler(this) videoGuideViewModel = ViewModelProvider(this)[VideoGuideViewModel::class.java] + getGuideVideoByPage() videoGuideViewModel.videosResult.observe(this) { -// if (it.code == 200) { -// val dataRows = it.data?.rows!! -// when { -// isRefresh -> { -// videoGuideAdapter.setRefreshData(dataRows) -// binding.refreshLayout.finishRefresh() -// isRefresh = false -// } -// -// isLoadMore -> { -// if (dataRows.size == 0) { -// "到底了,别拉了".show(this) -// } -// videoGuideAdapter.setLoadMoreData(dataRows) -// binding.refreshLayout.finishLoadMore() -// isLoadMore = false -// } -// -// else -> { -// dataBeans = dataRows -// weakReferenceHandler.sendEmptyMessage(2024030502) -// } -// } -// } + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + videoGuideAdapter.setRefreshData(dataRows) + binding.refreshLayout.finishRefresh() + isRefresh = false + } + + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + videoGuideAdapter.setLoadMoreData(dataRows) + binding.refreshLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2024030502) + } + } + } } } private fun getGuideVideoByPage() { - videoGuideViewModel.getGuideVideoByPage(this, keywords, page) + videoGuideViewModel.getGuideVideoByPage(this, keywords, classId, page) } override fun handleMessage(msg: Message): Boolean { when (msg.what) { 2024030502 -> { - videoGuideAdapter = object : - NormalRecyclerAdapter( + videoGuideAdapter = + object : NormalRecyclerAdapter( R.layout.item_guide_video, dataBeans ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: VideoGuideModel - ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: VideoGuideModel.DataModel.RowsModel + ) { + if (item.attachment.endsWith(".mp4")) { + viewHolder.setVisibility(R.id.videoPlayer, View.VISIBLE) + .setVisibility(R.id.imageView, View.GONE) + val videoPlayer = viewHolder.getView( + R.id.videoPlayer + ) + initVideoPlayer(videoPlayer, item.attachment.combineFilePath()) + } else { + viewHolder.setVisibility(R.id.videoPlayer, View.GONE) + .setVisibility(R.id.imageView, View.VISIBLE) + .setImageResource( + R.id.imageView, item.attachment.combineFilePath() + ) + } + viewHolder.setText(R.id.guideNameView, item.title) + } } - } binding.recyclerView.adapter = videoGuideAdapter - binding.recyclerView.addItemDecoration(RecyclerViewItemOffsets(0, 7, 0, 7)) + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) videoGuideAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: VideoGuideModel + position: Int, t: VideoGuideModel.DataModel.RowsModel ) { - //TODO 查看指导视频详情 + if (t.attachment.endsWith(".mp4")) { + navigatePageTo(t.attachment.combineFilePath()) + } else { + navigatePageTo( + 0, arrayListOf(t.attachment.combineFilePath()) + ) + } } }) } @@ -112,6 +153,30 @@ return true } + private fun initVideoPlayer(videoPlayer: StandardGSYVideoPlayer, source: String) { + videoPlayer.titleTextView.visibility = View.GONE + videoPlayer.backButton.visibility = View.GONE + lifecycleScope.launch(Dispatchers.Main) { + try { + val drawable = withContext(Dispatchers.IO) { + Glide.with(context).load(source).submit().get() + } + val coverImg = ImageView(context) + coverImg.setImageDrawable(drawable) + videoPlayer.thumbImageView = coverImg + } catch (e: Exception) { + e.printStackTrace() + } + } + videoPlayer.setUp(source, true, "") + videoPlayer.fullscreenButton.setOnClickListener { + navigatePageTo(source) + } + videoPlayer.playTag = System.currentTimeMillis().toString() + videoPlayer.isReleaseWhenLossAudio = false + videoPlayer.setIsTouchWiget(false) + } + override fun initViewBinding(): ActivityVideoGuideBinding { return ActivityVideoGuideBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt b/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt index 83ba32d..c227540 100644 --- a/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt +++ b/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt @@ -18,9 +18,11 @@ private val gson by lazy { Gson() } val videosResult = MutableLiveData() - fun getGuideVideoByPage(context: Context, keywords: String, offset: Int) = launch({ + fun getGuideVideoByPage( + context: Context, keywords: String, classId: String, offset: Int + ) = launch({ loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getGuideVideoByPage(keywords, offset) + val response = RetrofitServiceManager.getGuideVideoByPage(keywords, classId, offset) when (response.getResponseCode()) { 200 -> { loadState.value = LoadState.Success diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 60826c9..0d76a8e 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -183,20 +183,9 @@ /** * 获取指导视频 */ - suspend fun getGuideVideoByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getGuideVideoByPage(keywords: String, classId: String, offset: Int): String { return api.getGuideVideoByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, keywords, classId, offset, LocaleConstant.PAGE_LIMIT ) } diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index 88c69eb..3b49732 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -58,9 +58,4 @@ const val SERVER_BASE_URL = "http://111.198.10.15:22003" const val AI_SERVER_CONFIG = "aiServerConfig" const val AI_BASE_URL = "http://192.168.186.127:5000" - - /** - * Array - * */ - val SUB_PAGE_TITLES = arrayOf("配电箱检查清单", "隐患列表") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt index 02e4998..7959a06 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt @@ -52,7 +52,7 @@ override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { - scene = resources.getStringArray(R.array.type_data)[position] +// scene = resources.getStringArray(R.array.type_data)[position] } override fun onNothingSelected(parent: AdapterView<*>?) { @@ -80,6 +80,10 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) + + + + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] getCheckManifestByPage() checkManifestViewModel.manifestResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index dfc956f..ac49cae 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -6,7 +6,6 @@ import com.casic.br.app.databinding.ActivityCheckManifestBySceneBinding import com.casic.br.app.fragment.CheckManifestFragment import com.casic.br.app.fragment.HiddenTroubleFragment -import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant @@ -21,11 +20,12 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList + val subPageTitles = arrayOf("${args[0]}检查清单", "隐患列表") fragmentPages.add(CheckManifestFragment(args[0])) fragmentPages.add(HiddenTroubleFragment(args[1])) val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages + supportFragmentManager, subPageTitles, fragmentPages ) //页面永不销毁 binding.viewPager.offscreenPageLimit = fragmentPages.size diff --git a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt index 382ab7b..fc80862 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt @@ -2,12 +2,10 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.amap.api.location.AMapLocation import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckResultBinding import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.model.HiddenTroubleListResultModel -import com.casic.br.app.utils.LocationManager import com.casic.br.app.vm.InspectionViewModel import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder @@ -22,7 +20,6 @@ private val kTag = "CheckResultActivity" private val context = this - private val locationManager by lazy { LocationManager(this) } private lateinit var inspectionViewModel: InspectionViewModel private lateinit var inspectionId: String @@ -72,14 +69,6 @@ binding.recyclerView.adapter = troublesAdapter } } - - locationManager.getCurrentLocation(false, object : LocationManager.OnGetLocationListener { - override fun onAMapLocationGet(location: AMapLocation?) { - location?.apply { - binding.inputSiteView.setText(address) - } - } - }) } override fun initViewBinding(): ActivityCheckResultBinding { @@ -103,9 +92,4 @@ override fun setupTopBarLayout() { } - - override fun onDestroy() { - super.onDestroy() - locationManager.stopLocation() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt new file mode 100644 index 0000000..f59fc02 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt @@ -0,0 +1,73 @@ +package com.casic.br.app.view + +import android.os.Bundle +import android.view.View +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityFullScreenVideoBinding +import com.casic.br.app.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import com.shuyu.gsyvideoplayer.GSYVideoManager +import com.shuyu.gsyvideoplayer.utils.OrientationUtils + +class FullScreenVideoActivity : KotlinBaseActivity() { + + private var orientationUtils: OrientationUtils? = null + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + val videoPath = intent.getStringExtra(Constant.INTENT_PARAM) + binding.videoPlayer.setUp(videoPath, true, "") + + binding.videoPlayer.titleTextView.visibility = View.GONE + binding.videoPlayer.fullscreenButton.visibility = View.GONE + //设置旋转 + orientationUtils = OrientationUtils(this, binding.videoPlayer) + //是否可以滑动调整 + binding.videoPlayer.setIsTouchWiget(true) + + //不需要屏幕旋转 + binding.videoPlayer.isNeedOrientationUtils = false + binding.videoPlayer.startPlayLogic() + + binding.videoPlayer.backButton.setOnClickListener { onBackPressed() } + } + + override fun initViewBinding(): ActivityFullScreenVideoBinding { + return ActivityFullScreenVideoBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + } + + override fun onPause() { + super.onPause() + binding.videoPlayer.onVideoPause() + } + + override fun onResume() { + super.onResume() + binding.videoPlayer.onVideoResume() + } + + override fun onDestroy() { + super.onDestroy() + GSYVideoManager.releaseAllVideos() + orientationUtils?.releaseListener() + } + + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + //释放所有 + binding.videoPlayer.setVideoAllCallBack(null) + super.onBackPressed() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt index bd8ebec..38b97bd 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt @@ -105,9 +105,10 @@ viewHolder: ViewHolder, position: Int, item: HiddenTroubleModel.DataModel.RowsModel ) { - viewHolder.setText(R.id.troubleTypeView, item.mainClassName) - .setText(R.id.troubleNameView, item.subClassName) - .setText(R.id.troubleContentView, item.sceneName) + viewHolder.setText( + R.id.troubleTypeView, "${item.mainClassName}/${item.subClassName}" + ).setText(R.id.troubleNameView, item.name) + .setText(R.id.troubleContentView, item.content) } } binding.recyclerView.adapter = hiddenTroubleAdapter diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt index 0d663df..d8aeb4f 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityHiddenTroubleDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.vm.HiddenTroubleViewModel import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -41,9 +42,9 @@ val alarmImageList = it.data.alarmImageList if (alarmImageList.isNotEmpty()) { val images = ArrayList() -// alarmImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + alarmImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.troubleImageGridView.adapter = imageAdapter binding.troubleImageGridView.onItemClickListener = @@ -55,9 +56,9 @@ val normalImageList = it.data.normalImageList if (normalImageList.isNotEmpty()) { val images = ArrayList() -// normalImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + normalImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.normalImageGridView.adapter = imageAdapter binding.normalImageGridView.onItemClickListener = diff --git a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt index 054eb45..6a0c42e 100644 --- a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt @@ -61,7 +61,7 @@ NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: LibraryModel.DataModel) { when (position) { - 0 -> navigatePageTo() + 0 -> navigatePageTo(t.id) else -> "未实现".show(context) } } diff --git a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt index 2b350d5..f24dd7c 100644 --- a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt @@ -170,7 +170,7 @@ // 检查 CameraProvider 可用性 cameraProviderFuture.addListener({ try { -// bindPreview(cameraProviderFuture.get()) + bindPreview(cameraProviderFuture.get()) } catch (e: ExecutionException) { e.printStackTrace() } catch (e: InterruptedException) { @@ -318,6 +318,10 @@ * 根据场景查看检查清单 * */ binding.listButton.setOnClickListener { + if (inspectionId.isBlank()) { + "请先选择场景或者识别出场景再试".show(this) + return@setOnClickListener + } navigatePageTo(arrayListOf(detectedScene, inspectionId)) } } diff --git a/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt b/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt index 11c66ea..692d72b 100644 --- a/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt @@ -3,9 +3,14 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.View +import android.widget.ImageView import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope +import com.bumptech.glide.Glide import com.casic.br.app.R import com.casic.br.app.databinding.ActivityVideoGuideBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.model.VideoGuideModel import com.casic.br.app.vm.VideoGuideViewModel @@ -13,19 +18,29 @@ import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.TitleBarView +import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext class VideoGuideActivity : KotlinBaseActivity(), Handler.Callback { + private val context = this + private val marginOffset by lazy { 5.dp2px(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var videoGuideViewModel: VideoGuideViewModel - private lateinit var videoGuideAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() + private lateinit var videoGuideAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var keywords = "" + private var classId = "" private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -49,62 +64,88 @@ } override fun initOnCreate(savedInstanceState: Bundle?) { + classId = intent.getStringExtra(Constant.INTENT_PARAM) as String + weakReferenceHandler = WeakReferenceHandler(this) videoGuideViewModel = ViewModelProvider(this)[VideoGuideViewModel::class.java] + getGuideVideoByPage() videoGuideViewModel.videosResult.observe(this) { -// if (it.code == 200) { -// val dataRows = it.data?.rows!! -// when { -// isRefresh -> { -// videoGuideAdapter.setRefreshData(dataRows) -// binding.refreshLayout.finishRefresh() -// isRefresh = false -// } -// -// isLoadMore -> { -// if (dataRows.size == 0) { -// "到底了,别拉了".show(this) -// } -// videoGuideAdapter.setLoadMoreData(dataRows) -// binding.refreshLayout.finishLoadMore() -// isLoadMore = false -// } -// -// else -> { -// dataBeans = dataRows -// weakReferenceHandler.sendEmptyMessage(2024030502) -// } -// } -// } + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + videoGuideAdapter.setRefreshData(dataRows) + binding.refreshLayout.finishRefresh() + isRefresh = false + } + + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + videoGuideAdapter.setLoadMoreData(dataRows) + binding.refreshLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2024030502) + } + } + } } } private fun getGuideVideoByPage() { - videoGuideViewModel.getGuideVideoByPage(this, keywords, page) + videoGuideViewModel.getGuideVideoByPage(this, keywords, classId, page) } override fun handleMessage(msg: Message): Boolean { when (msg.what) { 2024030502 -> { - videoGuideAdapter = object : - NormalRecyclerAdapter( + videoGuideAdapter = + object : NormalRecyclerAdapter( R.layout.item_guide_video, dataBeans ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: VideoGuideModel - ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: VideoGuideModel.DataModel.RowsModel + ) { + if (item.attachment.endsWith(".mp4")) { + viewHolder.setVisibility(R.id.videoPlayer, View.VISIBLE) + .setVisibility(R.id.imageView, View.GONE) + val videoPlayer = viewHolder.getView( + R.id.videoPlayer + ) + initVideoPlayer(videoPlayer, item.attachment.combineFilePath()) + } else { + viewHolder.setVisibility(R.id.videoPlayer, View.GONE) + .setVisibility(R.id.imageView, View.VISIBLE) + .setImageResource( + R.id.imageView, item.attachment.combineFilePath() + ) + } + viewHolder.setText(R.id.guideNameView, item.title) + } } - } binding.recyclerView.adapter = videoGuideAdapter - binding.recyclerView.addItemDecoration(RecyclerViewItemOffsets(0, 7, 0, 7)) + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) videoGuideAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: VideoGuideModel + position: Int, t: VideoGuideModel.DataModel.RowsModel ) { - //TODO 查看指导视频详情 + if (t.attachment.endsWith(".mp4")) { + navigatePageTo(t.attachment.combineFilePath()) + } else { + navigatePageTo( + 0, arrayListOf(t.attachment.combineFilePath()) + ) + } } }) } @@ -112,6 +153,30 @@ return true } + private fun initVideoPlayer(videoPlayer: StandardGSYVideoPlayer, source: String) { + videoPlayer.titleTextView.visibility = View.GONE + videoPlayer.backButton.visibility = View.GONE + lifecycleScope.launch(Dispatchers.Main) { + try { + val drawable = withContext(Dispatchers.IO) { + Glide.with(context).load(source).submit().get() + } + val coverImg = ImageView(context) + coverImg.setImageDrawable(drawable) + videoPlayer.thumbImageView = coverImg + } catch (e: Exception) { + e.printStackTrace() + } + } + videoPlayer.setUp(source, true, "") + videoPlayer.fullscreenButton.setOnClickListener { + navigatePageTo(source) + } + videoPlayer.playTag = System.currentTimeMillis().toString() + videoPlayer.isReleaseWhenLossAudio = false + videoPlayer.setIsTouchWiget(false) + } + override fun initViewBinding(): ActivityVideoGuideBinding { return ActivityVideoGuideBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt b/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt index 83ba32d..c227540 100644 --- a/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt +++ b/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt @@ -18,9 +18,11 @@ private val gson by lazy { Gson() } val videosResult = MutableLiveData() - fun getGuideVideoByPage(context: Context, keywords: String, offset: Int) = launch({ + fun getGuideVideoByPage( + context: Context, keywords: String, classId: String, offset: Int + ) = launch({ loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getGuideVideoByPage(keywords, offset) + val response = RetrofitServiceManager.getGuideVideoByPage(keywords, classId, offset) when (response.getResponseCode()) { 200 -> { loadState.value = LoadState.Success diff --git a/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt b/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt index 8c32684..638ed88 100644 --- a/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt +++ b/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt @@ -5,7 +5,7 @@ import android.os.Bundle import android.view.Gravity import com.casic.br.app.R -import com.casic.br.app.databinding.CheckStandardSheetBinding +import com.casic.br.app.databinding.SheetCheckStandardBinding import com.pengxh.kt.lite.extensions.binding import com.pengxh.kt.lite.extensions.resetParams @@ -36,7 +36,7 @@ } } - private val binding: CheckStandardSheetBinding by binding() + private val binding: SheetCheckStandardBinding by binding() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 60826c9..0d76a8e 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -183,20 +183,9 @@ /** * 获取指导视频 */ - suspend fun getGuideVideoByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getGuideVideoByPage(keywords: String, classId: String, offset: Int): String { return api.getGuideVideoByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, keywords, classId, offset, LocaleConstant.PAGE_LIMIT ) } diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index 88c69eb..3b49732 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -58,9 +58,4 @@ const val SERVER_BASE_URL = "http://111.198.10.15:22003" const val AI_SERVER_CONFIG = "aiServerConfig" const val AI_BASE_URL = "http://192.168.186.127:5000" - - /** - * Array - * */ - val SUB_PAGE_TITLES = arrayOf("配电箱检查清单", "隐患列表") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt index 02e4998..7959a06 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt @@ -52,7 +52,7 @@ override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { - scene = resources.getStringArray(R.array.type_data)[position] +// scene = resources.getStringArray(R.array.type_data)[position] } override fun onNothingSelected(parent: AdapterView<*>?) { @@ -80,6 +80,10 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) + + + + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] getCheckManifestByPage() checkManifestViewModel.manifestResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index dfc956f..ac49cae 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -6,7 +6,6 @@ import com.casic.br.app.databinding.ActivityCheckManifestBySceneBinding import com.casic.br.app.fragment.CheckManifestFragment import com.casic.br.app.fragment.HiddenTroubleFragment -import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant @@ -21,11 +20,12 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList + val subPageTitles = arrayOf("${args[0]}检查清单", "隐患列表") fragmentPages.add(CheckManifestFragment(args[0])) fragmentPages.add(HiddenTroubleFragment(args[1])) val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages + supportFragmentManager, subPageTitles, fragmentPages ) //页面永不销毁 binding.viewPager.offscreenPageLimit = fragmentPages.size diff --git a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt index 382ab7b..fc80862 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt @@ -2,12 +2,10 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.amap.api.location.AMapLocation import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckResultBinding import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.model.HiddenTroubleListResultModel -import com.casic.br.app.utils.LocationManager import com.casic.br.app.vm.InspectionViewModel import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder @@ -22,7 +20,6 @@ private val kTag = "CheckResultActivity" private val context = this - private val locationManager by lazy { LocationManager(this) } private lateinit var inspectionViewModel: InspectionViewModel private lateinit var inspectionId: String @@ -72,14 +69,6 @@ binding.recyclerView.adapter = troublesAdapter } } - - locationManager.getCurrentLocation(false, object : LocationManager.OnGetLocationListener { - override fun onAMapLocationGet(location: AMapLocation?) { - location?.apply { - binding.inputSiteView.setText(address) - } - } - }) } override fun initViewBinding(): ActivityCheckResultBinding { @@ -103,9 +92,4 @@ override fun setupTopBarLayout() { } - - override fun onDestroy() { - super.onDestroy() - locationManager.stopLocation() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt new file mode 100644 index 0000000..f59fc02 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt @@ -0,0 +1,73 @@ +package com.casic.br.app.view + +import android.os.Bundle +import android.view.View +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityFullScreenVideoBinding +import com.casic.br.app.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import com.shuyu.gsyvideoplayer.GSYVideoManager +import com.shuyu.gsyvideoplayer.utils.OrientationUtils + +class FullScreenVideoActivity : KotlinBaseActivity() { + + private var orientationUtils: OrientationUtils? = null + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + val videoPath = intent.getStringExtra(Constant.INTENT_PARAM) + binding.videoPlayer.setUp(videoPath, true, "") + + binding.videoPlayer.titleTextView.visibility = View.GONE + binding.videoPlayer.fullscreenButton.visibility = View.GONE + //设置旋转 + orientationUtils = OrientationUtils(this, binding.videoPlayer) + //是否可以滑动调整 + binding.videoPlayer.setIsTouchWiget(true) + + //不需要屏幕旋转 + binding.videoPlayer.isNeedOrientationUtils = false + binding.videoPlayer.startPlayLogic() + + binding.videoPlayer.backButton.setOnClickListener { onBackPressed() } + } + + override fun initViewBinding(): ActivityFullScreenVideoBinding { + return ActivityFullScreenVideoBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + } + + override fun onPause() { + super.onPause() + binding.videoPlayer.onVideoPause() + } + + override fun onResume() { + super.onResume() + binding.videoPlayer.onVideoResume() + } + + override fun onDestroy() { + super.onDestroy() + GSYVideoManager.releaseAllVideos() + orientationUtils?.releaseListener() + } + + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + //释放所有 + binding.videoPlayer.setVideoAllCallBack(null) + super.onBackPressed() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt index bd8ebec..38b97bd 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt @@ -105,9 +105,10 @@ viewHolder: ViewHolder, position: Int, item: HiddenTroubleModel.DataModel.RowsModel ) { - viewHolder.setText(R.id.troubleTypeView, item.mainClassName) - .setText(R.id.troubleNameView, item.subClassName) - .setText(R.id.troubleContentView, item.sceneName) + viewHolder.setText( + R.id.troubleTypeView, "${item.mainClassName}/${item.subClassName}" + ).setText(R.id.troubleNameView, item.name) + .setText(R.id.troubleContentView, item.content) } } binding.recyclerView.adapter = hiddenTroubleAdapter diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt index 0d663df..d8aeb4f 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityHiddenTroubleDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.vm.HiddenTroubleViewModel import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -41,9 +42,9 @@ val alarmImageList = it.data.alarmImageList if (alarmImageList.isNotEmpty()) { val images = ArrayList() -// alarmImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + alarmImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.troubleImageGridView.adapter = imageAdapter binding.troubleImageGridView.onItemClickListener = @@ -55,9 +56,9 @@ val normalImageList = it.data.normalImageList if (normalImageList.isNotEmpty()) { val images = ArrayList() -// normalImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + normalImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.normalImageGridView.adapter = imageAdapter binding.normalImageGridView.onItemClickListener = diff --git a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt index 054eb45..6a0c42e 100644 --- a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt @@ -61,7 +61,7 @@ NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: LibraryModel.DataModel) { when (position) { - 0 -> navigatePageTo() + 0 -> navigatePageTo(t.id) else -> "未实现".show(context) } } diff --git a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt index 2b350d5..f24dd7c 100644 --- a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt @@ -170,7 +170,7 @@ // 检查 CameraProvider 可用性 cameraProviderFuture.addListener({ try { -// bindPreview(cameraProviderFuture.get()) + bindPreview(cameraProviderFuture.get()) } catch (e: ExecutionException) { e.printStackTrace() } catch (e: InterruptedException) { @@ -318,6 +318,10 @@ * 根据场景查看检查清单 * */ binding.listButton.setOnClickListener { + if (inspectionId.isBlank()) { + "请先选择场景或者识别出场景再试".show(this) + return@setOnClickListener + } navigatePageTo(arrayListOf(detectedScene, inspectionId)) } } diff --git a/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt b/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt index 11c66ea..692d72b 100644 --- a/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt @@ -3,9 +3,14 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.View +import android.widget.ImageView import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope +import com.bumptech.glide.Glide import com.casic.br.app.R import com.casic.br.app.databinding.ActivityVideoGuideBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.model.VideoGuideModel import com.casic.br.app.vm.VideoGuideViewModel @@ -13,19 +18,29 @@ import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.TitleBarView +import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext class VideoGuideActivity : KotlinBaseActivity(), Handler.Callback { + private val context = this + private val marginOffset by lazy { 5.dp2px(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var videoGuideViewModel: VideoGuideViewModel - private lateinit var videoGuideAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() + private lateinit var videoGuideAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var keywords = "" + private var classId = "" private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -49,62 +64,88 @@ } override fun initOnCreate(savedInstanceState: Bundle?) { + classId = intent.getStringExtra(Constant.INTENT_PARAM) as String + weakReferenceHandler = WeakReferenceHandler(this) videoGuideViewModel = ViewModelProvider(this)[VideoGuideViewModel::class.java] + getGuideVideoByPage() videoGuideViewModel.videosResult.observe(this) { -// if (it.code == 200) { -// val dataRows = it.data?.rows!! -// when { -// isRefresh -> { -// videoGuideAdapter.setRefreshData(dataRows) -// binding.refreshLayout.finishRefresh() -// isRefresh = false -// } -// -// isLoadMore -> { -// if (dataRows.size == 0) { -// "到底了,别拉了".show(this) -// } -// videoGuideAdapter.setLoadMoreData(dataRows) -// binding.refreshLayout.finishLoadMore() -// isLoadMore = false -// } -// -// else -> { -// dataBeans = dataRows -// weakReferenceHandler.sendEmptyMessage(2024030502) -// } -// } -// } + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + videoGuideAdapter.setRefreshData(dataRows) + binding.refreshLayout.finishRefresh() + isRefresh = false + } + + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + videoGuideAdapter.setLoadMoreData(dataRows) + binding.refreshLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2024030502) + } + } + } } } private fun getGuideVideoByPage() { - videoGuideViewModel.getGuideVideoByPage(this, keywords, page) + videoGuideViewModel.getGuideVideoByPage(this, keywords, classId, page) } override fun handleMessage(msg: Message): Boolean { when (msg.what) { 2024030502 -> { - videoGuideAdapter = object : - NormalRecyclerAdapter( + videoGuideAdapter = + object : NormalRecyclerAdapter( R.layout.item_guide_video, dataBeans ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: VideoGuideModel - ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: VideoGuideModel.DataModel.RowsModel + ) { + if (item.attachment.endsWith(".mp4")) { + viewHolder.setVisibility(R.id.videoPlayer, View.VISIBLE) + .setVisibility(R.id.imageView, View.GONE) + val videoPlayer = viewHolder.getView( + R.id.videoPlayer + ) + initVideoPlayer(videoPlayer, item.attachment.combineFilePath()) + } else { + viewHolder.setVisibility(R.id.videoPlayer, View.GONE) + .setVisibility(R.id.imageView, View.VISIBLE) + .setImageResource( + R.id.imageView, item.attachment.combineFilePath() + ) + } + viewHolder.setText(R.id.guideNameView, item.title) + } } - } binding.recyclerView.adapter = videoGuideAdapter - binding.recyclerView.addItemDecoration(RecyclerViewItemOffsets(0, 7, 0, 7)) + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) videoGuideAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: VideoGuideModel + position: Int, t: VideoGuideModel.DataModel.RowsModel ) { - //TODO 查看指导视频详情 + if (t.attachment.endsWith(".mp4")) { + navigatePageTo(t.attachment.combineFilePath()) + } else { + navigatePageTo( + 0, arrayListOf(t.attachment.combineFilePath()) + ) + } } }) } @@ -112,6 +153,30 @@ return true } + private fun initVideoPlayer(videoPlayer: StandardGSYVideoPlayer, source: String) { + videoPlayer.titleTextView.visibility = View.GONE + videoPlayer.backButton.visibility = View.GONE + lifecycleScope.launch(Dispatchers.Main) { + try { + val drawable = withContext(Dispatchers.IO) { + Glide.with(context).load(source).submit().get() + } + val coverImg = ImageView(context) + coverImg.setImageDrawable(drawable) + videoPlayer.thumbImageView = coverImg + } catch (e: Exception) { + e.printStackTrace() + } + } + videoPlayer.setUp(source, true, "") + videoPlayer.fullscreenButton.setOnClickListener { + navigatePageTo(source) + } + videoPlayer.playTag = System.currentTimeMillis().toString() + videoPlayer.isReleaseWhenLossAudio = false + videoPlayer.setIsTouchWiget(false) + } + override fun initViewBinding(): ActivityVideoGuideBinding { return ActivityVideoGuideBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt b/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt index 83ba32d..c227540 100644 --- a/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt +++ b/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt @@ -18,9 +18,11 @@ private val gson by lazy { Gson() } val videosResult = MutableLiveData() - fun getGuideVideoByPage(context: Context, keywords: String, offset: Int) = launch({ + fun getGuideVideoByPage( + context: Context, keywords: String, classId: String, offset: Int + ) = launch({ loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getGuideVideoByPage(keywords, offset) + val response = RetrofitServiceManager.getGuideVideoByPage(keywords, classId, offset) when (response.getResponseCode()) { 200 -> { loadState.value = LoadState.Success diff --git a/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt b/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt index 8c32684..638ed88 100644 --- a/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt +++ b/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt @@ -5,7 +5,7 @@ import android.os.Bundle import android.view.Gravity import com.casic.br.app.R -import com.casic.br.app.databinding.CheckStandardSheetBinding +import com.casic.br.app.databinding.SheetCheckStandardBinding import com.pengxh.kt.lite.extensions.binding import com.pengxh.kt.lite.extensions.resetParams @@ -36,7 +36,7 @@ } } - private val binding: CheckStandardSheetBinding by binding() + private val binding: SheetCheckStandardBinding by binding() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/res/layout/activity_check_manifest.xml b/app/src/main/res/layout/activity_check_manifest.xml index 54ba04f..cad4480 100644 --- a/app/src/main/res/layout/activity_check_manifest.xml +++ b/app/src/main/res/layout/activity_check_manifest.xml @@ -60,11 +60,11 @@ + android:layout_weight="1" + android:background="@color/white" /> + android:background="@color/white" /> + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 60826c9..0d76a8e 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -183,20 +183,9 @@ /** * 获取指导视频 */ - suspend fun getGuideVideoByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getGuideVideoByPage(keywords: String, classId: String, offset: Int): String { return api.getGuideVideoByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, keywords, classId, offset, LocaleConstant.PAGE_LIMIT ) } diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index 88c69eb..3b49732 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -58,9 +58,4 @@ const val SERVER_BASE_URL = "http://111.198.10.15:22003" const val AI_SERVER_CONFIG = "aiServerConfig" const val AI_BASE_URL = "http://192.168.186.127:5000" - - /** - * Array - * */ - val SUB_PAGE_TITLES = arrayOf("配电箱检查清单", "隐患列表") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt index 02e4998..7959a06 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt @@ -52,7 +52,7 @@ override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { - scene = resources.getStringArray(R.array.type_data)[position] +// scene = resources.getStringArray(R.array.type_data)[position] } override fun onNothingSelected(parent: AdapterView<*>?) { @@ -80,6 +80,10 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) + + + + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] getCheckManifestByPage() checkManifestViewModel.manifestResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index dfc956f..ac49cae 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -6,7 +6,6 @@ import com.casic.br.app.databinding.ActivityCheckManifestBySceneBinding import com.casic.br.app.fragment.CheckManifestFragment import com.casic.br.app.fragment.HiddenTroubleFragment -import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant @@ -21,11 +20,12 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList + val subPageTitles = arrayOf("${args[0]}检查清单", "隐患列表") fragmentPages.add(CheckManifestFragment(args[0])) fragmentPages.add(HiddenTroubleFragment(args[1])) val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages + supportFragmentManager, subPageTitles, fragmentPages ) //页面永不销毁 binding.viewPager.offscreenPageLimit = fragmentPages.size diff --git a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt index 382ab7b..fc80862 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt @@ -2,12 +2,10 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.amap.api.location.AMapLocation import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckResultBinding import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.model.HiddenTroubleListResultModel -import com.casic.br.app.utils.LocationManager import com.casic.br.app.vm.InspectionViewModel import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder @@ -22,7 +20,6 @@ private val kTag = "CheckResultActivity" private val context = this - private val locationManager by lazy { LocationManager(this) } private lateinit var inspectionViewModel: InspectionViewModel private lateinit var inspectionId: String @@ -72,14 +69,6 @@ binding.recyclerView.adapter = troublesAdapter } } - - locationManager.getCurrentLocation(false, object : LocationManager.OnGetLocationListener { - override fun onAMapLocationGet(location: AMapLocation?) { - location?.apply { - binding.inputSiteView.setText(address) - } - } - }) } override fun initViewBinding(): ActivityCheckResultBinding { @@ -103,9 +92,4 @@ override fun setupTopBarLayout() { } - - override fun onDestroy() { - super.onDestroy() - locationManager.stopLocation() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt new file mode 100644 index 0000000..f59fc02 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt @@ -0,0 +1,73 @@ +package com.casic.br.app.view + +import android.os.Bundle +import android.view.View +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityFullScreenVideoBinding +import com.casic.br.app.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import com.shuyu.gsyvideoplayer.GSYVideoManager +import com.shuyu.gsyvideoplayer.utils.OrientationUtils + +class FullScreenVideoActivity : KotlinBaseActivity() { + + private var orientationUtils: OrientationUtils? = null + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + val videoPath = intent.getStringExtra(Constant.INTENT_PARAM) + binding.videoPlayer.setUp(videoPath, true, "") + + binding.videoPlayer.titleTextView.visibility = View.GONE + binding.videoPlayer.fullscreenButton.visibility = View.GONE + //设置旋转 + orientationUtils = OrientationUtils(this, binding.videoPlayer) + //是否可以滑动调整 + binding.videoPlayer.setIsTouchWiget(true) + + //不需要屏幕旋转 + binding.videoPlayer.isNeedOrientationUtils = false + binding.videoPlayer.startPlayLogic() + + binding.videoPlayer.backButton.setOnClickListener { onBackPressed() } + } + + override fun initViewBinding(): ActivityFullScreenVideoBinding { + return ActivityFullScreenVideoBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + } + + override fun onPause() { + super.onPause() + binding.videoPlayer.onVideoPause() + } + + override fun onResume() { + super.onResume() + binding.videoPlayer.onVideoResume() + } + + override fun onDestroy() { + super.onDestroy() + GSYVideoManager.releaseAllVideos() + orientationUtils?.releaseListener() + } + + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + //释放所有 + binding.videoPlayer.setVideoAllCallBack(null) + super.onBackPressed() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt index bd8ebec..38b97bd 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt @@ -105,9 +105,10 @@ viewHolder: ViewHolder, position: Int, item: HiddenTroubleModel.DataModel.RowsModel ) { - viewHolder.setText(R.id.troubleTypeView, item.mainClassName) - .setText(R.id.troubleNameView, item.subClassName) - .setText(R.id.troubleContentView, item.sceneName) + viewHolder.setText( + R.id.troubleTypeView, "${item.mainClassName}/${item.subClassName}" + ).setText(R.id.troubleNameView, item.name) + .setText(R.id.troubleContentView, item.content) } } binding.recyclerView.adapter = hiddenTroubleAdapter diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt index 0d663df..d8aeb4f 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityHiddenTroubleDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.vm.HiddenTroubleViewModel import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -41,9 +42,9 @@ val alarmImageList = it.data.alarmImageList if (alarmImageList.isNotEmpty()) { val images = ArrayList() -// alarmImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + alarmImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.troubleImageGridView.adapter = imageAdapter binding.troubleImageGridView.onItemClickListener = @@ -55,9 +56,9 @@ val normalImageList = it.data.normalImageList if (normalImageList.isNotEmpty()) { val images = ArrayList() -// normalImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + normalImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.normalImageGridView.adapter = imageAdapter binding.normalImageGridView.onItemClickListener = diff --git a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt index 054eb45..6a0c42e 100644 --- a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt @@ -61,7 +61,7 @@ NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: LibraryModel.DataModel) { when (position) { - 0 -> navigatePageTo() + 0 -> navigatePageTo(t.id) else -> "未实现".show(context) } } diff --git a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt index 2b350d5..f24dd7c 100644 --- a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt @@ -170,7 +170,7 @@ // 检查 CameraProvider 可用性 cameraProviderFuture.addListener({ try { -// bindPreview(cameraProviderFuture.get()) + bindPreview(cameraProviderFuture.get()) } catch (e: ExecutionException) { e.printStackTrace() } catch (e: InterruptedException) { @@ -318,6 +318,10 @@ * 根据场景查看检查清单 * */ binding.listButton.setOnClickListener { + if (inspectionId.isBlank()) { + "请先选择场景或者识别出场景再试".show(this) + return@setOnClickListener + } navigatePageTo(arrayListOf(detectedScene, inspectionId)) } } diff --git a/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt b/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt index 11c66ea..692d72b 100644 --- a/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt @@ -3,9 +3,14 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.View +import android.widget.ImageView import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope +import com.bumptech.glide.Glide import com.casic.br.app.R import com.casic.br.app.databinding.ActivityVideoGuideBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.model.VideoGuideModel import com.casic.br.app.vm.VideoGuideViewModel @@ -13,19 +18,29 @@ import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.TitleBarView +import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext class VideoGuideActivity : KotlinBaseActivity(), Handler.Callback { + private val context = this + private val marginOffset by lazy { 5.dp2px(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var videoGuideViewModel: VideoGuideViewModel - private lateinit var videoGuideAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() + private lateinit var videoGuideAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var keywords = "" + private var classId = "" private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -49,62 +64,88 @@ } override fun initOnCreate(savedInstanceState: Bundle?) { + classId = intent.getStringExtra(Constant.INTENT_PARAM) as String + weakReferenceHandler = WeakReferenceHandler(this) videoGuideViewModel = ViewModelProvider(this)[VideoGuideViewModel::class.java] + getGuideVideoByPage() videoGuideViewModel.videosResult.observe(this) { -// if (it.code == 200) { -// val dataRows = it.data?.rows!! -// when { -// isRefresh -> { -// videoGuideAdapter.setRefreshData(dataRows) -// binding.refreshLayout.finishRefresh() -// isRefresh = false -// } -// -// isLoadMore -> { -// if (dataRows.size == 0) { -// "到底了,别拉了".show(this) -// } -// videoGuideAdapter.setLoadMoreData(dataRows) -// binding.refreshLayout.finishLoadMore() -// isLoadMore = false -// } -// -// else -> { -// dataBeans = dataRows -// weakReferenceHandler.sendEmptyMessage(2024030502) -// } -// } -// } + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + videoGuideAdapter.setRefreshData(dataRows) + binding.refreshLayout.finishRefresh() + isRefresh = false + } + + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + videoGuideAdapter.setLoadMoreData(dataRows) + binding.refreshLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2024030502) + } + } + } } } private fun getGuideVideoByPage() { - videoGuideViewModel.getGuideVideoByPage(this, keywords, page) + videoGuideViewModel.getGuideVideoByPage(this, keywords, classId, page) } override fun handleMessage(msg: Message): Boolean { when (msg.what) { 2024030502 -> { - videoGuideAdapter = object : - NormalRecyclerAdapter( + videoGuideAdapter = + object : NormalRecyclerAdapter( R.layout.item_guide_video, dataBeans ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: VideoGuideModel - ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: VideoGuideModel.DataModel.RowsModel + ) { + if (item.attachment.endsWith(".mp4")) { + viewHolder.setVisibility(R.id.videoPlayer, View.VISIBLE) + .setVisibility(R.id.imageView, View.GONE) + val videoPlayer = viewHolder.getView( + R.id.videoPlayer + ) + initVideoPlayer(videoPlayer, item.attachment.combineFilePath()) + } else { + viewHolder.setVisibility(R.id.videoPlayer, View.GONE) + .setVisibility(R.id.imageView, View.VISIBLE) + .setImageResource( + R.id.imageView, item.attachment.combineFilePath() + ) + } + viewHolder.setText(R.id.guideNameView, item.title) + } } - } binding.recyclerView.adapter = videoGuideAdapter - binding.recyclerView.addItemDecoration(RecyclerViewItemOffsets(0, 7, 0, 7)) + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) videoGuideAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: VideoGuideModel + position: Int, t: VideoGuideModel.DataModel.RowsModel ) { - //TODO 查看指导视频详情 + if (t.attachment.endsWith(".mp4")) { + navigatePageTo(t.attachment.combineFilePath()) + } else { + navigatePageTo( + 0, arrayListOf(t.attachment.combineFilePath()) + ) + } } }) } @@ -112,6 +153,30 @@ return true } + private fun initVideoPlayer(videoPlayer: StandardGSYVideoPlayer, source: String) { + videoPlayer.titleTextView.visibility = View.GONE + videoPlayer.backButton.visibility = View.GONE + lifecycleScope.launch(Dispatchers.Main) { + try { + val drawable = withContext(Dispatchers.IO) { + Glide.with(context).load(source).submit().get() + } + val coverImg = ImageView(context) + coverImg.setImageDrawable(drawable) + videoPlayer.thumbImageView = coverImg + } catch (e: Exception) { + e.printStackTrace() + } + } + videoPlayer.setUp(source, true, "") + videoPlayer.fullscreenButton.setOnClickListener { + navigatePageTo(source) + } + videoPlayer.playTag = System.currentTimeMillis().toString() + videoPlayer.isReleaseWhenLossAudio = false + videoPlayer.setIsTouchWiget(false) + } + override fun initViewBinding(): ActivityVideoGuideBinding { return ActivityVideoGuideBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt b/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt index 83ba32d..c227540 100644 --- a/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt +++ b/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt @@ -18,9 +18,11 @@ private val gson by lazy { Gson() } val videosResult = MutableLiveData() - fun getGuideVideoByPage(context: Context, keywords: String, offset: Int) = launch({ + fun getGuideVideoByPage( + context: Context, keywords: String, classId: String, offset: Int + ) = launch({ loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getGuideVideoByPage(keywords, offset) + val response = RetrofitServiceManager.getGuideVideoByPage(keywords, classId, offset) when (response.getResponseCode()) { 200 -> { loadState.value = LoadState.Success diff --git a/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt b/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt index 8c32684..638ed88 100644 --- a/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt +++ b/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt @@ -5,7 +5,7 @@ import android.os.Bundle import android.view.Gravity import com.casic.br.app.R -import com.casic.br.app.databinding.CheckStandardSheetBinding +import com.casic.br.app.databinding.SheetCheckStandardBinding import com.pengxh.kt.lite.extensions.binding import com.pengxh.kt.lite.extensions.resetParams @@ -36,7 +36,7 @@ } } - private val binding: CheckStandardSheetBinding by binding() + private val binding: SheetCheckStandardBinding by binding() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/res/layout/activity_check_manifest.xml b/app/src/main/res/layout/activity_check_manifest.xml index 54ba04f..cad4480 100644 --- a/app/src/main/res/layout/activity_check_manifest.xml +++ b/app/src/main/res/layout/activity_check_manifest.xml @@ -60,11 +60,11 @@ + android:layout_weight="1" + android:background="@color/white" /> + android:background="@color/white" /> + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 60826c9..0d76a8e 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -183,20 +183,9 @@ /** * 获取指导视频 */ - suspend fun getGuideVideoByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getGuideVideoByPage(keywords: String, classId: String, offset: Int): String { return api.getGuideVideoByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, keywords, classId, offset, LocaleConstant.PAGE_LIMIT ) } diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index 88c69eb..3b49732 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -58,9 +58,4 @@ const val SERVER_BASE_URL = "http://111.198.10.15:22003" const val AI_SERVER_CONFIG = "aiServerConfig" const val AI_BASE_URL = "http://192.168.186.127:5000" - - /** - * Array - * */ - val SUB_PAGE_TITLES = arrayOf("配电箱检查清单", "隐患列表") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt index 02e4998..7959a06 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt @@ -52,7 +52,7 @@ override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { - scene = resources.getStringArray(R.array.type_data)[position] +// scene = resources.getStringArray(R.array.type_data)[position] } override fun onNothingSelected(parent: AdapterView<*>?) { @@ -80,6 +80,10 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) + + + + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] getCheckManifestByPage() checkManifestViewModel.manifestResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index dfc956f..ac49cae 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -6,7 +6,6 @@ import com.casic.br.app.databinding.ActivityCheckManifestBySceneBinding import com.casic.br.app.fragment.CheckManifestFragment import com.casic.br.app.fragment.HiddenTroubleFragment -import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant @@ -21,11 +20,12 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList + val subPageTitles = arrayOf("${args[0]}检查清单", "隐患列表") fragmentPages.add(CheckManifestFragment(args[0])) fragmentPages.add(HiddenTroubleFragment(args[1])) val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages + supportFragmentManager, subPageTitles, fragmentPages ) //页面永不销毁 binding.viewPager.offscreenPageLimit = fragmentPages.size diff --git a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt index 382ab7b..fc80862 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt @@ -2,12 +2,10 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.amap.api.location.AMapLocation import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckResultBinding import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.model.HiddenTroubleListResultModel -import com.casic.br.app.utils.LocationManager import com.casic.br.app.vm.InspectionViewModel import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder @@ -22,7 +20,6 @@ private val kTag = "CheckResultActivity" private val context = this - private val locationManager by lazy { LocationManager(this) } private lateinit var inspectionViewModel: InspectionViewModel private lateinit var inspectionId: String @@ -72,14 +69,6 @@ binding.recyclerView.adapter = troublesAdapter } } - - locationManager.getCurrentLocation(false, object : LocationManager.OnGetLocationListener { - override fun onAMapLocationGet(location: AMapLocation?) { - location?.apply { - binding.inputSiteView.setText(address) - } - } - }) } override fun initViewBinding(): ActivityCheckResultBinding { @@ -103,9 +92,4 @@ override fun setupTopBarLayout() { } - - override fun onDestroy() { - super.onDestroy() - locationManager.stopLocation() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt new file mode 100644 index 0000000..f59fc02 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt @@ -0,0 +1,73 @@ +package com.casic.br.app.view + +import android.os.Bundle +import android.view.View +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityFullScreenVideoBinding +import com.casic.br.app.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import com.shuyu.gsyvideoplayer.GSYVideoManager +import com.shuyu.gsyvideoplayer.utils.OrientationUtils + +class FullScreenVideoActivity : KotlinBaseActivity() { + + private var orientationUtils: OrientationUtils? = null + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + val videoPath = intent.getStringExtra(Constant.INTENT_PARAM) + binding.videoPlayer.setUp(videoPath, true, "") + + binding.videoPlayer.titleTextView.visibility = View.GONE + binding.videoPlayer.fullscreenButton.visibility = View.GONE + //设置旋转 + orientationUtils = OrientationUtils(this, binding.videoPlayer) + //是否可以滑动调整 + binding.videoPlayer.setIsTouchWiget(true) + + //不需要屏幕旋转 + binding.videoPlayer.isNeedOrientationUtils = false + binding.videoPlayer.startPlayLogic() + + binding.videoPlayer.backButton.setOnClickListener { onBackPressed() } + } + + override fun initViewBinding(): ActivityFullScreenVideoBinding { + return ActivityFullScreenVideoBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + } + + override fun onPause() { + super.onPause() + binding.videoPlayer.onVideoPause() + } + + override fun onResume() { + super.onResume() + binding.videoPlayer.onVideoResume() + } + + override fun onDestroy() { + super.onDestroy() + GSYVideoManager.releaseAllVideos() + orientationUtils?.releaseListener() + } + + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + //释放所有 + binding.videoPlayer.setVideoAllCallBack(null) + super.onBackPressed() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt index bd8ebec..38b97bd 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt @@ -105,9 +105,10 @@ viewHolder: ViewHolder, position: Int, item: HiddenTroubleModel.DataModel.RowsModel ) { - viewHolder.setText(R.id.troubleTypeView, item.mainClassName) - .setText(R.id.troubleNameView, item.subClassName) - .setText(R.id.troubleContentView, item.sceneName) + viewHolder.setText( + R.id.troubleTypeView, "${item.mainClassName}/${item.subClassName}" + ).setText(R.id.troubleNameView, item.name) + .setText(R.id.troubleContentView, item.content) } } binding.recyclerView.adapter = hiddenTroubleAdapter diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt index 0d663df..d8aeb4f 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityHiddenTroubleDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.vm.HiddenTroubleViewModel import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -41,9 +42,9 @@ val alarmImageList = it.data.alarmImageList if (alarmImageList.isNotEmpty()) { val images = ArrayList() -// alarmImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + alarmImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.troubleImageGridView.adapter = imageAdapter binding.troubleImageGridView.onItemClickListener = @@ -55,9 +56,9 @@ val normalImageList = it.data.normalImageList if (normalImageList.isNotEmpty()) { val images = ArrayList() -// normalImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + normalImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.normalImageGridView.adapter = imageAdapter binding.normalImageGridView.onItemClickListener = diff --git a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt index 054eb45..6a0c42e 100644 --- a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt @@ -61,7 +61,7 @@ NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: LibraryModel.DataModel) { when (position) { - 0 -> navigatePageTo() + 0 -> navigatePageTo(t.id) else -> "未实现".show(context) } } diff --git a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt index 2b350d5..f24dd7c 100644 --- a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt @@ -170,7 +170,7 @@ // 检查 CameraProvider 可用性 cameraProviderFuture.addListener({ try { -// bindPreview(cameraProviderFuture.get()) + bindPreview(cameraProviderFuture.get()) } catch (e: ExecutionException) { e.printStackTrace() } catch (e: InterruptedException) { @@ -318,6 +318,10 @@ * 根据场景查看检查清单 * */ binding.listButton.setOnClickListener { + if (inspectionId.isBlank()) { + "请先选择场景或者识别出场景再试".show(this) + return@setOnClickListener + } navigatePageTo(arrayListOf(detectedScene, inspectionId)) } } diff --git a/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt b/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt index 11c66ea..692d72b 100644 --- a/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt @@ -3,9 +3,14 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.View +import android.widget.ImageView import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope +import com.bumptech.glide.Glide import com.casic.br.app.R import com.casic.br.app.databinding.ActivityVideoGuideBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.model.VideoGuideModel import com.casic.br.app.vm.VideoGuideViewModel @@ -13,19 +18,29 @@ import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.TitleBarView +import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext class VideoGuideActivity : KotlinBaseActivity(), Handler.Callback { + private val context = this + private val marginOffset by lazy { 5.dp2px(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var videoGuideViewModel: VideoGuideViewModel - private lateinit var videoGuideAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() + private lateinit var videoGuideAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var keywords = "" + private var classId = "" private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -49,62 +64,88 @@ } override fun initOnCreate(savedInstanceState: Bundle?) { + classId = intent.getStringExtra(Constant.INTENT_PARAM) as String + weakReferenceHandler = WeakReferenceHandler(this) videoGuideViewModel = ViewModelProvider(this)[VideoGuideViewModel::class.java] + getGuideVideoByPage() videoGuideViewModel.videosResult.observe(this) { -// if (it.code == 200) { -// val dataRows = it.data?.rows!! -// when { -// isRefresh -> { -// videoGuideAdapter.setRefreshData(dataRows) -// binding.refreshLayout.finishRefresh() -// isRefresh = false -// } -// -// isLoadMore -> { -// if (dataRows.size == 0) { -// "到底了,别拉了".show(this) -// } -// videoGuideAdapter.setLoadMoreData(dataRows) -// binding.refreshLayout.finishLoadMore() -// isLoadMore = false -// } -// -// else -> { -// dataBeans = dataRows -// weakReferenceHandler.sendEmptyMessage(2024030502) -// } -// } -// } + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + videoGuideAdapter.setRefreshData(dataRows) + binding.refreshLayout.finishRefresh() + isRefresh = false + } + + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + videoGuideAdapter.setLoadMoreData(dataRows) + binding.refreshLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2024030502) + } + } + } } } private fun getGuideVideoByPage() { - videoGuideViewModel.getGuideVideoByPage(this, keywords, page) + videoGuideViewModel.getGuideVideoByPage(this, keywords, classId, page) } override fun handleMessage(msg: Message): Boolean { when (msg.what) { 2024030502 -> { - videoGuideAdapter = object : - NormalRecyclerAdapter( + videoGuideAdapter = + object : NormalRecyclerAdapter( R.layout.item_guide_video, dataBeans ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: VideoGuideModel - ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: VideoGuideModel.DataModel.RowsModel + ) { + if (item.attachment.endsWith(".mp4")) { + viewHolder.setVisibility(R.id.videoPlayer, View.VISIBLE) + .setVisibility(R.id.imageView, View.GONE) + val videoPlayer = viewHolder.getView( + R.id.videoPlayer + ) + initVideoPlayer(videoPlayer, item.attachment.combineFilePath()) + } else { + viewHolder.setVisibility(R.id.videoPlayer, View.GONE) + .setVisibility(R.id.imageView, View.VISIBLE) + .setImageResource( + R.id.imageView, item.attachment.combineFilePath() + ) + } + viewHolder.setText(R.id.guideNameView, item.title) + } } - } binding.recyclerView.adapter = videoGuideAdapter - binding.recyclerView.addItemDecoration(RecyclerViewItemOffsets(0, 7, 0, 7)) + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) videoGuideAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: VideoGuideModel + position: Int, t: VideoGuideModel.DataModel.RowsModel ) { - //TODO 查看指导视频详情 + if (t.attachment.endsWith(".mp4")) { + navigatePageTo(t.attachment.combineFilePath()) + } else { + navigatePageTo( + 0, arrayListOf(t.attachment.combineFilePath()) + ) + } } }) } @@ -112,6 +153,30 @@ return true } + private fun initVideoPlayer(videoPlayer: StandardGSYVideoPlayer, source: String) { + videoPlayer.titleTextView.visibility = View.GONE + videoPlayer.backButton.visibility = View.GONE + lifecycleScope.launch(Dispatchers.Main) { + try { + val drawable = withContext(Dispatchers.IO) { + Glide.with(context).load(source).submit().get() + } + val coverImg = ImageView(context) + coverImg.setImageDrawable(drawable) + videoPlayer.thumbImageView = coverImg + } catch (e: Exception) { + e.printStackTrace() + } + } + videoPlayer.setUp(source, true, "") + videoPlayer.fullscreenButton.setOnClickListener { + navigatePageTo(source) + } + videoPlayer.playTag = System.currentTimeMillis().toString() + videoPlayer.isReleaseWhenLossAudio = false + videoPlayer.setIsTouchWiget(false) + } + override fun initViewBinding(): ActivityVideoGuideBinding { return ActivityVideoGuideBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt b/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt index 83ba32d..c227540 100644 --- a/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt +++ b/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt @@ -18,9 +18,11 @@ private val gson by lazy { Gson() } val videosResult = MutableLiveData() - fun getGuideVideoByPage(context: Context, keywords: String, offset: Int) = launch({ + fun getGuideVideoByPage( + context: Context, keywords: String, classId: String, offset: Int + ) = launch({ loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getGuideVideoByPage(keywords, offset) + val response = RetrofitServiceManager.getGuideVideoByPage(keywords, classId, offset) when (response.getResponseCode()) { 200 -> { loadState.value = LoadState.Success diff --git a/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt b/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt index 8c32684..638ed88 100644 --- a/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt +++ b/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt @@ -5,7 +5,7 @@ import android.os.Bundle import android.view.Gravity import com.casic.br.app.R -import com.casic.br.app.databinding.CheckStandardSheetBinding +import com.casic.br.app.databinding.SheetCheckStandardBinding import com.pengxh.kt.lite.extensions.binding import com.pengxh.kt.lite.extensions.resetParams @@ -36,7 +36,7 @@ } } - private val binding: CheckStandardSheetBinding by binding() + private val binding: SheetCheckStandardBinding by binding() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/res/layout/activity_check_manifest.xml b/app/src/main/res/layout/activity_check_manifest.xml index 54ba04f..cad4480 100644 --- a/app/src/main/res/layout/activity_check_manifest.xml +++ b/app/src/main/res/layout/activity_check_manifest.xml @@ -60,11 +60,11 @@ + android:layout_weight="1" + android:background="@color/white" /> + android:background="@color/white" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_hidden_trouble_detail.xml b/app/src/main/res/layout/activity_hidden_trouble_detail.xml index 81c1e08..7f7881e 100644 --- a/app/src/main/res/layout/activity_hidden_trouble_detail.xml +++ b/app/src/main/res/layout/activity_hidden_trouble_detail.xml @@ -145,7 +145,6 @@ android:layout_height="match_parent" android:layout_marginStart="@dimen/dp_10" android:layout_weight="1" - android:singleLine="true" android:text="中国航天科工集团二院二〇三所 版权所有" android:textColor="@color/white" android:textSize="@dimen/sp_16" /> diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 60826c9..0d76a8e 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -183,20 +183,9 @@ /** * 获取指导视频 */ - suspend fun getGuideVideoByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getGuideVideoByPage(keywords: String, classId: String, offset: Int): String { return api.getGuideVideoByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, keywords, classId, offset, LocaleConstant.PAGE_LIMIT ) } diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index 88c69eb..3b49732 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -58,9 +58,4 @@ const val SERVER_BASE_URL = "http://111.198.10.15:22003" const val AI_SERVER_CONFIG = "aiServerConfig" const val AI_BASE_URL = "http://192.168.186.127:5000" - - /** - * Array - * */ - val SUB_PAGE_TITLES = arrayOf("配电箱检查清单", "隐患列表") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt index 02e4998..7959a06 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt @@ -52,7 +52,7 @@ override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { - scene = resources.getStringArray(R.array.type_data)[position] +// scene = resources.getStringArray(R.array.type_data)[position] } override fun onNothingSelected(parent: AdapterView<*>?) { @@ -80,6 +80,10 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) + + + + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] getCheckManifestByPage() checkManifestViewModel.manifestResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index dfc956f..ac49cae 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -6,7 +6,6 @@ import com.casic.br.app.databinding.ActivityCheckManifestBySceneBinding import com.casic.br.app.fragment.CheckManifestFragment import com.casic.br.app.fragment.HiddenTroubleFragment -import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant @@ -21,11 +20,12 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList + val subPageTitles = arrayOf("${args[0]}检查清单", "隐患列表") fragmentPages.add(CheckManifestFragment(args[0])) fragmentPages.add(HiddenTroubleFragment(args[1])) val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages + supportFragmentManager, subPageTitles, fragmentPages ) //页面永不销毁 binding.viewPager.offscreenPageLimit = fragmentPages.size diff --git a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt index 382ab7b..fc80862 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt @@ -2,12 +2,10 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.amap.api.location.AMapLocation import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckResultBinding import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.model.HiddenTroubleListResultModel -import com.casic.br.app.utils.LocationManager import com.casic.br.app.vm.InspectionViewModel import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder @@ -22,7 +20,6 @@ private val kTag = "CheckResultActivity" private val context = this - private val locationManager by lazy { LocationManager(this) } private lateinit var inspectionViewModel: InspectionViewModel private lateinit var inspectionId: String @@ -72,14 +69,6 @@ binding.recyclerView.adapter = troublesAdapter } } - - locationManager.getCurrentLocation(false, object : LocationManager.OnGetLocationListener { - override fun onAMapLocationGet(location: AMapLocation?) { - location?.apply { - binding.inputSiteView.setText(address) - } - } - }) } override fun initViewBinding(): ActivityCheckResultBinding { @@ -103,9 +92,4 @@ override fun setupTopBarLayout() { } - - override fun onDestroy() { - super.onDestroy() - locationManager.stopLocation() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt new file mode 100644 index 0000000..f59fc02 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt @@ -0,0 +1,73 @@ +package com.casic.br.app.view + +import android.os.Bundle +import android.view.View +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityFullScreenVideoBinding +import com.casic.br.app.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import com.shuyu.gsyvideoplayer.GSYVideoManager +import com.shuyu.gsyvideoplayer.utils.OrientationUtils + +class FullScreenVideoActivity : KotlinBaseActivity() { + + private var orientationUtils: OrientationUtils? = null + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + val videoPath = intent.getStringExtra(Constant.INTENT_PARAM) + binding.videoPlayer.setUp(videoPath, true, "") + + binding.videoPlayer.titleTextView.visibility = View.GONE + binding.videoPlayer.fullscreenButton.visibility = View.GONE + //设置旋转 + orientationUtils = OrientationUtils(this, binding.videoPlayer) + //是否可以滑动调整 + binding.videoPlayer.setIsTouchWiget(true) + + //不需要屏幕旋转 + binding.videoPlayer.isNeedOrientationUtils = false + binding.videoPlayer.startPlayLogic() + + binding.videoPlayer.backButton.setOnClickListener { onBackPressed() } + } + + override fun initViewBinding(): ActivityFullScreenVideoBinding { + return ActivityFullScreenVideoBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + } + + override fun onPause() { + super.onPause() + binding.videoPlayer.onVideoPause() + } + + override fun onResume() { + super.onResume() + binding.videoPlayer.onVideoResume() + } + + override fun onDestroy() { + super.onDestroy() + GSYVideoManager.releaseAllVideos() + orientationUtils?.releaseListener() + } + + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + //释放所有 + binding.videoPlayer.setVideoAllCallBack(null) + super.onBackPressed() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt index bd8ebec..38b97bd 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt @@ -105,9 +105,10 @@ viewHolder: ViewHolder, position: Int, item: HiddenTroubleModel.DataModel.RowsModel ) { - viewHolder.setText(R.id.troubleTypeView, item.mainClassName) - .setText(R.id.troubleNameView, item.subClassName) - .setText(R.id.troubleContentView, item.sceneName) + viewHolder.setText( + R.id.troubleTypeView, "${item.mainClassName}/${item.subClassName}" + ).setText(R.id.troubleNameView, item.name) + .setText(R.id.troubleContentView, item.content) } } binding.recyclerView.adapter = hiddenTroubleAdapter diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt index 0d663df..d8aeb4f 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityHiddenTroubleDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.vm.HiddenTroubleViewModel import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -41,9 +42,9 @@ val alarmImageList = it.data.alarmImageList if (alarmImageList.isNotEmpty()) { val images = ArrayList() -// alarmImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + alarmImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.troubleImageGridView.adapter = imageAdapter binding.troubleImageGridView.onItemClickListener = @@ -55,9 +56,9 @@ val normalImageList = it.data.normalImageList if (normalImageList.isNotEmpty()) { val images = ArrayList() -// normalImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + normalImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.normalImageGridView.adapter = imageAdapter binding.normalImageGridView.onItemClickListener = diff --git a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt index 054eb45..6a0c42e 100644 --- a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt @@ -61,7 +61,7 @@ NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: LibraryModel.DataModel) { when (position) { - 0 -> navigatePageTo() + 0 -> navigatePageTo(t.id) else -> "未实现".show(context) } } diff --git a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt index 2b350d5..f24dd7c 100644 --- a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt @@ -170,7 +170,7 @@ // 检查 CameraProvider 可用性 cameraProviderFuture.addListener({ try { -// bindPreview(cameraProviderFuture.get()) + bindPreview(cameraProviderFuture.get()) } catch (e: ExecutionException) { e.printStackTrace() } catch (e: InterruptedException) { @@ -318,6 +318,10 @@ * 根据场景查看检查清单 * */ binding.listButton.setOnClickListener { + if (inspectionId.isBlank()) { + "请先选择场景或者识别出场景再试".show(this) + return@setOnClickListener + } navigatePageTo(arrayListOf(detectedScene, inspectionId)) } } diff --git a/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt b/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt index 11c66ea..692d72b 100644 --- a/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt @@ -3,9 +3,14 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.View +import android.widget.ImageView import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope +import com.bumptech.glide.Glide import com.casic.br.app.R import com.casic.br.app.databinding.ActivityVideoGuideBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.model.VideoGuideModel import com.casic.br.app.vm.VideoGuideViewModel @@ -13,19 +18,29 @@ import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.TitleBarView +import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext class VideoGuideActivity : KotlinBaseActivity(), Handler.Callback { + private val context = this + private val marginOffset by lazy { 5.dp2px(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var videoGuideViewModel: VideoGuideViewModel - private lateinit var videoGuideAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() + private lateinit var videoGuideAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var keywords = "" + private var classId = "" private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -49,62 +64,88 @@ } override fun initOnCreate(savedInstanceState: Bundle?) { + classId = intent.getStringExtra(Constant.INTENT_PARAM) as String + weakReferenceHandler = WeakReferenceHandler(this) videoGuideViewModel = ViewModelProvider(this)[VideoGuideViewModel::class.java] + getGuideVideoByPage() videoGuideViewModel.videosResult.observe(this) { -// if (it.code == 200) { -// val dataRows = it.data?.rows!! -// when { -// isRefresh -> { -// videoGuideAdapter.setRefreshData(dataRows) -// binding.refreshLayout.finishRefresh() -// isRefresh = false -// } -// -// isLoadMore -> { -// if (dataRows.size == 0) { -// "到底了,别拉了".show(this) -// } -// videoGuideAdapter.setLoadMoreData(dataRows) -// binding.refreshLayout.finishLoadMore() -// isLoadMore = false -// } -// -// else -> { -// dataBeans = dataRows -// weakReferenceHandler.sendEmptyMessage(2024030502) -// } -// } -// } + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + videoGuideAdapter.setRefreshData(dataRows) + binding.refreshLayout.finishRefresh() + isRefresh = false + } + + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + videoGuideAdapter.setLoadMoreData(dataRows) + binding.refreshLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2024030502) + } + } + } } } private fun getGuideVideoByPage() { - videoGuideViewModel.getGuideVideoByPage(this, keywords, page) + videoGuideViewModel.getGuideVideoByPage(this, keywords, classId, page) } override fun handleMessage(msg: Message): Boolean { when (msg.what) { 2024030502 -> { - videoGuideAdapter = object : - NormalRecyclerAdapter( + videoGuideAdapter = + object : NormalRecyclerAdapter( R.layout.item_guide_video, dataBeans ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: VideoGuideModel - ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: VideoGuideModel.DataModel.RowsModel + ) { + if (item.attachment.endsWith(".mp4")) { + viewHolder.setVisibility(R.id.videoPlayer, View.VISIBLE) + .setVisibility(R.id.imageView, View.GONE) + val videoPlayer = viewHolder.getView( + R.id.videoPlayer + ) + initVideoPlayer(videoPlayer, item.attachment.combineFilePath()) + } else { + viewHolder.setVisibility(R.id.videoPlayer, View.GONE) + .setVisibility(R.id.imageView, View.VISIBLE) + .setImageResource( + R.id.imageView, item.attachment.combineFilePath() + ) + } + viewHolder.setText(R.id.guideNameView, item.title) + } } - } binding.recyclerView.adapter = videoGuideAdapter - binding.recyclerView.addItemDecoration(RecyclerViewItemOffsets(0, 7, 0, 7)) + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) videoGuideAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: VideoGuideModel + position: Int, t: VideoGuideModel.DataModel.RowsModel ) { - //TODO 查看指导视频详情 + if (t.attachment.endsWith(".mp4")) { + navigatePageTo(t.attachment.combineFilePath()) + } else { + navigatePageTo( + 0, arrayListOf(t.attachment.combineFilePath()) + ) + } } }) } @@ -112,6 +153,30 @@ return true } + private fun initVideoPlayer(videoPlayer: StandardGSYVideoPlayer, source: String) { + videoPlayer.titleTextView.visibility = View.GONE + videoPlayer.backButton.visibility = View.GONE + lifecycleScope.launch(Dispatchers.Main) { + try { + val drawable = withContext(Dispatchers.IO) { + Glide.with(context).load(source).submit().get() + } + val coverImg = ImageView(context) + coverImg.setImageDrawable(drawable) + videoPlayer.thumbImageView = coverImg + } catch (e: Exception) { + e.printStackTrace() + } + } + videoPlayer.setUp(source, true, "") + videoPlayer.fullscreenButton.setOnClickListener { + navigatePageTo(source) + } + videoPlayer.playTag = System.currentTimeMillis().toString() + videoPlayer.isReleaseWhenLossAudio = false + videoPlayer.setIsTouchWiget(false) + } + override fun initViewBinding(): ActivityVideoGuideBinding { return ActivityVideoGuideBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt b/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt index 83ba32d..c227540 100644 --- a/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt +++ b/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt @@ -18,9 +18,11 @@ private val gson by lazy { Gson() } val videosResult = MutableLiveData() - fun getGuideVideoByPage(context: Context, keywords: String, offset: Int) = launch({ + fun getGuideVideoByPage( + context: Context, keywords: String, classId: String, offset: Int + ) = launch({ loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getGuideVideoByPage(keywords, offset) + val response = RetrofitServiceManager.getGuideVideoByPage(keywords, classId, offset) when (response.getResponseCode()) { 200 -> { loadState.value = LoadState.Success diff --git a/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt b/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt index 8c32684..638ed88 100644 --- a/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt +++ b/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt @@ -5,7 +5,7 @@ import android.os.Bundle import android.view.Gravity import com.casic.br.app.R -import com.casic.br.app.databinding.CheckStandardSheetBinding +import com.casic.br.app.databinding.SheetCheckStandardBinding import com.pengxh.kt.lite.extensions.binding import com.pengxh.kt.lite.extensions.resetParams @@ -36,7 +36,7 @@ } } - private val binding: CheckStandardSheetBinding by binding() + private val binding: SheetCheckStandardBinding by binding() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/res/layout/activity_check_manifest.xml b/app/src/main/res/layout/activity_check_manifest.xml index 54ba04f..cad4480 100644 --- a/app/src/main/res/layout/activity_check_manifest.xml +++ b/app/src/main/res/layout/activity_check_manifest.xml @@ -60,11 +60,11 @@ + android:layout_weight="1" + android:background="@color/white" /> + android:background="@color/white" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_hidden_trouble_detail.xml b/app/src/main/res/layout/activity_hidden_trouble_detail.xml index 81c1e08..7f7881e 100644 --- a/app/src/main/res/layout/activity_hidden_trouble_detail.xml +++ b/app/src/main/res/layout/activity_hidden_trouble_detail.xml @@ -145,7 +145,6 @@ android:layout_height="match_parent" android:layout_marginStart="@dimen/dp_10" android:layout_weight="1" - android:singleLine="true" android:text="中国航天科工集团二院二〇三所 版权所有" android:textColor="@color/white" android:textSize="@dimen/sp_16" /> diff --git a/app/src/main/res/layout/check_standard_sheet.xml b/app/src/main/res/layout/check_standard_sheet.xml deleted file mode 100644 index e9eecbd..0000000 --- a/app/src/main/res/layout/check_standard_sheet.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore index 42afabf..956c004 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1 +1,2 @@ -/build \ No newline at end of file +/build +/release \ No newline at end of file diff --git a/app/SafetyAuxiliary.jks b/app/SafetyAuxiliary.jks new file mode 100644 index 0000000..b34b10d --- /dev/null +++ b/app/SafetyAuxiliary.jks Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 4809425..f3d6012 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,14 @@ apply plugin: 'kotlin-android' android { + signingConfigs { + release { + storeFile file('SafetyAuxiliary.jks') + storePassword '123456789' + keyAlias 'key0' + keyPassword '123456789' + } + } compileSdkVersion 33 defaultConfig { @@ -12,11 +20,19 @@ targetSdkVersion 33 versionCode 1000 versionName "1.0.0.0" + + ndk { + abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86" + } } buildTypes { + debug { + signingConfig signingConfigs.release + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae0a9b3..ec6697f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,6 +80,9 @@ + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 60826c9..0d76a8e 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -183,20 +183,9 @@ /** * 获取指导视频 */ - suspend fun getGuideVideoByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getGuideVideoByPage(keywords: String, classId: String, offset: Int): String { return api.getGuideVideoByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, keywords, classId, offset, LocaleConstant.PAGE_LIMIT ) } diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index 88c69eb..3b49732 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -58,9 +58,4 @@ const val SERVER_BASE_URL = "http://111.198.10.15:22003" const val AI_SERVER_CONFIG = "aiServerConfig" const val AI_BASE_URL = "http://192.168.186.127:5000" - - /** - * Array - * */ - val SUB_PAGE_TITLES = arrayOf("配电箱检查清单", "隐患列表") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt index 02e4998..7959a06 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt @@ -52,7 +52,7 @@ override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { - scene = resources.getStringArray(R.array.type_data)[position] +// scene = resources.getStringArray(R.array.type_data)[position] } override fun onNothingSelected(parent: AdapterView<*>?) { @@ -80,6 +80,10 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) + + + + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] getCheckManifestByPage() checkManifestViewModel.manifestResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index dfc956f..ac49cae 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -6,7 +6,6 @@ import com.casic.br.app.databinding.ActivityCheckManifestBySceneBinding import com.casic.br.app.fragment.CheckManifestFragment import com.casic.br.app.fragment.HiddenTroubleFragment -import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant @@ -21,11 +20,12 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList + val subPageTitles = arrayOf("${args[0]}检查清单", "隐患列表") fragmentPages.add(CheckManifestFragment(args[0])) fragmentPages.add(HiddenTroubleFragment(args[1])) val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages + supportFragmentManager, subPageTitles, fragmentPages ) //页面永不销毁 binding.viewPager.offscreenPageLimit = fragmentPages.size diff --git a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt index 382ab7b..fc80862 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt @@ -2,12 +2,10 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.amap.api.location.AMapLocation import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckResultBinding import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.model.HiddenTroubleListResultModel -import com.casic.br.app.utils.LocationManager import com.casic.br.app.vm.InspectionViewModel import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder @@ -22,7 +20,6 @@ private val kTag = "CheckResultActivity" private val context = this - private val locationManager by lazy { LocationManager(this) } private lateinit var inspectionViewModel: InspectionViewModel private lateinit var inspectionId: String @@ -72,14 +69,6 @@ binding.recyclerView.adapter = troublesAdapter } } - - locationManager.getCurrentLocation(false, object : LocationManager.OnGetLocationListener { - override fun onAMapLocationGet(location: AMapLocation?) { - location?.apply { - binding.inputSiteView.setText(address) - } - } - }) } override fun initViewBinding(): ActivityCheckResultBinding { @@ -103,9 +92,4 @@ override fun setupTopBarLayout() { } - - override fun onDestroy() { - super.onDestroy() - locationManager.stopLocation() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt new file mode 100644 index 0000000..f59fc02 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt @@ -0,0 +1,73 @@ +package com.casic.br.app.view + +import android.os.Bundle +import android.view.View +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityFullScreenVideoBinding +import com.casic.br.app.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import com.shuyu.gsyvideoplayer.GSYVideoManager +import com.shuyu.gsyvideoplayer.utils.OrientationUtils + +class FullScreenVideoActivity : KotlinBaseActivity() { + + private var orientationUtils: OrientationUtils? = null + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + val videoPath = intent.getStringExtra(Constant.INTENT_PARAM) + binding.videoPlayer.setUp(videoPath, true, "") + + binding.videoPlayer.titleTextView.visibility = View.GONE + binding.videoPlayer.fullscreenButton.visibility = View.GONE + //设置旋转 + orientationUtils = OrientationUtils(this, binding.videoPlayer) + //是否可以滑动调整 + binding.videoPlayer.setIsTouchWiget(true) + + //不需要屏幕旋转 + binding.videoPlayer.isNeedOrientationUtils = false + binding.videoPlayer.startPlayLogic() + + binding.videoPlayer.backButton.setOnClickListener { onBackPressed() } + } + + override fun initViewBinding(): ActivityFullScreenVideoBinding { + return ActivityFullScreenVideoBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + } + + override fun onPause() { + super.onPause() + binding.videoPlayer.onVideoPause() + } + + override fun onResume() { + super.onResume() + binding.videoPlayer.onVideoResume() + } + + override fun onDestroy() { + super.onDestroy() + GSYVideoManager.releaseAllVideos() + orientationUtils?.releaseListener() + } + + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + //释放所有 + binding.videoPlayer.setVideoAllCallBack(null) + super.onBackPressed() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt index bd8ebec..38b97bd 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt @@ -105,9 +105,10 @@ viewHolder: ViewHolder, position: Int, item: HiddenTroubleModel.DataModel.RowsModel ) { - viewHolder.setText(R.id.troubleTypeView, item.mainClassName) - .setText(R.id.troubleNameView, item.subClassName) - .setText(R.id.troubleContentView, item.sceneName) + viewHolder.setText( + R.id.troubleTypeView, "${item.mainClassName}/${item.subClassName}" + ).setText(R.id.troubleNameView, item.name) + .setText(R.id.troubleContentView, item.content) } } binding.recyclerView.adapter = hiddenTroubleAdapter diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt index 0d663df..d8aeb4f 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityHiddenTroubleDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.vm.HiddenTroubleViewModel import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -41,9 +42,9 @@ val alarmImageList = it.data.alarmImageList if (alarmImageList.isNotEmpty()) { val images = ArrayList() -// alarmImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + alarmImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.troubleImageGridView.adapter = imageAdapter binding.troubleImageGridView.onItemClickListener = @@ -55,9 +56,9 @@ val normalImageList = it.data.normalImageList if (normalImageList.isNotEmpty()) { val images = ArrayList() -// normalImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + normalImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.normalImageGridView.adapter = imageAdapter binding.normalImageGridView.onItemClickListener = diff --git a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt index 054eb45..6a0c42e 100644 --- a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt @@ -61,7 +61,7 @@ NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: LibraryModel.DataModel) { when (position) { - 0 -> navigatePageTo() + 0 -> navigatePageTo(t.id) else -> "未实现".show(context) } } diff --git a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt index 2b350d5..f24dd7c 100644 --- a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt @@ -170,7 +170,7 @@ // 检查 CameraProvider 可用性 cameraProviderFuture.addListener({ try { -// bindPreview(cameraProviderFuture.get()) + bindPreview(cameraProviderFuture.get()) } catch (e: ExecutionException) { e.printStackTrace() } catch (e: InterruptedException) { @@ -318,6 +318,10 @@ * 根据场景查看检查清单 * */ binding.listButton.setOnClickListener { + if (inspectionId.isBlank()) { + "请先选择场景或者识别出场景再试".show(this) + return@setOnClickListener + } navigatePageTo(arrayListOf(detectedScene, inspectionId)) } } diff --git a/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt b/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt index 11c66ea..692d72b 100644 --- a/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt @@ -3,9 +3,14 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.View +import android.widget.ImageView import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope +import com.bumptech.glide.Glide import com.casic.br.app.R import com.casic.br.app.databinding.ActivityVideoGuideBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.model.VideoGuideModel import com.casic.br.app.vm.VideoGuideViewModel @@ -13,19 +18,29 @@ import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.TitleBarView +import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext class VideoGuideActivity : KotlinBaseActivity(), Handler.Callback { + private val context = this + private val marginOffset by lazy { 5.dp2px(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var videoGuideViewModel: VideoGuideViewModel - private lateinit var videoGuideAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() + private lateinit var videoGuideAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var keywords = "" + private var classId = "" private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -49,62 +64,88 @@ } override fun initOnCreate(savedInstanceState: Bundle?) { + classId = intent.getStringExtra(Constant.INTENT_PARAM) as String + weakReferenceHandler = WeakReferenceHandler(this) videoGuideViewModel = ViewModelProvider(this)[VideoGuideViewModel::class.java] + getGuideVideoByPage() videoGuideViewModel.videosResult.observe(this) { -// if (it.code == 200) { -// val dataRows = it.data?.rows!! -// when { -// isRefresh -> { -// videoGuideAdapter.setRefreshData(dataRows) -// binding.refreshLayout.finishRefresh() -// isRefresh = false -// } -// -// isLoadMore -> { -// if (dataRows.size == 0) { -// "到底了,别拉了".show(this) -// } -// videoGuideAdapter.setLoadMoreData(dataRows) -// binding.refreshLayout.finishLoadMore() -// isLoadMore = false -// } -// -// else -> { -// dataBeans = dataRows -// weakReferenceHandler.sendEmptyMessage(2024030502) -// } -// } -// } + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + videoGuideAdapter.setRefreshData(dataRows) + binding.refreshLayout.finishRefresh() + isRefresh = false + } + + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + videoGuideAdapter.setLoadMoreData(dataRows) + binding.refreshLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2024030502) + } + } + } } } private fun getGuideVideoByPage() { - videoGuideViewModel.getGuideVideoByPage(this, keywords, page) + videoGuideViewModel.getGuideVideoByPage(this, keywords, classId, page) } override fun handleMessage(msg: Message): Boolean { when (msg.what) { 2024030502 -> { - videoGuideAdapter = object : - NormalRecyclerAdapter( + videoGuideAdapter = + object : NormalRecyclerAdapter( R.layout.item_guide_video, dataBeans ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: VideoGuideModel - ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: VideoGuideModel.DataModel.RowsModel + ) { + if (item.attachment.endsWith(".mp4")) { + viewHolder.setVisibility(R.id.videoPlayer, View.VISIBLE) + .setVisibility(R.id.imageView, View.GONE) + val videoPlayer = viewHolder.getView( + R.id.videoPlayer + ) + initVideoPlayer(videoPlayer, item.attachment.combineFilePath()) + } else { + viewHolder.setVisibility(R.id.videoPlayer, View.GONE) + .setVisibility(R.id.imageView, View.VISIBLE) + .setImageResource( + R.id.imageView, item.attachment.combineFilePath() + ) + } + viewHolder.setText(R.id.guideNameView, item.title) + } } - } binding.recyclerView.adapter = videoGuideAdapter - binding.recyclerView.addItemDecoration(RecyclerViewItemOffsets(0, 7, 0, 7)) + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) videoGuideAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: VideoGuideModel + position: Int, t: VideoGuideModel.DataModel.RowsModel ) { - //TODO 查看指导视频详情 + if (t.attachment.endsWith(".mp4")) { + navigatePageTo(t.attachment.combineFilePath()) + } else { + navigatePageTo( + 0, arrayListOf(t.attachment.combineFilePath()) + ) + } } }) } @@ -112,6 +153,30 @@ return true } + private fun initVideoPlayer(videoPlayer: StandardGSYVideoPlayer, source: String) { + videoPlayer.titleTextView.visibility = View.GONE + videoPlayer.backButton.visibility = View.GONE + lifecycleScope.launch(Dispatchers.Main) { + try { + val drawable = withContext(Dispatchers.IO) { + Glide.with(context).load(source).submit().get() + } + val coverImg = ImageView(context) + coverImg.setImageDrawable(drawable) + videoPlayer.thumbImageView = coverImg + } catch (e: Exception) { + e.printStackTrace() + } + } + videoPlayer.setUp(source, true, "") + videoPlayer.fullscreenButton.setOnClickListener { + navigatePageTo(source) + } + videoPlayer.playTag = System.currentTimeMillis().toString() + videoPlayer.isReleaseWhenLossAudio = false + videoPlayer.setIsTouchWiget(false) + } + override fun initViewBinding(): ActivityVideoGuideBinding { return ActivityVideoGuideBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt b/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt index 83ba32d..c227540 100644 --- a/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt +++ b/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt @@ -18,9 +18,11 @@ private val gson by lazy { Gson() } val videosResult = MutableLiveData() - fun getGuideVideoByPage(context: Context, keywords: String, offset: Int) = launch({ + fun getGuideVideoByPage( + context: Context, keywords: String, classId: String, offset: Int + ) = launch({ loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getGuideVideoByPage(keywords, offset) + val response = RetrofitServiceManager.getGuideVideoByPage(keywords, classId, offset) when (response.getResponseCode()) { 200 -> { loadState.value = LoadState.Success diff --git a/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt b/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt index 8c32684..638ed88 100644 --- a/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt +++ b/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt @@ -5,7 +5,7 @@ import android.os.Bundle import android.view.Gravity import com.casic.br.app.R -import com.casic.br.app.databinding.CheckStandardSheetBinding +import com.casic.br.app.databinding.SheetCheckStandardBinding import com.pengxh.kt.lite.extensions.binding import com.pengxh.kt.lite.extensions.resetParams @@ -36,7 +36,7 @@ } } - private val binding: CheckStandardSheetBinding by binding() + private val binding: SheetCheckStandardBinding by binding() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/res/layout/activity_check_manifest.xml b/app/src/main/res/layout/activity_check_manifest.xml index 54ba04f..cad4480 100644 --- a/app/src/main/res/layout/activity_check_manifest.xml +++ b/app/src/main/res/layout/activity_check_manifest.xml @@ -60,11 +60,11 @@ + android:layout_weight="1" + android:background="@color/white" /> + android:background="@color/white" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_hidden_trouble_detail.xml b/app/src/main/res/layout/activity_hidden_trouble_detail.xml index 81c1e08..7f7881e 100644 --- a/app/src/main/res/layout/activity_hidden_trouble_detail.xml +++ b/app/src/main/res/layout/activity_hidden_trouble_detail.xml @@ -145,7 +145,6 @@ android:layout_height="match_parent" android:layout_marginStart="@dimen/dp_10" android:layout_weight="1" - android:singleLine="true" android:text="中国航天科工集团二院二〇三所 版权所有" android:textColor="@color/white" android:textSize="@dimen/sp_16" /> diff --git a/app/src/main/res/layout/check_standard_sheet.xml b/app/src/main/res/layout/check_standard_sheet.xml deleted file mode 100644 index e9eecbd..0000000 --- a/app/src/main/res/layout/check_standard_sheet.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_guide_video.xml b/app/src/main/res/layout/item_guide_video.xml index d5712b2..5a352a8 100644 --- a/app/src/main/res/layout/item_guide_video.xml +++ b/app/src/main/res/layout/item_guide_video.xml @@ -6,10 +6,22 @@ android:gravity="center" android:orientation="vertical"> - + + + + + + + + alarmImageList; + private List alarmImageList; private String basis; private String content; private String createTime; @@ -54,7 +54,7 @@ private String mainClassName; private String name; private String normalImageCount; - private List normalImageList; + private List normalImageList; private String scene; private String sceneName; private String subClass; @@ -71,11 +71,11 @@ this.alarmImageCount = alarmImageCount; } - public List getAlarmImageList() { + public List getAlarmImageList() { return alarmImageList; } - public void setAlarmImageList(List alarmImageList) { + public void setAlarmImageList(List alarmImageList) { this.alarmImageList = alarmImageList; } @@ -159,11 +159,11 @@ this.normalImageCount = normalImageCount; } - public List getNormalImageList() { + public List getNormalImageList() { return normalImageList; } - public void setNormalImageList(List normalImageList) { + public void setNormalImageList(List normalImageList) { this.normalImageList = normalImageList; } @@ -222,5 +222,98 @@ public void setUpdateUserName(String updateUserName) { this.updateUserName = updateUserName; } + + public static class AlarmImageListModel { + private String alarmMenuId; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String imagePath; + private String imageType; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImagePath() { + return imagePath; + } + + public void setImagePath(String imagePath) { + this.imagePath = imagePath; + } + + public String getImageType() { + return imageType; + } + + public void setImageType(String imageType) { + this.imageType = imageType; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java index f6002a9..59209ec 100644 --- a/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java +++ b/app/src/main/java/com/casic/br/app/model/VideoGuideModel.java @@ -1,4 +1,184 @@ package com.casic.br.app.model; +import java.util.List; + public class VideoGuideModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String attachment; + private String attachmentName; + private String classId; + private String className; + private String createTime; + private String createUserId; + private String createUserName; + private String id; + private String tag; + private String title; + private String updateTime; + private String updateUserId; + private String updateUserName; + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + + public String getAttachmentName() { + return attachmentName; + } + + public void setAttachmentName(String attachmentName) { + this.attachmentName = attachmentName; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(String createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(String updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 2b8d588..4c89f53 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -11,7 +11,6 @@ import retrofit2.http.PartMap import retrofit2.http.Path import retrofit2.http.Query -import retrofit2.http.QueryMap interface RetrofitService { @@ -135,12 +134,13 @@ /** * 获取指导视频 */ - @POST("/meter/file/listPage") + @GET("/knowledge-base/listPage") suspend fun getGuideVideoByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("keywords") keywords: String, + @Query("classId") classId: String, + @Query("offset") offset: Int, + @Query("limit") limit: Int ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index 60826c9..0d76a8e 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -183,20 +183,9 @@ /** * 获取指导视频 */ - suspend fun getGuideVideoByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getGuideVideoByPage(keywords: String, classId: String, offset: Int): String { return api.getGuideVideoByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, keywords, classId, offset, LocaleConstant.PAGE_LIMIT ) } diff --git a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt index 88c69eb..3b49732 100644 --- a/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/app/utils/LocaleConstant.kt @@ -58,9 +58,4 @@ const val SERVER_BASE_URL = "http://111.198.10.15:22003" const val AI_SERVER_CONFIG = "aiServerConfig" const val AI_BASE_URL = "http://192.168.186.127:5000" - - /** - * Array - * */ - val SUB_PAGE_TITLES = arrayOf("配电箱检查清单", "隐患列表") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt index 02e4998..7959a06 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestActivity.kt @@ -52,7 +52,7 @@ override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { - scene = resources.getStringArray(R.array.type_data)[position] +// scene = resources.getStringArray(R.array.type_data)[position] } override fun onNothingSelected(parent: AdapterView<*>?) { @@ -80,6 +80,10 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) + + + + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] getCheckManifestByPage() checkManifestViewModel.manifestResult.observe(this) { diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index dfc956f..ac49cae 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -6,7 +6,6 @@ import com.casic.br.app.databinding.ActivityCheckManifestBySceneBinding import com.casic.br.app.fragment.CheckManifestFragment import com.casic.br.app.fragment.HiddenTroubleFragment -import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant @@ -21,11 +20,12 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList + val subPageTitles = arrayOf("${args[0]}检查清单", "隐患列表") fragmentPages.add(CheckManifestFragment(args[0])) fragmentPages.add(HiddenTroubleFragment(args[1])) val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages + supportFragmentManager, subPageTitles, fragmentPages ) //页面永不销毁 binding.viewPager.offscreenPageLimit = fragmentPages.size diff --git a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt index 382ab7b..fc80862 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckResultActivity.kt @@ -2,12 +2,10 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.amap.api.location.AMapLocation import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckResultBinding import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.model.HiddenTroubleListResultModel -import com.casic.br.app.utils.LocationManager import com.casic.br.app.vm.InspectionViewModel import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder @@ -22,7 +20,6 @@ private val kTag = "CheckResultActivity" private val context = this - private val locationManager by lazy { LocationManager(this) } private lateinit var inspectionViewModel: InspectionViewModel private lateinit var inspectionId: String @@ -72,14 +69,6 @@ binding.recyclerView.adapter = troublesAdapter } } - - locationManager.getCurrentLocation(false, object : LocationManager.OnGetLocationListener { - override fun onAMapLocationGet(location: AMapLocation?) { - location?.apply { - binding.inputSiteView.setText(address) - } - } - }) } override fun initViewBinding(): ActivityCheckResultBinding { @@ -103,9 +92,4 @@ override fun setupTopBarLayout() { } - - override fun onDestroy() { - super.onDestroy() - locationManager.stopLocation() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt new file mode 100644 index 0000000..f59fc02 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/FullScreenVideoActivity.kt @@ -0,0 +1,73 @@ +package com.casic.br.app.view + +import android.os.Bundle +import android.view.View +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityFullScreenVideoBinding +import com.casic.br.app.extensions.initImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import com.shuyu.gsyvideoplayer.GSYVideoManager +import com.shuyu.gsyvideoplayer.utils.OrientationUtils + +class FullScreenVideoActivity : KotlinBaseActivity() { + + private var orientationUtils: OrientationUtils? = null + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + val videoPath = intent.getStringExtra(Constant.INTENT_PARAM) + binding.videoPlayer.setUp(videoPath, true, "") + + binding.videoPlayer.titleTextView.visibility = View.GONE + binding.videoPlayer.fullscreenButton.visibility = View.GONE + //设置旋转 + orientationUtils = OrientationUtils(this, binding.videoPlayer) + //是否可以滑动调整 + binding.videoPlayer.setIsTouchWiget(true) + + //不需要屏幕旋转 + binding.videoPlayer.isNeedOrientationUtils = false + binding.videoPlayer.startPlayLogic() + + binding.videoPlayer.backButton.setOnClickListener { onBackPressed() } + } + + override fun initViewBinding(): ActivityFullScreenVideoBinding { + return ActivityFullScreenVideoBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + } + + override fun onPause() { + super.onPause() + binding.videoPlayer.onVideoPause() + } + + override fun onResume() { + super.onResume() + binding.videoPlayer.onVideoResume() + } + + override fun onDestroy() { + super.onDestroy() + GSYVideoManager.releaseAllVideos() + orientationUtils?.releaseListener() + } + + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + //释放所有 + binding.videoPlayer.setVideoAllCallBack(null) + super.onBackPressed() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt index bd8ebec..38b97bd 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt @@ -105,9 +105,10 @@ viewHolder: ViewHolder, position: Int, item: HiddenTroubleModel.DataModel.RowsModel ) { - viewHolder.setText(R.id.troubleTypeView, item.mainClassName) - .setText(R.id.troubleNameView, item.subClassName) - .setText(R.id.troubleContentView, item.sceneName) + viewHolder.setText( + R.id.troubleTypeView, "${item.mainClassName}/${item.subClassName}" + ).setText(R.id.troubleNameView, item.name) + .setText(R.id.troubleContentView, item.content) } } binding.recyclerView.adapter = hiddenTroubleAdapter diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt index 0d663df..d8aeb4f 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleDetailActivity.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityHiddenTroubleDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.vm.HiddenTroubleViewModel import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -41,9 +42,9 @@ val alarmImageList = it.data.alarmImageList if (alarmImageList.isNotEmpty()) { val images = ArrayList() -// alarmImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + alarmImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.troubleImageGridView.adapter = imageAdapter binding.troubleImageGridView.onItemClickListener = @@ -55,9 +56,9 @@ val normalImageList = it.data.normalImageList if (normalImageList.isNotEmpty()) { val images = ArrayList() -// normalImageList.forEach { imageModel -> -// images.add(imageModel.alarmImage.combineFilePath()) -// } + normalImageList.forEach { imageModel -> + images.add(imageModel.imagePath.combineFilePath()) + } val imageAdapter = ReadOnlyImageAdapter(context, images) binding.normalImageGridView.adapter = imageAdapter binding.normalImageGridView.onItemClickListener = diff --git a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt index 054eb45..6a0c42e 100644 --- a/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/LibraryActivity.kt @@ -61,7 +61,7 @@ NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: LibraryModel.DataModel) { when (position) { - 0 -> navigatePageTo() + 0 -> navigatePageTo(t.id) else -> "未实现".show(context) } } diff --git a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt index 2b350d5..f24dd7c 100644 --- a/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/StartCheckActivity.kt @@ -170,7 +170,7 @@ // 检查 CameraProvider 可用性 cameraProviderFuture.addListener({ try { -// bindPreview(cameraProviderFuture.get()) + bindPreview(cameraProviderFuture.get()) } catch (e: ExecutionException) { e.printStackTrace() } catch (e: InterruptedException) { @@ -318,6 +318,10 @@ * 根据场景查看检查清单 * */ binding.listButton.setOnClickListener { + if (inspectionId.isBlank()) { + "请先选择场景或者识别出场景再试".show(this) + return@setOnClickListener + } navigatePageTo(arrayListOf(detectedScene, inspectionId)) } } diff --git a/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt b/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt index 11c66ea..692d72b 100644 --- a/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/VideoGuideActivity.kt @@ -3,9 +3,14 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.View +import android.widget.ImageView import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope +import com.bumptech.glide.Glide import com.casic.br.app.R import com.casic.br.app.databinding.ActivityVideoGuideBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.model.VideoGuideModel import com.casic.br.app.vm.VideoGuideViewModel @@ -13,19 +18,29 @@ import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.TitleBarView +import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext class VideoGuideActivity : KotlinBaseActivity(), Handler.Callback { + private val context = this + private val marginOffset by lazy { 5.dp2px(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var videoGuideViewModel: VideoGuideViewModel - private lateinit var videoGuideAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() + private lateinit var videoGuideAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var keywords = "" + private var classId = "" private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -49,62 +64,88 @@ } override fun initOnCreate(savedInstanceState: Bundle?) { + classId = intent.getStringExtra(Constant.INTENT_PARAM) as String + weakReferenceHandler = WeakReferenceHandler(this) videoGuideViewModel = ViewModelProvider(this)[VideoGuideViewModel::class.java] + getGuideVideoByPage() videoGuideViewModel.videosResult.observe(this) { -// if (it.code == 200) { -// val dataRows = it.data?.rows!! -// when { -// isRefresh -> { -// videoGuideAdapter.setRefreshData(dataRows) -// binding.refreshLayout.finishRefresh() -// isRefresh = false -// } -// -// isLoadMore -> { -// if (dataRows.size == 0) { -// "到底了,别拉了".show(this) -// } -// videoGuideAdapter.setLoadMoreData(dataRows) -// binding.refreshLayout.finishLoadMore() -// isLoadMore = false -// } -// -// else -> { -// dataBeans = dataRows -// weakReferenceHandler.sendEmptyMessage(2024030502) -// } -// } -// } + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + videoGuideAdapter.setRefreshData(dataRows) + binding.refreshLayout.finishRefresh() + isRefresh = false + } + + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + videoGuideAdapter.setLoadMoreData(dataRows) + binding.refreshLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2024030502) + } + } + } } } private fun getGuideVideoByPage() { - videoGuideViewModel.getGuideVideoByPage(this, keywords, page) + videoGuideViewModel.getGuideVideoByPage(this, keywords, classId, page) } override fun handleMessage(msg: Message): Boolean { when (msg.what) { 2024030502 -> { - videoGuideAdapter = object : - NormalRecyclerAdapter( + videoGuideAdapter = + object : NormalRecyclerAdapter( R.layout.item_guide_video, dataBeans ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, - item: VideoGuideModel - ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: VideoGuideModel.DataModel.RowsModel + ) { + if (item.attachment.endsWith(".mp4")) { + viewHolder.setVisibility(R.id.videoPlayer, View.VISIBLE) + .setVisibility(R.id.imageView, View.GONE) + val videoPlayer = viewHolder.getView( + R.id.videoPlayer + ) + initVideoPlayer(videoPlayer, item.attachment.combineFilePath()) + } else { + viewHolder.setVisibility(R.id.videoPlayer, View.GONE) + .setVisibility(R.id.imageView, View.VISIBLE) + .setImageResource( + R.id.imageView, item.attachment.combineFilePath() + ) + } + viewHolder.setText(R.id.guideNameView, item.title) + } } - } binding.recyclerView.adapter = videoGuideAdapter - binding.recyclerView.addItemDecoration(RecyclerViewItemOffsets(0, 7, 0, 7)) + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) videoGuideAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: VideoGuideModel + position: Int, t: VideoGuideModel.DataModel.RowsModel ) { - //TODO 查看指导视频详情 + if (t.attachment.endsWith(".mp4")) { + navigatePageTo(t.attachment.combineFilePath()) + } else { + navigatePageTo( + 0, arrayListOf(t.attachment.combineFilePath()) + ) + } } }) } @@ -112,6 +153,30 @@ return true } + private fun initVideoPlayer(videoPlayer: StandardGSYVideoPlayer, source: String) { + videoPlayer.titleTextView.visibility = View.GONE + videoPlayer.backButton.visibility = View.GONE + lifecycleScope.launch(Dispatchers.Main) { + try { + val drawable = withContext(Dispatchers.IO) { + Glide.with(context).load(source).submit().get() + } + val coverImg = ImageView(context) + coverImg.setImageDrawable(drawable) + videoPlayer.thumbImageView = coverImg + } catch (e: Exception) { + e.printStackTrace() + } + } + videoPlayer.setUp(source, true, "") + videoPlayer.fullscreenButton.setOnClickListener { + navigatePageTo(source) + } + videoPlayer.playTag = System.currentTimeMillis().toString() + videoPlayer.isReleaseWhenLossAudio = false + videoPlayer.setIsTouchWiget(false) + } + override fun initViewBinding(): ActivityVideoGuideBinding { return ActivityVideoGuideBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt b/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt index 83ba32d..c227540 100644 --- a/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt +++ b/app/src/main/java/com/casic/br/app/vm/VideoGuideViewModel.kt @@ -18,9 +18,11 @@ private val gson by lazy { Gson() } val videosResult = MutableLiveData() - fun getGuideVideoByPage(context: Context, keywords: String, offset: Int) = launch({ + fun getGuideVideoByPage( + context: Context, keywords: String, classId: String, offset: Int + ) = launch({ loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getGuideVideoByPage(keywords, offset) + val response = RetrofitServiceManager.getGuideVideoByPage(keywords, classId, offset) when (response.getResponseCode()) { 200 -> { loadState.value = LoadState.Success diff --git a/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt b/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt index 8c32684..638ed88 100644 --- a/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt +++ b/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt @@ -5,7 +5,7 @@ import android.os.Bundle import android.view.Gravity import com.casic.br.app.R -import com.casic.br.app.databinding.CheckStandardSheetBinding +import com.casic.br.app.databinding.SheetCheckStandardBinding import com.pengxh.kt.lite.extensions.binding import com.pengxh.kt.lite.extensions.resetParams @@ -36,7 +36,7 @@ } } - private val binding: CheckStandardSheetBinding by binding() + private val binding: SheetCheckStandardBinding by binding() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/res/layout/activity_check_manifest.xml b/app/src/main/res/layout/activity_check_manifest.xml index 54ba04f..cad4480 100644 --- a/app/src/main/res/layout/activity_check_manifest.xml +++ b/app/src/main/res/layout/activity_check_manifest.xml @@ -60,11 +60,11 @@ + android:layout_weight="1" + android:background="@color/white" /> + android:background="@color/white" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_hidden_trouble_detail.xml b/app/src/main/res/layout/activity_hidden_trouble_detail.xml index 81c1e08..7f7881e 100644 --- a/app/src/main/res/layout/activity_hidden_trouble_detail.xml +++ b/app/src/main/res/layout/activity_hidden_trouble_detail.xml @@ -145,7 +145,6 @@ android:layout_height="match_parent" android:layout_marginStart="@dimen/dp_10" android:layout_weight="1" - android:singleLine="true" android:text="中国航天科工集团二院二〇三所 版权所有" android:textColor="@color/white" android:textSize="@dimen/sp_16" /> diff --git a/app/src/main/res/layout/check_standard_sheet.xml b/app/src/main/res/layout/check_standard_sheet.xml deleted file mode 100644 index e9eecbd..0000000 --- a/app/src/main/res/layout/check_standard_sheet.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_guide_video.xml b/app/src/main/res/layout/item_guide_video.xml index d5712b2..5a352a8 100644 --- a/app/src/main/res/layout/item_guide_video.xml +++ b/app/src/main/res/layout/item_guide_video.xml @@ -6,10 +6,22 @@ android:gravity="center" android:orientation="vertical"> - + + + + + + + + + + + + + \ No newline at end of file