diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ede224a..bb07476 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
@@ -37,7 +40,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
@@ -49,14 +52,14 @@
-
-
-
+
-
+
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ede224a..bb07476 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
@@ -37,7 +40,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
@@ -49,14 +52,14 @@
-
-
-
+
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
index 90aa34e..7a487d2 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
@@ -3,32 +3,27 @@
import android.content.Context
import com.casic.br.operationsite.test.callback.OnImageCompressListener
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.JsonParser
+import com.google.gson.Gson
+import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.createCompressImageDir
import com.pengxh.kt.lite.utils.SaveKeyValues
import top.zibin.luban.Luban
import top.zibin.luban.OnCompressListener
import java.io.File
+val gson by lazy { Gson() }
+
/**
* String扩展方法
*/
-fun String.getResponseCode(): Int {
+fun String.getResponseHeader(): Pair {
if (this.isBlank()) {
- return 404
+ return Pair(404, "Invalid Response")
}
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("code").asInt
-}
-
-fun String.getResponseMessage(): String {
- if (this.isBlank()) {
- return ""
- }
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("message").asString
+ val jsonObject = gson.fromJson(this, JsonObject::class.java)
+ val code = jsonObject.get("code").asInt
+ val message = jsonObject.get("message").asString
+ return Pair(code, message)
}
//拼接图片地址
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ede224a..bb07476 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
@@ -37,7 +40,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
@@ -49,14 +52,14 @@
-
-
-
+
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
index 90aa34e..7a487d2 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
@@ -3,32 +3,27 @@
import android.content.Context
import com.casic.br.operationsite.test.callback.OnImageCompressListener
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.JsonParser
+import com.google.gson.Gson
+import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.createCompressImageDir
import com.pengxh.kt.lite.utils.SaveKeyValues
import top.zibin.luban.Luban
import top.zibin.luban.OnCompressListener
import java.io.File
+val gson by lazy { Gson() }
+
/**
* String扩展方法
*/
-fun String.getResponseCode(): Int {
+fun String.getResponseHeader(): Pair {
if (this.isBlank()) {
- return 404
+ return Pair(404, "Invalid Response")
}
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("code").asInt
-}
-
-fun String.getResponseMessage(): String {
- if (this.isBlank()) {
- return ""
- }
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("message").asString
+ val jsonObject = gson.fromJson(this, JsonObject::class.java)
+ val code = jsonObject.get("code").asInt
+ val message = jsonObject.get("message").asString
+ return Pair(code, message)
}
//拼接图片地址
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
deleted file mode 100644
index 758b3bd..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class AirConditionModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private double o2;
- private int h2s;
- private int co;
- private int ch4;
-
- public double getO2() {
- return o2;
- }
-
- public void setO2(double o2) {
- this.o2 = o2;
- }
-
- public int getH2s() {
- return h2s;
- }
-
- public void setH2s(int h2s) {
- this.h2s = h2s;
- }
-
- public int getCo() {
- return co;
- }
-
- public void setCo(int co) {
- this.co = co;
- }
-
- public int getCh4() {
- return ch4;
- }
-
- public void setCh4(int ch4) {
- this.ch4 = ch4;
- }
- }
-}
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ede224a..bb07476 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
@@ -37,7 +40,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
@@ -49,14 +52,14 @@
-
-
-
+
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
index 90aa34e..7a487d2 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
@@ -3,32 +3,27 @@
import android.content.Context
import com.casic.br.operationsite.test.callback.OnImageCompressListener
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.JsonParser
+import com.google.gson.Gson
+import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.createCompressImageDir
import com.pengxh.kt.lite.utils.SaveKeyValues
import top.zibin.luban.Luban
import top.zibin.luban.OnCompressListener
import java.io.File
+val gson by lazy { Gson() }
+
/**
* String扩展方法
*/
-fun String.getResponseCode(): Int {
+fun String.getResponseHeader(): Pair {
if (this.isBlank()) {
- return 404
+ return Pair(404, "Invalid Response")
}
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("code").asInt
-}
-
-fun String.getResponseMessage(): String {
- if (this.isBlank()) {
- return ""
- }
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("message").asString
+ val jsonObject = gson.fromJson(this, JsonObject::class.java)
+ val code = jsonObject.get("code").asInt
+ val message = jsonObject.get("message").asString
+ return Pair(code, message)
}
//拼接图片地址
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
deleted file mode 100644
index 758b3bd..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class AirConditionModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private double o2;
- private int h2s;
- private int co;
- private int ch4;
-
- public double getO2() {
- return o2;
- }
-
- public void setO2(double o2) {
- this.o2 = o2;
- }
-
- public int getH2s() {
- return h2s;
- }
-
- public void setH2s(int h2s) {
- this.h2s = h2s;
- }
-
- public int getCo() {
- return co;
- }
-
- public void setCo(int co) {
- this.co = co;
- }
-
- public int getCh4() {
- return ch4;
- }
-
- public void setCh4(int ch4) {
- this.ch4 = ch4;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
index f0a8f63..70228ef 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
@@ -65,13 +65,26 @@
}
public static class RowsModel {
+ private String borderPointCount;
private String createTime;
+ private String deptFullName;
+ private String deptId;
+ private String deptName;
+ private List> deviceList;
+ private String finishTime;
+ private String groupDeviceCode;
+ private String groupDeviceId;
private String id;
private String imageUrl;
+ private String locationTime;
+ private List pointLocation;
+ private String pointLocationJson;
private String projectState;
private String projectStateName;
private String registerTime;
+ private String startTime;
private String updateTime;
+ private String valid;
private String workPerson;
private String workPersonDeptId;
private String workPersonDeptName;
@@ -80,6 +93,16 @@
private String workRoad;
private String workSiteDesc;
private String workTitle;
+ private String workType;
+ private String workTypeName;
+
+ public String getBorderPointCount() {
+ return borderPointCount;
+ }
+
+ public void setBorderPointCount(String borderPointCount) {
+ this.borderPointCount = borderPointCount;
+ }
public String getCreateTime() {
return createTime;
@@ -89,6 +112,62 @@
this.createTime = createTime;
}
+ public String getDeptFullName() {
+ return deptFullName;
+ }
+
+ public void setDeptFullName(String deptFullName) {
+ this.deptFullName = deptFullName;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public List> getDeviceList() {
+ return deviceList;
+ }
+
+ public void setDeviceList(List> deviceList) {
+ this.deviceList = deviceList;
+ }
+
+ public String getFinishTime() {
+ return finishTime;
+ }
+
+ public void setFinishTime(String finishTime) {
+ this.finishTime = finishTime;
+ }
+
+ public String getGroupDeviceCode() {
+ return groupDeviceCode;
+ }
+
+ public void setGroupDeviceCode(String groupDeviceCode) {
+ this.groupDeviceCode = groupDeviceCode;
+ }
+
+ public String getGroupDeviceId() {
+ return groupDeviceId;
+ }
+
+ public void setGroupDeviceId(String groupDeviceId) {
+ this.groupDeviceId = groupDeviceId;
+ }
+
public String getId() {
return id;
}
@@ -105,6 +184,30 @@
this.imageUrl = imageUrl;
}
+ public String getLocationTime() {
+ return locationTime;
+ }
+
+ public void setLocationTime(String locationTime) {
+ this.locationTime = locationTime;
+ }
+
+ public List getPointLocation() {
+ return pointLocation;
+ }
+
+ public void setPointLocation(List pointLocation) {
+ this.pointLocation = pointLocation;
+ }
+
+ public String getPointLocationJson() {
+ return pointLocationJson;
+ }
+
+ public void setPointLocationJson(String pointLocationJson) {
+ this.pointLocationJson = pointLocationJson;
+ }
+
public String getProjectState() {
return projectState;
}
@@ -129,6 +232,14 @@
this.registerTime = registerTime;
}
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
public String getUpdateTime() {
return updateTime;
}
@@ -137,6 +248,14 @@
this.updateTime = updateTime;
}
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
public String getWorkPerson() {
return workPerson;
}
@@ -200,6 +319,43 @@
public void setWorkTitle(String workTitle) {
this.workTitle = workTitle;
}
+
+ public String getWorkType() {
+ return workType;
+ }
+
+ public void setWorkType(String workType) {
+ this.workType = workType;
+ }
+
+ public String getWorkTypeName() {
+ return workTypeName;
+ }
+
+ public void setWorkTypeName(String workTypeName) {
+ this.workTypeName = workTypeName;
+ }
+
+ public static class PointLocationModel {
+ private String lng;
+ private String lat;
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+ }
}
}
}
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ede224a..bb07476 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
@@ -37,7 +40,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
@@ -49,14 +52,14 @@
-
-
-
+
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
index 90aa34e..7a487d2 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
@@ -3,32 +3,27 @@
import android.content.Context
import com.casic.br.operationsite.test.callback.OnImageCompressListener
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.JsonParser
+import com.google.gson.Gson
+import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.createCompressImageDir
import com.pengxh.kt.lite.utils.SaveKeyValues
import top.zibin.luban.Luban
import top.zibin.luban.OnCompressListener
import java.io.File
+val gson by lazy { Gson() }
+
/**
* String扩展方法
*/
-fun String.getResponseCode(): Int {
+fun String.getResponseHeader(): Pair {
if (this.isBlank()) {
- return 404
+ return Pair(404, "Invalid Response")
}
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("code").asInt
-}
-
-fun String.getResponseMessage(): String {
- if (this.isBlank()) {
- return ""
- }
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("message").asString
+ val jsonObject = gson.fromJson(this, JsonObject::class.java)
+ val code = jsonObject.get("code").asInt
+ val message = jsonObject.get("message").asString
+ return Pair(code, message)
}
//拼接图片地址
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
deleted file mode 100644
index 758b3bd..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class AirConditionModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private double o2;
- private int h2s;
- private int co;
- private int ch4;
-
- public double getO2() {
- return o2;
- }
-
- public void setO2(double o2) {
- this.o2 = o2;
- }
-
- public int getH2s() {
- return h2s;
- }
-
- public void setH2s(int h2s) {
- this.h2s = h2s;
- }
-
- public int getCo() {
- return co;
- }
-
- public void setCo(int co) {
- this.co = co;
- }
-
- public int getCh4() {
- return ch4;
- }
-
- public void setCh4(int ch4) {
- this.ch4 = ch4;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
index f0a8f63..70228ef 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
@@ -65,13 +65,26 @@
}
public static class RowsModel {
+ private String borderPointCount;
private String createTime;
+ private String deptFullName;
+ private String deptId;
+ private String deptName;
+ private List> deviceList;
+ private String finishTime;
+ private String groupDeviceCode;
+ private String groupDeviceId;
private String id;
private String imageUrl;
+ private String locationTime;
+ private List pointLocation;
+ private String pointLocationJson;
private String projectState;
private String projectStateName;
private String registerTime;
+ private String startTime;
private String updateTime;
+ private String valid;
private String workPerson;
private String workPersonDeptId;
private String workPersonDeptName;
@@ -80,6 +93,16 @@
private String workRoad;
private String workSiteDesc;
private String workTitle;
+ private String workType;
+ private String workTypeName;
+
+ public String getBorderPointCount() {
+ return borderPointCount;
+ }
+
+ public void setBorderPointCount(String borderPointCount) {
+ this.borderPointCount = borderPointCount;
+ }
public String getCreateTime() {
return createTime;
@@ -89,6 +112,62 @@
this.createTime = createTime;
}
+ public String getDeptFullName() {
+ return deptFullName;
+ }
+
+ public void setDeptFullName(String deptFullName) {
+ this.deptFullName = deptFullName;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public List> getDeviceList() {
+ return deviceList;
+ }
+
+ public void setDeviceList(List> deviceList) {
+ this.deviceList = deviceList;
+ }
+
+ public String getFinishTime() {
+ return finishTime;
+ }
+
+ public void setFinishTime(String finishTime) {
+ this.finishTime = finishTime;
+ }
+
+ public String getGroupDeviceCode() {
+ return groupDeviceCode;
+ }
+
+ public void setGroupDeviceCode(String groupDeviceCode) {
+ this.groupDeviceCode = groupDeviceCode;
+ }
+
+ public String getGroupDeviceId() {
+ return groupDeviceId;
+ }
+
+ public void setGroupDeviceId(String groupDeviceId) {
+ this.groupDeviceId = groupDeviceId;
+ }
+
public String getId() {
return id;
}
@@ -105,6 +184,30 @@
this.imageUrl = imageUrl;
}
+ public String getLocationTime() {
+ return locationTime;
+ }
+
+ public void setLocationTime(String locationTime) {
+ this.locationTime = locationTime;
+ }
+
+ public List getPointLocation() {
+ return pointLocation;
+ }
+
+ public void setPointLocation(List pointLocation) {
+ this.pointLocation = pointLocation;
+ }
+
+ public String getPointLocationJson() {
+ return pointLocationJson;
+ }
+
+ public void setPointLocationJson(String pointLocationJson) {
+ this.pointLocationJson = pointLocationJson;
+ }
+
public String getProjectState() {
return projectState;
}
@@ -129,6 +232,14 @@
this.registerTime = registerTime;
}
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
public String getUpdateTime() {
return updateTime;
}
@@ -137,6 +248,14 @@
this.updateTime = updateTime;
}
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
public String getWorkPerson() {
return workPerson;
}
@@ -200,6 +319,43 @@
public void setWorkTitle(String workTitle) {
this.workTitle = workTitle;
}
+
+ public String getWorkType() {
+ return workType;
+ }
+
+ public void setWorkType(String workType) {
+ this.workType = workType;
+ }
+
+ public String getWorkTypeName() {
+ return workTypeName;
+ }
+
+ public void setWorkTypeName(String workTypeName) {
+ this.workTypeName = workTypeName;
+ }
+
+ public static class PointLocationModel {
+ private String lng;
+ private String lat;
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
new file mode 100644
index 0000000..5d87443
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
@@ -0,0 +1,487 @@
+package com.casic.br.operationsite.test.model;
+
+import java.util.List;
+
+public class WorkSiteWorkerModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataModel {
+ private boolean alarmFlag;
+ private String createTime;
+ private String deptId;
+ private String deptName;
+ private String enterReason;
+ private String gender;
+ private String genderName;
+ private HealthModel health;
+ private String id;
+ private String idCardNumber;
+ private String isRegister;
+ private LocationModel location;
+ private MultiGasModel multiGas;
+ private String ownerShip;
+ private String phoneNumber;
+ private String registerTime;
+ private String status;
+ private String statusName;
+ private String workerAvatar;
+ private String workerName;
+ private String workerType;
+ private String workerTypeName;
+
+ public boolean isAlarmFlag() {
+ return alarmFlag;
+ }
+
+ public void setAlarmFlag(boolean alarmFlag) {
+ this.alarmFlag = alarmFlag;
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public String getEnterReason() {
+ return enterReason;
+ }
+
+ public void setEnterReason(String enterReason) {
+ this.enterReason = enterReason;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+ public String getGenderName() {
+ return genderName;
+ }
+
+ public void setGenderName(String genderName) {
+ this.genderName = genderName;
+ }
+
+ public HealthModel getHealth() {
+ return health;
+ }
+
+ public void setHealth(HealthModel health) {
+ this.health = health;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIdCardNumber() {
+ return idCardNumber;
+ }
+
+ public void setIdCardNumber(String idCardNumber) {
+ this.idCardNumber = idCardNumber;
+ }
+
+ public String getIsRegister() {
+ return isRegister;
+ }
+
+ public void setIsRegister(String isRegister) {
+ this.isRegister = isRegister;
+ }
+
+ public LocationModel getLocation() {
+ return location;
+ }
+
+ public void setLocation(LocationModel location) {
+ this.location = location;
+ }
+
+ public MultiGasModel getMultiGas() {
+ return multiGas;
+ }
+
+ public void setMultiGas(MultiGasModel multiGas) {
+ this.multiGas = multiGas;
+ }
+
+ public String getOwnerShip() {
+ return ownerShip;
+ }
+
+ public void setOwnerShip(String ownerShip) {
+ this.ownerShip = ownerShip;
+ }
+
+ public String getPhoneNumber() {
+ return phoneNumber;
+ }
+
+ public void setPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ }
+
+ public String getRegisterTime() {
+ return registerTime;
+ }
+
+ public void setRegisterTime(String registerTime) {
+ this.registerTime = registerTime;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getStatusName() {
+ return statusName;
+ }
+
+ public void setStatusName(String statusName) {
+ this.statusName = statusName;
+ }
+
+ public String getWorkerAvatar() {
+ return workerAvatar;
+ }
+
+ public void setWorkerAvatar(String workerAvatar) {
+ this.workerAvatar = workerAvatar;
+ }
+
+ public String getWorkerName() {
+ return workerName;
+ }
+
+ public void setWorkerName(String workerName) {
+ this.workerName = workerName;
+ }
+
+ public String getWorkerType() {
+ return workerType;
+ }
+
+ public void setWorkerType(String workerType) {
+ this.workerType = workerType;
+ }
+
+ public String getWorkerTypeName() {
+ return workerTypeName;
+ }
+
+ public void setWorkerTypeName(String workerTypeName) {
+ this.workerTypeName = workerTypeName;
+ }
+
+ public static class HealthModel {
+ private String bloodOxygen;
+ private String deviceCode;
+ private String deviceId;
+ private String groupCode;
+ private String heartRate;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getBloodOxygen() {
+ return bloodOxygen;
+ }
+
+ public void setBloodOxygen(String bloodOxygen) {
+ this.bloodOxygen = bloodOxygen;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getHeartRate() {
+ return heartRate;
+ }
+
+ public void setHeartRate(String heartRate) {
+ this.heartRate = heartRate;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class LocationModel {
+ private String deviceCode;
+ private String deviceId;
+ private String gdLat;
+ private String gdLng;
+ private String groupCode;
+ private String lat;
+ private String lng;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGdLat() {
+ return gdLat;
+ }
+
+ public void setGdLat(String gdLat) {
+ this.gdLat = gdLat;
+ }
+
+ public String getGdLng() {
+ return gdLng;
+ }
+
+ public void setGdLng(String gdLng) {
+ this.gdLng = gdLng;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class MultiGasModel {
+ private String coValue;
+ private String deviceCode;
+ private String deviceId;
+ private String exValue;
+ private String groupCode;
+ private String h2sValue;
+ private String o2Value;
+ private String projectId;
+ private String projectName;
+ private String uploadTimestamp;
+
+ public String getCoValue() {
+ return coValue;
+ }
+
+ public void setCoValue(String coValue) {
+ this.coValue = coValue;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getExValue() {
+ return exValue;
+ }
+
+ public void setExValue(String exValue) {
+ this.exValue = exValue;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getH2sValue() {
+ return h2sValue;
+ }
+
+ public void setH2sValue(String h2sValue) {
+ this.h2sValue = h2sValue;
+ }
+
+ public String getO2Value() {
+ return o2Value;
+ }
+
+ public void setO2Value(String o2Value) {
+ this.o2Value = o2Value;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+ }
+}
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ede224a..bb07476 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
@@ -37,7 +40,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
@@ -49,14 +52,14 @@
-
-
-
+
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
index 90aa34e..7a487d2 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
@@ -3,32 +3,27 @@
import android.content.Context
import com.casic.br.operationsite.test.callback.OnImageCompressListener
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.JsonParser
+import com.google.gson.Gson
+import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.createCompressImageDir
import com.pengxh.kt.lite.utils.SaveKeyValues
import top.zibin.luban.Luban
import top.zibin.luban.OnCompressListener
import java.io.File
+val gson by lazy { Gson() }
+
/**
* String扩展方法
*/
-fun String.getResponseCode(): Int {
+fun String.getResponseHeader(): Pair {
if (this.isBlank()) {
- return 404
+ return Pair(404, "Invalid Response")
}
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("code").asInt
-}
-
-fun String.getResponseMessage(): String {
- if (this.isBlank()) {
- return ""
- }
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("message").asString
+ val jsonObject = gson.fromJson(this, JsonObject::class.java)
+ val code = jsonObject.get("code").asInt
+ val message = jsonObject.get("message").asString
+ return Pair(code, message)
}
//拼接图片地址
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
deleted file mode 100644
index 758b3bd..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class AirConditionModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private double o2;
- private int h2s;
- private int co;
- private int ch4;
-
- public double getO2() {
- return o2;
- }
-
- public void setO2(double o2) {
- this.o2 = o2;
- }
-
- public int getH2s() {
- return h2s;
- }
-
- public void setH2s(int h2s) {
- this.h2s = h2s;
- }
-
- public int getCo() {
- return co;
- }
-
- public void setCo(int co) {
- this.co = co;
- }
-
- public int getCh4() {
- return ch4;
- }
-
- public void setCh4(int ch4) {
- this.ch4 = ch4;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
index f0a8f63..70228ef 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
@@ -65,13 +65,26 @@
}
public static class RowsModel {
+ private String borderPointCount;
private String createTime;
+ private String deptFullName;
+ private String deptId;
+ private String deptName;
+ private List> deviceList;
+ private String finishTime;
+ private String groupDeviceCode;
+ private String groupDeviceId;
private String id;
private String imageUrl;
+ private String locationTime;
+ private List pointLocation;
+ private String pointLocationJson;
private String projectState;
private String projectStateName;
private String registerTime;
+ private String startTime;
private String updateTime;
+ private String valid;
private String workPerson;
private String workPersonDeptId;
private String workPersonDeptName;
@@ -80,6 +93,16 @@
private String workRoad;
private String workSiteDesc;
private String workTitle;
+ private String workType;
+ private String workTypeName;
+
+ public String getBorderPointCount() {
+ return borderPointCount;
+ }
+
+ public void setBorderPointCount(String borderPointCount) {
+ this.borderPointCount = borderPointCount;
+ }
public String getCreateTime() {
return createTime;
@@ -89,6 +112,62 @@
this.createTime = createTime;
}
+ public String getDeptFullName() {
+ return deptFullName;
+ }
+
+ public void setDeptFullName(String deptFullName) {
+ this.deptFullName = deptFullName;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public List> getDeviceList() {
+ return deviceList;
+ }
+
+ public void setDeviceList(List> deviceList) {
+ this.deviceList = deviceList;
+ }
+
+ public String getFinishTime() {
+ return finishTime;
+ }
+
+ public void setFinishTime(String finishTime) {
+ this.finishTime = finishTime;
+ }
+
+ public String getGroupDeviceCode() {
+ return groupDeviceCode;
+ }
+
+ public void setGroupDeviceCode(String groupDeviceCode) {
+ this.groupDeviceCode = groupDeviceCode;
+ }
+
+ public String getGroupDeviceId() {
+ return groupDeviceId;
+ }
+
+ public void setGroupDeviceId(String groupDeviceId) {
+ this.groupDeviceId = groupDeviceId;
+ }
+
public String getId() {
return id;
}
@@ -105,6 +184,30 @@
this.imageUrl = imageUrl;
}
+ public String getLocationTime() {
+ return locationTime;
+ }
+
+ public void setLocationTime(String locationTime) {
+ this.locationTime = locationTime;
+ }
+
+ public List getPointLocation() {
+ return pointLocation;
+ }
+
+ public void setPointLocation(List pointLocation) {
+ this.pointLocation = pointLocation;
+ }
+
+ public String getPointLocationJson() {
+ return pointLocationJson;
+ }
+
+ public void setPointLocationJson(String pointLocationJson) {
+ this.pointLocationJson = pointLocationJson;
+ }
+
public String getProjectState() {
return projectState;
}
@@ -129,6 +232,14 @@
this.registerTime = registerTime;
}
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
public String getUpdateTime() {
return updateTime;
}
@@ -137,6 +248,14 @@
this.updateTime = updateTime;
}
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
public String getWorkPerson() {
return workPerson;
}
@@ -200,6 +319,43 @@
public void setWorkTitle(String workTitle) {
this.workTitle = workTitle;
}
+
+ public String getWorkType() {
+ return workType;
+ }
+
+ public void setWorkType(String workType) {
+ this.workType = workType;
+ }
+
+ public String getWorkTypeName() {
+ return workTypeName;
+ }
+
+ public void setWorkTypeName(String workTypeName) {
+ this.workTypeName = workTypeName;
+ }
+
+ public static class PointLocationModel {
+ private String lng;
+ private String lat;
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
new file mode 100644
index 0000000..5d87443
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
@@ -0,0 +1,487 @@
+package com.casic.br.operationsite.test.model;
+
+import java.util.List;
+
+public class WorkSiteWorkerModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataModel {
+ private boolean alarmFlag;
+ private String createTime;
+ private String deptId;
+ private String deptName;
+ private String enterReason;
+ private String gender;
+ private String genderName;
+ private HealthModel health;
+ private String id;
+ private String idCardNumber;
+ private String isRegister;
+ private LocationModel location;
+ private MultiGasModel multiGas;
+ private String ownerShip;
+ private String phoneNumber;
+ private String registerTime;
+ private String status;
+ private String statusName;
+ private String workerAvatar;
+ private String workerName;
+ private String workerType;
+ private String workerTypeName;
+
+ public boolean isAlarmFlag() {
+ return alarmFlag;
+ }
+
+ public void setAlarmFlag(boolean alarmFlag) {
+ this.alarmFlag = alarmFlag;
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public String getEnterReason() {
+ return enterReason;
+ }
+
+ public void setEnterReason(String enterReason) {
+ this.enterReason = enterReason;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+ public String getGenderName() {
+ return genderName;
+ }
+
+ public void setGenderName(String genderName) {
+ this.genderName = genderName;
+ }
+
+ public HealthModel getHealth() {
+ return health;
+ }
+
+ public void setHealth(HealthModel health) {
+ this.health = health;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIdCardNumber() {
+ return idCardNumber;
+ }
+
+ public void setIdCardNumber(String idCardNumber) {
+ this.idCardNumber = idCardNumber;
+ }
+
+ public String getIsRegister() {
+ return isRegister;
+ }
+
+ public void setIsRegister(String isRegister) {
+ this.isRegister = isRegister;
+ }
+
+ public LocationModel getLocation() {
+ return location;
+ }
+
+ public void setLocation(LocationModel location) {
+ this.location = location;
+ }
+
+ public MultiGasModel getMultiGas() {
+ return multiGas;
+ }
+
+ public void setMultiGas(MultiGasModel multiGas) {
+ this.multiGas = multiGas;
+ }
+
+ public String getOwnerShip() {
+ return ownerShip;
+ }
+
+ public void setOwnerShip(String ownerShip) {
+ this.ownerShip = ownerShip;
+ }
+
+ public String getPhoneNumber() {
+ return phoneNumber;
+ }
+
+ public void setPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ }
+
+ public String getRegisterTime() {
+ return registerTime;
+ }
+
+ public void setRegisterTime(String registerTime) {
+ this.registerTime = registerTime;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getStatusName() {
+ return statusName;
+ }
+
+ public void setStatusName(String statusName) {
+ this.statusName = statusName;
+ }
+
+ public String getWorkerAvatar() {
+ return workerAvatar;
+ }
+
+ public void setWorkerAvatar(String workerAvatar) {
+ this.workerAvatar = workerAvatar;
+ }
+
+ public String getWorkerName() {
+ return workerName;
+ }
+
+ public void setWorkerName(String workerName) {
+ this.workerName = workerName;
+ }
+
+ public String getWorkerType() {
+ return workerType;
+ }
+
+ public void setWorkerType(String workerType) {
+ this.workerType = workerType;
+ }
+
+ public String getWorkerTypeName() {
+ return workerTypeName;
+ }
+
+ public void setWorkerTypeName(String workerTypeName) {
+ this.workerTypeName = workerTypeName;
+ }
+
+ public static class HealthModel {
+ private String bloodOxygen;
+ private String deviceCode;
+ private String deviceId;
+ private String groupCode;
+ private String heartRate;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getBloodOxygen() {
+ return bloodOxygen;
+ }
+
+ public void setBloodOxygen(String bloodOxygen) {
+ this.bloodOxygen = bloodOxygen;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getHeartRate() {
+ return heartRate;
+ }
+
+ public void setHeartRate(String heartRate) {
+ this.heartRate = heartRate;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class LocationModel {
+ private String deviceCode;
+ private String deviceId;
+ private String gdLat;
+ private String gdLng;
+ private String groupCode;
+ private String lat;
+ private String lng;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGdLat() {
+ return gdLat;
+ }
+
+ public void setGdLat(String gdLat) {
+ this.gdLat = gdLat;
+ }
+
+ public String getGdLng() {
+ return gdLng;
+ }
+
+ public void setGdLng(String gdLng) {
+ this.gdLng = gdLng;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class MultiGasModel {
+ private String coValue;
+ private String deviceCode;
+ private String deviceId;
+ private String exValue;
+ private String groupCode;
+ private String h2sValue;
+ private String o2Value;
+ private String projectId;
+ private String projectName;
+ private String uploadTimestamp;
+
+ public String getCoValue() {
+ return coValue;
+ }
+
+ public void setCoValue(String coValue) {
+ this.coValue = coValue;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getExValue() {
+ return exValue;
+ }
+
+ public void setExValue(String exValue) {
+ this.exValue = exValue;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getH2sValue() {
+ return h2sValue;
+ }
+
+ public void setH2sValue(String h2sValue) {
+ this.h2sValue = h2sValue;
+ }
+
+ public String getO2Value() {
+ return o2Value;
+ }
+
+ public void setO2Value(String o2Value) {
+ this.o2Value = o2Value;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
deleted file mode 100644
index e32edab..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
+++ /dev/null
@@ -1,226 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class WorkerModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private boolean alarmFlag;
- private String bloodOxygen;
- private String braceletCode;
- private String cell;
- private String co;
- private String gas;
- private String gasTime;
- private String h2s;
- private String hatCode;
- private String hatId;
- private String heartRate;
- private String lat;
- private String lng;
- private String location;
- private String o2;
- private String signal;
- private String time;
- private String vastCode;
- private String workerId;
- private String workerName;
-
- public boolean isAlarmFlag() {
- return alarmFlag;
- }
-
- public void setAlarmFlag(boolean alarmFlag) {
- this.alarmFlag = alarmFlag;
- }
-
- public String getBloodOxygen() {
- return bloodOxygen;
- }
-
- public void setBloodOxygen(String bloodOxygen) {
- this.bloodOxygen = bloodOxygen;
- }
-
- public String getBraceletCode() {
- return braceletCode;
- }
-
- public void setBraceletCode(String braceletCode) {
- this.braceletCode = braceletCode;
- }
-
- public String getCell() {
- return cell;
- }
-
- public void setCell(String cell) {
- this.cell = cell;
- }
-
- public String getCo() {
- return co;
- }
-
- public void setCo(String co) {
- this.co = co;
- }
-
- public String getGas() {
- return gas;
- }
-
- public void setGas(String gas) {
- this.gas = gas;
- }
-
- public String getGasTime() {
- return gasTime;
- }
-
- public void setGasTime(String gasTime) {
- this.gasTime = gasTime;
- }
-
- public String getH2s() {
- return h2s;
- }
-
- public void setH2s(String h2s) {
- this.h2s = h2s;
- }
-
- public String getHatCode() {
- return hatCode;
- }
-
- public void setHatCode(String hatCode) {
- this.hatCode = hatCode;
- }
-
- public String getHatId() {
- return hatId;
- }
-
- public void setHatId(String hatId) {
- this.hatId = hatId;
- }
-
- public String getHeartRate() {
- return heartRate;
- }
-
- public void setHeartRate(String heartRate) {
- this.heartRate = heartRate;
- }
-
- public String getLat() {
- return lat;
- }
-
- public void setLat(String lat) {
- this.lat = lat;
- }
-
- public String getLng() {
- return lng;
- }
-
- public void setLng(String lng) {
- this.lng = lng;
- }
-
- public String getLocation() {
- return location;
- }
-
- public void setLocation(String location) {
- this.location = location;
- }
-
- public String getO2() {
- return o2;
- }
-
- public void setO2(String o2) {
- this.o2 = o2;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getTime() {
- return time;
- }
-
- public void setTime(String time) {
- this.time = time;
- }
-
- public String getVastCode() {
- return vastCode;
- }
-
- public void setVastCode(String vastCode) {
- this.vastCode = vastCode;
- }
-
- public String getWorkerId() {
- return workerId;
- }
-
- public void setWorkerId(String workerId) {
- this.workerId = workerId;
- }
-
- public String getWorkerName() {
- return workerName;
- }
-
- public void setWorkerName(String workerName) {
- this.workerName = workerName;
- }
- }
-}
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ede224a..bb07476 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
@@ -37,7 +40,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
@@ -49,14 +52,14 @@
-
-
-
+
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
index 90aa34e..7a487d2 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
@@ -3,32 +3,27 @@
import android.content.Context
import com.casic.br.operationsite.test.callback.OnImageCompressListener
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.JsonParser
+import com.google.gson.Gson
+import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.createCompressImageDir
import com.pengxh.kt.lite.utils.SaveKeyValues
import top.zibin.luban.Luban
import top.zibin.luban.OnCompressListener
import java.io.File
+val gson by lazy { Gson() }
+
/**
* String扩展方法
*/
-fun String.getResponseCode(): Int {
+fun String.getResponseHeader(): Pair {
if (this.isBlank()) {
- return 404
+ return Pair(404, "Invalid Response")
}
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("code").asInt
-}
-
-fun String.getResponseMessage(): String {
- if (this.isBlank()) {
- return ""
- }
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("message").asString
+ val jsonObject = gson.fromJson(this, JsonObject::class.java)
+ val code = jsonObject.get("code").asInt
+ val message = jsonObject.get("message").asString
+ return Pair(code, message)
}
//拼接图片地址
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
deleted file mode 100644
index 758b3bd..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class AirConditionModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private double o2;
- private int h2s;
- private int co;
- private int ch4;
-
- public double getO2() {
- return o2;
- }
-
- public void setO2(double o2) {
- this.o2 = o2;
- }
-
- public int getH2s() {
- return h2s;
- }
-
- public void setH2s(int h2s) {
- this.h2s = h2s;
- }
-
- public int getCo() {
- return co;
- }
-
- public void setCo(int co) {
- this.co = co;
- }
-
- public int getCh4() {
- return ch4;
- }
-
- public void setCh4(int ch4) {
- this.ch4 = ch4;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
index f0a8f63..70228ef 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
@@ -65,13 +65,26 @@
}
public static class RowsModel {
+ private String borderPointCount;
private String createTime;
+ private String deptFullName;
+ private String deptId;
+ private String deptName;
+ private List> deviceList;
+ private String finishTime;
+ private String groupDeviceCode;
+ private String groupDeviceId;
private String id;
private String imageUrl;
+ private String locationTime;
+ private List pointLocation;
+ private String pointLocationJson;
private String projectState;
private String projectStateName;
private String registerTime;
+ private String startTime;
private String updateTime;
+ private String valid;
private String workPerson;
private String workPersonDeptId;
private String workPersonDeptName;
@@ -80,6 +93,16 @@
private String workRoad;
private String workSiteDesc;
private String workTitle;
+ private String workType;
+ private String workTypeName;
+
+ public String getBorderPointCount() {
+ return borderPointCount;
+ }
+
+ public void setBorderPointCount(String borderPointCount) {
+ this.borderPointCount = borderPointCount;
+ }
public String getCreateTime() {
return createTime;
@@ -89,6 +112,62 @@
this.createTime = createTime;
}
+ public String getDeptFullName() {
+ return deptFullName;
+ }
+
+ public void setDeptFullName(String deptFullName) {
+ this.deptFullName = deptFullName;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public List> getDeviceList() {
+ return deviceList;
+ }
+
+ public void setDeviceList(List> deviceList) {
+ this.deviceList = deviceList;
+ }
+
+ public String getFinishTime() {
+ return finishTime;
+ }
+
+ public void setFinishTime(String finishTime) {
+ this.finishTime = finishTime;
+ }
+
+ public String getGroupDeviceCode() {
+ return groupDeviceCode;
+ }
+
+ public void setGroupDeviceCode(String groupDeviceCode) {
+ this.groupDeviceCode = groupDeviceCode;
+ }
+
+ public String getGroupDeviceId() {
+ return groupDeviceId;
+ }
+
+ public void setGroupDeviceId(String groupDeviceId) {
+ this.groupDeviceId = groupDeviceId;
+ }
+
public String getId() {
return id;
}
@@ -105,6 +184,30 @@
this.imageUrl = imageUrl;
}
+ public String getLocationTime() {
+ return locationTime;
+ }
+
+ public void setLocationTime(String locationTime) {
+ this.locationTime = locationTime;
+ }
+
+ public List getPointLocation() {
+ return pointLocation;
+ }
+
+ public void setPointLocation(List pointLocation) {
+ this.pointLocation = pointLocation;
+ }
+
+ public String getPointLocationJson() {
+ return pointLocationJson;
+ }
+
+ public void setPointLocationJson(String pointLocationJson) {
+ this.pointLocationJson = pointLocationJson;
+ }
+
public String getProjectState() {
return projectState;
}
@@ -129,6 +232,14 @@
this.registerTime = registerTime;
}
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
public String getUpdateTime() {
return updateTime;
}
@@ -137,6 +248,14 @@
this.updateTime = updateTime;
}
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
public String getWorkPerson() {
return workPerson;
}
@@ -200,6 +319,43 @@
public void setWorkTitle(String workTitle) {
this.workTitle = workTitle;
}
+
+ public String getWorkType() {
+ return workType;
+ }
+
+ public void setWorkType(String workType) {
+ this.workType = workType;
+ }
+
+ public String getWorkTypeName() {
+ return workTypeName;
+ }
+
+ public void setWorkTypeName(String workTypeName) {
+ this.workTypeName = workTypeName;
+ }
+
+ public static class PointLocationModel {
+ private String lng;
+ private String lat;
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
new file mode 100644
index 0000000..5d87443
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
@@ -0,0 +1,487 @@
+package com.casic.br.operationsite.test.model;
+
+import java.util.List;
+
+public class WorkSiteWorkerModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataModel {
+ private boolean alarmFlag;
+ private String createTime;
+ private String deptId;
+ private String deptName;
+ private String enterReason;
+ private String gender;
+ private String genderName;
+ private HealthModel health;
+ private String id;
+ private String idCardNumber;
+ private String isRegister;
+ private LocationModel location;
+ private MultiGasModel multiGas;
+ private String ownerShip;
+ private String phoneNumber;
+ private String registerTime;
+ private String status;
+ private String statusName;
+ private String workerAvatar;
+ private String workerName;
+ private String workerType;
+ private String workerTypeName;
+
+ public boolean isAlarmFlag() {
+ return alarmFlag;
+ }
+
+ public void setAlarmFlag(boolean alarmFlag) {
+ this.alarmFlag = alarmFlag;
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public String getEnterReason() {
+ return enterReason;
+ }
+
+ public void setEnterReason(String enterReason) {
+ this.enterReason = enterReason;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+ public String getGenderName() {
+ return genderName;
+ }
+
+ public void setGenderName(String genderName) {
+ this.genderName = genderName;
+ }
+
+ public HealthModel getHealth() {
+ return health;
+ }
+
+ public void setHealth(HealthModel health) {
+ this.health = health;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIdCardNumber() {
+ return idCardNumber;
+ }
+
+ public void setIdCardNumber(String idCardNumber) {
+ this.idCardNumber = idCardNumber;
+ }
+
+ public String getIsRegister() {
+ return isRegister;
+ }
+
+ public void setIsRegister(String isRegister) {
+ this.isRegister = isRegister;
+ }
+
+ public LocationModel getLocation() {
+ return location;
+ }
+
+ public void setLocation(LocationModel location) {
+ this.location = location;
+ }
+
+ public MultiGasModel getMultiGas() {
+ return multiGas;
+ }
+
+ public void setMultiGas(MultiGasModel multiGas) {
+ this.multiGas = multiGas;
+ }
+
+ public String getOwnerShip() {
+ return ownerShip;
+ }
+
+ public void setOwnerShip(String ownerShip) {
+ this.ownerShip = ownerShip;
+ }
+
+ public String getPhoneNumber() {
+ return phoneNumber;
+ }
+
+ public void setPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ }
+
+ public String getRegisterTime() {
+ return registerTime;
+ }
+
+ public void setRegisterTime(String registerTime) {
+ this.registerTime = registerTime;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getStatusName() {
+ return statusName;
+ }
+
+ public void setStatusName(String statusName) {
+ this.statusName = statusName;
+ }
+
+ public String getWorkerAvatar() {
+ return workerAvatar;
+ }
+
+ public void setWorkerAvatar(String workerAvatar) {
+ this.workerAvatar = workerAvatar;
+ }
+
+ public String getWorkerName() {
+ return workerName;
+ }
+
+ public void setWorkerName(String workerName) {
+ this.workerName = workerName;
+ }
+
+ public String getWorkerType() {
+ return workerType;
+ }
+
+ public void setWorkerType(String workerType) {
+ this.workerType = workerType;
+ }
+
+ public String getWorkerTypeName() {
+ return workerTypeName;
+ }
+
+ public void setWorkerTypeName(String workerTypeName) {
+ this.workerTypeName = workerTypeName;
+ }
+
+ public static class HealthModel {
+ private String bloodOxygen;
+ private String deviceCode;
+ private String deviceId;
+ private String groupCode;
+ private String heartRate;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getBloodOxygen() {
+ return bloodOxygen;
+ }
+
+ public void setBloodOxygen(String bloodOxygen) {
+ this.bloodOxygen = bloodOxygen;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getHeartRate() {
+ return heartRate;
+ }
+
+ public void setHeartRate(String heartRate) {
+ this.heartRate = heartRate;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class LocationModel {
+ private String deviceCode;
+ private String deviceId;
+ private String gdLat;
+ private String gdLng;
+ private String groupCode;
+ private String lat;
+ private String lng;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGdLat() {
+ return gdLat;
+ }
+
+ public void setGdLat(String gdLat) {
+ this.gdLat = gdLat;
+ }
+
+ public String getGdLng() {
+ return gdLng;
+ }
+
+ public void setGdLng(String gdLng) {
+ this.gdLng = gdLng;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class MultiGasModel {
+ private String coValue;
+ private String deviceCode;
+ private String deviceId;
+ private String exValue;
+ private String groupCode;
+ private String h2sValue;
+ private String o2Value;
+ private String projectId;
+ private String projectName;
+ private String uploadTimestamp;
+
+ public String getCoValue() {
+ return coValue;
+ }
+
+ public void setCoValue(String coValue) {
+ this.coValue = coValue;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getExValue() {
+ return exValue;
+ }
+
+ public void setExValue(String exValue) {
+ this.exValue = exValue;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getH2sValue() {
+ return h2sValue;
+ }
+
+ public void setH2sValue(String h2sValue) {
+ this.h2sValue = h2sValue;
+ }
+
+ public String getO2Value() {
+ return o2Value;
+ }
+
+ public void setO2Value(String o2Value) {
+ this.o2Value = o2Value;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
deleted file mode 100644
index e32edab..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
+++ /dev/null
@@ -1,226 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class WorkerModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private boolean alarmFlag;
- private String bloodOxygen;
- private String braceletCode;
- private String cell;
- private String co;
- private String gas;
- private String gasTime;
- private String h2s;
- private String hatCode;
- private String hatId;
- private String heartRate;
- private String lat;
- private String lng;
- private String location;
- private String o2;
- private String signal;
- private String time;
- private String vastCode;
- private String workerId;
- private String workerName;
-
- public boolean isAlarmFlag() {
- return alarmFlag;
- }
-
- public void setAlarmFlag(boolean alarmFlag) {
- this.alarmFlag = alarmFlag;
- }
-
- public String getBloodOxygen() {
- return bloodOxygen;
- }
-
- public void setBloodOxygen(String bloodOxygen) {
- this.bloodOxygen = bloodOxygen;
- }
-
- public String getBraceletCode() {
- return braceletCode;
- }
-
- public void setBraceletCode(String braceletCode) {
- this.braceletCode = braceletCode;
- }
-
- public String getCell() {
- return cell;
- }
-
- public void setCell(String cell) {
- this.cell = cell;
- }
-
- public String getCo() {
- return co;
- }
-
- public void setCo(String co) {
- this.co = co;
- }
-
- public String getGas() {
- return gas;
- }
-
- public void setGas(String gas) {
- this.gas = gas;
- }
-
- public String getGasTime() {
- return gasTime;
- }
-
- public void setGasTime(String gasTime) {
- this.gasTime = gasTime;
- }
-
- public String getH2s() {
- return h2s;
- }
-
- public void setH2s(String h2s) {
- this.h2s = h2s;
- }
-
- public String getHatCode() {
- return hatCode;
- }
-
- public void setHatCode(String hatCode) {
- this.hatCode = hatCode;
- }
-
- public String getHatId() {
- return hatId;
- }
-
- public void setHatId(String hatId) {
- this.hatId = hatId;
- }
-
- public String getHeartRate() {
- return heartRate;
- }
-
- public void setHeartRate(String heartRate) {
- this.heartRate = heartRate;
- }
-
- public String getLat() {
- return lat;
- }
-
- public void setLat(String lat) {
- this.lat = lat;
- }
-
- public String getLng() {
- return lng;
- }
-
- public void setLng(String lng) {
- this.lng = lng;
- }
-
- public String getLocation() {
- return location;
- }
-
- public void setLocation(String location) {
- this.location = location;
- }
-
- public String getO2() {
- return o2;
- }
-
- public void setO2(String o2) {
- this.o2 = o2;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getTime() {
- return time;
- }
-
- public void setTime(String time) {
- this.time = time;
- }
-
- public String getVastCode() {
- return vastCode;
- }
-
- public void setVastCode(String vastCode) {
- this.vastCode = vastCode;
- }
-
- public String getWorkerId() {
- return workerId;
- }
-
- public void setWorkerId(String workerId) {
- this.workerId = workerId;
- }
-
- public String getWorkerName() {
- return workerName;
- }
-
- public void setWorkerName(String workerName) {
- this.workerName = workerName;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
index 4d68464..f56e8a1 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
@@ -2,7 +2,15 @@
import okhttp3.MultipartBody
import okhttp3.RequestBody
-import retrofit2.http.*
+import retrofit2.http.Body
+import retrofit2.http.Field
+import retrofit2.http.FormUrlEncoded
+import retrofit2.http.GET
+import retrofit2.http.Header
+import retrofit2.http.Multipart
+import retrofit2.http.POST
+import retrofit2.http.Part
+import retrofit2.http.Query
interface RetrofitService {
/**
@@ -41,7 +49,7 @@
/**
* 实施中列表
*/
- @GET("/site/listPage")
+ @GET("/v3/site/listPage")
suspend fun getProjectListByPage(
@Header("token") token: String,
@Query("keywords") keywords: String,
@@ -53,19 +61,13 @@
/**
* 获取工作区域作业人员
*/
- @GET("/overview/workerList")
- suspend fun getWorkers(
+ @GET("/v3/overview/workerList")
+ suspend fun getWorkSiteWorkers(
@Header("token") token: String,
@Query("projectId") projectId: String
): String
/**
- * 获取四合一数据
- */
- @GET("/emergency/startCheckOxygen")
- suspend fun getAirCondition(@Header("token") token: String): String
-
- /**
* 上报每个大阶段场景
* */
@GET("/emergency/notifyStageFinished")
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ede224a..bb07476 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
@@ -37,7 +40,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
@@ -49,14 +52,14 @@
-
-
-
+
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
index 90aa34e..7a487d2 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
@@ -3,32 +3,27 @@
import android.content.Context
import com.casic.br.operationsite.test.callback.OnImageCompressListener
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.JsonParser
+import com.google.gson.Gson
+import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.createCompressImageDir
import com.pengxh.kt.lite.utils.SaveKeyValues
import top.zibin.luban.Luban
import top.zibin.luban.OnCompressListener
import java.io.File
+val gson by lazy { Gson() }
+
/**
* String扩展方法
*/
-fun String.getResponseCode(): Int {
+fun String.getResponseHeader(): Pair {
if (this.isBlank()) {
- return 404
+ return Pair(404, "Invalid Response")
}
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("code").asInt
-}
-
-fun String.getResponseMessage(): String {
- if (this.isBlank()) {
- return ""
- }
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("message").asString
+ val jsonObject = gson.fromJson(this, JsonObject::class.java)
+ val code = jsonObject.get("code").asInt
+ val message = jsonObject.get("message").asString
+ return Pair(code, message)
}
//拼接图片地址
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
deleted file mode 100644
index 758b3bd..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class AirConditionModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private double o2;
- private int h2s;
- private int co;
- private int ch4;
-
- public double getO2() {
- return o2;
- }
-
- public void setO2(double o2) {
- this.o2 = o2;
- }
-
- public int getH2s() {
- return h2s;
- }
-
- public void setH2s(int h2s) {
- this.h2s = h2s;
- }
-
- public int getCo() {
- return co;
- }
-
- public void setCo(int co) {
- this.co = co;
- }
-
- public int getCh4() {
- return ch4;
- }
-
- public void setCh4(int ch4) {
- this.ch4 = ch4;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
index f0a8f63..70228ef 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
@@ -65,13 +65,26 @@
}
public static class RowsModel {
+ private String borderPointCount;
private String createTime;
+ private String deptFullName;
+ private String deptId;
+ private String deptName;
+ private List> deviceList;
+ private String finishTime;
+ private String groupDeviceCode;
+ private String groupDeviceId;
private String id;
private String imageUrl;
+ private String locationTime;
+ private List pointLocation;
+ private String pointLocationJson;
private String projectState;
private String projectStateName;
private String registerTime;
+ private String startTime;
private String updateTime;
+ private String valid;
private String workPerson;
private String workPersonDeptId;
private String workPersonDeptName;
@@ -80,6 +93,16 @@
private String workRoad;
private String workSiteDesc;
private String workTitle;
+ private String workType;
+ private String workTypeName;
+
+ public String getBorderPointCount() {
+ return borderPointCount;
+ }
+
+ public void setBorderPointCount(String borderPointCount) {
+ this.borderPointCount = borderPointCount;
+ }
public String getCreateTime() {
return createTime;
@@ -89,6 +112,62 @@
this.createTime = createTime;
}
+ public String getDeptFullName() {
+ return deptFullName;
+ }
+
+ public void setDeptFullName(String deptFullName) {
+ this.deptFullName = deptFullName;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public List> getDeviceList() {
+ return deviceList;
+ }
+
+ public void setDeviceList(List> deviceList) {
+ this.deviceList = deviceList;
+ }
+
+ public String getFinishTime() {
+ return finishTime;
+ }
+
+ public void setFinishTime(String finishTime) {
+ this.finishTime = finishTime;
+ }
+
+ public String getGroupDeviceCode() {
+ return groupDeviceCode;
+ }
+
+ public void setGroupDeviceCode(String groupDeviceCode) {
+ this.groupDeviceCode = groupDeviceCode;
+ }
+
+ public String getGroupDeviceId() {
+ return groupDeviceId;
+ }
+
+ public void setGroupDeviceId(String groupDeviceId) {
+ this.groupDeviceId = groupDeviceId;
+ }
+
public String getId() {
return id;
}
@@ -105,6 +184,30 @@
this.imageUrl = imageUrl;
}
+ public String getLocationTime() {
+ return locationTime;
+ }
+
+ public void setLocationTime(String locationTime) {
+ this.locationTime = locationTime;
+ }
+
+ public List getPointLocation() {
+ return pointLocation;
+ }
+
+ public void setPointLocation(List pointLocation) {
+ this.pointLocation = pointLocation;
+ }
+
+ public String getPointLocationJson() {
+ return pointLocationJson;
+ }
+
+ public void setPointLocationJson(String pointLocationJson) {
+ this.pointLocationJson = pointLocationJson;
+ }
+
public String getProjectState() {
return projectState;
}
@@ -129,6 +232,14 @@
this.registerTime = registerTime;
}
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
public String getUpdateTime() {
return updateTime;
}
@@ -137,6 +248,14 @@
this.updateTime = updateTime;
}
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
public String getWorkPerson() {
return workPerson;
}
@@ -200,6 +319,43 @@
public void setWorkTitle(String workTitle) {
this.workTitle = workTitle;
}
+
+ public String getWorkType() {
+ return workType;
+ }
+
+ public void setWorkType(String workType) {
+ this.workType = workType;
+ }
+
+ public String getWorkTypeName() {
+ return workTypeName;
+ }
+
+ public void setWorkTypeName(String workTypeName) {
+ this.workTypeName = workTypeName;
+ }
+
+ public static class PointLocationModel {
+ private String lng;
+ private String lat;
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
new file mode 100644
index 0000000..5d87443
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
@@ -0,0 +1,487 @@
+package com.casic.br.operationsite.test.model;
+
+import java.util.List;
+
+public class WorkSiteWorkerModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataModel {
+ private boolean alarmFlag;
+ private String createTime;
+ private String deptId;
+ private String deptName;
+ private String enterReason;
+ private String gender;
+ private String genderName;
+ private HealthModel health;
+ private String id;
+ private String idCardNumber;
+ private String isRegister;
+ private LocationModel location;
+ private MultiGasModel multiGas;
+ private String ownerShip;
+ private String phoneNumber;
+ private String registerTime;
+ private String status;
+ private String statusName;
+ private String workerAvatar;
+ private String workerName;
+ private String workerType;
+ private String workerTypeName;
+
+ public boolean isAlarmFlag() {
+ return alarmFlag;
+ }
+
+ public void setAlarmFlag(boolean alarmFlag) {
+ this.alarmFlag = alarmFlag;
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public String getEnterReason() {
+ return enterReason;
+ }
+
+ public void setEnterReason(String enterReason) {
+ this.enterReason = enterReason;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+ public String getGenderName() {
+ return genderName;
+ }
+
+ public void setGenderName(String genderName) {
+ this.genderName = genderName;
+ }
+
+ public HealthModel getHealth() {
+ return health;
+ }
+
+ public void setHealth(HealthModel health) {
+ this.health = health;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIdCardNumber() {
+ return idCardNumber;
+ }
+
+ public void setIdCardNumber(String idCardNumber) {
+ this.idCardNumber = idCardNumber;
+ }
+
+ public String getIsRegister() {
+ return isRegister;
+ }
+
+ public void setIsRegister(String isRegister) {
+ this.isRegister = isRegister;
+ }
+
+ public LocationModel getLocation() {
+ return location;
+ }
+
+ public void setLocation(LocationModel location) {
+ this.location = location;
+ }
+
+ public MultiGasModel getMultiGas() {
+ return multiGas;
+ }
+
+ public void setMultiGas(MultiGasModel multiGas) {
+ this.multiGas = multiGas;
+ }
+
+ public String getOwnerShip() {
+ return ownerShip;
+ }
+
+ public void setOwnerShip(String ownerShip) {
+ this.ownerShip = ownerShip;
+ }
+
+ public String getPhoneNumber() {
+ return phoneNumber;
+ }
+
+ public void setPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ }
+
+ public String getRegisterTime() {
+ return registerTime;
+ }
+
+ public void setRegisterTime(String registerTime) {
+ this.registerTime = registerTime;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getStatusName() {
+ return statusName;
+ }
+
+ public void setStatusName(String statusName) {
+ this.statusName = statusName;
+ }
+
+ public String getWorkerAvatar() {
+ return workerAvatar;
+ }
+
+ public void setWorkerAvatar(String workerAvatar) {
+ this.workerAvatar = workerAvatar;
+ }
+
+ public String getWorkerName() {
+ return workerName;
+ }
+
+ public void setWorkerName(String workerName) {
+ this.workerName = workerName;
+ }
+
+ public String getWorkerType() {
+ return workerType;
+ }
+
+ public void setWorkerType(String workerType) {
+ this.workerType = workerType;
+ }
+
+ public String getWorkerTypeName() {
+ return workerTypeName;
+ }
+
+ public void setWorkerTypeName(String workerTypeName) {
+ this.workerTypeName = workerTypeName;
+ }
+
+ public static class HealthModel {
+ private String bloodOxygen;
+ private String deviceCode;
+ private String deviceId;
+ private String groupCode;
+ private String heartRate;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getBloodOxygen() {
+ return bloodOxygen;
+ }
+
+ public void setBloodOxygen(String bloodOxygen) {
+ this.bloodOxygen = bloodOxygen;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getHeartRate() {
+ return heartRate;
+ }
+
+ public void setHeartRate(String heartRate) {
+ this.heartRate = heartRate;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class LocationModel {
+ private String deviceCode;
+ private String deviceId;
+ private String gdLat;
+ private String gdLng;
+ private String groupCode;
+ private String lat;
+ private String lng;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGdLat() {
+ return gdLat;
+ }
+
+ public void setGdLat(String gdLat) {
+ this.gdLat = gdLat;
+ }
+
+ public String getGdLng() {
+ return gdLng;
+ }
+
+ public void setGdLng(String gdLng) {
+ this.gdLng = gdLng;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class MultiGasModel {
+ private String coValue;
+ private String deviceCode;
+ private String deviceId;
+ private String exValue;
+ private String groupCode;
+ private String h2sValue;
+ private String o2Value;
+ private String projectId;
+ private String projectName;
+ private String uploadTimestamp;
+
+ public String getCoValue() {
+ return coValue;
+ }
+
+ public void setCoValue(String coValue) {
+ this.coValue = coValue;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getExValue() {
+ return exValue;
+ }
+
+ public void setExValue(String exValue) {
+ this.exValue = exValue;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getH2sValue() {
+ return h2sValue;
+ }
+
+ public void setH2sValue(String h2sValue) {
+ this.h2sValue = h2sValue;
+ }
+
+ public String getO2Value() {
+ return o2Value;
+ }
+
+ public void setO2Value(String o2Value) {
+ this.o2Value = o2Value;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
deleted file mode 100644
index e32edab..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
+++ /dev/null
@@ -1,226 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class WorkerModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private boolean alarmFlag;
- private String bloodOxygen;
- private String braceletCode;
- private String cell;
- private String co;
- private String gas;
- private String gasTime;
- private String h2s;
- private String hatCode;
- private String hatId;
- private String heartRate;
- private String lat;
- private String lng;
- private String location;
- private String o2;
- private String signal;
- private String time;
- private String vastCode;
- private String workerId;
- private String workerName;
-
- public boolean isAlarmFlag() {
- return alarmFlag;
- }
-
- public void setAlarmFlag(boolean alarmFlag) {
- this.alarmFlag = alarmFlag;
- }
-
- public String getBloodOxygen() {
- return bloodOxygen;
- }
-
- public void setBloodOxygen(String bloodOxygen) {
- this.bloodOxygen = bloodOxygen;
- }
-
- public String getBraceletCode() {
- return braceletCode;
- }
-
- public void setBraceletCode(String braceletCode) {
- this.braceletCode = braceletCode;
- }
-
- public String getCell() {
- return cell;
- }
-
- public void setCell(String cell) {
- this.cell = cell;
- }
-
- public String getCo() {
- return co;
- }
-
- public void setCo(String co) {
- this.co = co;
- }
-
- public String getGas() {
- return gas;
- }
-
- public void setGas(String gas) {
- this.gas = gas;
- }
-
- public String getGasTime() {
- return gasTime;
- }
-
- public void setGasTime(String gasTime) {
- this.gasTime = gasTime;
- }
-
- public String getH2s() {
- return h2s;
- }
-
- public void setH2s(String h2s) {
- this.h2s = h2s;
- }
-
- public String getHatCode() {
- return hatCode;
- }
-
- public void setHatCode(String hatCode) {
- this.hatCode = hatCode;
- }
-
- public String getHatId() {
- return hatId;
- }
-
- public void setHatId(String hatId) {
- this.hatId = hatId;
- }
-
- public String getHeartRate() {
- return heartRate;
- }
-
- public void setHeartRate(String heartRate) {
- this.heartRate = heartRate;
- }
-
- public String getLat() {
- return lat;
- }
-
- public void setLat(String lat) {
- this.lat = lat;
- }
-
- public String getLng() {
- return lng;
- }
-
- public void setLng(String lng) {
- this.lng = lng;
- }
-
- public String getLocation() {
- return location;
- }
-
- public void setLocation(String location) {
- this.location = location;
- }
-
- public String getO2() {
- return o2;
- }
-
- public void setO2(String o2) {
- this.o2 = o2;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getTime() {
- return time;
- }
-
- public void setTime(String time) {
- this.time = time;
- }
-
- public String getVastCode() {
- return vastCode;
- }
-
- public void setVastCode(String vastCode) {
- this.vastCode = vastCode;
- }
-
- public String getWorkerId() {
- return workerId;
- }
-
- public void setWorkerId(String workerId) {
- this.workerId = workerId;
- }
-
- public String getWorkerName() {
- return workerName;
- }
-
- public void setWorkerName(String workerName) {
- this.workerName = workerName;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
index 4d68464..f56e8a1 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
@@ -2,7 +2,15 @@
import okhttp3.MultipartBody
import okhttp3.RequestBody
-import retrofit2.http.*
+import retrofit2.http.Body
+import retrofit2.http.Field
+import retrofit2.http.FormUrlEncoded
+import retrofit2.http.GET
+import retrofit2.http.Header
+import retrofit2.http.Multipart
+import retrofit2.http.POST
+import retrofit2.http.Part
+import retrofit2.http.Query
interface RetrofitService {
/**
@@ -41,7 +49,7 @@
/**
* 实施中列表
*/
- @GET("/site/listPage")
+ @GET("/v3/site/listPage")
suspend fun getProjectListByPage(
@Header("token") token: String,
@Query("keywords") keywords: String,
@@ -53,19 +61,13 @@
/**
* 获取工作区域作业人员
*/
- @GET("/overview/workerList")
- suspend fun getWorkers(
+ @GET("/v3/overview/workerList")
+ suspend fun getWorkSiteWorkers(
@Header("token") token: String,
@Query("projectId") projectId: String
): String
/**
- * 获取四合一数据
- */
- @GET("/emergency/startCheckOxygen")
- suspend fun getAirCondition(@Header("token") token: String): String
-
- /**
* 上报每个大阶段场景
* */
@GET("/emergency/notifyStageFinished")
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
index ed19c9f..a813fb0 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
@@ -3,7 +3,7 @@
import android.util.Log
import com.casic.br.operationsite.test.util.AuthenticationHelper
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.Gson
+import com.casic.br.operationsite.test.util.RuntimeCache
import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.RetrofitFactory
@@ -11,14 +11,13 @@
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
-import okhttp3.RequestBody
+import okhttp3.RequestBody.Companion.asRequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import java.io.File
object RetrofitServiceManager {
private const val kTag = "RetrofitServiceManager"
- private val gson by lazy { Gson() }
private val api by lazy {
val httpConfig = SaveKeyValues.getValue(
@@ -67,27 +66,20 @@
/**
* 获取工作区域作业人员
*/
- suspend fun getWorkers(projectId: String): String {
- return api.getWorkers(AuthenticationHelper.token!!, projectId)
+ suspend fun getWorkSiteWorkers(): String {
+ return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId)
}
/**
* 上传图片
*/
suspend fun uploadImage(image: File): String {
- val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val requestBody = image.asRequestBody("image/png".toMediaTypeOrNull())
val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
return api.uploadImage(AuthenticationHelper.token!!, imagePart)
}
/**
- * 获取四合一数据
- */
- suspend fun getAirCondition(): String {
- return api.getAirCondition(AuthenticationHelper.token!!)
- }
-
- /**
* 上报每个大阶段场景
*/
suspend fun notifyStageFinished(operationId: String?, stage: String): String {
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ede224a..bb07476 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
@@ -37,7 +40,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
@@ -49,14 +52,14 @@
-
-
-
+
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
index 90aa34e..7a487d2 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
@@ -3,32 +3,27 @@
import android.content.Context
import com.casic.br.operationsite.test.callback.OnImageCompressListener
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.JsonParser
+import com.google.gson.Gson
+import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.createCompressImageDir
import com.pengxh.kt.lite.utils.SaveKeyValues
import top.zibin.luban.Luban
import top.zibin.luban.OnCompressListener
import java.io.File
+val gson by lazy { Gson() }
+
/**
* String扩展方法
*/
-fun String.getResponseCode(): Int {
+fun String.getResponseHeader(): Pair {
if (this.isBlank()) {
- return 404
+ return Pair(404, "Invalid Response")
}
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("code").asInt
-}
-
-fun String.getResponseMessage(): String {
- if (this.isBlank()) {
- return ""
- }
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("message").asString
+ val jsonObject = gson.fromJson(this, JsonObject::class.java)
+ val code = jsonObject.get("code").asInt
+ val message = jsonObject.get("message").asString
+ return Pair(code, message)
}
//拼接图片地址
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
deleted file mode 100644
index 758b3bd..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class AirConditionModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private double o2;
- private int h2s;
- private int co;
- private int ch4;
-
- public double getO2() {
- return o2;
- }
-
- public void setO2(double o2) {
- this.o2 = o2;
- }
-
- public int getH2s() {
- return h2s;
- }
-
- public void setH2s(int h2s) {
- this.h2s = h2s;
- }
-
- public int getCo() {
- return co;
- }
-
- public void setCo(int co) {
- this.co = co;
- }
-
- public int getCh4() {
- return ch4;
- }
-
- public void setCh4(int ch4) {
- this.ch4 = ch4;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
index f0a8f63..70228ef 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
@@ -65,13 +65,26 @@
}
public static class RowsModel {
+ private String borderPointCount;
private String createTime;
+ private String deptFullName;
+ private String deptId;
+ private String deptName;
+ private List> deviceList;
+ private String finishTime;
+ private String groupDeviceCode;
+ private String groupDeviceId;
private String id;
private String imageUrl;
+ private String locationTime;
+ private List pointLocation;
+ private String pointLocationJson;
private String projectState;
private String projectStateName;
private String registerTime;
+ private String startTime;
private String updateTime;
+ private String valid;
private String workPerson;
private String workPersonDeptId;
private String workPersonDeptName;
@@ -80,6 +93,16 @@
private String workRoad;
private String workSiteDesc;
private String workTitle;
+ private String workType;
+ private String workTypeName;
+
+ public String getBorderPointCount() {
+ return borderPointCount;
+ }
+
+ public void setBorderPointCount(String borderPointCount) {
+ this.borderPointCount = borderPointCount;
+ }
public String getCreateTime() {
return createTime;
@@ -89,6 +112,62 @@
this.createTime = createTime;
}
+ public String getDeptFullName() {
+ return deptFullName;
+ }
+
+ public void setDeptFullName(String deptFullName) {
+ this.deptFullName = deptFullName;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public List> getDeviceList() {
+ return deviceList;
+ }
+
+ public void setDeviceList(List> deviceList) {
+ this.deviceList = deviceList;
+ }
+
+ public String getFinishTime() {
+ return finishTime;
+ }
+
+ public void setFinishTime(String finishTime) {
+ this.finishTime = finishTime;
+ }
+
+ public String getGroupDeviceCode() {
+ return groupDeviceCode;
+ }
+
+ public void setGroupDeviceCode(String groupDeviceCode) {
+ this.groupDeviceCode = groupDeviceCode;
+ }
+
+ public String getGroupDeviceId() {
+ return groupDeviceId;
+ }
+
+ public void setGroupDeviceId(String groupDeviceId) {
+ this.groupDeviceId = groupDeviceId;
+ }
+
public String getId() {
return id;
}
@@ -105,6 +184,30 @@
this.imageUrl = imageUrl;
}
+ public String getLocationTime() {
+ return locationTime;
+ }
+
+ public void setLocationTime(String locationTime) {
+ this.locationTime = locationTime;
+ }
+
+ public List getPointLocation() {
+ return pointLocation;
+ }
+
+ public void setPointLocation(List pointLocation) {
+ this.pointLocation = pointLocation;
+ }
+
+ public String getPointLocationJson() {
+ return pointLocationJson;
+ }
+
+ public void setPointLocationJson(String pointLocationJson) {
+ this.pointLocationJson = pointLocationJson;
+ }
+
public String getProjectState() {
return projectState;
}
@@ -129,6 +232,14 @@
this.registerTime = registerTime;
}
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
public String getUpdateTime() {
return updateTime;
}
@@ -137,6 +248,14 @@
this.updateTime = updateTime;
}
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
public String getWorkPerson() {
return workPerson;
}
@@ -200,6 +319,43 @@
public void setWorkTitle(String workTitle) {
this.workTitle = workTitle;
}
+
+ public String getWorkType() {
+ return workType;
+ }
+
+ public void setWorkType(String workType) {
+ this.workType = workType;
+ }
+
+ public String getWorkTypeName() {
+ return workTypeName;
+ }
+
+ public void setWorkTypeName(String workTypeName) {
+ this.workTypeName = workTypeName;
+ }
+
+ public static class PointLocationModel {
+ private String lng;
+ private String lat;
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
new file mode 100644
index 0000000..5d87443
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
@@ -0,0 +1,487 @@
+package com.casic.br.operationsite.test.model;
+
+import java.util.List;
+
+public class WorkSiteWorkerModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataModel {
+ private boolean alarmFlag;
+ private String createTime;
+ private String deptId;
+ private String deptName;
+ private String enterReason;
+ private String gender;
+ private String genderName;
+ private HealthModel health;
+ private String id;
+ private String idCardNumber;
+ private String isRegister;
+ private LocationModel location;
+ private MultiGasModel multiGas;
+ private String ownerShip;
+ private String phoneNumber;
+ private String registerTime;
+ private String status;
+ private String statusName;
+ private String workerAvatar;
+ private String workerName;
+ private String workerType;
+ private String workerTypeName;
+
+ public boolean isAlarmFlag() {
+ return alarmFlag;
+ }
+
+ public void setAlarmFlag(boolean alarmFlag) {
+ this.alarmFlag = alarmFlag;
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public String getEnterReason() {
+ return enterReason;
+ }
+
+ public void setEnterReason(String enterReason) {
+ this.enterReason = enterReason;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+ public String getGenderName() {
+ return genderName;
+ }
+
+ public void setGenderName(String genderName) {
+ this.genderName = genderName;
+ }
+
+ public HealthModel getHealth() {
+ return health;
+ }
+
+ public void setHealth(HealthModel health) {
+ this.health = health;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIdCardNumber() {
+ return idCardNumber;
+ }
+
+ public void setIdCardNumber(String idCardNumber) {
+ this.idCardNumber = idCardNumber;
+ }
+
+ public String getIsRegister() {
+ return isRegister;
+ }
+
+ public void setIsRegister(String isRegister) {
+ this.isRegister = isRegister;
+ }
+
+ public LocationModel getLocation() {
+ return location;
+ }
+
+ public void setLocation(LocationModel location) {
+ this.location = location;
+ }
+
+ public MultiGasModel getMultiGas() {
+ return multiGas;
+ }
+
+ public void setMultiGas(MultiGasModel multiGas) {
+ this.multiGas = multiGas;
+ }
+
+ public String getOwnerShip() {
+ return ownerShip;
+ }
+
+ public void setOwnerShip(String ownerShip) {
+ this.ownerShip = ownerShip;
+ }
+
+ public String getPhoneNumber() {
+ return phoneNumber;
+ }
+
+ public void setPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ }
+
+ public String getRegisterTime() {
+ return registerTime;
+ }
+
+ public void setRegisterTime(String registerTime) {
+ this.registerTime = registerTime;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getStatusName() {
+ return statusName;
+ }
+
+ public void setStatusName(String statusName) {
+ this.statusName = statusName;
+ }
+
+ public String getWorkerAvatar() {
+ return workerAvatar;
+ }
+
+ public void setWorkerAvatar(String workerAvatar) {
+ this.workerAvatar = workerAvatar;
+ }
+
+ public String getWorkerName() {
+ return workerName;
+ }
+
+ public void setWorkerName(String workerName) {
+ this.workerName = workerName;
+ }
+
+ public String getWorkerType() {
+ return workerType;
+ }
+
+ public void setWorkerType(String workerType) {
+ this.workerType = workerType;
+ }
+
+ public String getWorkerTypeName() {
+ return workerTypeName;
+ }
+
+ public void setWorkerTypeName(String workerTypeName) {
+ this.workerTypeName = workerTypeName;
+ }
+
+ public static class HealthModel {
+ private String bloodOxygen;
+ private String deviceCode;
+ private String deviceId;
+ private String groupCode;
+ private String heartRate;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getBloodOxygen() {
+ return bloodOxygen;
+ }
+
+ public void setBloodOxygen(String bloodOxygen) {
+ this.bloodOxygen = bloodOxygen;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getHeartRate() {
+ return heartRate;
+ }
+
+ public void setHeartRate(String heartRate) {
+ this.heartRate = heartRate;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class LocationModel {
+ private String deviceCode;
+ private String deviceId;
+ private String gdLat;
+ private String gdLng;
+ private String groupCode;
+ private String lat;
+ private String lng;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGdLat() {
+ return gdLat;
+ }
+
+ public void setGdLat(String gdLat) {
+ this.gdLat = gdLat;
+ }
+
+ public String getGdLng() {
+ return gdLng;
+ }
+
+ public void setGdLng(String gdLng) {
+ this.gdLng = gdLng;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class MultiGasModel {
+ private String coValue;
+ private String deviceCode;
+ private String deviceId;
+ private String exValue;
+ private String groupCode;
+ private String h2sValue;
+ private String o2Value;
+ private String projectId;
+ private String projectName;
+ private String uploadTimestamp;
+
+ public String getCoValue() {
+ return coValue;
+ }
+
+ public void setCoValue(String coValue) {
+ this.coValue = coValue;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getExValue() {
+ return exValue;
+ }
+
+ public void setExValue(String exValue) {
+ this.exValue = exValue;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getH2sValue() {
+ return h2sValue;
+ }
+
+ public void setH2sValue(String h2sValue) {
+ this.h2sValue = h2sValue;
+ }
+
+ public String getO2Value() {
+ return o2Value;
+ }
+
+ public void setO2Value(String o2Value) {
+ this.o2Value = o2Value;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
deleted file mode 100644
index e32edab..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
+++ /dev/null
@@ -1,226 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class WorkerModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private boolean alarmFlag;
- private String bloodOxygen;
- private String braceletCode;
- private String cell;
- private String co;
- private String gas;
- private String gasTime;
- private String h2s;
- private String hatCode;
- private String hatId;
- private String heartRate;
- private String lat;
- private String lng;
- private String location;
- private String o2;
- private String signal;
- private String time;
- private String vastCode;
- private String workerId;
- private String workerName;
-
- public boolean isAlarmFlag() {
- return alarmFlag;
- }
-
- public void setAlarmFlag(boolean alarmFlag) {
- this.alarmFlag = alarmFlag;
- }
-
- public String getBloodOxygen() {
- return bloodOxygen;
- }
-
- public void setBloodOxygen(String bloodOxygen) {
- this.bloodOxygen = bloodOxygen;
- }
-
- public String getBraceletCode() {
- return braceletCode;
- }
-
- public void setBraceletCode(String braceletCode) {
- this.braceletCode = braceletCode;
- }
-
- public String getCell() {
- return cell;
- }
-
- public void setCell(String cell) {
- this.cell = cell;
- }
-
- public String getCo() {
- return co;
- }
-
- public void setCo(String co) {
- this.co = co;
- }
-
- public String getGas() {
- return gas;
- }
-
- public void setGas(String gas) {
- this.gas = gas;
- }
-
- public String getGasTime() {
- return gasTime;
- }
-
- public void setGasTime(String gasTime) {
- this.gasTime = gasTime;
- }
-
- public String getH2s() {
- return h2s;
- }
-
- public void setH2s(String h2s) {
- this.h2s = h2s;
- }
-
- public String getHatCode() {
- return hatCode;
- }
-
- public void setHatCode(String hatCode) {
- this.hatCode = hatCode;
- }
-
- public String getHatId() {
- return hatId;
- }
-
- public void setHatId(String hatId) {
- this.hatId = hatId;
- }
-
- public String getHeartRate() {
- return heartRate;
- }
-
- public void setHeartRate(String heartRate) {
- this.heartRate = heartRate;
- }
-
- public String getLat() {
- return lat;
- }
-
- public void setLat(String lat) {
- this.lat = lat;
- }
-
- public String getLng() {
- return lng;
- }
-
- public void setLng(String lng) {
- this.lng = lng;
- }
-
- public String getLocation() {
- return location;
- }
-
- public void setLocation(String location) {
- this.location = location;
- }
-
- public String getO2() {
- return o2;
- }
-
- public void setO2(String o2) {
- this.o2 = o2;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getTime() {
- return time;
- }
-
- public void setTime(String time) {
- this.time = time;
- }
-
- public String getVastCode() {
- return vastCode;
- }
-
- public void setVastCode(String vastCode) {
- this.vastCode = vastCode;
- }
-
- public String getWorkerId() {
- return workerId;
- }
-
- public void setWorkerId(String workerId) {
- this.workerId = workerId;
- }
-
- public String getWorkerName() {
- return workerName;
- }
-
- public void setWorkerName(String workerName) {
- this.workerName = workerName;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
index 4d68464..f56e8a1 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
@@ -2,7 +2,15 @@
import okhttp3.MultipartBody
import okhttp3.RequestBody
-import retrofit2.http.*
+import retrofit2.http.Body
+import retrofit2.http.Field
+import retrofit2.http.FormUrlEncoded
+import retrofit2.http.GET
+import retrofit2.http.Header
+import retrofit2.http.Multipart
+import retrofit2.http.POST
+import retrofit2.http.Part
+import retrofit2.http.Query
interface RetrofitService {
/**
@@ -41,7 +49,7 @@
/**
* 实施中列表
*/
- @GET("/site/listPage")
+ @GET("/v3/site/listPage")
suspend fun getProjectListByPage(
@Header("token") token: String,
@Query("keywords") keywords: String,
@@ -53,19 +61,13 @@
/**
* 获取工作区域作业人员
*/
- @GET("/overview/workerList")
- suspend fun getWorkers(
+ @GET("/v3/overview/workerList")
+ suspend fun getWorkSiteWorkers(
@Header("token") token: String,
@Query("projectId") projectId: String
): String
/**
- * 获取四合一数据
- */
- @GET("/emergency/startCheckOxygen")
- suspend fun getAirCondition(@Header("token") token: String): String
-
- /**
* 上报每个大阶段场景
* */
@GET("/emergency/notifyStageFinished")
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
index ed19c9f..a813fb0 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
@@ -3,7 +3,7 @@
import android.util.Log
import com.casic.br.operationsite.test.util.AuthenticationHelper
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.Gson
+import com.casic.br.operationsite.test.util.RuntimeCache
import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.RetrofitFactory
@@ -11,14 +11,13 @@
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
-import okhttp3.RequestBody
+import okhttp3.RequestBody.Companion.asRequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import java.io.File
object RetrofitServiceManager {
private const val kTag = "RetrofitServiceManager"
- private val gson by lazy { Gson() }
private val api by lazy {
val httpConfig = SaveKeyValues.getValue(
@@ -67,27 +66,20 @@
/**
* 获取工作区域作业人员
*/
- suspend fun getWorkers(projectId: String): String {
- return api.getWorkers(AuthenticationHelper.token!!, projectId)
+ suspend fun getWorkSiteWorkers(): String {
+ return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId)
}
/**
* 上传图片
*/
suspend fun uploadImage(image: File): String {
- val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val requestBody = image.asRequestBody("image/png".toMediaTypeOrNull())
val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
return api.uploadImage(AuthenticationHelper.token!!, imagePart)
}
/**
- * 获取四合一数据
- */
- suspend fun getAirCondition(): String {
- return api.getAirCondition(AuthenticationHelper.token!!)
- }
-
- /**
* 上报每个大阶段场景
*/
suspend fun notifyStageFinished(operationId: String?, stage: String): String {
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
new file mode 100644
index 0000000..337aaf1
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
@@ -0,0 +1,125 @@
+package com.casic.br.operationsite.test.service
+
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.app.Service
+import android.content.Intent
+import android.os.Handler
+import android.os.IBinder
+import android.os.Message
+import android.util.Log
+import androidx.core.app.NotificationCompat
+import com.casic.br.operationsite.test.R
+import com.casic.br.operationsite.test.extensions.convert
+import com.casic.br.operationsite.test.util.LocaleConstant
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener
+import com.pengxh.kt.lite.utils.socket.tcp.TcpClient
+
+class SocketConnectionService : Service(), OnTcpConnectStateListener, Handler.Callback {
+
+ companion object {
+ var weakReferenceHandler: WeakReferenceHandler? = null
+ }
+
+ override fun handleMessage(msg: Message): Boolean {
+ if (!tcpClient.isRunning()) {
+ "数据通讯服务断开连接,指令发送失败".show(this)
+ return true
+ }
+
+ when (msg.what) {
+ LocaleConstant.COMMAND_TEST_CODE -> {
+ val commandStr = msg.obj as String
+ tcpClient.sendMessage(commandStr.convert())
+ }
+
+ LocaleConstant.GAS_ALARM_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.GAS_ALARM_COMMAND)
+ }
+
+ LocaleConstant.CONFIRM_AIR_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.CONFIRM_AIR_COMMAND)
+ }
+
+ LocaleConstant.START_VIDEO_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.START_VIDEO_COMMAND)
+ }
+ }
+ return true
+ }
+
+ private val kTag = "SocketService"
+ private val notificationId = 1
+ private val tcpClient by lazy { TcpClient(this) }
+ private val notificationManager by lazy { getSystemService(NOTIFICATION_SERVICE) as NotificationManager }
+ private var notificationBuilder: NotificationCompat.Builder? = null
+
+ override fun onBind(intent: Intent?): IBinder? {
+ return null
+ }
+
+ override fun onCreate() {
+ super.onCreate()
+ val name = "${resources.getString(R.string.app_name)}前台服务"
+ val channel = NotificationChannel(
+ "socket_connection_service_channel", name, NotificationManager.IMPORTANCE_HIGH
+ )
+ channel.description = "Channel for socket connection service"
+ notificationManager.createNotificationChannel(channel)
+ notificationBuilder = NotificationCompat.Builder(this, "socket_connection_service_channel")
+ .setSmallIcon(R.mipmap.ic_launcher)
+ .setContentTitle("数据通讯服务连接中...")
+ .setContentText("为保证程序正常运行,请勿移除此通知")
+ .setPriority(NotificationCompat.PRIORITY_HIGH) // 设置通知优先级
+ .setOngoing(true)
+ .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
+
+ val notification = notificationBuilder?.build()
+ startForeground(notificationId, notification)
+ }
+
+ override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
+ if (weakReferenceHandler == null) {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+ tcpClient.start(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
+ Log.d(kTag, "onStartCommand: SocketConnectionService")
+ return START_STICKY
+ }
+
+ override fun onConnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务已连接")
+ "数据通讯服务连接成功,现在可以下发指令了".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDisconnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务断开连接")
+ "数据通讯服务断开连接".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onConnectFailed() {
+ notificationBuilder?.setContentTitle("数据通讯服务连接出错,开始重连")
+ "数据通讯服务连接出错,开始重连".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ tcpClient.stop(false)
+ stopForeground(STOP_FOREGROUND_REMOVE)
+ Log.d(kTag, "onDestroy: SocketConnectionService")
+ }
+
+ override fun onMessageReceived(bytes: ByteArray?) {
+ if (bytes == null) {
+ return
+ }
+ }
+}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ede224a..bb07476 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
@@ -37,7 +40,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
@@ -49,14 +52,14 @@
-
-
-
+
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
index 90aa34e..7a487d2 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
@@ -3,32 +3,27 @@
import android.content.Context
import com.casic.br.operationsite.test.callback.OnImageCompressListener
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.JsonParser
+import com.google.gson.Gson
+import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.createCompressImageDir
import com.pengxh.kt.lite.utils.SaveKeyValues
import top.zibin.luban.Luban
import top.zibin.luban.OnCompressListener
import java.io.File
+val gson by lazy { Gson() }
+
/**
* String扩展方法
*/
-fun String.getResponseCode(): Int {
+fun String.getResponseHeader(): Pair {
if (this.isBlank()) {
- return 404
+ return Pair(404, "Invalid Response")
}
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("code").asInt
-}
-
-fun String.getResponseMessage(): String {
- if (this.isBlank()) {
- return ""
- }
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("message").asString
+ val jsonObject = gson.fromJson(this, JsonObject::class.java)
+ val code = jsonObject.get("code").asInt
+ val message = jsonObject.get("message").asString
+ return Pair(code, message)
}
//拼接图片地址
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
deleted file mode 100644
index 758b3bd..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class AirConditionModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private double o2;
- private int h2s;
- private int co;
- private int ch4;
-
- public double getO2() {
- return o2;
- }
-
- public void setO2(double o2) {
- this.o2 = o2;
- }
-
- public int getH2s() {
- return h2s;
- }
-
- public void setH2s(int h2s) {
- this.h2s = h2s;
- }
-
- public int getCo() {
- return co;
- }
-
- public void setCo(int co) {
- this.co = co;
- }
-
- public int getCh4() {
- return ch4;
- }
-
- public void setCh4(int ch4) {
- this.ch4 = ch4;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
index f0a8f63..70228ef 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
@@ -65,13 +65,26 @@
}
public static class RowsModel {
+ private String borderPointCount;
private String createTime;
+ private String deptFullName;
+ private String deptId;
+ private String deptName;
+ private List> deviceList;
+ private String finishTime;
+ private String groupDeviceCode;
+ private String groupDeviceId;
private String id;
private String imageUrl;
+ private String locationTime;
+ private List pointLocation;
+ private String pointLocationJson;
private String projectState;
private String projectStateName;
private String registerTime;
+ private String startTime;
private String updateTime;
+ private String valid;
private String workPerson;
private String workPersonDeptId;
private String workPersonDeptName;
@@ -80,6 +93,16 @@
private String workRoad;
private String workSiteDesc;
private String workTitle;
+ private String workType;
+ private String workTypeName;
+
+ public String getBorderPointCount() {
+ return borderPointCount;
+ }
+
+ public void setBorderPointCount(String borderPointCount) {
+ this.borderPointCount = borderPointCount;
+ }
public String getCreateTime() {
return createTime;
@@ -89,6 +112,62 @@
this.createTime = createTime;
}
+ public String getDeptFullName() {
+ return deptFullName;
+ }
+
+ public void setDeptFullName(String deptFullName) {
+ this.deptFullName = deptFullName;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public List> getDeviceList() {
+ return deviceList;
+ }
+
+ public void setDeviceList(List> deviceList) {
+ this.deviceList = deviceList;
+ }
+
+ public String getFinishTime() {
+ return finishTime;
+ }
+
+ public void setFinishTime(String finishTime) {
+ this.finishTime = finishTime;
+ }
+
+ public String getGroupDeviceCode() {
+ return groupDeviceCode;
+ }
+
+ public void setGroupDeviceCode(String groupDeviceCode) {
+ this.groupDeviceCode = groupDeviceCode;
+ }
+
+ public String getGroupDeviceId() {
+ return groupDeviceId;
+ }
+
+ public void setGroupDeviceId(String groupDeviceId) {
+ this.groupDeviceId = groupDeviceId;
+ }
+
public String getId() {
return id;
}
@@ -105,6 +184,30 @@
this.imageUrl = imageUrl;
}
+ public String getLocationTime() {
+ return locationTime;
+ }
+
+ public void setLocationTime(String locationTime) {
+ this.locationTime = locationTime;
+ }
+
+ public List getPointLocation() {
+ return pointLocation;
+ }
+
+ public void setPointLocation(List pointLocation) {
+ this.pointLocation = pointLocation;
+ }
+
+ public String getPointLocationJson() {
+ return pointLocationJson;
+ }
+
+ public void setPointLocationJson(String pointLocationJson) {
+ this.pointLocationJson = pointLocationJson;
+ }
+
public String getProjectState() {
return projectState;
}
@@ -129,6 +232,14 @@
this.registerTime = registerTime;
}
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
public String getUpdateTime() {
return updateTime;
}
@@ -137,6 +248,14 @@
this.updateTime = updateTime;
}
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
public String getWorkPerson() {
return workPerson;
}
@@ -200,6 +319,43 @@
public void setWorkTitle(String workTitle) {
this.workTitle = workTitle;
}
+
+ public String getWorkType() {
+ return workType;
+ }
+
+ public void setWorkType(String workType) {
+ this.workType = workType;
+ }
+
+ public String getWorkTypeName() {
+ return workTypeName;
+ }
+
+ public void setWorkTypeName(String workTypeName) {
+ this.workTypeName = workTypeName;
+ }
+
+ public static class PointLocationModel {
+ private String lng;
+ private String lat;
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
new file mode 100644
index 0000000..5d87443
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
@@ -0,0 +1,487 @@
+package com.casic.br.operationsite.test.model;
+
+import java.util.List;
+
+public class WorkSiteWorkerModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataModel {
+ private boolean alarmFlag;
+ private String createTime;
+ private String deptId;
+ private String deptName;
+ private String enterReason;
+ private String gender;
+ private String genderName;
+ private HealthModel health;
+ private String id;
+ private String idCardNumber;
+ private String isRegister;
+ private LocationModel location;
+ private MultiGasModel multiGas;
+ private String ownerShip;
+ private String phoneNumber;
+ private String registerTime;
+ private String status;
+ private String statusName;
+ private String workerAvatar;
+ private String workerName;
+ private String workerType;
+ private String workerTypeName;
+
+ public boolean isAlarmFlag() {
+ return alarmFlag;
+ }
+
+ public void setAlarmFlag(boolean alarmFlag) {
+ this.alarmFlag = alarmFlag;
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public String getEnterReason() {
+ return enterReason;
+ }
+
+ public void setEnterReason(String enterReason) {
+ this.enterReason = enterReason;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+ public String getGenderName() {
+ return genderName;
+ }
+
+ public void setGenderName(String genderName) {
+ this.genderName = genderName;
+ }
+
+ public HealthModel getHealth() {
+ return health;
+ }
+
+ public void setHealth(HealthModel health) {
+ this.health = health;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIdCardNumber() {
+ return idCardNumber;
+ }
+
+ public void setIdCardNumber(String idCardNumber) {
+ this.idCardNumber = idCardNumber;
+ }
+
+ public String getIsRegister() {
+ return isRegister;
+ }
+
+ public void setIsRegister(String isRegister) {
+ this.isRegister = isRegister;
+ }
+
+ public LocationModel getLocation() {
+ return location;
+ }
+
+ public void setLocation(LocationModel location) {
+ this.location = location;
+ }
+
+ public MultiGasModel getMultiGas() {
+ return multiGas;
+ }
+
+ public void setMultiGas(MultiGasModel multiGas) {
+ this.multiGas = multiGas;
+ }
+
+ public String getOwnerShip() {
+ return ownerShip;
+ }
+
+ public void setOwnerShip(String ownerShip) {
+ this.ownerShip = ownerShip;
+ }
+
+ public String getPhoneNumber() {
+ return phoneNumber;
+ }
+
+ public void setPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ }
+
+ public String getRegisterTime() {
+ return registerTime;
+ }
+
+ public void setRegisterTime(String registerTime) {
+ this.registerTime = registerTime;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getStatusName() {
+ return statusName;
+ }
+
+ public void setStatusName(String statusName) {
+ this.statusName = statusName;
+ }
+
+ public String getWorkerAvatar() {
+ return workerAvatar;
+ }
+
+ public void setWorkerAvatar(String workerAvatar) {
+ this.workerAvatar = workerAvatar;
+ }
+
+ public String getWorkerName() {
+ return workerName;
+ }
+
+ public void setWorkerName(String workerName) {
+ this.workerName = workerName;
+ }
+
+ public String getWorkerType() {
+ return workerType;
+ }
+
+ public void setWorkerType(String workerType) {
+ this.workerType = workerType;
+ }
+
+ public String getWorkerTypeName() {
+ return workerTypeName;
+ }
+
+ public void setWorkerTypeName(String workerTypeName) {
+ this.workerTypeName = workerTypeName;
+ }
+
+ public static class HealthModel {
+ private String bloodOxygen;
+ private String deviceCode;
+ private String deviceId;
+ private String groupCode;
+ private String heartRate;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getBloodOxygen() {
+ return bloodOxygen;
+ }
+
+ public void setBloodOxygen(String bloodOxygen) {
+ this.bloodOxygen = bloodOxygen;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getHeartRate() {
+ return heartRate;
+ }
+
+ public void setHeartRate(String heartRate) {
+ this.heartRate = heartRate;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class LocationModel {
+ private String deviceCode;
+ private String deviceId;
+ private String gdLat;
+ private String gdLng;
+ private String groupCode;
+ private String lat;
+ private String lng;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGdLat() {
+ return gdLat;
+ }
+
+ public void setGdLat(String gdLat) {
+ this.gdLat = gdLat;
+ }
+
+ public String getGdLng() {
+ return gdLng;
+ }
+
+ public void setGdLng(String gdLng) {
+ this.gdLng = gdLng;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class MultiGasModel {
+ private String coValue;
+ private String deviceCode;
+ private String deviceId;
+ private String exValue;
+ private String groupCode;
+ private String h2sValue;
+ private String o2Value;
+ private String projectId;
+ private String projectName;
+ private String uploadTimestamp;
+
+ public String getCoValue() {
+ return coValue;
+ }
+
+ public void setCoValue(String coValue) {
+ this.coValue = coValue;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getExValue() {
+ return exValue;
+ }
+
+ public void setExValue(String exValue) {
+ this.exValue = exValue;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getH2sValue() {
+ return h2sValue;
+ }
+
+ public void setH2sValue(String h2sValue) {
+ this.h2sValue = h2sValue;
+ }
+
+ public String getO2Value() {
+ return o2Value;
+ }
+
+ public void setO2Value(String o2Value) {
+ this.o2Value = o2Value;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
deleted file mode 100644
index e32edab..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
+++ /dev/null
@@ -1,226 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class WorkerModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private boolean alarmFlag;
- private String bloodOxygen;
- private String braceletCode;
- private String cell;
- private String co;
- private String gas;
- private String gasTime;
- private String h2s;
- private String hatCode;
- private String hatId;
- private String heartRate;
- private String lat;
- private String lng;
- private String location;
- private String o2;
- private String signal;
- private String time;
- private String vastCode;
- private String workerId;
- private String workerName;
-
- public boolean isAlarmFlag() {
- return alarmFlag;
- }
-
- public void setAlarmFlag(boolean alarmFlag) {
- this.alarmFlag = alarmFlag;
- }
-
- public String getBloodOxygen() {
- return bloodOxygen;
- }
-
- public void setBloodOxygen(String bloodOxygen) {
- this.bloodOxygen = bloodOxygen;
- }
-
- public String getBraceletCode() {
- return braceletCode;
- }
-
- public void setBraceletCode(String braceletCode) {
- this.braceletCode = braceletCode;
- }
-
- public String getCell() {
- return cell;
- }
-
- public void setCell(String cell) {
- this.cell = cell;
- }
-
- public String getCo() {
- return co;
- }
-
- public void setCo(String co) {
- this.co = co;
- }
-
- public String getGas() {
- return gas;
- }
-
- public void setGas(String gas) {
- this.gas = gas;
- }
-
- public String getGasTime() {
- return gasTime;
- }
-
- public void setGasTime(String gasTime) {
- this.gasTime = gasTime;
- }
-
- public String getH2s() {
- return h2s;
- }
-
- public void setH2s(String h2s) {
- this.h2s = h2s;
- }
-
- public String getHatCode() {
- return hatCode;
- }
-
- public void setHatCode(String hatCode) {
- this.hatCode = hatCode;
- }
-
- public String getHatId() {
- return hatId;
- }
-
- public void setHatId(String hatId) {
- this.hatId = hatId;
- }
-
- public String getHeartRate() {
- return heartRate;
- }
-
- public void setHeartRate(String heartRate) {
- this.heartRate = heartRate;
- }
-
- public String getLat() {
- return lat;
- }
-
- public void setLat(String lat) {
- this.lat = lat;
- }
-
- public String getLng() {
- return lng;
- }
-
- public void setLng(String lng) {
- this.lng = lng;
- }
-
- public String getLocation() {
- return location;
- }
-
- public void setLocation(String location) {
- this.location = location;
- }
-
- public String getO2() {
- return o2;
- }
-
- public void setO2(String o2) {
- this.o2 = o2;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getTime() {
- return time;
- }
-
- public void setTime(String time) {
- this.time = time;
- }
-
- public String getVastCode() {
- return vastCode;
- }
-
- public void setVastCode(String vastCode) {
- this.vastCode = vastCode;
- }
-
- public String getWorkerId() {
- return workerId;
- }
-
- public void setWorkerId(String workerId) {
- this.workerId = workerId;
- }
-
- public String getWorkerName() {
- return workerName;
- }
-
- public void setWorkerName(String workerName) {
- this.workerName = workerName;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
index 4d68464..f56e8a1 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
@@ -2,7 +2,15 @@
import okhttp3.MultipartBody
import okhttp3.RequestBody
-import retrofit2.http.*
+import retrofit2.http.Body
+import retrofit2.http.Field
+import retrofit2.http.FormUrlEncoded
+import retrofit2.http.GET
+import retrofit2.http.Header
+import retrofit2.http.Multipart
+import retrofit2.http.POST
+import retrofit2.http.Part
+import retrofit2.http.Query
interface RetrofitService {
/**
@@ -41,7 +49,7 @@
/**
* 实施中列表
*/
- @GET("/site/listPage")
+ @GET("/v3/site/listPage")
suspend fun getProjectListByPage(
@Header("token") token: String,
@Query("keywords") keywords: String,
@@ -53,19 +61,13 @@
/**
* 获取工作区域作业人员
*/
- @GET("/overview/workerList")
- suspend fun getWorkers(
+ @GET("/v3/overview/workerList")
+ suspend fun getWorkSiteWorkers(
@Header("token") token: String,
@Query("projectId") projectId: String
): String
/**
- * 获取四合一数据
- */
- @GET("/emergency/startCheckOxygen")
- suspend fun getAirCondition(@Header("token") token: String): String
-
- /**
* 上报每个大阶段场景
* */
@GET("/emergency/notifyStageFinished")
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
index ed19c9f..a813fb0 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
@@ -3,7 +3,7 @@
import android.util.Log
import com.casic.br.operationsite.test.util.AuthenticationHelper
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.Gson
+import com.casic.br.operationsite.test.util.RuntimeCache
import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.RetrofitFactory
@@ -11,14 +11,13 @@
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
-import okhttp3.RequestBody
+import okhttp3.RequestBody.Companion.asRequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import java.io.File
object RetrofitServiceManager {
private const val kTag = "RetrofitServiceManager"
- private val gson by lazy { Gson() }
private val api by lazy {
val httpConfig = SaveKeyValues.getValue(
@@ -67,27 +66,20 @@
/**
* 获取工作区域作业人员
*/
- suspend fun getWorkers(projectId: String): String {
- return api.getWorkers(AuthenticationHelper.token!!, projectId)
+ suspend fun getWorkSiteWorkers(): String {
+ return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId)
}
/**
* 上传图片
*/
suspend fun uploadImage(image: File): String {
- val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val requestBody = image.asRequestBody("image/png".toMediaTypeOrNull())
val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
return api.uploadImage(AuthenticationHelper.token!!, imagePart)
}
/**
- * 获取四合一数据
- */
- suspend fun getAirCondition(): String {
- return api.getAirCondition(AuthenticationHelper.token!!)
- }
-
- /**
* 上报每个大阶段场景
*/
suspend fun notifyStageFinished(operationId: String?, stage: String): String {
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
new file mode 100644
index 0000000..337aaf1
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
@@ -0,0 +1,125 @@
+package com.casic.br.operationsite.test.service
+
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.app.Service
+import android.content.Intent
+import android.os.Handler
+import android.os.IBinder
+import android.os.Message
+import android.util.Log
+import androidx.core.app.NotificationCompat
+import com.casic.br.operationsite.test.R
+import com.casic.br.operationsite.test.extensions.convert
+import com.casic.br.operationsite.test.util.LocaleConstant
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener
+import com.pengxh.kt.lite.utils.socket.tcp.TcpClient
+
+class SocketConnectionService : Service(), OnTcpConnectStateListener, Handler.Callback {
+
+ companion object {
+ var weakReferenceHandler: WeakReferenceHandler? = null
+ }
+
+ override fun handleMessage(msg: Message): Boolean {
+ if (!tcpClient.isRunning()) {
+ "数据通讯服务断开连接,指令发送失败".show(this)
+ return true
+ }
+
+ when (msg.what) {
+ LocaleConstant.COMMAND_TEST_CODE -> {
+ val commandStr = msg.obj as String
+ tcpClient.sendMessage(commandStr.convert())
+ }
+
+ LocaleConstant.GAS_ALARM_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.GAS_ALARM_COMMAND)
+ }
+
+ LocaleConstant.CONFIRM_AIR_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.CONFIRM_AIR_COMMAND)
+ }
+
+ LocaleConstant.START_VIDEO_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.START_VIDEO_COMMAND)
+ }
+ }
+ return true
+ }
+
+ private val kTag = "SocketService"
+ private val notificationId = 1
+ private val tcpClient by lazy { TcpClient(this) }
+ private val notificationManager by lazy { getSystemService(NOTIFICATION_SERVICE) as NotificationManager }
+ private var notificationBuilder: NotificationCompat.Builder? = null
+
+ override fun onBind(intent: Intent?): IBinder? {
+ return null
+ }
+
+ override fun onCreate() {
+ super.onCreate()
+ val name = "${resources.getString(R.string.app_name)}前台服务"
+ val channel = NotificationChannel(
+ "socket_connection_service_channel", name, NotificationManager.IMPORTANCE_HIGH
+ )
+ channel.description = "Channel for socket connection service"
+ notificationManager.createNotificationChannel(channel)
+ notificationBuilder = NotificationCompat.Builder(this, "socket_connection_service_channel")
+ .setSmallIcon(R.mipmap.ic_launcher)
+ .setContentTitle("数据通讯服务连接中...")
+ .setContentText("为保证程序正常运行,请勿移除此通知")
+ .setPriority(NotificationCompat.PRIORITY_HIGH) // 设置通知优先级
+ .setOngoing(true)
+ .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
+
+ val notification = notificationBuilder?.build()
+ startForeground(notificationId, notification)
+ }
+
+ override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
+ if (weakReferenceHandler == null) {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+ tcpClient.start(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
+ Log.d(kTag, "onStartCommand: SocketConnectionService")
+ return START_STICKY
+ }
+
+ override fun onConnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务已连接")
+ "数据通讯服务连接成功,现在可以下发指令了".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDisconnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务断开连接")
+ "数据通讯服务断开连接".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onConnectFailed() {
+ notificationBuilder?.setContentTitle("数据通讯服务连接出错,开始重连")
+ "数据通讯服务连接出错,开始重连".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ tcpClient.stop(false)
+ stopForeground(STOP_FOREGROUND_REMOVE)
+ Log.d(kTag, "onDestroy: SocketConnectionService")
+ }
+
+ override fun onMessageReceived(bytes: ByteArray?) {
+ if (bytes == null) {
+ return
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
deleted file mode 100644
index bc3c0ca..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.casic.br.operationsite.test.service
-
-import android.app.Service
-import android.content.Intent
-import android.os.Handler
-import android.os.IBinder
-import android.os.Message
-import com.casic.br.operationsite.test.util.LocaleConstant
-import com.casic.br.operationsite.test.util.tcp.SocketManager
-import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.WeakReferenceHandler
-
-class TcpMessageService : Service(), Handler.Callback {
-
- companion object {
- lateinit var weakReferenceHandler: WeakReferenceHandler
- }
-
- private val kTag = "TcpMessageService"
-
- override fun onBind(intent: Intent?): IBinder? {
- return null
- }
-
- override fun onCreate() {
- super.onCreate()
- weakReferenceHandler = WeakReferenceHandler(this)
- SocketManager.get.connectTcpServer(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
- }
-
- override fun onDestroy() {
- super.onDestroy()
- SocketManager.get.close()
- }
-
- override fun handleMessage(msg: Message): Boolean {
- if (msg.what == LocaleConstant.TCP_CONNECTED_CODE) {
- "指令连接成功,现在可以下发指令了".show(this)
- } else {
- "指令连接断开,开始自动重连".show(this)
- }
- return true
- }
-}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ede224a..bb07476 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
@@ -37,7 +40,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
@@ -49,14 +52,14 @@
-
-
-
+
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
index 90aa34e..7a487d2 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
@@ -3,32 +3,27 @@
import android.content.Context
import com.casic.br.operationsite.test.callback.OnImageCompressListener
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.JsonParser
+import com.google.gson.Gson
+import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.createCompressImageDir
import com.pengxh.kt.lite.utils.SaveKeyValues
import top.zibin.luban.Luban
import top.zibin.luban.OnCompressListener
import java.io.File
+val gson by lazy { Gson() }
+
/**
* String扩展方法
*/
-fun String.getResponseCode(): Int {
+fun String.getResponseHeader(): Pair {
if (this.isBlank()) {
- return 404
+ return Pair(404, "Invalid Response")
}
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("code").asInt
-}
-
-fun String.getResponseMessage(): String {
- if (this.isBlank()) {
- return ""
- }
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("message").asString
+ val jsonObject = gson.fromJson(this, JsonObject::class.java)
+ val code = jsonObject.get("code").asInt
+ val message = jsonObject.get("message").asString
+ return Pair(code, message)
}
//拼接图片地址
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
deleted file mode 100644
index 758b3bd..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class AirConditionModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private double o2;
- private int h2s;
- private int co;
- private int ch4;
-
- public double getO2() {
- return o2;
- }
-
- public void setO2(double o2) {
- this.o2 = o2;
- }
-
- public int getH2s() {
- return h2s;
- }
-
- public void setH2s(int h2s) {
- this.h2s = h2s;
- }
-
- public int getCo() {
- return co;
- }
-
- public void setCo(int co) {
- this.co = co;
- }
-
- public int getCh4() {
- return ch4;
- }
-
- public void setCh4(int ch4) {
- this.ch4 = ch4;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
index f0a8f63..70228ef 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
@@ -65,13 +65,26 @@
}
public static class RowsModel {
+ private String borderPointCount;
private String createTime;
+ private String deptFullName;
+ private String deptId;
+ private String deptName;
+ private List> deviceList;
+ private String finishTime;
+ private String groupDeviceCode;
+ private String groupDeviceId;
private String id;
private String imageUrl;
+ private String locationTime;
+ private List pointLocation;
+ private String pointLocationJson;
private String projectState;
private String projectStateName;
private String registerTime;
+ private String startTime;
private String updateTime;
+ private String valid;
private String workPerson;
private String workPersonDeptId;
private String workPersonDeptName;
@@ -80,6 +93,16 @@
private String workRoad;
private String workSiteDesc;
private String workTitle;
+ private String workType;
+ private String workTypeName;
+
+ public String getBorderPointCount() {
+ return borderPointCount;
+ }
+
+ public void setBorderPointCount(String borderPointCount) {
+ this.borderPointCount = borderPointCount;
+ }
public String getCreateTime() {
return createTime;
@@ -89,6 +112,62 @@
this.createTime = createTime;
}
+ public String getDeptFullName() {
+ return deptFullName;
+ }
+
+ public void setDeptFullName(String deptFullName) {
+ this.deptFullName = deptFullName;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public List> getDeviceList() {
+ return deviceList;
+ }
+
+ public void setDeviceList(List> deviceList) {
+ this.deviceList = deviceList;
+ }
+
+ public String getFinishTime() {
+ return finishTime;
+ }
+
+ public void setFinishTime(String finishTime) {
+ this.finishTime = finishTime;
+ }
+
+ public String getGroupDeviceCode() {
+ return groupDeviceCode;
+ }
+
+ public void setGroupDeviceCode(String groupDeviceCode) {
+ this.groupDeviceCode = groupDeviceCode;
+ }
+
+ public String getGroupDeviceId() {
+ return groupDeviceId;
+ }
+
+ public void setGroupDeviceId(String groupDeviceId) {
+ this.groupDeviceId = groupDeviceId;
+ }
+
public String getId() {
return id;
}
@@ -105,6 +184,30 @@
this.imageUrl = imageUrl;
}
+ public String getLocationTime() {
+ return locationTime;
+ }
+
+ public void setLocationTime(String locationTime) {
+ this.locationTime = locationTime;
+ }
+
+ public List getPointLocation() {
+ return pointLocation;
+ }
+
+ public void setPointLocation(List pointLocation) {
+ this.pointLocation = pointLocation;
+ }
+
+ public String getPointLocationJson() {
+ return pointLocationJson;
+ }
+
+ public void setPointLocationJson(String pointLocationJson) {
+ this.pointLocationJson = pointLocationJson;
+ }
+
public String getProjectState() {
return projectState;
}
@@ -129,6 +232,14 @@
this.registerTime = registerTime;
}
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
public String getUpdateTime() {
return updateTime;
}
@@ -137,6 +248,14 @@
this.updateTime = updateTime;
}
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
public String getWorkPerson() {
return workPerson;
}
@@ -200,6 +319,43 @@
public void setWorkTitle(String workTitle) {
this.workTitle = workTitle;
}
+
+ public String getWorkType() {
+ return workType;
+ }
+
+ public void setWorkType(String workType) {
+ this.workType = workType;
+ }
+
+ public String getWorkTypeName() {
+ return workTypeName;
+ }
+
+ public void setWorkTypeName(String workTypeName) {
+ this.workTypeName = workTypeName;
+ }
+
+ public static class PointLocationModel {
+ private String lng;
+ private String lat;
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
new file mode 100644
index 0000000..5d87443
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
@@ -0,0 +1,487 @@
+package com.casic.br.operationsite.test.model;
+
+import java.util.List;
+
+public class WorkSiteWorkerModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataModel {
+ private boolean alarmFlag;
+ private String createTime;
+ private String deptId;
+ private String deptName;
+ private String enterReason;
+ private String gender;
+ private String genderName;
+ private HealthModel health;
+ private String id;
+ private String idCardNumber;
+ private String isRegister;
+ private LocationModel location;
+ private MultiGasModel multiGas;
+ private String ownerShip;
+ private String phoneNumber;
+ private String registerTime;
+ private String status;
+ private String statusName;
+ private String workerAvatar;
+ private String workerName;
+ private String workerType;
+ private String workerTypeName;
+
+ public boolean isAlarmFlag() {
+ return alarmFlag;
+ }
+
+ public void setAlarmFlag(boolean alarmFlag) {
+ this.alarmFlag = alarmFlag;
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public String getEnterReason() {
+ return enterReason;
+ }
+
+ public void setEnterReason(String enterReason) {
+ this.enterReason = enterReason;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+ public String getGenderName() {
+ return genderName;
+ }
+
+ public void setGenderName(String genderName) {
+ this.genderName = genderName;
+ }
+
+ public HealthModel getHealth() {
+ return health;
+ }
+
+ public void setHealth(HealthModel health) {
+ this.health = health;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIdCardNumber() {
+ return idCardNumber;
+ }
+
+ public void setIdCardNumber(String idCardNumber) {
+ this.idCardNumber = idCardNumber;
+ }
+
+ public String getIsRegister() {
+ return isRegister;
+ }
+
+ public void setIsRegister(String isRegister) {
+ this.isRegister = isRegister;
+ }
+
+ public LocationModel getLocation() {
+ return location;
+ }
+
+ public void setLocation(LocationModel location) {
+ this.location = location;
+ }
+
+ public MultiGasModel getMultiGas() {
+ return multiGas;
+ }
+
+ public void setMultiGas(MultiGasModel multiGas) {
+ this.multiGas = multiGas;
+ }
+
+ public String getOwnerShip() {
+ return ownerShip;
+ }
+
+ public void setOwnerShip(String ownerShip) {
+ this.ownerShip = ownerShip;
+ }
+
+ public String getPhoneNumber() {
+ return phoneNumber;
+ }
+
+ public void setPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ }
+
+ public String getRegisterTime() {
+ return registerTime;
+ }
+
+ public void setRegisterTime(String registerTime) {
+ this.registerTime = registerTime;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getStatusName() {
+ return statusName;
+ }
+
+ public void setStatusName(String statusName) {
+ this.statusName = statusName;
+ }
+
+ public String getWorkerAvatar() {
+ return workerAvatar;
+ }
+
+ public void setWorkerAvatar(String workerAvatar) {
+ this.workerAvatar = workerAvatar;
+ }
+
+ public String getWorkerName() {
+ return workerName;
+ }
+
+ public void setWorkerName(String workerName) {
+ this.workerName = workerName;
+ }
+
+ public String getWorkerType() {
+ return workerType;
+ }
+
+ public void setWorkerType(String workerType) {
+ this.workerType = workerType;
+ }
+
+ public String getWorkerTypeName() {
+ return workerTypeName;
+ }
+
+ public void setWorkerTypeName(String workerTypeName) {
+ this.workerTypeName = workerTypeName;
+ }
+
+ public static class HealthModel {
+ private String bloodOxygen;
+ private String deviceCode;
+ private String deviceId;
+ private String groupCode;
+ private String heartRate;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getBloodOxygen() {
+ return bloodOxygen;
+ }
+
+ public void setBloodOxygen(String bloodOxygen) {
+ this.bloodOxygen = bloodOxygen;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getHeartRate() {
+ return heartRate;
+ }
+
+ public void setHeartRate(String heartRate) {
+ this.heartRate = heartRate;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class LocationModel {
+ private String deviceCode;
+ private String deviceId;
+ private String gdLat;
+ private String gdLng;
+ private String groupCode;
+ private String lat;
+ private String lng;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGdLat() {
+ return gdLat;
+ }
+
+ public void setGdLat(String gdLat) {
+ this.gdLat = gdLat;
+ }
+
+ public String getGdLng() {
+ return gdLng;
+ }
+
+ public void setGdLng(String gdLng) {
+ this.gdLng = gdLng;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class MultiGasModel {
+ private String coValue;
+ private String deviceCode;
+ private String deviceId;
+ private String exValue;
+ private String groupCode;
+ private String h2sValue;
+ private String o2Value;
+ private String projectId;
+ private String projectName;
+ private String uploadTimestamp;
+
+ public String getCoValue() {
+ return coValue;
+ }
+
+ public void setCoValue(String coValue) {
+ this.coValue = coValue;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getExValue() {
+ return exValue;
+ }
+
+ public void setExValue(String exValue) {
+ this.exValue = exValue;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getH2sValue() {
+ return h2sValue;
+ }
+
+ public void setH2sValue(String h2sValue) {
+ this.h2sValue = h2sValue;
+ }
+
+ public String getO2Value() {
+ return o2Value;
+ }
+
+ public void setO2Value(String o2Value) {
+ this.o2Value = o2Value;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
deleted file mode 100644
index e32edab..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
+++ /dev/null
@@ -1,226 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class WorkerModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private boolean alarmFlag;
- private String bloodOxygen;
- private String braceletCode;
- private String cell;
- private String co;
- private String gas;
- private String gasTime;
- private String h2s;
- private String hatCode;
- private String hatId;
- private String heartRate;
- private String lat;
- private String lng;
- private String location;
- private String o2;
- private String signal;
- private String time;
- private String vastCode;
- private String workerId;
- private String workerName;
-
- public boolean isAlarmFlag() {
- return alarmFlag;
- }
-
- public void setAlarmFlag(boolean alarmFlag) {
- this.alarmFlag = alarmFlag;
- }
-
- public String getBloodOxygen() {
- return bloodOxygen;
- }
-
- public void setBloodOxygen(String bloodOxygen) {
- this.bloodOxygen = bloodOxygen;
- }
-
- public String getBraceletCode() {
- return braceletCode;
- }
-
- public void setBraceletCode(String braceletCode) {
- this.braceletCode = braceletCode;
- }
-
- public String getCell() {
- return cell;
- }
-
- public void setCell(String cell) {
- this.cell = cell;
- }
-
- public String getCo() {
- return co;
- }
-
- public void setCo(String co) {
- this.co = co;
- }
-
- public String getGas() {
- return gas;
- }
-
- public void setGas(String gas) {
- this.gas = gas;
- }
-
- public String getGasTime() {
- return gasTime;
- }
-
- public void setGasTime(String gasTime) {
- this.gasTime = gasTime;
- }
-
- public String getH2s() {
- return h2s;
- }
-
- public void setH2s(String h2s) {
- this.h2s = h2s;
- }
-
- public String getHatCode() {
- return hatCode;
- }
-
- public void setHatCode(String hatCode) {
- this.hatCode = hatCode;
- }
-
- public String getHatId() {
- return hatId;
- }
-
- public void setHatId(String hatId) {
- this.hatId = hatId;
- }
-
- public String getHeartRate() {
- return heartRate;
- }
-
- public void setHeartRate(String heartRate) {
- this.heartRate = heartRate;
- }
-
- public String getLat() {
- return lat;
- }
-
- public void setLat(String lat) {
- this.lat = lat;
- }
-
- public String getLng() {
- return lng;
- }
-
- public void setLng(String lng) {
- this.lng = lng;
- }
-
- public String getLocation() {
- return location;
- }
-
- public void setLocation(String location) {
- this.location = location;
- }
-
- public String getO2() {
- return o2;
- }
-
- public void setO2(String o2) {
- this.o2 = o2;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getTime() {
- return time;
- }
-
- public void setTime(String time) {
- this.time = time;
- }
-
- public String getVastCode() {
- return vastCode;
- }
-
- public void setVastCode(String vastCode) {
- this.vastCode = vastCode;
- }
-
- public String getWorkerId() {
- return workerId;
- }
-
- public void setWorkerId(String workerId) {
- this.workerId = workerId;
- }
-
- public String getWorkerName() {
- return workerName;
- }
-
- public void setWorkerName(String workerName) {
- this.workerName = workerName;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
index 4d68464..f56e8a1 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
@@ -2,7 +2,15 @@
import okhttp3.MultipartBody
import okhttp3.RequestBody
-import retrofit2.http.*
+import retrofit2.http.Body
+import retrofit2.http.Field
+import retrofit2.http.FormUrlEncoded
+import retrofit2.http.GET
+import retrofit2.http.Header
+import retrofit2.http.Multipart
+import retrofit2.http.POST
+import retrofit2.http.Part
+import retrofit2.http.Query
interface RetrofitService {
/**
@@ -41,7 +49,7 @@
/**
* 实施中列表
*/
- @GET("/site/listPage")
+ @GET("/v3/site/listPage")
suspend fun getProjectListByPage(
@Header("token") token: String,
@Query("keywords") keywords: String,
@@ -53,19 +61,13 @@
/**
* 获取工作区域作业人员
*/
- @GET("/overview/workerList")
- suspend fun getWorkers(
+ @GET("/v3/overview/workerList")
+ suspend fun getWorkSiteWorkers(
@Header("token") token: String,
@Query("projectId") projectId: String
): String
/**
- * 获取四合一数据
- */
- @GET("/emergency/startCheckOxygen")
- suspend fun getAirCondition(@Header("token") token: String): String
-
- /**
* 上报每个大阶段场景
* */
@GET("/emergency/notifyStageFinished")
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
index ed19c9f..a813fb0 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
@@ -3,7 +3,7 @@
import android.util.Log
import com.casic.br.operationsite.test.util.AuthenticationHelper
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.Gson
+import com.casic.br.operationsite.test.util.RuntimeCache
import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.RetrofitFactory
@@ -11,14 +11,13 @@
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
-import okhttp3.RequestBody
+import okhttp3.RequestBody.Companion.asRequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import java.io.File
object RetrofitServiceManager {
private const val kTag = "RetrofitServiceManager"
- private val gson by lazy { Gson() }
private val api by lazy {
val httpConfig = SaveKeyValues.getValue(
@@ -67,27 +66,20 @@
/**
* 获取工作区域作业人员
*/
- suspend fun getWorkers(projectId: String): String {
- return api.getWorkers(AuthenticationHelper.token!!, projectId)
+ suspend fun getWorkSiteWorkers(): String {
+ return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId)
}
/**
* 上传图片
*/
suspend fun uploadImage(image: File): String {
- val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val requestBody = image.asRequestBody("image/png".toMediaTypeOrNull())
val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
return api.uploadImage(AuthenticationHelper.token!!, imagePart)
}
/**
- * 获取四合一数据
- */
- suspend fun getAirCondition(): String {
- return api.getAirCondition(AuthenticationHelper.token!!)
- }
-
- /**
* 上报每个大阶段场景
*/
suspend fun notifyStageFinished(operationId: String?, stage: String): String {
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
new file mode 100644
index 0000000..337aaf1
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
@@ -0,0 +1,125 @@
+package com.casic.br.operationsite.test.service
+
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.app.Service
+import android.content.Intent
+import android.os.Handler
+import android.os.IBinder
+import android.os.Message
+import android.util.Log
+import androidx.core.app.NotificationCompat
+import com.casic.br.operationsite.test.R
+import com.casic.br.operationsite.test.extensions.convert
+import com.casic.br.operationsite.test.util.LocaleConstant
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener
+import com.pengxh.kt.lite.utils.socket.tcp.TcpClient
+
+class SocketConnectionService : Service(), OnTcpConnectStateListener, Handler.Callback {
+
+ companion object {
+ var weakReferenceHandler: WeakReferenceHandler? = null
+ }
+
+ override fun handleMessage(msg: Message): Boolean {
+ if (!tcpClient.isRunning()) {
+ "数据通讯服务断开连接,指令发送失败".show(this)
+ return true
+ }
+
+ when (msg.what) {
+ LocaleConstant.COMMAND_TEST_CODE -> {
+ val commandStr = msg.obj as String
+ tcpClient.sendMessage(commandStr.convert())
+ }
+
+ LocaleConstant.GAS_ALARM_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.GAS_ALARM_COMMAND)
+ }
+
+ LocaleConstant.CONFIRM_AIR_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.CONFIRM_AIR_COMMAND)
+ }
+
+ LocaleConstant.START_VIDEO_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.START_VIDEO_COMMAND)
+ }
+ }
+ return true
+ }
+
+ private val kTag = "SocketService"
+ private val notificationId = 1
+ private val tcpClient by lazy { TcpClient(this) }
+ private val notificationManager by lazy { getSystemService(NOTIFICATION_SERVICE) as NotificationManager }
+ private var notificationBuilder: NotificationCompat.Builder? = null
+
+ override fun onBind(intent: Intent?): IBinder? {
+ return null
+ }
+
+ override fun onCreate() {
+ super.onCreate()
+ val name = "${resources.getString(R.string.app_name)}前台服务"
+ val channel = NotificationChannel(
+ "socket_connection_service_channel", name, NotificationManager.IMPORTANCE_HIGH
+ )
+ channel.description = "Channel for socket connection service"
+ notificationManager.createNotificationChannel(channel)
+ notificationBuilder = NotificationCompat.Builder(this, "socket_connection_service_channel")
+ .setSmallIcon(R.mipmap.ic_launcher)
+ .setContentTitle("数据通讯服务连接中...")
+ .setContentText("为保证程序正常运行,请勿移除此通知")
+ .setPriority(NotificationCompat.PRIORITY_HIGH) // 设置通知优先级
+ .setOngoing(true)
+ .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
+
+ val notification = notificationBuilder?.build()
+ startForeground(notificationId, notification)
+ }
+
+ override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
+ if (weakReferenceHandler == null) {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+ tcpClient.start(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
+ Log.d(kTag, "onStartCommand: SocketConnectionService")
+ return START_STICKY
+ }
+
+ override fun onConnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务已连接")
+ "数据通讯服务连接成功,现在可以下发指令了".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDisconnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务断开连接")
+ "数据通讯服务断开连接".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onConnectFailed() {
+ notificationBuilder?.setContentTitle("数据通讯服务连接出错,开始重连")
+ "数据通讯服务连接出错,开始重连".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ tcpClient.stop(false)
+ stopForeground(STOP_FOREGROUND_REMOVE)
+ Log.d(kTag, "onDestroy: SocketConnectionService")
+ }
+
+ override fun onMessageReceived(bytes: ByteArray?) {
+ if (bytes == null) {
+ return
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
deleted file mode 100644
index bc3c0ca..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.casic.br.operationsite.test.service
-
-import android.app.Service
-import android.content.Intent
-import android.os.Handler
-import android.os.IBinder
-import android.os.Message
-import com.casic.br.operationsite.test.util.LocaleConstant
-import com.casic.br.operationsite.test.util.tcp.SocketManager
-import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.WeakReferenceHandler
-
-class TcpMessageService : Service(), Handler.Callback {
-
- companion object {
- lateinit var weakReferenceHandler: WeakReferenceHandler
- }
-
- private val kTag = "TcpMessageService"
-
- override fun onBind(intent: Intent?): IBinder? {
- return null
- }
-
- override fun onCreate() {
- super.onCreate()
- weakReferenceHandler = WeakReferenceHandler(this)
- SocketManager.get.connectTcpServer(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
- }
-
- override fun onDestroy() {
- super.onDestroy()
- SocketManager.get.close()
- }
-
- override fun handleMessage(msg: Message): Boolean {
- if (msg.what == LocaleConstant.TCP_CONNECTED_CODE) {
- "指令连接成功,现在可以下发指令了".show(this)
- } else {
- "指令连接断开,开始自动重连".show(this)
- }
- return true
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt b/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt
deleted file mode 100644
index 56bc436..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.casic.br.operationsite.test.util
-
-import android.content.Context
-import android.widget.ImageView
-import com.bumptech.glide.Glide
-import com.bumptech.glide.load.resource.bitmap.CenterCrop
-import com.bumptech.glide.load.resource.bitmap.RoundedCorners
-import com.bumptech.glide.request.RequestOptions
-import com.casic.br.operationsite.test.R
-import com.luck.picture.lib.engine.ImageEngine
-import com.luck.picture.lib.utils.ActivityCompatHelper
-
-
-class GlideLoadEngine private constructor() : ImageEngine {
-
- companion object {
- val get: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
- GlideLoadEngine()
- }
- }
-
- override fun loadImage(context: Context, url: String, imageView: ImageView) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context).load(url).into(imageView);
- }
-
- override fun loadImage(
- context: Context,
- imageView: ImageView,
- url: String,
- maxWidth: Int,
- maxHeight: Int
- ) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context)
- .load(url)
- .override(maxWidth, maxHeight)
- .into(imageView)
- }
-
- override fun loadAlbumCover(context: Context, url: String, imageView: ImageView) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context)
- .asBitmap()
- .load(url)
- .override(180, 180)
- .sizeMultiplier(0.5f)
- .transform(CenterCrop(), RoundedCorners(8))
- .placeholder(R.drawable.ps_image_placeholder)
- .into(imageView)
- }
-
- override fun pauseRequests(context: Context?) {
- context?.let { Glide.with(it).pauseRequests() }
- }
-
- override fun resumeRequests(context: Context?) {
- context?.let { Glide.with(it).resumeRequests() }
- }
-
- override fun loadGridImage(context: Context, url: String, imageView: ImageView) {
- Glide.with(context)
- .load(url)
- .apply(RequestOptions().placeholder(R.drawable.ps_image_placeholder))
- .into(imageView)
- }
-}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ede224a..bb07476 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
@@ -37,7 +40,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
@@ -49,14 +52,14 @@
-
-
-
+
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
index 90aa34e..7a487d2 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
@@ -3,32 +3,27 @@
import android.content.Context
import com.casic.br.operationsite.test.callback.OnImageCompressListener
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.JsonParser
+import com.google.gson.Gson
+import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.createCompressImageDir
import com.pengxh.kt.lite.utils.SaveKeyValues
import top.zibin.luban.Luban
import top.zibin.luban.OnCompressListener
import java.io.File
+val gson by lazy { Gson() }
+
/**
* String扩展方法
*/
-fun String.getResponseCode(): Int {
+fun String.getResponseHeader(): Pair {
if (this.isBlank()) {
- return 404
+ return Pair(404, "Invalid Response")
}
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("code").asInt
-}
-
-fun String.getResponseMessage(): String {
- if (this.isBlank()) {
- return ""
- }
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("message").asString
+ val jsonObject = gson.fromJson(this, JsonObject::class.java)
+ val code = jsonObject.get("code").asInt
+ val message = jsonObject.get("message").asString
+ return Pair(code, message)
}
//拼接图片地址
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
deleted file mode 100644
index 758b3bd..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class AirConditionModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private double o2;
- private int h2s;
- private int co;
- private int ch4;
-
- public double getO2() {
- return o2;
- }
-
- public void setO2(double o2) {
- this.o2 = o2;
- }
-
- public int getH2s() {
- return h2s;
- }
-
- public void setH2s(int h2s) {
- this.h2s = h2s;
- }
-
- public int getCo() {
- return co;
- }
-
- public void setCo(int co) {
- this.co = co;
- }
-
- public int getCh4() {
- return ch4;
- }
-
- public void setCh4(int ch4) {
- this.ch4 = ch4;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
index f0a8f63..70228ef 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
@@ -65,13 +65,26 @@
}
public static class RowsModel {
+ private String borderPointCount;
private String createTime;
+ private String deptFullName;
+ private String deptId;
+ private String deptName;
+ private List> deviceList;
+ private String finishTime;
+ private String groupDeviceCode;
+ private String groupDeviceId;
private String id;
private String imageUrl;
+ private String locationTime;
+ private List pointLocation;
+ private String pointLocationJson;
private String projectState;
private String projectStateName;
private String registerTime;
+ private String startTime;
private String updateTime;
+ private String valid;
private String workPerson;
private String workPersonDeptId;
private String workPersonDeptName;
@@ -80,6 +93,16 @@
private String workRoad;
private String workSiteDesc;
private String workTitle;
+ private String workType;
+ private String workTypeName;
+
+ public String getBorderPointCount() {
+ return borderPointCount;
+ }
+
+ public void setBorderPointCount(String borderPointCount) {
+ this.borderPointCount = borderPointCount;
+ }
public String getCreateTime() {
return createTime;
@@ -89,6 +112,62 @@
this.createTime = createTime;
}
+ public String getDeptFullName() {
+ return deptFullName;
+ }
+
+ public void setDeptFullName(String deptFullName) {
+ this.deptFullName = deptFullName;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public List> getDeviceList() {
+ return deviceList;
+ }
+
+ public void setDeviceList(List> deviceList) {
+ this.deviceList = deviceList;
+ }
+
+ public String getFinishTime() {
+ return finishTime;
+ }
+
+ public void setFinishTime(String finishTime) {
+ this.finishTime = finishTime;
+ }
+
+ public String getGroupDeviceCode() {
+ return groupDeviceCode;
+ }
+
+ public void setGroupDeviceCode(String groupDeviceCode) {
+ this.groupDeviceCode = groupDeviceCode;
+ }
+
+ public String getGroupDeviceId() {
+ return groupDeviceId;
+ }
+
+ public void setGroupDeviceId(String groupDeviceId) {
+ this.groupDeviceId = groupDeviceId;
+ }
+
public String getId() {
return id;
}
@@ -105,6 +184,30 @@
this.imageUrl = imageUrl;
}
+ public String getLocationTime() {
+ return locationTime;
+ }
+
+ public void setLocationTime(String locationTime) {
+ this.locationTime = locationTime;
+ }
+
+ public List getPointLocation() {
+ return pointLocation;
+ }
+
+ public void setPointLocation(List pointLocation) {
+ this.pointLocation = pointLocation;
+ }
+
+ public String getPointLocationJson() {
+ return pointLocationJson;
+ }
+
+ public void setPointLocationJson(String pointLocationJson) {
+ this.pointLocationJson = pointLocationJson;
+ }
+
public String getProjectState() {
return projectState;
}
@@ -129,6 +232,14 @@
this.registerTime = registerTime;
}
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
public String getUpdateTime() {
return updateTime;
}
@@ -137,6 +248,14 @@
this.updateTime = updateTime;
}
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
public String getWorkPerson() {
return workPerson;
}
@@ -200,6 +319,43 @@
public void setWorkTitle(String workTitle) {
this.workTitle = workTitle;
}
+
+ public String getWorkType() {
+ return workType;
+ }
+
+ public void setWorkType(String workType) {
+ this.workType = workType;
+ }
+
+ public String getWorkTypeName() {
+ return workTypeName;
+ }
+
+ public void setWorkTypeName(String workTypeName) {
+ this.workTypeName = workTypeName;
+ }
+
+ public static class PointLocationModel {
+ private String lng;
+ private String lat;
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
new file mode 100644
index 0000000..5d87443
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
@@ -0,0 +1,487 @@
+package com.casic.br.operationsite.test.model;
+
+import java.util.List;
+
+public class WorkSiteWorkerModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataModel {
+ private boolean alarmFlag;
+ private String createTime;
+ private String deptId;
+ private String deptName;
+ private String enterReason;
+ private String gender;
+ private String genderName;
+ private HealthModel health;
+ private String id;
+ private String idCardNumber;
+ private String isRegister;
+ private LocationModel location;
+ private MultiGasModel multiGas;
+ private String ownerShip;
+ private String phoneNumber;
+ private String registerTime;
+ private String status;
+ private String statusName;
+ private String workerAvatar;
+ private String workerName;
+ private String workerType;
+ private String workerTypeName;
+
+ public boolean isAlarmFlag() {
+ return alarmFlag;
+ }
+
+ public void setAlarmFlag(boolean alarmFlag) {
+ this.alarmFlag = alarmFlag;
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public String getEnterReason() {
+ return enterReason;
+ }
+
+ public void setEnterReason(String enterReason) {
+ this.enterReason = enterReason;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+ public String getGenderName() {
+ return genderName;
+ }
+
+ public void setGenderName(String genderName) {
+ this.genderName = genderName;
+ }
+
+ public HealthModel getHealth() {
+ return health;
+ }
+
+ public void setHealth(HealthModel health) {
+ this.health = health;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIdCardNumber() {
+ return idCardNumber;
+ }
+
+ public void setIdCardNumber(String idCardNumber) {
+ this.idCardNumber = idCardNumber;
+ }
+
+ public String getIsRegister() {
+ return isRegister;
+ }
+
+ public void setIsRegister(String isRegister) {
+ this.isRegister = isRegister;
+ }
+
+ public LocationModel getLocation() {
+ return location;
+ }
+
+ public void setLocation(LocationModel location) {
+ this.location = location;
+ }
+
+ public MultiGasModel getMultiGas() {
+ return multiGas;
+ }
+
+ public void setMultiGas(MultiGasModel multiGas) {
+ this.multiGas = multiGas;
+ }
+
+ public String getOwnerShip() {
+ return ownerShip;
+ }
+
+ public void setOwnerShip(String ownerShip) {
+ this.ownerShip = ownerShip;
+ }
+
+ public String getPhoneNumber() {
+ return phoneNumber;
+ }
+
+ public void setPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ }
+
+ public String getRegisterTime() {
+ return registerTime;
+ }
+
+ public void setRegisterTime(String registerTime) {
+ this.registerTime = registerTime;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getStatusName() {
+ return statusName;
+ }
+
+ public void setStatusName(String statusName) {
+ this.statusName = statusName;
+ }
+
+ public String getWorkerAvatar() {
+ return workerAvatar;
+ }
+
+ public void setWorkerAvatar(String workerAvatar) {
+ this.workerAvatar = workerAvatar;
+ }
+
+ public String getWorkerName() {
+ return workerName;
+ }
+
+ public void setWorkerName(String workerName) {
+ this.workerName = workerName;
+ }
+
+ public String getWorkerType() {
+ return workerType;
+ }
+
+ public void setWorkerType(String workerType) {
+ this.workerType = workerType;
+ }
+
+ public String getWorkerTypeName() {
+ return workerTypeName;
+ }
+
+ public void setWorkerTypeName(String workerTypeName) {
+ this.workerTypeName = workerTypeName;
+ }
+
+ public static class HealthModel {
+ private String bloodOxygen;
+ private String deviceCode;
+ private String deviceId;
+ private String groupCode;
+ private String heartRate;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getBloodOxygen() {
+ return bloodOxygen;
+ }
+
+ public void setBloodOxygen(String bloodOxygen) {
+ this.bloodOxygen = bloodOxygen;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getHeartRate() {
+ return heartRate;
+ }
+
+ public void setHeartRate(String heartRate) {
+ this.heartRate = heartRate;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class LocationModel {
+ private String deviceCode;
+ private String deviceId;
+ private String gdLat;
+ private String gdLng;
+ private String groupCode;
+ private String lat;
+ private String lng;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGdLat() {
+ return gdLat;
+ }
+
+ public void setGdLat(String gdLat) {
+ this.gdLat = gdLat;
+ }
+
+ public String getGdLng() {
+ return gdLng;
+ }
+
+ public void setGdLng(String gdLng) {
+ this.gdLng = gdLng;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class MultiGasModel {
+ private String coValue;
+ private String deviceCode;
+ private String deviceId;
+ private String exValue;
+ private String groupCode;
+ private String h2sValue;
+ private String o2Value;
+ private String projectId;
+ private String projectName;
+ private String uploadTimestamp;
+
+ public String getCoValue() {
+ return coValue;
+ }
+
+ public void setCoValue(String coValue) {
+ this.coValue = coValue;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getExValue() {
+ return exValue;
+ }
+
+ public void setExValue(String exValue) {
+ this.exValue = exValue;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getH2sValue() {
+ return h2sValue;
+ }
+
+ public void setH2sValue(String h2sValue) {
+ this.h2sValue = h2sValue;
+ }
+
+ public String getO2Value() {
+ return o2Value;
+ }
+
+ public void setO2Value(String o2Value) {
+ this.o2Value = o2Value;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
deleted file mode 100644
index e32edab..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
+++ /dev/null
@@ -1,226 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class WorkerModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private boolean alarmFlag;
- private String bloodOxygen;
- private String braceletCode;
- private String cell;
- private String co;
- private String gas;
- private String gasTime;
- private String h2s;
- private String hatCode;
- private String hatId;
- private String heartRate;
- private String lat;
- private String lng;
- private String location;
- private String o2;
- private String signal;
- private String time;
- private String vastCode;
- private String workerId;
- private String workerName;
-
- public boolean isAlarmFlag() {
- return alarmFlag;
- }
-
- public void setAlarmFlag(boolean alarmFlag) {
- this.alarmFlag = alarmFlag;
- }
-
- public String getBloodOxygen() {
- return bloodOxygen;
- }
-
- public void setBloodOxygen(String bloodOxygen) {
- this.bloodOxygen = bloodOxygen;
- }
-
- public String getBraceletCode() {
- return braceletCode;
- }
-
- public void setBraceletCode(String braceletCode) {
- this.braceletCode = braceletCode;
- }
-
- public String getCell() {
- return cell;
- }
-
- public void setCell(String cell) {
- this.cell = cell;
- }
-
- public String getCo() {
- return co;
- }
-
- public void setCo(String co) {
- this.co = co;
- }
-
- public String getGas() {
- return gas;
- }
-
- public void setGas(String gas) {
- this.gas = gas;
- }
-
- public String getGasTime() {
- return gasTime;
- }
-
- public void setGasTime(String gasTime) {
- this.gasTime = gasTime;
- }
-
- public String getH2s() {
- return h2s;
- }
-
- public void setH2s(String h2s) {
- this.h2s = h2s;
- }
-
- public String getHatCode() {
- return hatCode;
- }
-
- public void setHatCode(String hatCode) {
- this.hatCode = hatCode;
- }
-
- public String getHatId() {
- return hatId;
- }
-
- public void setHatId(String hatId) {
- this.hatId = hatId;
- }
-
- public String getHeartRate() {
- return heartRate;
- }
-
- public void setHeartRate(String heartRate) {
- this.heartRate = heartRate;
- }
-
- public String getLat() {
- return lat;
- }
-
- public void setLat(String lat) {
- this.lat = lat;
- }
-
- public String getLng() {
- return lng;
- }
-
- public void setLng(String lng) {
- this.lng = lng;
- }
-
- public String getLocation() {
- return location;
- }
-
- public void setLocation(String location) {
- this.location = location;
- }
-
- public String getO2() {
- return o2;
- }
-
- public void setO2(String o2) {
- this.o2 = o2;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getTime() {
- return time;
- }
-
- public void setTime(String time) {
- this.time = time;
- }
-
- public String getVastCode() {
- return vastCode;
- }
-
- public void setVastCode(String vastCode) {
- this.vastCode = vastCode;
- }
-
- public String getWorkerId() {
- return workerId;
- }
-
- public void setWorkerId(String workerId) {
- this.workerId = workerId;
- }
-
- public String getWorkerName() {
- return workerName;
- }
-
- public void setWorkerName(String workerName) {
- this.workerName = workerName;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
index 4d68464..f56e8a1 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
@@ -2,7 +2,15 @@
import okhttp3.MultipartBody
import okhttp3.RequestBody
-import retrofit2.http.*
+import retrofit2.http.Body
+import retrofit2.http.Field
+import retrofit2.http.FormUrlEncoded
+import retrofit2.http.GET
+import retrofit2.http.Header
+import retrofit2.http.Multipart
+import retrofit2.http.POST
+import retrofit2.http.Part
+import retrofit2.http.Query
interface RetrofitService {
/**
@@ -41,7 +49,7 @@
/**
* 实施中列表
*/
- @GET("/site/listPage")
+ @GET("/v3/site/listPage")
suspend fun getProjectListByPage(
@Header("token") token: String,
@Query("keywords") keywords: String,
@@ -53,19 +61,13 @@
/**
* 获取工作区域作业人员
*/
- @GET("/overview/workerList")
- suspend fun getWorkers(
+ @GET("/v3/overview/workerList")
+ suspend fun getWorkSiteWorkers(
@Header("token") token: String,
@Query("projectId") projectId: String
): String
/**
- * 获取四合一数据
- */
- @GET("/emergency/startCheckOxygen")
- suspend fun getAirCondition(@Header("token") token: String): String
-
- /**
* 上报每个大阶段场景
* */
@GET("/emergency/notifyStageFinished")
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
index ed19c9f..a813fb0 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
@@ -3,7 +3,7 @@
import android.util.Log
import com.casic.br.operationsite.test.util.AuthenticationHelper
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.Gson
+import com.casic.br.operationsite.test.util.RuntimeCache
import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.RetrofitFactory
@@ -11,14 +11,13 @@
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
-import okhttp3.RequestBody
+import okhttp3.RequestBody.Companion.asRequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import java.io.File
object RetrofitServiceManager {
private const val kTag = "RetrofitServiceManager"
- private val gson by lazy { Gson() }
private val api by lazy {
val httpConfig = SaveKeyValues.getValue(
@@ -67,27 +66,20 @@
/**
* 获取工作区域作业人员
*/
- suspend fun getWorkers(projectId: String): String {
- return api.getWorkers(AuthenticationHelper.token!!, projectId)
+ suspend fun getWorkSiteWorkers(): String {
+ return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId)
}
/**
* 上传图片
*/
suspend fun uploadImage(image: File): String {
- val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val requestBody = image.asRequestBody("image/png".toMediaTypeOrNull())
val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
return api.uploadImage(AuthenticationHelper.token!!, imagePart)
}
/**
- * 获取四合一数据
- */
- suspend fun getAirCondition(): String {
- return api.getAirCondition(AuthenticationHelper.token!!)
- }
-
- /**
* 上报每个大阶段场景
*/
suspend fun notifyStageFinished(operationId: String?, stage: String): String {
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
new file mode 100644
index 0000000..337aaf1
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
@@ -0,0 +1,125 @@
+package com.casic.br.operationsite.test.service
+
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.app.Service
+import android.content.Intent
+import android.os.Handler
+import android.os.IBinder
+import android.os.Message
+import android.util.Log
+import androidx.core.app.NotificationCompat
+import com.casic.br.operationsite.test.R
+import com.casic.br.operationsite.test.extensions.convert
+import com.casic.br.operationsite.test.util.LocaleConstant
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener
+import com.pengxh.kt.lite.utils.socket.tcp.TcpClient
+
+class SocketConnectionService : Service(), OnTcpConnectStateListener, Handler.Callback {
+
+ companion object {
+ var weakReferenceHandler: WeakReferenceHandler? = null
+ }
+
+ override fun handleMessage(msg: Message): Boolean {
+ if (!tcpClient.isRunning()) {
+ "数据通讯服务断开连接,指令发送失败".show(this)
+ return true
+ }
+
+ when (msg.what) {
+ LocaleConstant.COMMAND_TEST_CODE -> {
+ val commandStr = msg.obj as String
+ tcpClient.sendMessage(commandStr.convert())
+ }
+
+ LocaleConstant.GAS_ALARM_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.GAS_ALARM_COMMAND)
+ }
+
+ LocaleConstant.CONFIRM_AIR_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.CONFIRM_AIR_COMMAND)
+ }
+
+ LocaleConstant.START_VIDEO_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.START_VIDEO_COMMAND)
+ }
+ }
+ return true
+ }
+
+ private val kTag = "SocketService"
+ private val notificationId = 1
+ private val tcpClient by lazy { TcpClient(this) }
+ private val notificationManager by lazy { getSystemService(NOTIFICATION_SERVICE) as NotificationManager }
+ private var notificationBuilder: NotificationCompat.Builder? = null
+
+ override fun onBind(intent: Intent?): IBinder? {
+ return null
+ }
+
+ override fun onCreate() {
+ super.onCreate()
+ val name = "${resources.getString(R.string.app_name)}前台服务"
+ val channel = NotificationChannel(
+ "socket_connection_service_channel", name, NotificationManager.IMPORTANCE_HIGH
+ )
+ channel.description = "Channel for socket connection service"
+ notificationManager.createNotificationChannel(channel)
+ notificationBuilder = NotificationCompat.Builder(this, "socket_connection_service_channel")
+ .setSmallIcon(R.mipmap.ic_launcher)
+ .setContentTitle("数据通讯服务连接中...")
+ .setContentText("为保证程序正常运行,请勿移除此通知")
+ .setPriority(NotificationCompat.PRIORITY_HIGH) // 设置通知优先级
+ .setOngoing(true)
+ .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
+
+ val notification = notificationBuilder?.build()
+ startForeground(notificationId, notification)
+ }
+
+ override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
+ if (weakReferenceHandler == null) {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+ tcpClient.start(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
+ Log.d(kTag, "onStartCommand: SocketConnectionService")
+ return START_STICKY
+ }
+
+ override fun onConnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务已连接")
+ "数据通讯服务连接成功,现在可以下发指令了".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDisconnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务断开连接")
+ "数据通讯服务断开连接".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onConnectFailed() {
+ notificationBuilder?.setContentTitle("数据通讯服务连接出错,开始重连")
+ "数据通讯服务连接出错,开始重连".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ tcpClient.stop(false)
+ stopForeground(STOP_FOREGROUND_REMOVE)
+ Log.d(kTag, "onDestroy: SocketConnectionService")
+ }
+
+ override fun onMessageReceived(bytes: ByteArray?) {
+ if (bytes == null) {
+ return
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
deleted file mode 100644
index bc3c0ca..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.casic.br.operationsite.test.service
-
-import android.app.Service
-import android.content.Intent
-import android.os.Handler
-import android.os.IBinder
-import android.os.Message
-import com.casic.br.operationsite.test.util.LocaleConstant
-import com.casic.br.operationsite.test.util.tcp.SocketManager
-import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.WeakReferenceHandler
-
-class TcpMessageService : Service(), Handler.Callback {
-
- companion object {
- lateinit var weakReferenceHandler: WeakReferenceHandler
- }
-
- private val kTag = "TcpMessageService"
-
- override fun onBind(intent: Intent?): IBinder? {
- return null
- }
-
- override fun onCreate() {
- super.onCreate()
- weakReferenceHandler = WeakReferenceHandler(this)
- SocketManager.get.connectTcpServer(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
- }
-
- override fun onDestroy() {
- super.onDestroy()
- SocketManager.get.close()
- }
-
- override fun handleMessage(msg: Message): Boolean {
- if (msg.what == LocaleConstant.TCP_CONNECTED_CODE) {
- "指令连接成功,现在可以下发指令了".show(this)
- } else {
- "指令连接断开,开始自动重连".show(this)
- }
- return true
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt b/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt
deleted file mode 100644
index 56bc436..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.casic.br.operationsite.test.util
-
-import android.content.Context
-import android.widget.ImageView
-import com.bumptech.glide.Glide
-import com.bumptech.glide.load.resource.bitmap.CenterCrop
-import com.bumptech.glide.load.resource.bitmap.RoundedCorners
-import com.bumptech.glide.request.RequestOptions
-import com.casic.br.operationsite.test.R
-import com.luck.picture.lib.engine.ImageEngine
-import com.luck.picture.lib.utils.ActivityCompatHelper
-
-
-class GlideLoadEngine private constructor() : ImageEngine {
-
- companion object {
- val get: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
- GlideLoadEngine()
- }
- }
-
- override fun loadImage(context: Context, url: String, imageView: ImageView) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context).load(url).into(imageView);
- }
-
- override fun loadImage(
- context: Context,
- imageView: ImageView,
- url: String,
- maxWidth: Int,
- maxHeight: Int
- ) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context)
- .load(url)
- .override(maxWidth, maxHeight)
- .into(imageView)
- }
-
- override fun loadAlbumCover(context: Context, url: String, imageView: ImageView) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context)
- .asBitmap()
- .load(url)
- .override(180, 180)
- .sizeMultiplier(0.5f)
- .transform(CenterCrop(), RoundedCorners(8))
- .placeholder(R.drawable.ps_image_placeholder)
- .into(imageView)
- }
-
- override fun pauseRequests(context: Context?) {
- context?.let { Glide.with(it).pauseRequests() }
- }
-
- override fun resumeRequests(context: Context?) {
- context?.let { Glide.with(it).resumeRequests() }
- }
-
- override fun loadGridImage(context: Context, url: String, imageView: ImageView) {
- Glide.with(context)
- .load(url)
- .apply(RequestOptions().placeholder(R.drawable.ps_image_placeholder))
- .into(imageView)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt b/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
index ec57ebc..92cf048 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
@@ -1,13 +1,13 @@
package com.casic.br.operationsite.test.util
import android.util.Log
-import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.LifecycleOwner
-import androidx.lifecycle.LifecycleRegistry
-import androidx.lifecycle.lifecycleScope
import com.google.gson.Gson
import com.google.gson.JsonObject
+import com.pengxh.kt.lite.utils.LiteKitConstant
+import kotlinx.coroutines.CoroutineExceptionHandler
+import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import okhttp3.MediaType.Companion.toMediaType
@@ -21,10 +21,9 @@
/**
* Service里面的Http请求
* */
-class HttpRequestHelper(builder: Builder) : LifecycleOwner {
+class HttpRequestHelper(builder: Builder) {
private val kTag = "HttpRequestHelper"
- private val registry = LifecycleRegistry(this)
private val gson by lazy { Gson() }
class Builder {
@@ -68,6 +67,9 @@
}
fun build(): HttpRequestHelper {
+ if (!::key.isInitialized || !::value.isInitialized || !::url.isInitialized || !::httpRequestCallback.isInitialized) {
+ throw IllegalStateException("All properties must be initialized before building.")
+ }
return HttpRequestHelper(this)
}
}
@@ -81,7 +83,7 @@
/**
* 发起网络请求
* */
- fun start() {
+ fun start(timeoutSeconds: Long = LiteKitConstant.HTTP_TIMEOUT) {
val param = JsonObject()
map.forEach {
param.add(it.key, gson.toJsonTree(it.value))
@@ -91,30 +93,43 @@
)
//构建Request
val request = Request.Builder().addHeader(key, value).post(requestBody).url(url).build()
- lifecycleScope.launch(Dispatchers.IO) {
- val interceptor = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
- override fun log(message: String) {
- Log.d(kTag, ">>>>> $message")
- }
- })
- interceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
- val client = OkHttpClient.Builder()
- .addInterceptor(interceptor)
- .readTimeout(10, TimeUnit.SECONDS)
- .connectTimeout(30, TimeUnit.SECONDS)
- .writeTimeout(10, TimeUnit.SECONDS)
- .build()
+
+ val logLevel = HttpLoggingInterceptor.Level.NONE
+ val interceptor = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
+ override fun log(message: String) {
+ Log.d(kTag, ">>>>> $message")
+ }
+ }).setLevel(logLevel)
+
+ val client = OkHttpClient.Builder()
+ .addInterceptor(interceptor)
+ .readTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .connectTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .writeTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .build()
+
+ val job = SupervisorJob()
+ val scope = CoroutineScope(Dispatchers.Main + job)
+ scope.launch(Dispatchers.Main + CoroutineExceptionHandler { _, throwable ->
+ callback.onFailure(throwable)
+ }) {
try {
- val response = client.newCall(request).execute()
- response.body?.apply {
- withContext(Dispatchers.Main) {
- callback.onSuccess(string())
+ val response = withContext(Dispatchers.IO) {
+ client.newCall(request).execute()
+ }
+ if (response.isSuccessful) {
+ response.body?.string()?.let {
+ callback.onSuccess(it)
+ } ?: run {
+ callback.onFailure(IOException("Response body is null"))
}
+ } else {
+ callback.onFailure(IOException("Unexpected code ${response.code}"))
}
- } catch (e: IOException) {
- withContext(Dispatchers.Main) {
- callback.onFailure(e)
- }
+ } catch (e: Exception) {
+ callback.onFailure(e)
+ } finally {
+ job.cancel()
}
}
}
@@ -124,8 +139,4 @@
fun onFailure(throwable: Throwable)
}
-
- override fun getLifecycle(): Lifecycle {
- return registry
- }
}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ede224a..bb07476 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
@@ -37,7 +40,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
@@ -49,14 +52,14 @@
-
-
-
+
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
index 90aa34e..7a487d2 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
@@ -3,32 +3,27 @@
import android.content.Context
import com.casic.br.operationsite.test.callback.OnImageCompressListener
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.JsonParser
+import com.google.gson.Gson
+import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.createCompressImageDir
import com.pengxh.kt.lite.utils.SaveKeyValues
import top.zibin.luban.Luban
import top.zibin.luban.OnCompressListener
import java.io.File
+val gson by lazy { Gson() }
+
/**
* String扩展方法
*/
-fun String.getResponseCode(): Int {
+fun String.getResponseHeader(): Pair {
if (this.isBlank()) {
- return 404
+ return Pair(404, "Invalid Response")
}
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("code").asInt
-}
-
-fun String.getResponseMessage(): String {
- if (this.isBlank()) {
- return ""
- }
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("message").asString
+ val jsonObject = gson.fromJson(this, JsonObject::class.java)
+ val code = jsonObject.get("code").asInt
+ val message = jsonObject.get("message").asString
+ return Pair(code, message)
}
//拼接图片地址
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
deleted file mode 100644
index 758b3bd..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class AirConditionModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private double o2;
- private int h2s;
- private int co;
- private int ch4;
-
- public double getO2() {
- return o2;
- }
-
- public void setO2(double o2) {
- this.o2 = o2;
- }
-
- public int getH2s() {
- return h2s;
- }
-
- public void setH2s(int h2s) {
- this.h2s = h2s;
- }
-
- public int getCo() {
- return co;
- }
-
- public void setCo(int co) {
- this.co = co;
- }
-
- public int getCh4() {
- return ch4;
- }
-
- public void setCh4(int ch4) {
- this.ch4 = ch4;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
index f0a8f63..70228ef 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
@@ -65,13 +65,26 @@
}
public static class RowsModel {
+ private String borderPointCount;
private String createTime;
+ private String deptFullName;
+ private String deptId;
+ private String deptName;
+ private List> deviceList;
+ private String finishTime;
+ private String groupDeviceCode;
+ private String groupDeviceId;
private String id;
private String imageUrl;
+ private String locationTime;
+ private List pointLocation;
+ private String pointLocationJson;
private String projectState;
private String projectStateName;
private String registerTime;
+ private String startTime;
private String updateTime;
+ private String valid;
private String workPerson;
private String workPersonDeptId;
private String workPersonDeptName;
@@ -80,6 +93,16 @@
private String workRoad;
private String workSiteDesc;
private String workTitle;
+ private String workType;
+ private String workTypeName;
+
+ public String getBorderPointCount() {
+ return borderPointCount;
+ }
+
+ public void setBorderPointCount(String borderPointCount) {
+ this.borderPointCount = borderPointCount;
+ }
public String getCreateTime() {
return createTime;
@@ -89,6 +112,62 @@
this.createTime = createTime;
}
+ public String getDeptFullName() {
+ return deptFullName;
+ }
+
+ public void setDeptFullName(String deptFullName) {
+ this.deptFullName = deptFullName;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public List> getDeviceList() {
+ return deviceList;
+ }
+
+ public void setDeviceList(List> deviceList) {
+ this.deviceList = deviceList;
+ }
+
+ public String getFinishTime() {
+ return finishTime;
+ }
+
+ public void setFinishTime(String finishTime) {
+ this.finishTime = finishTime;
+ }
+
+ public String getGroupDeviceCode() {
+ return groupDeviceCode;
+ }
+
+ public void setGroupDeviceCode(String groupDeviceCode) {
+ this.groupDeviceCode = groupDeviceCode;
+ }
+
+ public String getGroupDeviceId() {
+ return groupDeviceId;
+ }
+
+ public void setGroupDeviceId(String groupDeviceId) {
+ this.groupDeviceId = groupDeviceId;
+ }
+
public String getId() {
return id;
}
@@ -105,6 +184,30 @@
this.imageUrl = imageUrl;
}
+ public String getLocationTime() {
+ return locationTime;
+ }
+
+ public void setLocationTime(String locationTime) {
+ this.locationTime = locationTime;
+ }
+
+ public List getPointLocation() {
+ return pointLocation;
+ }
+
+ public void setPointLocation(List pointLocation) {
+ this.pointLocation = pointLocation;
+ }
+
+ public String getPointLocationJson() {
+ return pointLocationJson;
+ }
+
+ public void setPointLocationJson(String pointLocationJson) {
+ this.pointLocationJson = pointLocationJson;
+ }
+
public String getProjectState() {
return projectState;
}
@@ -129,6 +232,14 @@
this.registerTime = registerTime;
}
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
public String getUpdateTime() {
return updateTime;
}
@@ -137,6 +248,14 @@
this.updateTime = updateTime;
}
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
public String getWorkPerson() {
return workPerson;
}
@@ -200,6 +319,43 @@
public void setWorkTitle(String workTitle) {
this.workTitle = workTitle;
}
+
+ public String getWorkType() {
+ return workType;
+ }
+
+ public void setWorkType(String workType) {
+ this.workType = workType;
+ }
+
+ public String getWorkTypeName() {
+ return workTypeName;
+ }
+
+ public void setWorkTypeName(String workTypeName) {
+ this.workTypeName = workTypeName;
+ }
+
+ public static class PointLocationModel {
+ private String lng;
+ private String lat;
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
new file mode 100644
index 0000000..5d87443
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
@@ -0,0 +1,487 @@
+package com.casic.br.operationsite.test.model;
+
+import java.util.List;
+
+public class WorkSiteWorkerModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataModel {
+ private boolean alarmFlag;
+ private String createTime;
+ private String deptId;
+ private String deptName;
+ private String enterReason;
+ private String gender;
+ private String genderName;
+ private HealthModel health;
+ private String id;
+ private String idCardNumber;
+ private String isRegister;
+ private LocationModel location;
+ private MultiGasModel multiGas;
+ private String ownerShip;
+ private String phoneNumber;
+ private String registerTime;
+ private String status;
+ private String statusName;
+ private String workerAvatar;
+ private String workerName;
+ private String workerType;
+ private String workerTypeName;
+
+ public boolean isAlarmFlag() {
+ return alarmFlag;
+ }
+
+ public void setAlarmFlag(boolean alarmFlag) {
+ this.alarmFlag = alarmFlag;
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public String getEnterReason() {
+ return enterReason;
+ }
+
+ public void setEnterReason(String enterReason) {
+ this.enterReason = enterReason;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+ public String getGenderName() {
+ return genderName;
+ }
+
+ public void setGenderName(String genderName) {
+ this.genderName = genderName;
+ }
+
+ public HealthModel getHealth() {
+ return health;
+ }
+
+ public void setHealth(HealthModel health) {
+ this.health = health;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIdCardNumber() {
+ return idCardNumber;
+ }
+
+ public void setIdCardNumber(String idCardNumber) {
+ this.idCardNumber = idCardNumber;
+ }
+
+ public String getIsRegister() {
+ return isRegister;
+ }
+
+ public void setIsRegister(String isRegister) {
+ this.isRegister = isRegister;
+ }
+
+ public LocationModel getLocation() {
+ return location;
+ }
+
+ public void setLocation(LocationModel location) {
+ this.location = location;
+ }
+
+ public MultiGasModel getMultiGas() {
+ return multiGas;
+ }
+
+ public void setMultiGas(MultiGasModel multiGas) {
+ this.multiGas = multiGas;
+ }
+
+ public String getOwnerShip() {
+ return ownerShip;
+ }
+
+ public void setOwnerShip(String ownerShip) {
+ this.ownerShip = ownerShip;
+ }
+
+ public String getPhoneNumber() {
+ return phoneNumber;
+ }
+
+ public void setPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ }
+
+ public String getRegisterTime() {
+ return registerTime;
+ }
+
+ public void setRegisterTime(String registerTime) {
+ this.registerTime = registerTime;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getStatusName() {
+ return statusName;
+ }
+
+ public void setStatusName(String statusName) {
+ this.statusName = statusName;
+ }
+
+ public String getWorkerAvatar() {
+ return workerAvatar;
+ }
+
+ public void setWorkerAvatar(String workerAvatar) {
+ this.workerAvatar = workerAvatar;
+ }
+
+ public String getWorkerName() {
+ return workerName;
+ }
+
+ public void setWorkerName(String workerName) {
+ this.workerName = workerName;
+ }
+
+ public String getWorkerType() {
+ return workerType;
+ }
+
+ public void setWorkerType(String workerType) {
+ this.workerType = workerType;
+ }
+
+ public String getWorkerTypeName() {
+ return workerTypeName;
+ }
+
+ public void setWorkerTypeName(String workerTypeName) {
+ this.workerTypeName = workerTypeName;
+ }
+
+ public static class HealthModel {
+ private String bloodOxygen;
+ private String deviceCode;
+ private String deviceId;
+ private String groupCode;
+ private String heartRate;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getBloodOxygen() {
+ return bloodOxygen;
+ }
+
+ public void setBloodOxygen(String bloodOxygen) {
+ this.bloodOxygen = bloodOxygen;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getHeartRate() {
+ return heartRate;
+ }
+
+ public void setHeartRate(String heartRate) {
+ this.heartRate = heartRate;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class LocationModel {
+ private String deviceCode;
+ private String deviceId;
+ private String gdLat;
+ private String gdLng;
+ private String groupCode;
+ private String lat;
+ private String lng;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGdLat() {
+ return gdLat;
+ }
+
+ public void setGdLat(String gdLat) {
+ this.gdLat = gdLat;
+ }
+
+ public String getGdLng() {
+ return gdLng;
+ }
+
+ public void setGdLng(String gdLng) {
+ this.gdLng = gdLng;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class MultiGasModel {
+ private String coValue;
+ private String deviceCode;
+ private String deviceId;
+ private String exValue;
+ private String groupCode;
+ private String h2sValue;
+ private String o2Value;
+ private String projectId;
+ private String projectName;
+ private String uploadTimestamp;
+
+ public String getCoValue() {
+ return coValue;
+ }
+
+ public void setCoValue(String coValue) {
+ this.coValue = coValue;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getExValue() {
+ return exValue;
+ }
+
+ public void setExValue(String exValue) {
+ this.exValue = exValue;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getH2sValue() {
+ return h2sValue;
+ }
+
+ public void setH2sValue(String h2sValue) {
+ this.h2sValue = h2sValue;
+ }
+
+ public String getO2Value() {
+ return o2Value;
+ }
+
+ public void setO2Value(String o2Value) {
+ this.o2Value = o2Value;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
deleted file mode 100644
index e32edab..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
+++ /dev/null
@@ -1,226 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class WorkerModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private boolean alarmFlag;
- private String bloodOxygen;
- private String braceletCode;
- private String cell;
- private String co;
- private String gas;
- private String gasTime;
- private String h2s;
- private String hatCode;
- private String hatId;
- private String heartRate;
- private String lat;
- private String lng;
- private String location;
- private String o2;
- private String signal;
- private String time;
- private String vastCode;
- private String workerId;
- private String workerName;
-
- public boolean isAlarmFlag() {
- return alarmFlag;
- }
-
- public void setAlarmFlag(boolean alarmFlag) {
- this.alarmFlag = alarmFlag;
- }
-
- public String getBloodOxygen() {
- return bloodOxygen;
- }
-
- public void setBloodOxygen(String bloodOxygen) {
- this.bloodOxygen = bloodOxygen;
- }
-
- public String getBraceletCode() {
- return braceletCode;
- }
-
- public void setBraceletCode(String braceletCode) {
- this.braceletCode = braceletCode;
- }
-
- public String getCell() {
- return cell;
- }
-
- public void setCell(String cell) {
- this.cell = cell;
- }
-
- public String getCo() {
- return co;
- }
-
- public void setCo(String co) {
- this.co = co;
- }
-
- public String getGas() {
- return gas;
- }
-
- public void setGas(String gas) {
- this.gas = gas;
- }
-
- public String getGasTime() {
- return gasTime;
- }
-
- public void setGasTime(String gasTime) {
- this.gasTime = gasTime;
- }
-
- public String getH2s() {
- return h2s;
- }
-
- public void setH2s(String h2s) {
- this.h2s = h2s;
- }
-
- public String getHatCode() {
- return hatCode;
- }
-
- public void setHatCode(String hatCode) {
- this.hatCode = hatCode;
- }
-
- public String getHatId() {
- return hatId;
- }
-
- public void setHatId(String hatId) {
- this.hatId = hatId;
- }
-
- public String getHeartRate() {
- return heartRate;
- }
-
- public void setHeartRate(String heartRate) {
- this.heartRate = heartRate;
- }
-
- public String getLat() {
- return lat;
- }
-
- public void setLat(String lat) {
- this.lat = lat;
- }
-
- public String getLng() {
- return lng;
- }
-
- public void setLng(String lng) {
- this.lng = lng;
- }
-
- public String getLocation() {
- return location;
- }
-
- public void setLocation(String location) {
- this.location = location;
- }
-
- public String getO2() {
- return o2;
- }
-
- public void setO2(String o2) {
- this.o2 = o2;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getTime() {
- return time;
- }
-
- public void setTime(String time) {
- this.time = time;
- }
-
- public String getVastCode() {
- return vastCode;
- }
-
- public void setVastCode(String vastCode) {
- this.vastCode = vastCode;
- }
-
- public String getWorkerId() {
- return workerId;
- }
-
- public void setWorkerId(String workerId) {
- this.workerId = workerId;
- }
-
- public String getWorkerName() {
- return workerName;
- }
-
- public void setWorkerName(String workerName) {
- this.workerName = workerName;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
index 4d68464..f56e8a1 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
@@ -2,7 +2,15 @@
import okhttp3.MultipartBody
import okhttp3.RequestBody
-import retrofit2.http.*
+import retrofit2.http.Body
+import retrofit2.http.Field
+import retrofit2.http.FormUrlEncoded
+import retrofit2.http.GET
+import retrofit2.http.Header
+import retrofit2.http.Multipart
+import retrofit2.http.POST
+import retrofit2.http.Part
+import retrofit2.http.Query
interface RetrofitService {
/**
@@ -41,7 +49,7 @@
/**
* 实施中列表
*/
- @GET("/site/listPage")
+ @GET("/v3/site/listPage")
suspend fun getProjectListByPage(
@Header("token") token: String,
@Query("keywords") keywords: String,
@@ -53,19 +61,13 @@
/**
* 获取工作区域作业人员
*/
- @GET("/overview/workerList")
- suspend fun getWorkers(
+ @GET("/v3/overview/workerList")
+ suspend fun getWorkSiteWorkers(
@Header("token") token: String,
@Query("projectId") projectId: String
): String
/**
- * 获取四合一数据
- */
- @GET("/emergency/startCheckOxygen")
- suspend fun getAirCondition(@Header("token") token: String): String
-
- /**
* 上报每个大阶段场景
* */
@GET("/emergency/notifyStageFinished")
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
index ed19c9f..a813fb0 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
@@ -3,7 +3,7 @@
import android.util.Log
import com.casic.br.operationsite.test.util.AuthenticationHelper
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.Gson
+import com.casic.br.operationsite.test.util.RuntimeCache
import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.RetrofitFactory
@@ -11,14 +11,13 @@
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
-import okhttp3.RequestBody
+import okhttp3.RequestBody.Companion.asRequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import java.io.File
object RetrofitServiceManager {
private const val kTag = "RetrofitServiceManager"
- private val gson by lazy { Gson() }
private val api by lazy {
val httpConfig = SaveKeyValues.getValue(
@@ -67,27 +66,20 @@
/**
* 获取工作区域作业人员
*/
- suspend fun getWorkers(projectId: String): String {
- return api.getWorkers(AuthenticationHelper.token!!, projectId)
+ suspend fun getWorkSiteWorkers(): String {
+ return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId)
}
/**
* 上传图片
*/
suspend fun uploadImage(image: File): String {
- val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val requestBody = image.asRequestBody("image/png".toMediaTypeOrNull())
val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
return api.uploadImage(AuthenticationHelper.token!!, imagePart)
}
/**
- * 获取四合一数据
- */
- suspend fun getAirCondition(): String {
- return api.getAirCondition(AuthenticationHelper.token!!)
- }
-
- /**
* 上报每个大阶段场景
*/
suspend fun notifyStageFinished(operationId: String?, stage: String): String {
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
new file mode 100644
index 0000000..337aaf1
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
@@ -0,0 +1,125 @@
+package com.casic.br.operationsite.test.service
+
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.app.Service
+import android.content.Intent
+import android.os.Handler
+import android.os.IBinder
+import android.os.Message
+import android.util.Log
+import androidx.core.app.NotificationCompat
+import com.casic.br.operationsite.test.R
+import com.casic.br.operationsite.test.extensions.convert
+import com.casic.br.operationsite.test.util.LocaleConstant
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener
+import com.pengxh.kt.lite.utils.socket.tcp.TcpClient
+
+class SocketConnectionService : Service(), OnTcpConnectStateListener, Handler.Callback {
+
+ companion object {
+ var weakReferenceHandler: WeakReferenceHandler? = null
+ }
+
+ override fun handleMessage(msg: Message): Boolean {
+ if (!tcpClient.isRunning()) {
+ "数据通讯服务断开连接,指令发送失败".show(this)
+ return true
+ }
+
+ when (msg.what) {
+ LocaleConstant.COMMAND_TEST_CODE -> {
+ val commandStr = msg.obj as String
+ tcpClient.sendMessage(commandStr.convert())
+ }
+
+ LocaleConstant.GAS_ALARM_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.GAS_ALARM_COMMAND)
+ }
+
+ LocaleConstant.CONFIRM_AIR_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.CONFIRM_AIR_COMMAND)
+ }
+
+ LocaleConstant.START_VIDEO_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.START_VIDEO_COMMAND)
+ }
+ }
+ return true
+ }
+
+ private val kTag = "SocketService"
+ private val notificationId = 1
+ private val tcpClient by lazy { TcpClient(this) }
+ private val notificationManager by lazy { getSystemService(NOTIFICATION_SERVICE) as NotificationManager }
+ private var notificationBuilder: NotificationCompat.Builder? = null
+
+ override fun onBind(intent: Intent?): IBinder? {
+ return null
+ }
+
+ override fun onCreate() {
+ super.onCreate()
+ val name = "${resources.getString(R.string.app_name)}前台服务"
+ val channel = NotificationChannel(
+ "socket_connection_service_channel", name, NotificationManager.IMPORTANCE_HIGH
+ )
+ channel.description = "Channel for socket connection service"
+ notificationManager.createNotificationChannel(channel)
+ notificationBuilder = NotificationCompat.Builder(this, "socket_connection_service_channel")
+ .setSmallIcon(R.mipmap.ic_launcher)
+ .setContentTitle("数据通讯服务连接中...")
+ .setContentText("为保证程序正常运行,请勿移除此通知")
+ .setPriority(NotificationCompat.PRIORITY_HIGH) // 设置通知优先级
+ .setOngoing(true)
+ .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
+
+ val notification = notificationBuilder?.build()
+ startForeground(notificationId, notification)
+ }
+
+ override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
+ if (weakReferenceHandler == null) {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+ tcpClient.start(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
+ Log.d(kTag, "onStartCommand: SocketConnectionService")
+ return START_STICKY
+ }
+
+ override fun onConnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务已连接")
+ "数据通讯服务连接成功,现在可以下发指令了".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDisconnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务断开连接")
+ "数据通讯服务断开连接".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onConnectFailed() {
+ notificationBuilder?.setContentTitle("数据通讯服务连接出错,开始重连")
+ "数据通讯服务连接出错,开始重连".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ tcpClient.stop(false)
+ stopForeground(STOP_FOREGROUND_REMOVE)
+ Log.d(kTag, "onDestroy: SocketConnectionService")
+ }
+
+ override fun onMessageReceived(bytes: ByteArray?) {
+ if (bytes == null) {
+ return
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
deleted file mode 100644
index bc3c0ca..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.casic.br.operationsite.test.service
-
-import android.app.Service
-import android.content.Intent
-import android.os.Handler
-import android.os.IBinder
-import android.os.Message
-import com.casic.br.operationsite.test.util.LocaleConstant
-import com.casic.br.operationsite.test.util.tcp.SocketManager
-import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.WeakReferenceHandler
-
-class TcpMessageService : Service(), Handler.Callback {
-
- companion object {
- lateinit var weakReferenceHandler: WeakReferenceHandler
- }
-
- private val kTag = "TcpMessageService"
-
- override fun onBind(intent: Intent?): IBinder? {
- return null
- }
-
- override fun onCreate() {
- super.onCreate()
- weakReferenceHandler = WeakReferenceHandler(this)
- SocketManager.get.connectTcpServer(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
- }
-
- override fun onDestroy() {
- super.onDestroy()
- SocketManager.get.close()
- }
-
- override fun handleMessage(msg: Message): Boolean {
- if (msg.what == LocaleConstant.TCP_CONNECTED_CODE) {
- "指令连接成功,现在可以下发指令了".show(this)
- } else {
- "指令连接断开,开始自动重连".show(this)
- }
- return true
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt b/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt
deleted file mode 100644
index 56bc436..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.casic.br.operationsite.test.util
-
-import android.content.Context
-import android.widget.ImageView
-import com.bumptech.glide.Glide
-import com.bumptech.glide.load.resource.bitmap.CenterCrop
-import com.bumptech.glide.load.resource.bitmap.RoundedCorners
-import com.bumptech.glide.request.RequestOptions
-import com.casic.br.operationsite.test.R
-import com.luck.picture.lib.engine.ImageEngine
-import com.luck.picture.lib.utils.ActivityCompatHelper
-
-
-class GlideLoadEngine private constructor() : ImageEngine {
-
- companion object {
- val get: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
- GlideLoadEngine()
- }
- }
-
- override fun loadImage(context: Context, url: String, imageView: ImageView) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context).load(url).into(imageView);
- }
-
- override fun loadImage(
- context: Context,
- imageView: ImageView,
- url: String,
- maxWidth: Int,
- maxHeight: Int
- ) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context)
- .load(url)
- .override(maxWidth, maxHeight)
- .into(imageView)
- }
-
- override fun loadAlbumCover(context: Context, url: String, imageView: ImageView) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context)
- .asBitmap()
- .load(url)
- .override(180, 180)
- .sizeMultiplier(0.5f)
- .transform(CenterCrop(), RoundedCorners(8))
- .placeholder(R.drawable.ps_image_placeholder)
- .into(imageView)
- }
-
- override fun pauseRequests(context: Context?) {
- context?.let { Glide.with(it).pauseRequests() }
- }
-
- override fun resumeRequests(context: Context?) {
- context?.let { Glide.with(it).resumeRequests() }
- }
-
- override fun loadGridImage(context: Context, url: String, imageView: ImageView) {
- Glide.with(context)
- .load(url)
- .apply(RequestOptions().placeholder(R.drawable.ps_image_placeholder))
- .into(imageView)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt b/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
index ec57ebc..92cf048 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
@@ -1,13 +1,13 @@
package com.casic.br.operationsite.test.util
import android.util.Log
-import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.LifecycleOwner
-import androidx.lifecycle.LifecycleRegistry
-import androidx.lifecycle.lifecycleScope
import com.google.gson.Gson
import com.google.gson.JsonObject
+import com.pengxh.kt.lite.utils.LiteKitConstant
+import kotlinx.coroutines.CoroutineExceptionHandler
+import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import okhttp3.MediaType.Companion.toMediaType
@@ -21,10 +21,9 @@
/**
* Service里面的Http请求
* */
-class HttpRequestHelper(builder: Builder) : LifecycleOwner {
+class HttpRequestHelper(builder: Builder) {
private val kTag = "HttpRequestHelper"
- private val registry = LifecycleRegistry(this)
private val gson by lazy { Gson() }
class Builder {
@@ -68,6 +67,9 @@
}
fun build(): HttpRequestHelper {
+ if (!::key.isInitialized || !::value.isInitialized || !::url.isInitialized || !::httpRequestCallback.isInitialized) {
+ throw IllegalStateException("All properties must be initialized before building.")
+ }
return HttpRequestHelper(this)
}
}
@@ -81,7 +83,7 @@
/**
* 发起网络请求
* */
- fun start() {
+ fun start(timeoutSeconds: Long = LiteKitConstant.HTTP_TIMEOUT) {
val param = JsonObject()
map.forEach {
param.add(it.key, gson.toJsonTree(it.value))
@@ -91,30 +93,43 @@
)
//构建Request
val request = Request.Builder().addHeader(key, value).post(requestBody).url(url).build()
- lifecycleScope.launch(Dispatchers.IO) {
- val interceptor = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
- override fun log(message: String) {
- Log.d(kTag, ">>>>> $message")
- }
- })
- interceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
- val client = OkHttpClient.Builder()
- .addInterceptor(interceptor)
- .readTimeout(10, TimeUnit.SECONDS)
- .connectTimeout(30, TimeUnit.SECONDS)
- .writeTimeout(10, TimeUnit.SECONDS)
- .build()
+
+ val logLevel = HttpLoggingInterceptor.Level.NONE
+ val interceptor = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
+ override fun log(message: String) {
+ Log.d(kTag, ">>>>> $message")
+ }
+ }).setLevel(logLevel)
+
+ val client = OkHttpClient.Builder()
+ .addInterceptor(interceptor)
+ .readTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .connectTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .writeTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .build()
+
+ val job = SupervisorJob()
+ val scope = CoroutineScope(Dispatchers.Main + job)
+ scope.launch(Dispatchers.Main + CoroutineExceptionHandler { _, throwable ->
+ callback.onFailure(throwable)
+ }) {
try {
- val response = client.newCall(request).execute()
- response.body?.apply {
- withContext(Dispatchers.Main) {
- callback.onSuccess(string())
+ val response = withContext(Dispatchers.IO) {
+ client.newCall(request).execute()
+ }
+ if (response.isSuccessful) {
+ response.body?.string()?.let {
+ callback.onSuccess(it)
+ } ?: run {
+ callback.onFailure(IOException("Response body is null"))
}
+ } else {
+ callback.onFailure(IOException("Unexpected code ${response.code}"))
}
- } catch (e: IOException) {
- withContext(Dispatchers.Main) {
- callback.onFailure(e)
- }
+ } catch (e: Exception) {
+ callback.onFailure(e)
+ } finally {
+ job.cancel()
}
}
}
@@ -124,8 +139,4 @@
fun onFailure(throwable: Throwable)
}
-
- override fun getLifecycle(): Lifecycle {
- return registry
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
index 63ae413..68584bb 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
@@ -28,8 +28,8 @@
)
}
-// const val SERVER_BASE_URL = "http://192.168.9.99:8085"
- const val SERVER_BASE_URL = "http://139.198.19.235:22006"
+ const val SERVER_BASE_URL = "http://111.198.10.15:22006"
+// const val SERVER_BASE_URL = "http://139.198.19.235:22006"
const val IMAGE_BED_URL = "${SERVER_BASE_URL}/emergency/prepareUpload"
@@ -51,7 +51,8 @@
const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig"
const val ACCOUNT = "account"
const val PASSWORD = "password"
- const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_NAME_KEY = "USER_NAME_KEY"
+ const val USER_ID_KEY = "USER_ID_KEY"
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 10
@@ -61,8 +62,10 @@
const val WEBSOCKET_MESSAGE_CODE = 101
const val WEBSOCKET_DISCONNECTED_CODE = 102
- const val TCP_CONNECTED_CODE = 103
- const val TCP_DISCONNECTED_CODE = 104
+ const val COMMAND_TEST_CODE = 202506001
+ const val GAS_ALARM_CODE = 202506002
+ const val CONFIRM_AIR_COMMAND_CODE = 202506003
+ const val START_VIDEO_COMMAND_CODE = 202506004
//作业前检测
val CONFIRM_AIR_COMMAND =
@@ -73,6 +76,6 @@
byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x11, 0x00, 0xA5.toByte())
//甲烷阈值报警
- val GAS_COMMAND =
+ val GAS_ALARM_COMMAND =
byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x14, 0x00, 0xA8.toByte())
}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ede224a..bb07476 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
@@ -37,7 +40,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
@@ -49,14 +52,14 @@
-
-
-
+
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
index 90aa34e..7a487d2 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
@@ -3,32 +3,27 @@
import android.content.Context
import com.casic.br.operationsite.test.callback.OnImageCompressListener
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.JsonParser
+import com.google.gson.Gson
+import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.createCompressImageDir
import com.pengxh.kt.lite.utils.SaveKeyValues
import top.zibin.luban.Luban
import top.zibin.luban.OnCompressListener
import java.io.File
+val gson by lazy { Gson() }
+
/**
* String扩展方法
*/
-fun String.getResponseCode(): Int {
+fun String.getResponseHeader(): Pair {
if (this.isBlank()) {
- return 404
+ return Pair(404, "Invalid Response")
}
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("code").asInt
-}
-
-fun String.getResponseMessage(): String {
- if (this.isBlank()) {
- return ""
- }
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("message").asString
+ val jsonObject = gson.fromJson(this, JsonObject::class.java)
+ val code = jsonObject.get("code").asInt
+ val message = jsonObject.get("message").asString
+ return Pair(code, message)
}
//拼接图片地址
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
deleted file mode 100644
index 758b3bd..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class AirConditionModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private double o2;
- private int h2s;
- private int co;
- private int ch4;
-
- public double getO2() {
- return o2;
- }
-
- public void setO2(double o2) {
- this.o2 = o2;
- }
-
- public int getH2s() {
- return h2s;
- }
-
- public void setH2s(int h2s) {
- this.h2s = h2s;
- }
-
- public int getCo() {
- return co;
- }
-
- public void setCo(int co) {
- this.co = co;
- }
-
- public int getCh4() {
- return ch4;
- }
-
- public void setCh4(int ch4) {
- this.ch4 = ch4;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
index f0a8f63..70228ef 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
@@ -65,13 +65,26 @@
}
public static class RowsModel {
+ private String borderPointCount;
private String createTime;
+ private String deptFullName;
+ private String deptId;
+ private String deptName;
+ private List> deviceList;
+ private String finishTime;
+ private String groupDeviceCode;
+ private String groupDeviceId;
private String id;
private String imageUrl;
+ private String locationTime;
+ private List pointLocation;
+ private String pointLocationJson;
private String projectState;
private String projectStateName;
private String registerTime;
+ private String startTime;
private String updateTime;
+ private String valid;
private String workPerson;
private String workPersonDeptId;
private String workPersonDeptName;
@@ -80,6 +93,16 @@
private String workRoad;
private String workSiteDesc;
private String workTitle;
+ private String workType;
+ private String workTypeName;
+
+ public String getBorderPointCount() {
+ return borderPointCount;
+ }
+
+ public void setBorderPointCount(String borderPointCount) {
+ this.borderPointCount = borderPointCount;
+ }
public String getCreateTime() {
return createTime;
@@ -89,6 +112,62 @@
this.createTime = createTime;
}
+ public String getDeptFullName() {
+ return deptFullName;
+ }
+
+ public void setDeptFullName(String deptFullName) {
+ this.deptFullName = deptFullName;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public List> getDeviceList() {
+ return deviceList;
+ }
+
+ public void setDeviceList(List> deviceList) {
+ this.deviceList = deviceList;
+ }
+
+ public String getFinishTime() {
+ return finishTime;
+ }
+
+ public void setFinishTime(String finishTime) {
+ this.finishTime = finishTime;
+ }
+
+ public String getGroupDeviceCode() {
+ return groupDeviceCode;
+ }
+
+ public void setGroupDeviceCode(String groupDeviceCode) {
+ this.groupDeviceCode = groupDeviceCode;
+ }
+
+ public String getGroupDeviceId() {
+ return groupDeviceId;
+ }
+
+ public void setGroupDeviceId(String groupDeviceId) {
+ this.groupDeviceId = groupDeviceId;
+ }
+
public String getId() {
return id;
}
@@ -105,6 +184,30 @@
this.imageUrl = imageUrl;
}
+ public String getLocationTime() {
+ return locationTime;
+ }
+
+ public void setLocationTime(String locationTime) {
+ this.locationTime = locationTime;
+ }
+
+ public List getPointLocation() {
+ return pointLocation;
+ }
+
+ public void setPointLocation(List pointLocation) {
+ this.pointLocation = pointLocation;
+ }
+
+ public String getPointLocationJson() {
+ return pointLocationJson;
+ }
+
+ public void setPointLocationJson(String pointLocationJson) {
+ this.pointLocationJson = pointLocationJson;
+ }
+
public String getProjectState() {
return projectState;
}
@@ -129,6 +232,14 @@
this.registerTime = registerTime;
}
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
public String getUpdateTime() {
return updateTime;
}
@@ -137,6 +248,14 @@
this.updateTime = updateTime;
}
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
public String getWorkPerson() {
return workPerson;
}
@@ -200,6 +319,43 @@
public void setWorkTitle(String workTitle) {
this.workTitle = workTitle;
}
+
+ public String getWorkType() {
+ return workType;
+ }
+
+ public void setWorkType(String workType) {
+ this.workType = workType;
+ }
+
+ public String getWorkTypeName() {
+ return workTypeName;
+ }
+
+ public void setWorkTypeName(String workTypeName) {
+ this.workTypeName = workTypeName;
+ }
+
+ public static class PointLocationModel {
+ private String lng;
+ private String lat;
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
new file mode 100644
index 0000000..5d87443
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
@@ -0,0 +1,487 @@
+package com.casic.br.operationsite.test.model;
+
+import java.util.List;
+
+public class WorkSiteWorkerModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataModel {
+ private boolean alarmFlag;
+ private String createTime;
+ private String deptId;
+ private String deptName;
+ private String enterReason;
+ private String gender;
+ private String genderName;
+ private HealthModel health;
+ private String id;
+ private String idCardNumber;
+ private String isRegister;
+ private LocationModel location;
+ private MultiGasModel multiGas;
+ private String ownerShip;
+ private String phoneNumber;
+ private String registerTime;
+ private String status;
+ private String statusName;
+ private String workerAvatar;
+ private String workerName;
+ private String workerType;
+ private String workerTypeName;
+
+ public boolean isAlarmFlag() {
+ return alarmFlag;
+ }
+
+ public void setAlarmFlag(boolean alarmFlag) {
+ this.alarmFlag = alarmFlag;
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public String getEnterReason() {
+ return enterReason;
+ }
+
+ public void setEnterReason(String enterReason) {
+ this.enterReason = enterReason;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+ public String getGenderName() {
+ return genderName;
+ }
+
+ public void setGenderName(String genderName) {
+ this.genderName = genderName;
+ }
+
+ public HealthModel getHealth() {
+ return health;
+ }
+
+ public void setHealth(HealthModel health) {
+ this.health = health;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIdCardNumber() {
+ return idCardNumber;
+ }
+
+ public void setIdCardNumber(String idCardNumber) {
+ this.idCardNumber = idCardNumber;
+ }
+
+ public String getIsRegister() {
+ return isRegister;
+ }
+
+ public void setIsRegister(String isRegister) {
+ this.isRegister = isRegister;
+ }
+
+ public LocationModel getLocation() {
+ return location;
+ }
+
+ public void setLocation(LocationModel location) {
+ this.location = location;
+ }
+
+ public MultiGasModel getMultiGas() {
+ return multiGas;
+ }
+
+ public void setMultiGas(MultiGasModel multiGas) {
+ this.multiGas = multiGas;
+ }
+
+ public String getOwnerShip() {
+ return ownerShip;
+ }
+
+ public void setOwnerShip(String ownerShip) {
+ this.ownerShip = ownerShip;
+ }
+
+ public String getPhoneNumber() {
+ return phoneNumber;
+ }
+
+ public void setPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ }
+
+ public String getRegisterTime() {
+ return registerTime;
+ }
+
+ public void setRegisterTime(String registerTime) {
+ this.registerTime = registerTime;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getStatusName() {
+ return statusName;
+ }
+
+ public void setStatusName(String statusName) {
+ this.statusName = statusName;
+ }
+
+ public String getWorkerAvatar() {
+ return workerAvatar;
+ }
+
+ public void setWorkerAvatar(String workerAvatar) {
+ this.workerAvatar = workerAvatar;
+ }
+
+ public String getWorkerName() {
+ return workerName;
+ }
+
+ public void setWorkerName(String workerName) {
+ this.workerName = workerName;
+ }
+
+ public String getWorkerType() {
+ return workerType;
+ }
+
+ public void setWorkerType(String workerType) {
+ this.workerType = workerType;
+ }
+
+ public String getWorkerTypeName() {
+ return workerTypeName;
+ }
+
+ public void setWorkerTypeName(String workerTypeName) {
+ this.workerTypeName = workerTypeName;
+ }
+
+ public static class HealthModel {
+ private String bloodOxygen;
+ private String deviceCode;
+ private String deviceId;
+ private String groupCode;
+ private String heartRate;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getBloodOxygen() {
+ return bloodOxygen;
+ }
+
+ public void setBloodOxygen(String bloodOxygen) {
+ this.bloodOxygen = bloodOxygen;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getHeartRate() {
+ return heartRate;
+ }
+
+ public void setHeartRate(String heartRate) {
+ this.heartRate = heartRate;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class LocationModel {
+ private String deviceCode;
+ private String deviceId;
+ private String gdLat;
+ private String gdLng;
+ private String groupCode;
+ private String lat;
+ private String lng;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGdLat() {
+ return gdLat;
+ }
+
+ public void setGdLat(String gdLat) {
+ this.gdLat = gdLat;
+ }
+
+ public String getGdLng() {
+ return gdLng;
+ }
+
+ public void setGdLng(String gdLng) {
+ this.gdLng = gdLng;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class MultiGasModel {
+ private String coValue;
+ private String deviceCode;
+ private String deviceId;
+ private String exValue;
+ private String groupCode;
+ private String h2sValue;
+ private String o2Value;
+ private String projectId;
+ private String projectName;
+ private String uploadTimestamp;
+
+ public String getCoValue() {
+ return coValue;
+ }
+
+ public void setCoValue(String coValue) {
+ this.coValue = coValue;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getExValue() {
+ return exValue;
+ }
+
+ public void setExValue(String exValue) {
+ this.exValue = exValue;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getH2sValue() {
+ return h2sValue;
+ }
+
+ public void setH2sValue(String h2sValue) {
+ this.h2sValue = h2sValue;
+ }
+
+ public String getO2Value() {
+ return o2Value;
+ }
+
+ public void setO2Value(String o2Value) {
+ this.o2Value = o2Value;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
deleted file mode 100644
index e32edab..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
+++ /dev/null
@@ -1,226 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class WorkerModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private boolean alarmFlag;
- private String bloodOxygen;
- private String braceletCode;
- private String cell;
- private String co;
- private String gas;
- private String gasTime;
- private String h2s;
- private String hatCode;
- private String hatId;
- private String heartRate;
- private String lat;
- private String lng;
- private String location;
- private String o2;
- private String signal;
- private String time;
- private String vastCode;
- private String workerId;
- private String workerName;
-
- public boolean isAlarmFlag() {
- return alarmFlag;
- }
-
- public void setAlarmFlag(boolean alarmFlag) {
- this.alarmFlag = alarmFlag;
- }
-
- public String getBloodOxygen() {
- return bloodOxygen;
- }
-
- public void setBloodOxygen(String bloodOxygen) {
- this.bloodOxygen = bloodOxygen;
- }
-
- public String getBraceletCode() {
- return braceletCode;
- }
-
- public void setBraceletCode(String braceletCode) {
- this.braceletCode = braceletCode;
- }
-
- public String getCell() {
- return cell;
- }
-
- public void setCell(String cell) {
- this.cell = cell;
- }
-
- public String getCo() {
- return co;
- }
-
- public void setCo(String co) {
- this.co = co;
- }
-
- public String getGas() {
- return gas;
- }
-
- public void setGas(String gas) {
- this.gas = gas;
- }
-
- public String getGasTime() {
- return gasTime;
- }
-
- public void setGasTime(String gasTime) {
- this.gasTime = gasTime;
- }
-
- public String getH2s() {
- return h2s;
- }
-
- public void setH2s(String h2s) {
- this.h2s = h2s;
- }
-
- public String getHatCode() {
- return hatCode;
- }
-
- public void setHatCode(String hatCode) {
- this.hatCode = hatCode;
- }
-
- public String getHatId() {
- return hatId;
- }
-
- public void setHatId(String hatId) {
- this.hatId = hatId;
- }
-
- public String getHeartRate() {
- return heartRate;
- }
-
- public void setHeartRate(String heartRate) {
- this.heartRate = heartRate;
- }
-
- public String getLat() {
- return lat;
- }
-
- public void setLat(String lat) {
- this.lat = lat;
- }
-
- public String getLng() {
- return lng;
- }
-
- public void setLng(String lng) {
- this.lng = lng;
- }
-
- public String getLocation() {
- return location;
- }
-
- public void setLocation(String location) {
- this.location = location;
- }
-
- public String getO2() {
- return o2;
- }
-
- public void setO2(String o2) {
- this.o2 = o2;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getTime() {
- return time;
- }
-
- public void setTime(String time) {
- this.time = time;
- }
-
- public String getVastCode() {
- return vastCode;
- }
-
- public void setVastCode(String vastCode) {
- this.vastCode = vastCode;
- }
-
- public String getWorkerId() {
- return workerId;
- }
-
- public void setWorkerId(String workerId) {
- this.workerId = workerId;
- }
-
- public String getWorkerName() {
- return workerName;
- }
-
- public void setWorkerName(String workerName) {
- this.workerName = workerName;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
index 4d68464..f56e8a1 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
@@ -2,7 +2,15 @@
import okhttp3.MultipartBody
import okhttp3.RequestBody
-import retrofit2.http.*
+import retrofit2.http.Body
+import retrofit2.http.Field
+import retrofit2.http.FormUrlEncoded
+import retrofit2.http.GET
+import retrofit2.http.Header
+import retrofit2.http.Multipart
+import retrofit2.http.POST
+import retrofit2.http.Part
+import retrofit2.http.Query
interface RetrofitService {
/**
@@ -41,7 +49,7 @@
/**
* 实施中列表
*/
- @GET("/site/listPage")
+ @GET("/v3/site/listPage")
suspend fun getProjectListByPage(
@Header("token") token: String,
@Query("keywords") keywords: String,
@@ -53,19 +61,13 @@
/**
* 获取工作区域作业人员
*/
- @GET("/overview/workerList")
- suspend fun getWorkers(
+ @GET("/v3/overview/workerList")
+ suspend fun getWorkSiteWorkers(
@Header("token") token: String,
@Query("projectId") projectId: String
): String
/**
- * 获取四合一数据
- */
- @GET("/emergency/startCheckOxygen")
- suspend fun getAirCondition(@Header("token") token: String): String
-
- /**
* 上报每个大阶段场景
* */
@GET("/emergency/notifyStageFinished")
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
index ed19c9f..a813fb0 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
@@ -3,7 +3,7 @@
import android.util.Log
import com.casic.br.operationsite.test.util.AuthenticationHelper
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.Gson
+import com.casic.br.operationsite.test.util.RuntimeCache
import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.RetrofitFactory
@@ -11,14 +11,13 @@
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
-import okhttp3.RequestBody
+import okhttp3.RequestBody.Companion.asRequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import java.io.File
object RetrofitServiceManager {
private const val kTag = "RetrofitServiceManager"
- private val gson by lazy { Gson() }
private val api by lazy {
val httpConfig = SaveKeyValues.getValue(
@@ -67,27 +66,20 @@
/**
* 获取工作区域作业人员
*/
- suspend fun getWorkers(projectId: String): String {
- return api.getWorkers(AuthenticationHelper.token!!, projectId)
+ suspend fun getWorkSiteWorkers(): String {
+ return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId)
}
/**
* 上传图片
*/
suspend fun uploadImage(image: File): String {
- val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val requestBody = image.asRequestBody("image/png".toMediaTypeOrNull())
val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
return api.uploadImage(AuthenticationHelper.token!!, imagePart)
}
/**
- * 获取四合一数据
- */
- suspend fun getAirCondition(): String {
- return api.getAirCondition(AuthenticationHelper.token!!)
- }
-
- /**
* 上报每个大阶段场景
*/
suspend fun notifyStageFinished(operationId: String?, stage: String): String {
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
new file mode 100644
index 0000000..337aaf1
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
@@ -0,0 +1,125 @@
+package com.casic.br.operationsite.test.service
+
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.app.Service
+import android.content.Intent
+import android.os.Handler
+import android.os.IBinder
+import android.os.Message
+import android.util.Log
+import androidx.core.app.NotificationCompat
+import com.casic.br.operationsite.test.R
+import com.casic.br.operationsite.test.extensions.convert
+import com.casic.br.operationsite.test.util.LocaleConstant
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener
+import com.pengxh.kt.lite.utils.socket.tcp.TcpClient
+
+class SocketConnectionService : Service(), OnTcpConnectStateListener, Handler.Callback {
+
+ companion object {
+ var weakReferenceHandler: WeakReferenceHandler? = null
+ }
+
+ override fun handleMessage(msg: Message): Boolean {
+ if (!tcpClient.isRunning()) {
+ "数据通讯服务断开连接,指令发送失败".show(this)
+ return true
+ }
+
+ when (msg.what) {
+ LocaleConstant.COMMAND_TEST_CODE -> {
+ val commandStr = msg.obj as String
+ tcpClient.sendMessage(commandStr.convert())
+ }
+
+ LocaleConstant.GAS_ALARM_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.GAS_ALARM_COMMAND)
+ }
+
+ LocaleConstant.CONFIRM_AIR_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.CONFIRM_AIR_COMMAND)
+ }
+
+ LocaleConstant.START_VIDEO_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.START_VIDEO_COMMAND)
+ }
+ }
+ return true
+ }
+
+ private val kTag = "SocketService"
+ private val notificationId = 1
+ private val tcpClient by lazy { TcpClient(this) }
+ private val notificationManager by lazy { getSystemService(NOTIFICATION_SERVICE) as NotificationManager }
+ private var notificationBuilder: NotificationCompat.Builder? = null
+
+ override fun onBind(intent: Intent?): IBinder? {
+ return null
+ }
+
+ override fun onCreate() {
+ super.onCreate()
+ val name = "${resources.getString(R.string.app_name)}前台服务"
+ val channel = NotificationChannel(
+ "socket_connection_service_channel", name, NotificationManager.IMPORTANCE_HIGH
+ )
+ channel.description = "Channel for socket connection service"
+ notificationManager.createNotificationChannel(channel)
+ notificationBuilder = NotificationCompat.Builder(this, "socket_connection_service_channel")
+ .setSmallIcon(R.mipmap.ic_launcher)
+ .setContentTitle("数据通讯服务连接中...")
+ .setContentText("为保证程序正常运行,请勿移除此通知")
+ .setPriority(NotificationCompat.PRIORITY_HIGH) // 设置通知优先级
+ .setOngoing(true)
+ .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
+
+ val notification = notificationBuilder?.build()
+ startForeground(notificationId, notification)
+ }
+
+ override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
+ if (weakReferenceHandler == null) {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+ tcpClient.start(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
+ Log.d(kTag, "onStartCommand: SocketConnectionService")
+ return START_STICKY
+ }
+
+ override fun onConnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务已连接")
+ "数据通讯服务连接成功,现在可以下发指令了".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDisconnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务断开连接")
+ "数据通讯服务断开连接".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onConnectFailed() {
+ notificationBuilder?.setContentTitle("数据通讯服务连接出错,开始重连")
+ "数据通讯服务连接出错,开始重连".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ tcpClient.stop(false)
+ stopForeground(STOP_FOREGROUND_REMOVE)
+ Log.d(kTag, "onDestroy: SocketConnectionService")
+ }
+
+ override fun onMessageReceived(bytes: ByteArray?) {
+ if (bytes == null) {
+ return
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
deleted file mode 100644
index bc3c0ca..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.casic.br.operationsite.test.service
-
-import android.app.Service
-import android.content.Intent
-import android.os.Handler
-import android.os.IBinder
-import android.os.Message
-import com.casic.br.operationsite.test.util.LocaleConstant
-import com.casic.br.operationsite.test.util.tcp.SocketManager
-import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.WeakReferenceHandler
-
-class TcpMessageService : Service(), Handler.Callback {
-
- companion object {
- lateinit var weakReferenceHandler: WeakReferenceHandler
- }
-
- private val kTag = "TcpMessageService"
-
- override fun onBind(intent: Intent?): IBinder? {
- return null
- }
-
- override fun onCreate() {
- super.onCreate()
- weakReferenceHandler = WeakReferenceHandler(this)
- SocketManager.get.connectTcpServer(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
- }
-
- override fun onDestroy() {
- super.onDestroy()
- SocketManager.get.close()
- }
-
- override fun handleMessage(msg: Message): Boolean {
- if (msg.what == LocaleConstant.TCP_CONNECTED_CODE) {
- "指令连接成功,现在可以下发指令了".show(this)
- } else {
- "指令连接断开,开始自动重连".show(this)
- }
- return true
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt b/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt
deleted file mode 100644
index 56bc436..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.casic.br.operationsite.test.util
-
-import android.content.Context
-import android.widget.ImageView
-import com.bumptech.glide.Glide
-import com.bumptech.glide.load.resource.bitmap.CenterCrop
-import com.bumptech.glide.load.resource.bitmap.RoundedCorners
-import com.bumptech.glide.request.RequestOptions
-import com.casic.br.operationsite.test.R
-import com.luck.picture.lib.engine.ImageEngine
-import com.luck.picture.lib.utils.ActivityCompatHelper
-
-
-class GlideLoadEngine private constructor() : ImageEngine {
-
- companion object {
- val get: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
- GlideLoadEngine()
- }
- }
-
- override fun loadImage(context: Context, url: String, imageView: ImageView) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context).load(url).into(imageView);
- }
-
- override fun loadImage(
- context: Context,
- imageView: ImageView,
- url: String,
- maxWidth: Int,
- maxHeight: Int
- ) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context)
- .load(url)
- .override(maxWidth, maxHeight)
- .into(imageView)
- }
-
- override fun loadAlbumCover(context: Context, url: String, imageView: ImageView) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context)
- .asBitmap()
- .load(url)
- .override(180, 180)
- .sizeMultiplier(0.5f)
- .transform(CenterCrop(), RoundedCorners(8))
- .placeholder(R.drawable.ps_image_placeholder)
- .into(imageView)
- }
-
- override fun pauseRequests(context: Context?) {
- context?.let { Glide.with(it).pauseRequests() }
- }
-
- override fun resumeRequests(context: Context?) {
- context?.let { Glide.with(it).resumeRequests() }
- }
-
- override fun loadGridImage(context: Context, url: String, imageView: ImageView) {
- Glide.with(context)
- .load(url)
- .apply(RequestOptions().placeholder(R.drawable.ps_image_placeholder))
- .into(imageView)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt b/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
index ec57ebc..92cf048 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
@@ -1,13 +1,13 @@
package com.casic.br.operationsite.test.util
import android.util.Log
-import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.LifecycleOwner
-import androidx.lifecycle.LifecycleRegistry
-import androidx.lifecycle.lifecycleScope
import com.google.gson.Gson
import com.google.gson.JsonObject
+import com.pengxh.kt.lite.utils.LiteKitConstant
+import kotlinx.coroutines.CoroutineExceptionHandler
+import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import okhttp3.MediaType.Companion.toMediaType
@@ -21,10 +21,9 @@
/**
* Service里面的Http请求
* */
-class HttpRequestHelper(builder: Builder) : LifecycleOwner {
+class HttpRequestHelper(builder: Builder) {
private val kTag = "HttpRequestHelper"
- private val registry = LifecycleRegistry(this)
private val gson by lazy { Gson() }
class Builder {
@@ -68,6 +67,9 @@
}
fun build(): HttpRequestHelper {
+ if (!::key.isInitialized || !::value.isInitialized || !::url.isInitialized || !::httpRequestCallback.isInitialized) {
+ throw IllegalStateException("All properties must be initialized before building.")
+ }
return HttpRequestHelper(this)
}
}
@@ -81,7 +83,7 @@
/**
* 发起网络请求
* */
- fun start() {
+ fun start(timeoutSeconds: Long = LiteKitConstant.HTTP_TIMEOUT) {
val param = JsonObject()
map.forEach {
param.add(it.key, gson.toJsonTree(it.value))
@@ -91,30 +93,43 @@
)
//构建Request
val request = Request.Builder().addHeader(key, value).post(requestBody).url(url).build()
- lifecycleScope.launch(Dispatchers.IO) {
- val interceptor = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
- override fun log(message: String) {
- Log.d(kTag, ">>>>> $message")
- }
- })
- interceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
- val client = OkHttpClient.Builder()
- .addInterceptor(interceptor)
- .readTimeout(10, TimeUnit.SECONDS)
- .connectTimeout(30, TimeUnit.SECONDS)
- .writeTimeout(10, TimeUnit.SECONDS)
- .build()
+
+ val logLevel = HttpLoggingInterceptor.Level.NONE
+ val interceptor = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
+ override fun log(message: String) {
+ Log.d(kTag, ">>>>> $message")
+ }
+ }).setLevel(logLevel)
+
+ val client = OkHttpClient.Builder()
+ .addInterceptor(interceptor)
+ .readTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .connectTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .writeTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .build()
+
+ val job = SupervisorJob()
+ val scope = CoroutineScope(Dispatchers.Main + job)
+ scope.launch(Dispatchers.Main + CoroutineExceptionHandler { _, throwable ->
+ callback.onFailure(throwable)
+ }) {
try {
- val response = client.newCall(request).execute()
- response.body?.apply {
- withContext(Dispatchers.Main) {
- callback.onSuccess(string())
+ val response = withContext(Dispatchers.IO) {
+ client.newCall(request).execute()
+ }
+ if (response.isSuccessful) {
+ response.body?.string()?.let {
+ callback.onSuccess(it)
+ } ?: run {
+ callback.onFailure(IOException("Response body is null"))
}
+ } else {
+ callback.onFailure(IOException("Unexpected code ${response.code}"))
}
- } catch (e: IOException) {
- withContext(Dispatchers.Main) {
- callback.onFailure(e)
- }
+ } catch (e: Exception) {
+ callback.onFailure(e)
+ } finally {
+ job.cancel()
}
}
}
@@ -124,8 +139,4 @@
fun onFailure(throwable: Throwable)
}
-
- override fun getLifecycle(): Lifecycle {
- return registry
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
index 63ae413..68584bb 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
@@ -28,8 +28,8 @@
)
}
-// const val SERVER_BASE_URL = "http://192.168.9.99:8085"
- const val SERVER_BASE_URL = "http://139.198.19.235:22006"
+ const val SERVER_BASE_URL = "http://111.198.10.15:22006"
+// const val SERVER_BASE_URL = "http://139.198.19.235:22006"
const val IMAGE_BED_URL = "${SERVER_BASE_URL}/emergency/prepareUpload"
@@ -51,7 +51,8 @@
const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig"
const val ACCOUNT = "account"
const val PASSWORD = "password"
- const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_NAME_KEY = "USER_NAME_KEY"
+ const val USER_ID_KEY = "USER_ID_KEY"
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 10
@@ -61,8 +62,10 @@
const val WEBSOCKET_MESSAGE_CODE = 101
const val WEBSOCKET_DISCONNECTED_CODE = 102
- const val TCP_CONNECTED_CODE = 103
- const val TCP_DISCONNECTED_CODE = 104
+ const val COMMAND_TEST_CODE = 202506001
+ const val GAS_ALARM_CODE = 202506002
+ const val CONFIRM_AIR_COMMAND_CODE = 202506003
+ const val START_VIDEO_COMMAND_CODE = 202506004
//作业前检测
val CONFIRM_AIR_COMMAND =
@@ -73,6 +76,6 @@
byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x11, 0x00, 0xA5.toByte())
//甲烷阈值报警
- val GAS_COMMAND =
+ val GAS_ALARM_COMMAND =
byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x14, 0x00, 0xA8.toByte())
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt b/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt
index f044fd3..14514a0 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt
@@ -3,11 +3,11 @@
import com.shuyu.gsyvideoplayer.GSYVideoManager
import com.shuyu.gsyvideoplayer.model.VideoOptionModel
import com.shuyu.gsyvideoplayer.utils.GSYVideoType
-import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
+import com.shuyu.gsyvideoplayer.video.NormalGSYVideoPlayer
import tv.danmaku.ijk.media.player.IjkMediaPlayer
object VideoPlayerManager {
- fun setGSYVideoPlayerOptions(videoPlayer: StandardGSYVideoPlayer, url: String) {
+ fun setGSYVideoPlayerOptions(videoPlayer: NormalGSYVideoPlayer, url: String) {
val list = ArrayList()
//开启软解码,硬解码:1、打开,0、关闭
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ede224a..bb07476 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
@@ -37,7 +40,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
@@ -49,14 +52,14 @@
-
-
-
+
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
index 90aa34e..7a487d2 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
@@ -3,32 +3,27 @@
import android.content.Context
import com.casic.br.operationsite.test.callback.OnImageCompressListener
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.JsonParser
+import com.google.gson.Gson
+import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.createCompressImageDir
import com.pengxh.kt.lite.utils.SaveKeyValues
import top.zibin.luban.Luban
import top.zibin.luban.OnCompressListener
import java.io.File
+val gson by lazy { Gson() }
+
/**
* String扩展方法
*/
-fun String.getResponseCode(): Int {
+fun String.getResponseHeader(): Pair {
if (this.isBlank()) {
- return 404
+ return Pair(404, "Invalid Response")
}
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("code").asInt
-}
-
-fun String.getResponseMessage(): String {
- if (this.isBlank()) {
- return ""
- }
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("message").asString
+ val jsonObject = gson.fromJson(this, JsonObject::class.java)
+ val code = jsonObject.get("code").asInt
+ val message = jsonObject.get("message").asString
+ return Pair(code, message)
}
//拼接图片地址
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
deleted file mode 100644
index 758b3bd..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class AirConditionModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private double o2;
- private int h2s;
- private int co;
- private int ch4;
-
- public double getO2() {
- return o2;
- }
-
- public void setO2(double o2) {
- this.o2 = o2;
- }
-
- public int getH2s() {
- return h2s;
- }
-
- public void setH2s(int h2s) {
- this.h2s = h2s;
- }
-
- public int getCo() {
- return co;
- }
-
- public void setCo(int co) {
- this.co = co;
- }
-
- public int getCh4() {
- return ch4;
- }
-
- public void setCh4(int ch4) {
- this.ch4 = ch4;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
index f0a8f63..70228ef 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
@@ -65,13 +65,26 @@
}
public static class RowsModel {
+ private String borderPointCount;
private String createTime;
+ private String deptFullName;
+ private String deptId;
+ private String deptName;
+ private List> deviceList;
+ private String finishTime;
+ private String groupDeviceCode;
+ private String groupDeviceId;
private String id;
private String imageUrl;
+ private String locationTime;
+ private List pointLocation;
+ private String pointLocationJson;
private String projectState;
private String projectStateName;
private String registerTime;
+ private String startTime;
private String updateTime;
+ private String valid;
private String workPerson;
private String workPersonDeptId;
private String workPersonDeptName;
@@ -80,6 +93,16 @@
private String workRoad;
private String workSiteDesc;
private String workTitle;
+ private String workType;
+ private String workTypeName;
+
+ public String getBorderPointCount() {
+ return borderPointCount;
+ }
+
+ public void setBorderPointCount(String borderPointCount) {
+ this.borderPointCount = borderPointCount;
+ }
public String getCreateTime() {
return createTime;
@@ -89,6 +112,62 @@
this.createTime = createTime;
}
+ public String getDeptFullName() {
+ return deptFullName;
+ }
+
+ public void setDeptFullName(String deptFullName) {
+ this.deptFullName = deptFullName;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public List> getDeviceList() {
+ return deviceList;
+ }
+
+ public void setDeviceList(List> deviceList) {
+ this.deviceList = deviceList;
+ }
+
+ public String getFinishTime() {
+ return finishTime;
+ }
+
+ public void setFinishTime(String finishTime) {
+ this.finishTime = finishTime;
+ }
+
+ public String getGroupDeviceCode() {
+ return groupDeviceCode;
+ }
+
+ public void setGroupDeviceCode(String groupDeviceCode) {
+ this.groupDeviceCode = groupDeviceCode;
+ }
+
+ public String getGroupDeviceId() {
+ return groupDeviceId;
+ }
+
+ public void setGroupDeviceId(String groupDeviceId) {
+ this.groupDeviceId = groupDeviceId;
+ }
+
public String getId() {
return id;
}
@@ -105,6 +184,30 @@
this.imageUrl = imageUrl;
}
+ public String getLocationTime() {
+ return locationTime;
+ }
+
+ public void setLocationTime(String locationTime) {
+ this.locationTime = locationTime;
+ }
+
+ public List getPointLocation() {
+ return pointLocation;
+ }
+
+ public void setPointLocation(List pointLocation) {
+ this.pointLocation = pointLocation;
+ }
+
+ public String getPointLocationJson() {
+ return pointLocationJson;
+ }
+
+ public void setPointLocationJson(String pointLocationJson) {
+ this.pointLocationJson = pointLocationJson;
+ }
+
public String getProjectState() {
return projectState;
}
@@ -129,6 +232,14 @@
this.registerTime = registerTime;
}
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
public String getUpdateTime() {
return updateTime;
}
@@ -137,6 +248,14 @@
this.updateTime = updateTime;
}
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
public String getWorkPerson() {
return workPerson;
}
@@ -200,6 +319,43 @@
public void setWorkTitle(String workTitle) {
this.workTitle = workTitle;
}
+
+ public String getWorkType() {
+ return workType;
+ }
+
+ public void setWorkType(String workType) {
+ this.workType = workType;
+ }
+
+ public String getWorkTypeName() {
+ return workTypeName;
+ }
+
+ public void setWorkTypeName(String workTypeName) {
+ this.workTypeName = workTypeName;
+ }
+
+ public static class PointLocationModel {
+ private String lng;
+ private String lat;
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
new file mode 100644
index 0000000..5d87443
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
@@ -0,0 +1,487 @@
+package com.casic.br.operationsite.test.model;
+
+import java.util.List;
+
+public class WorkSiteWorkerModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataModel {
+ private boolean alarmFlag;
+ private String createTime;
+ private String deptId;
+ private String deptName;
+ private String enterReason;
+ private String gender;
+ private String genderName;
+ private HealthModel health;
+ private String id;
+ private String idCardNumber;
+ private String isRegister;
+ private LocationModel location;
+ private MultiGasModel multiGas;
+ private String ownerShip;
+ private String phoneNumber;
+ private String registerTime;
+ private String status;
+ private String statusName;
+ private String workerAvatar;
+ private String workerName;
+ private String workerType;
+ private String workerTypeName;
+
+ public boolean isAlarmFlag() {
+ return alarmFlag;
+ }
+
+ public void setAlarmFlag(boolean alarmFlag) {
+ this.alarmFlag = alarmFlag;
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public String getEnterReason() {
+ return enterReason;
+ }
+
+ public void setEnterReason(String enterReason) {
+ this.enterReason = enterReason;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+ public String getGenderName() {
+ return genderName;
+ }
+
+ public void setGenderName(String genderName) {
+ this.genderName = genderName;
+ }
+
+ public HealthModel getHealth() {
+ return health;
+ }
+
+ public void setHealth(HealthModel health) {
+ this.health = health;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIdCardNumber() {
+ return idCardNumber;
+ }
+
+ public void setIdCardNumber(String idCardNumber) {
+ this.idCardNumber = idCardNumber;
+ }
+
+ public String getIsRegister() {
+ return isRegister;
+ }
+
+ public void setIsRegister(String isRegister) {
+ this.isRegister = isRegister;
+ }
+
+ public LocationModel getLocation() {
+ return location;
+ }
+
+ public void setLocation(LocationModel location) {
+ this.location = location;
+ }
+
+ public MultiGasModel getMultiGas() {
+ return multiGas;
+ }
+
+ public void setMultiGas(MultiGasModel multiGas) {
+ this.multiGas = multiGas;
+ }
+
+ public String getOwnerShip() {
+ return ownerShip;
+ }
+
+ public void setOwnerShip(String ownerShip) {
+ this.ownerShip = ownerShip;
+ }
+
+ public String getPhoneNumber() {
+ return phoneNumber;
+ }
+
+ public void setPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ }
+
+ public String getRegisterTime() {
+ return registerTime;
+ }
+
+ public void setRegisterTime(String registerTime) {
+ this.registerTime = registerTime;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getStatusName() {
+ return statusName;
+ }
+
+ public void setStatusName(String statusName) {
+ this.statusName = statusName;
+ }
+
+ public String getWorkerAvatar() {
+ return workerAvatar;
+ }
+
+ public void setWorkerAvatar(String workerAvatar) {
+ this.workerAvatar = workerAvatar;
+ }
+
+ public String getWorkerName() {
+ return workerName;
+ }
+
+ public void setWorkerName(String workerName) {
+ this.workerName = workerName;
+ }
+
+ public String getWorkerType() {
+ return workerType;
+ }
+
+ public void setWorkerType(String workerType) {
+ this.workerType = workerType;
+ }
+
+ public String getWorkerTypeName() {
+ return workerTypeName;
+ }
+
+ public void setWorkerTypeName(String workerTypeName) {
+ this.workerTypeName = workerTypeName;
+ }
+
+ public static class HealthModel {
+ private String bloodOxygen;
+ private String deviceCode;
+ private String deviceId;
+ private String groupCode;
+ private String heartRate;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getBloodOxygen() {
+ return bloodOxygen;
+ }
+
+ public void setBloodOxygen(String bloodOxygen) {
+ this.bloodOxygen = bloodOxygen;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getHeartRate() {
+ return heartRate;
+ }
+
+ public void setHeartRate(String heartRate) {
+ this.heartRate = heartRate;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class LocationModel {
+ private String deviceCode;
+ private String deviceId;
+ private String gdLat;
+ private String gdLng;
+ private String groupCode;
+ private String lat;
+ private String lng;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGdLat() {
+ return gdLat;
+ }
+
+ public void setGdLat(String gdLat) {
+ this.gdLat = gdLat;
+ }
+
+ public String getGdLng() {
+ return gdLng;
+ }
+
+ public void setGdLng(String gdLng) {
+ this.gdLng = gdLng;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class MultiGasModel {
+ private String coValue;
+ private String deviceCode;
+ private String deviceId;
+ private String exValue;
+ private String groupCode;
+ private String h2sValue;
+ private String o2Value;
+ private String projectId;
+ private String projectName;
+ private String uploadTimestamp;
+
+ public String getCoValue() {
+ return coValue;
+ }
+
+ public void setCoValue(String coValue) {
+ this.coValue = coValue;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getExValue() {
+ return exValue;
+ }
+
+ public void setExValue(String exValue) {
+ this.exValue = exValue;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getH2sValue() {
+ return h2sValue;
+ }
+
+ public void setH2sValue(String h2sValue) {
+ this.h2sValue = h2sValue;
+ }
+
+ public String getO2Value() {
+ return o2Value;
+ }
+
+ public void setO2Value(String o2Value) {
+ this.o2Value = o2Value;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
deleted file mode 100644
index e32edab..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
+++ /dev/null
@@ -1,226 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class WorkerModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private boolean alarmFlag;
- private String bloodOxygen;
- private String braceletCode;
- private String cell;
- private String co;
- private String gas;
- private String gasTime;
- private String h2s;
- private String hatCode;
- private String hatId;
- private String heartRate;
- private String lat;
- private String lng;
- private String location;
- private String o2;
- private String signal;
- private String time;
- private String vastCode;
- private String workerId;
- private String workerName;
-
- public boolean isAlarmFlag() {
- return alarmFlag;
- }
-
- public void setAlarmFlag(boolean alarmFlag) {
- this.alarmFlag = alarmFlag;
- }
-
- public String getBloodOxygen() {
- return bloodOxygen;
- }
-
- public void setBloodOxygen(String bloodOxygen) {
- this.bloodOxygen = bloodOxygen;
- }
-
- public String getBraceletCode() {
- return braceletCode;
- }
-
- public void setBraceletCode(String braceletCode) {
- this.braceletCode = braceletCode;
- }
-
- public String getCell() {
- return cell;
- }
-
- public void setCell(String cell) {
- this.cell = cell;
- }
-
- public String getCo() {
- return co;
- }
-
- public void setCo(String co) {
- this.co = co;
- }
-
- public String getGas() {
- return gas;
- }
-
- public void setGas(String gas) {
- this.gas = gas;
- }
-
- public String getGasTime() {
- return gasTime;
- }
-
- public void setGasTime(String gasTime) {
- this.gasTime = gasTime;
- }
-
- public String getH2s() {
- return h2s;
- }
-
- public void setH2s(String h2s) {
- this.h2s = h2s;
- }
-
- public String getHatCode() {
- return hatCode;
- }
-
- public void setHatCode(String hatCode) {
- this.hatCode = hatCode;
- }
-
- public String getHatId() {
- return hatId;
- }
-
- public void setHatId(String hatId) {
- this.hatId = hatId;
- }
-
- public String getHeartRate() {
- return heartRate;
- }
-
- public void setHeartRate(String heartRate) {
- this.heartRate = heartRate;
- }
-
- public String getLat() {
- return lat;
- }
-
- public void setLat(String lat) {
- this.lat = lat;
- }
-
- public String getLng() {
- return lng;
- }
-
- public void setLng(String lng) {
- this.lng = lng;
- }
-
- public String getLocation() {
- return location;
- }
-
- public void setLocation(String location) {
- this.location = location;
- }
-
- public String getO2() {
- return o2;
- }
-
- public void setO2(String o2) {
- this.o2 = o2;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getTime() {
- return time;
- }
-
- public void setTime(String time) {
- this.time = time;
- }
-
- public String getVastCode() {
- return vastCode;
- }
-
- public void setVastCode(String vastCode) {
- this.vastCode = vastCode;
- }
-
- public String getWorkerId() {
- return workerId;
- }
-
- public void setWorkerId(String workerId) {
- this.workerId = workerId;
- }
-
- public String getWorkerName() {
- return workerName;
- }
-
- public void setWorkerName(String workerName) {
- this.workerName = workerName;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
index 4d68464..f56e8a1 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
@@ -2,7 +2,15 @@
import okhttp3.MultipartBody
import okhttp3.RequestBody
-import retrofit2.http.*
+import retrofit2.http.Body
+import retrofit2.http.Field
+import retrofit2.http.FormUrlEncoded
+import retrofit2.http.GET
+import retrofit2.http.Header
+import retrofit2.http.Multipart
+import retrofit2.http.POST
+import retrofit2.http.Part
+import retrofit2.http.Query
interface RetrofitService {
/**
@@ -41,7 +49,7 @@
/**
* 实施中列表
*/
- @GET("/site/listPage")
+ @GET("/v3/site/listPage")
suspend fun getProjectListByPage(
@Header("token") token: String,
@Query("keywords") keywords: String,
@@ -53,19 +61,13 @@
/**
* 获取工作区域作业人员
*/
- @GET("/overview/workerList")
- suspend fun getWorkers(
+ @GET("/v3/overview/workerList")
+ suspend fun getWorkSiteWorkers(
@Header("token") token: String,
@Query("projectId") projectId: String
): String
/**
- * 获取四合一数据
- */
- @GET("/emergency/startCheckOxygen")
- suspend fun getAirCondition(@Header("token") token: String): String
-
- /**
* 上报每个大阶段场景
* */
@GET("/emergency/notifyStageFinished")
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
index ed19c9f..a813fb0 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
@@ -3,7 +3,7 @@
import android.util.Log
import com.casic.br.operationsite.test.util.AuthenticationHelper
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.Gson
+import com.casic.br.operationsite.test.util.RuntimeCache
import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.RetrofitFactory
@@ -11,14 +11,13 @@
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
-import okhttp3.RequestBody
+import okhttp3.RequestBody.Companion.asRequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import java.io.File
object RetrofitServiceManager {
private const val kTag = "RetrofitServiceManager"
- private val gson by lazy { Gson() }
private val api by lazy {
val httpConfig = SaveKeyValues.getValue(
@@ -67,27 +66,20 @@
/**
* 获取工作区域作业人员
*/
- suspend fun getWorkers(projectId: String): String {
- return api.getWorkers(AuthenticationHelper.token!!, projectId)
+ suspend fun getWorkSiteWorkers(): String {
+ return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId)
}
/**
* 上传图片
*/
suspend fun uploadImage(image: File): String {
- val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val requestBody = image.asRequestBody("image/png".toMediaTypeOrNull())
val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
return api.uploadImage(AuthenticationHelper.token!!, imagePart)
}
/**
- * 获取四合一数据
- */
- suspend fun getAirCondition(): String {
- return api.getAirCondition(AuthenticationHelper.token!!)
- }
-
- /**
* 上报每个大阶段场景
*/
suspend fun notifyStageFinished(operationId: String?, stage: String): String {
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
new file mode 100644
index 0000000..337aaf1
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
@@ -0,0 +1,125 @@
+package com.casic.br.operationsite.test.service
+
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.app.Service
+import android.content.Intent
+import android.os.Handler
+import android.os.IBinder
+import android.os.Message
+import android.util.Log
+import androidx.core.app.NotificationCompat
+import com.casic.br.operationsite.test.R
+import com.casic.br.operationsite.test.extensions.convert
+import com.casic.br.operationsite.test.util.LocaleConstant
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener
+import com.pengxh.kt.lite.utils.socket.tcp.TcpClient
+
+class SocketConnectionService : Service(), OnTcpConnectStateListener, Handler.Callback {
+
+ companion object {
+ var weakReferenceHandler: WeakReferenceHandler? = null
+ }
+
+ override fun handleMessage(msg: Message): Boolean {
+ if (!tcpClient.isRunning()) {
+ "数据通讯服务断开连接,指令发送失败".show(this)
+ return true
+ }
+
+ when (msg.what) {
+ LocaleConstant.COMMAND_TEST_CODE -> {
+ val commandStr = msg.obj as String
+ tcpClient.sendMessage(commandStr.convert())
+ }
+
+ LocaleConstant.GAS_ALARM_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.GAS_ALARM_COMMAND)
+ }
+
+ LocaleConstant.CONFIRM_AIR_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.CONFIRM_AIR_COMMAND)
+ }
+
+ LocaleConstant.START_VIDEO_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.START_VIDEO_COMMAND)
+ }
+ }
+ return true
+ }
+
+ private val kTag = "SocketService"
+ private val notificationId = 1
+ private val tcpClient by lazy { TcpClient(this) }
+ private val notificationManager by lazy { getSystemService(NOTIFICATION_SERVICE) as NotificationManager }
+ private var notificationBuilder: NotificationCompat.Builder? = null
+
+ override fun onBind(intent: Intent?): IBinder? {
+ return null
+ }
+
+ override fun onCreate() {
+ super.onCreate()
+ val name = "${resources.getString(R.string.app_name)}前台服务"
+ val channel = NotificationChannel(
+ "socket_connection_service_channel", name, NotificationManager.IMPORTANCE_HIGH
+ )
+ channel.description = "Channel for socket connection service"
+ notificationManager.createNotificationChannel(channel)
+ notificationBuilder = NotificationCompat.Builder(this, "socket_connection_service_channel")
+ .setSmallIcon(R.mipmap.ic_launcher)
+ .setContentTitle("数据通讯服务连接中...")
+ .setContentText("为保证程序正常运行,请勿移除此通知")
+ .setPriority(NotificationCompat.PRIORITY_HIGH) // 设置通知优先级
+ .setOngoing(true)
+ .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
+
+ val notification = notificationBuilder?.build()
+ startForeground(notificationId, notification)
+ }
+
+ override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
+ if (weakReferenceHandler == null) {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+ tcpClient.start(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
+ Log.d(kTag, "onStartCommand: SocketConnectionService")
+ return START_STICKY
+ }
+
+ override fun onConnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务已连接")
+ "数据通讯服务连接成功,现在可以下发指令了".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDisconnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务断开连接")
+ "数据通讯服务断开连接".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onConnectFailed() {
+ notificationBuilder?.setContentTitle("数据通讯服务连接出错,开始重连")
+ "数据通讯服务连接出错,开始重连".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ tcpClient.stop(false)
+ stopForeground(STOP_FOREGROUND_REMOVE)
+ Log.d(kTag, "onDestroy: SocketConnectionService")
+ }
+
+ override fun onMessageReceived(bytes: ByteArray?) {
+ if (bytes == null) {
+ return
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
deleted file mode 100644
index bc3c0ca..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.casic.br.operationsite.test.service
-
-import android.app.Service
-import android.content.Intent
-import android.os.Handler
-import android.os.IBinder
-import android.os.Message
-import com.casic.br.operationsite.test.util.LocaleConstant
-import com.casic.br.operationsite.test.util.tcp.SocketManager
-import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.WeakReferenceHandler
-
-class TcpMessageService : Service(), Handler.Callback {
-
- companion object {
- lateinit var weakReferenceHandler: WeakReferenceHandler
- }
-
- private val kTag = "TcpMessageService"
-
- override fun onBind(intent: Intent?): IBinder? {
- return null
- }
-
- override fun onCreate() {
- super.onCreate()
- weakReferenceHandler = WeakReferenceHandler(this)
- SocketManager.get.connectTcpServer(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
- }
-
- override fun onDestroy() {
- super.onDestroy()
- SocketManager.get.close()
- }
-
- override fun handleMessage(msg: Message): Boolean {
- if (msg.what == LocaleConstant.TCP_CONNECTED_CODE) {
- "指令连接成功,现在可以下发指令了".show(this)
- } else {
- "指令连接断开,开始自动重连".show(this)
- }
- return true
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt b/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt
deleted file mode 100644
index 56bc436..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.casic.br.operationsite.test.util
-
-import android.content.Context
-import android.widget.ImageView
-import com.bumptech.glide.Glide
-import com.bumptech.glide.load.resource.bitmap.CenterCrop
-import com.bumptech.glide.load.resource.bitmap.RoundedCorners
-import com.bumptech.glide.request.RequestOptions
-import com.casic.br.operationsite.test.R
-import com.luck.picture.lib.engine.ImageEngine
-import com.luck.picture.lib.utils.ActivityCompatHelper
-
-
-class GlideLoadEngine private constructor() : ImageEngine {
-
- companion object {
- val get: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
- GlideLoadEngine()
- }
- }
-
- override fun loadImage(context: Context, url: String, imageView: ImageView) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context).load(url).into(imageView);
- }
-
- override fun loadImage(
- context: Context,
- imageView: ImageView,
- url: String,
- maxWidth: Int,
- maxHeight: Int
- ) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context)
- .load(url)
- .override(maxWidth, maxHeight)
- .into(imageView)
- }
-
- override fun loadAlbumCover(context: Context, url: String, imageView: ImageView) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context)
- .asBitmap()
- .load(url)
- .override(180, 180)
- .sizeMultiplier(0.5f)
- .transform(CenterCrop(), RoundedCorners(8))
- .placeholder(R.drawable.ps_image_placeholder)
- .into(imageView)
- }
-
- override fun pauseRequests(context: Context?) {
- context?.let { Glide.with(it).pauseRequests() }
- }
-
- override fun resumeRequests(context: Context?) {
- context?.let { Glide.with(it).resumeRequests() }
- }
-
- override fun loadGridImage(context: Context, url: String, imageView: ImageView) {
- Glide.with(context)
- .load(url)
- .apply(RequestOptions().placeholder(R.drawable.ps_image_placeholder))
- .into(imageView)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt b/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
index ec57ebc..92cf048 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
@@ -1,13 +1,13 @@
package com.casic.br.operationsite.test.util
import android.util.Log
-import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.LifecycleOwner
-import androidx.lifecycle.LifecycleRegistry
-import androidx.lifecycle.lifecycleScope
import com.google.gson.Gson
import com.google.gson.JsonObject
+import com.pengxh.kt.lite.utils.LiteKitConstant
+import kotlinx.coroutines.CoroutineExceptionHandler
+import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import okhttp3.MediaType.Companion.toMediaType
@@ -21,10 +21,9 @@
/**
* Service里面的Http请求
* */
-class HttpRequestHelper(builder: Builder) : LifecycleOwner {
+class HttpRequestHelper(builder: Builder) {
private val kTag = "HttpRequestHelper"
- private val registry = LifecycleRegistry(this)
private val gson by lazy { Gson() }
class Builder {
@@ -68,6 +67,9 @@
}
fun build(): HttpRequestHelper {
+ if (!::key.isInitialized || !::value.isInitialized || !::url.isInitialized || !::httpRequestCallback.isInitialized) {
+ throw IllegalStateException("All properties must be initialized before building.")
+ }
return HttpRequestHelper(this)
}
}
@@ -81,7 +83,7 @@
/**
* 发起网络请求
* */
- fun start() {
+ fun start(timeoutSeconds: Long = LiteKitConstant.HTTP_TIMEOUT) {
val param = JsonObject()
map.forEach {
param.add(it.key, gson.toJsonTree(it.value))
@@ -91,30 +93,43 @@
)
//构建Request
val request = Request.Builder().addHeader(key, value).post(requestBody).url(url).build()
- lifecycleScope.launch(Dispatchers.IO) {
- val interceptor = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
- override fun log(message: String) {
- Log.d(kTag, ">>>>> $message")
- }
- })
- interceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
- val client = OkHttpClient.Builder()
- .addInterceptor(interceptor)
- .readTimeout(10, TimeUnit.SECONDS)
- .connectTimeout(30, TimeUnit.SECONDS)
- .writeTimeout(10, TimeUnit.SECONDS)
- .build()
+
+ val logLevel = HttpLoggingInterceptor.Level.NONE
+ val interceptor = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
+ override fun log(message: String) {
+ Log.d(kTag, ">>>>> $message")
+ }
+ }).setLevel(logLevel)
+
+ val client = OkHttpClient.Builder()
+ .addInterceptor(interceptor)
+ .readTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .connectTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .writeTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .build()
+
+ val job = SupervisorJob()
+ val scope = CoroutineScope(Dispatchers.Main + job)
+ scope.launch(Dispatchers.Main + CoroutineExceptionHandler { _, throwable ->
+ callback.onFailure(throwable)
+ }) {
try {
- val response = client.newCall(request).execute()
- response.body?.apply {
- withContext(Dispatchers.Main) {
- callback.onSuccess(string())
+ val response = withContext(Dispatchers.IO) {
+ client.newCall(request).execute()
+ }
+ if (response.isSuccessful) {
+ response.body?.string()?.let {
+ callback.onSuccess(it)
+ } ?: run {
+ callback.onFailure(IOException("Response body is null"))
}
+ } else {
+ callback.onFailure(IOException("Unexpected code ${response.code}"))
}
- } catch (e: IOException) {
- withContext(Dispatchers.Main) {
- callback.onFailure(e)
- }
+ } catch (e: Exception) {
+ callback.onFailure(e)
+ } finally {
+ job.cancel()
}
}
}
@@ -124,8 +139,4 @@
fun onFailure(throwable: Throwable)
}
-
- override fun getLifecycle(): Lifecycle {
- return registry
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
index 63ae413..68584bb 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
@@ -28,8 +28,8 @@
)
}
-// const val SERVER_BASE_URL = "http://192.168.9.99:8085"
- const val SERVER_BASE_URL = "http://139.198.19.235:22006"
+ const val SERVER_BASE_URL = "http://111.198.10.15:22006"
+// const val SERVER_BASE_URL = "http://139.198.19.235:22006"
const val IMAGE_BED_URL = "${SERVER_BASE_URL}/emergency/prepareUpload"
@@ -51,7 +51,8 @@
const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig"
const val ACCOUNT = "account"
const val PASSWORD = "password"
- const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_NAME_KEY = "USER_NAME_KEY"
+ const val USER_ID_KEY = "USER_ID_KEY"
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 10
@@ -61,8 +62,10 @@
const val WEBSOCKET_MESSAGE_CODE = 101
const val WEBSOCKET_DISCONNECTED_CODE = 102
- const val TCP_CONNECTED_CODE = 103
- const val TCP_DISCONNECTED_CODE = 104
+ const val COMMAND_TEST_CODE = 202506001
+ const val GAS_ALARM_CODE = 202506002
+ const val CONFIRM_AIR_COMMAND_CODE = 202506003
+ const val START_VIDEO_COMMAND_CODE = 202506004
//作业前检测
val CONFIRM_AIR_COMMAND =
@@ -73,6 +76,6 @@
byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x11, 0x00, 0xA5.toByte())
//甲烷阈值报警
- val GAS_COMMAND =
+ val GAS_ALARM_COMMAND =
byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x14, 0x00, 0xA8.toByte())
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt b/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt
index f044fd3..14514a0 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt
@@ -3,11 +3,11 @@
import com.shuyu.gsyvideoplayer.GSYVideoManager
import com.shuyu.gsyvideoplayer.model.VideoOptionModel
import com.shuyu.gsyvideoplayer.utils.GSYVideoType
-import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
+import com.shuyu.gsyvideoplayer.video.NormalGSYVideoPlayer
import tv.danmaku.ijk.media.player.IjkMediaPlayer
object VideoPlayerManager {
- fun setGSYVideoPlayerOptions(videoPlayer: StandardGSYVideoPlayer, url: String) {
+ fun setGSYVideoPlayerOptions(videoPlayer: NormalGSYVideoPlayer, url: String) {
val list = ArrayList()
//开启软解码,硬解码:1、打开,0、关闭
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/ISocketListener.kt b/app/src/main/java/com/casic/br/operationsite/test/util/tcp/ISocketListener.kt
deleted file mode 100644
index a00a2a8..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/ISocketListener.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.casic.br.operationsite.test.util.tcp
-
-interface ISocketListener {
- companion object {
- const val STATUS_CONNECT_SUCCESS: Byte = 1 //连接成功
- const val STATUS_CONNECT_CLOSED: Byte = 0 //关闭连接
- const val STATUS_CONNECT_ERROR: Byte = -1 //连接失败
- }
-
- /**
- * 当接收到系统消息
- */
- fun onMessageResponse(data: ByteArray?)
-
- /**
- * 当连接状态发生变化时调用
- */
- fun onServiceStatusConnectChanged(statusCode: Byte)
-}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ede224a..bb07476 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
@@ -37,7 +40,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
@@ -49,14 +52,14 @@
-
-
-
+
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
index 90aa34e..7a487d2 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
@@ -3,32 +3,27 @@
import android.content.Context
import com.casic.br.operationsite.test.callback.OnImageCompressListener
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.JsonParser
+import com.google.gson.Gson
+import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.createCompressImageDir
import com.pengxh.kt.lite.utils.SaveKeyValues
import top.zibin.luban.Luban
import top.zibin.luban.OnCompressListener
import java.io.File
+val gson by lazy { Gson() }
+
/**
* String扩展方法
*/
-fun String.getResponseCode(): Int {
+fun String.getResponseHeader(): Pair {
if (this.isBlank()) {
- return 404
+ return Pair(404, "Invalid Response")
}
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("code").asInt
-}
-
-fun String.getResponseMessage(): String {
- if (this.isBlank()) {
- return ""
- }
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("message").asString
+ val jsonObject = gson.fromJson(this, JsonObject::class.java)
+ val code = jsonObject.get("code").asInt
+ val message = jsonObject.get("message").asString
+ return Pair(code, message)
}
//拼接图片地址
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
deleted file mode 100644
index 758b3bd..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class AirConditionModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private double o2;
- private int h2s;
- private int co;
- private int ch4;
-
- public double getO2() {
- return o2;
- }
-
- public void setO2(double o2) {
- this.o2 = o2;
- }
-
- public int getH2s() {
- return h2s;
- }
-
- public void setH2s(int h2s) {
- this.h2s = h2s;
- }
-
- public int getCo() {
- return co;
- }
-
- public void setCo(int co) {
- this.co = co;
- }
-
- public int getCh4() {
- return ch4;
- }
-
- public void setCh4(int ch4) {
- this.ch4 = ch4;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
index f0a8f63..70228ef 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
@@ -65,13 +65,26 @@
}
public static class RowsModel {
+ private String borderPointCount;
private String createTime;
+ private String deptFullName;
+ private String deptId;
+ private String deptName;
+ private List> deviceList;
+ private String finishTime;
+ private String groupDeviceCode;
+ private String groupDeviceId;
private String id;
private String imageUrl;
+ private String locationTime;
+ private List pointLocation;
+ private String pointLocationJson;
private String projectState;
private String projectStateName;
private String registerTime;
+ private String startTime;
private String updateTime;
+ private String valid;
private String workPerson;
private String workPersonDeptId;
private String workPersonDeptName;
@@ -80,6 +93,16 @@
private String workRoad;
private String workSiteDesc;
private String workTitle;
+ private String workType;
+ private String workTypeName;
+
+ public String getBorderPointCount() {
+ return borderPointCount;
+ }
+
+ public void setBorderPointCount(String borderPointCount) {
+ this.borderPointCount = borderPointCount;
+ }
public String getCreateTime() {
return createTime;
@@ -89,6 +112,62 @@
this.createTime = createTime;
}
+ public String getDeptFullName() {
+ return deptFullName;
+ }
+
+ public void setDeptFullName(String deptFullName) {
+ this.deptFullName = deptFullName;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public List> getDeviceList() {
+ return deviceList;
+ }
+
+ public void setDeviceList(List> deviceList) {
+ this.deviceList = deviceList;
+ }
+
+ public String getFinishTime() {
+ return finishTime;
+ }
+
+ public void setFinishTime(String finishTime) {
+ this.finishTime = finishTime;
+ }
+
+ public String getGroupDeviceCode() {
+ return groupDeviceCode;
+ }
+
+ public void setGroupDeviceCode(String groupDeviceCode) {
+ this.groupDeviceCode = groupDeviceCode;
+ }
+
+ public String getGroupDeviceId() {
+ return groupDeviceId;
+ }
+
+ public void setGroupDeviceId(String groupDeviceId) {
+ this.groupDeviceId = groupDeviceId;
+ }
+
public String getId() {
return id;
}
@@ -105,6 +184,30 @@
this.imageUrl = imageUrl;
}
+ public String getLocationTime() {
+ return locationTime;
+ }
+
+ public void setLocationTime(String locationTime) {
+ this.locationTime = locationTime;
+ }
+
+ public List getPointLocation() {
+ return pointLocation;
+ }
+
+ public void setPointLocation(List pointLocation) {
+ this.pointLocation = pointLocation;
+ }
+
+ public String getPointLocationJson() {
+ return pointLocationJson;
+ }
+
+ public void setPointLocationJson(String pointLocationJson) {
+ this.pointLocationJson = pointLocationJson;
+ }
+
public String getProjectState() {
return projectState;
}
@@ -129,6 +232,14 @@
this.registerTime = registerTime;
}
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
public String getUpdateTime() {
return updateTime;
}
@@ -137,6 +248,14 @@
this.updateTime = updateTime;
}
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
public String getWorkPerson() {
return workPerson;
}
@@ -200,6 +319,43 @@
public void setWorkTitle(String workTitle) {
this.workTitle = workTitle;
}
+
+ public String getWorkType() {
+ return workType;
+ }
+
+ public void setWorkType(String workType) {
+ this.workType = workType;
+ }
+
+ public String getWorkTypeName() {
+ return workTypeName;
+ }
+
+ public void setWorkTypeName(String workTypeName) {
+ this.workTypeName = workTypeName;
+ }
+
+ public static class PointLocationModel {
+ private String lng;
+ private String lat;
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
new file mode 100644
index 0000000..5d87443
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
@@ -0,0 +1,487 @@
+package com.casic.br.operationsite.test.model;
+
+import java.util.List;
+
+public class WorkSiteWorkerModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataModel {
+ private boolean alarmFlag;
+ private String createTime;
+ private String deptId;
+ private String deptName;
+ private String enterReason;
+ private String gender;
+ private String genderName;
+ private HealthModel health;
+ private String id;
+ private String idCardNumber;
+ private String isRegister;
+ private LocationModel location;
+ private MultiGasModel multiGas;
+ private String ownerShip;
+ private String phoneNumber;
+ private String registerTime;
+ private String status;
+ private String statusName;
+ private String workerAvatar;
+ private String workerName;
+ private String workerType;
+ private String workerTypeName;
+
+ public boolean isAlarmFlag() {
+ return alarmFlag;
+ }
+
+ public void setAlarmFlag(boolean alarmFlag) {
+ this.alarmFlag = alarmFlag;
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public String getEnterReason() {
+ return enterReason;
+ }
+
+ public void setEnterReason(String enterReason) {
+ this.enterReason = enterReason;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+ public String getGenderName() {
+ return genderName;
+ }
+
+ public void setGenderName(String genderName) {
+ this.genderName = genderName;
+ }
+
+ public HealthModel getHealth() {
+ return health;
+ }
+
+ public void setHealth(HealthModel health) {
+ this.health = health;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIdCardNumber() {
+ return idCardNumber;
+ }
+
+ public void setIdCardNumber(String idCardNumber) {
+ this.idCardNumber = idCardNumber;
+ }
+
+ public String getIsRegister() {
+ return isRegister;
+ }
+
+ public void setIsRegister(String isRegister) {
+ this.isRegister = isRegister;
+ }
+
+ public LocationModel getLocation() {
+ return location;
+ }
+
+ public void setLocation(LocationModel location) {
+ this.location = location;
+ }
+
+ public MultiGasModel getMultiGas() {
+ return multiGas;
+ }
+
+ public void setMultiGas(MultiGasModel multiGas) {
+ this.multiGas = multiGas;
+ }
+
+ public String getOwnerShip() {
+ return ownerShip;
+ }
+
+ public void setOwnerShip(String ownerShip) {
+ this.ownerShip = ownerShip;
+ }
+
+ public String getPhoneNumber() {
+ return phoneNumber;
+ }
+
+ public void setPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ }
+
+ public String getRegisterTime() {
+ return registerTime;
+ }
+
+ public void setRegisterTime(String registerTime) {
+ this.registerTime = registerTime;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getStatusName() {
+ return statusName;
+ }
+
+ public void setStatusName(String statusName) {
+ this.statusName = statusName;
+ }
+
+ public String getWorkerAvatar() {
+ return workerAvatar;
+ }
+
+ public void setWorkerAvatar(String workerAvatar) {
+ this.workerAvatar = workerAvatar;
+ }
+
+ public String getWorkerName() {
+ return workerName;
+ }
+
+ public void setWorkerName(String workerName) {
+ this.workerName = workerName;
+ }
+
+ public String getWorkerType() {
+ return workerType;
+ }
+
+ public void setWorkerType(String workerType) {
+ this.workerType = workerType;
+ }
+
+ public String getWorkerTypeName() {
+ return workerTypeName;
+ }
+
+ public void setWorkerTypeName(String workerTypeName) {
+ this.workerTypeName = workerTypeName;
+ }
+
+ public static class HealthModel {
+ private String bloodOxygen;
+ private String deviceCode;
+ private String deviceId;
+ private String groupCode;
+ private String heartRate;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getBloodOxygen() {
+ return bloodOxygen;
+ }
+
+ public void setBloodOxygen(String bloodOxygen) {
+ this.bloodOxygen = bloodOxygen;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getHeartRate() {
+ return heartRate;
+ }
+
+ public void setHeartRate(String heartRate) {
+ this.heartRate = heartRate;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class LocationModel {
+ private String deviceCode;
+ private String deviceId;
+ private String gdLat;
+ private String gdLng;
+ private String groupCode;
+ private String lat;
+ private String lng;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGdLat() {
+ return gdLat;
+ }
+
+ public void setGdLat(String gdLat) {
+ this.gdLat = gdLat;
+ }
+
+ public String getGdLng() {
+ return gdLng;
+ }
+
+ public void setGdLng(String gdLng) {
+ this.gdLng = gdLng;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class MultiGasModel {
+ private String coValue;
+ private String deviceCode;
+ private String deviceId;
+ private String exValue;
+ private String groupCode;
+ private String h2sValue;
+ private String o2Value;
+ private String projectId;
+ private String projectName;
+ private String uploadTimestamp;
+
+ public String getCoValue() {
+ return coValue;
+ }
+
+ public void setCoValue(String coValue) {
+ this.coValue = coValue;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getExValue() {
+ return exValue;
+ }
+
+ public void setExValue(String exValue) {
+ this.exValue = exValue;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getH2sValue() {
+ return h2sValue;
+ }
+
+ public void setH2sValue(String h2sValue) {
+ this.h2sValue = h2sValue;
+ }
+
+ public String getO2Value() {
+ return o2Value;
+ }
+
+ public void setO2Value(String o2Value) {
+ this.o2Value = o2Value;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
deleted file mode 100644
index e32edab..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
+++ /dev/null
@@ -1,226 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class WorkerModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private boolean alarmFlag;
- private String bloodOxygen;
- private String braceletCode;
- private String cell;
- private String co;
- private String gas;
- private String gasTime;
- private String h2s;
- private String hatCode;
- private String hatId;
- private String heartRate;
- private String lat;
- private String lng;
- private String location;
- private String o2;
- private String signal;
- private String time;
- private String vastCode;
- private String workerId;
- private String workerName;
-
- public boolean isAlarmFlag() {
- return alarmFlag;
- }
-
- public void setAlarmFlag(boolean alarmFlag) {
- this.alarmFlag = alarmFlag;
- }
-
- public String getBloodOxygen() {
- return bloodOxygen;
- }
-
- public void setBloodOxygen(String bloodOxygen) {
- this.bloodOxygen = bloodOxygen;
- }
-
- public String getBraceletCode() {
- return braceletCode;
- }
-
- public void setBraceletCode(String braceletCode) {
- this.braceletCode = braceletCode;
- }
-
- public String getCell() {
- return cell;
- }
-
- public void setCell(String cell) {
- this.cell = cell;
- }
-
- public String getCo() {
- return co;
- }
-
- public void setCo(String co) {
- this.co = co;
- }
-
- public String getGas() {
- return gas;
- }
-
- public void setGas(String gas) {
- this.gas = gas;
- }
-
- public String getGasTime() {
- return gasTime;
- }
-
- public void setGasTime(String gasTime) {
- this.gasTime = gasTime;
- }
-
- public String getH2s() {
- return h2s;
- }
-
- public void setH2s(String h2s) {
- this.h2s = h2s;
- }
-
- public String getHatCode() {
- return hatCode;
- }
-
- public void setHatCode(String hatCode) {
- this.hatCode = hatCode;
- }
-
- public String getHatId() {
- return hatId;
- }
-
- public void setHatId(String hatId) {
- this.hatId = hatId;
- }
-
- public String getHeartRate() {
- return heartRate;
- }
-
- public void setHeartRate(String heartRate) {
- this.heartRate = heartRate;
- }
-
- public String getLat() {
- return lat;
- }
-
- public void setLat(String lat) {
- this.lat = lat;
- }
-
- public String getLng() {
- return lng;
- }
-
- public void setLng(String lng) {
- this.lng = lng;
- }
-
- public String getLocation() {
- return location;
- }
-
- public void setLocation(String location) {
- this.location = location;
- }
-
- public String getO2() {
- return o2;
- }
-
- public void setO2(String o2) {
- this.o2 = o2;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getTime() {
- return time;
- }
-
- public void setTime(String time) {
- this.time = time;
- }
-
- public String getVastCode() {
- return vastCode;
- }
-
- public void setVastCode(String vastCode) {
- this.vastCode = vastCode;
- }
-
- public String getWorkerId() {
- return workerId;
- }
-
- public void setWorkerId(String workerId) {
- this.workerId = workerId;
- }
-
- public String getWorkerName() {
- return workerName;
- }
-
- public void setWorkerName(String workerName) {
- this.workerName = workerName;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
index 4d68464..f56e8a1 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
@@ -2,7 +2,15 @@
import okhttp3.MultipartBody
import okhttp3.RequestBody
-import retrofit2.http.*
+import retrofit2.http.Body
+import retrofit2.http.Field
+import retrofit2.http.FormUrlEncoded
+import retrofit2.http.GET
+import retrofit2.http.Header
+import retrofit2.http.Multipart
+import retrofit2.http.POST
+import retrofit2.http.Part
+import retrofit2.http.Query
interface RetrofitService {
/**
@@ -41,7 +49,7 @@
/**
* 实施中列表
*/
- @GET("/site/listPage")
+ @GET("/v3/site/listPage")
suspend fun getProjectListByPage(
@Header("token") token: String,
@Query("keywords") keywords: String,
@@ -53,19 +61,13 @@
/**
* 获取工作区域作业人员
*/
- @GET("/overview/workerList")
- suspend fun getWorkers(
+ @GET("/v3/overview/workerList")
+ suspend fun getWorkSiteWorkers(
@Header("token") token: String,
@Query("projectId") projectId: String
): String
/**
- * 获取四合一数据
- */
- @GET("/emergency/startCheckOxygen")
- suspend fun getAirCondition(@Header("token") token: String): String
-
- /**
* 上报每个大阶段场景
* */
@GET("/emergency/notifyStageFinished")
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
index ed19c9f..a813fb0 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
@@ -3,7 +3,7 @@
import android.util.Log
import com.casic.br.operationsite.test.util.AuthenticationHelper
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.Gson
+import com.casic.br.operationsite.test.util.RuntimeCache
import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.RetrofitFactory
@@ -11,14 +11,13 @@
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
-import okhttp3.RequestBody
+import okhttp3.RequestBody.Companion.asRequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import java.io.File
object RetrofitServiceManager {
private const val kTag = "RetrofitServiceManager"
- private val gson by lazy { Gson() }
private val api by lazy {
val httpConfig = SaveKeyValues.getValue(
@@ -67,27 +66,20 @@
/**
* 获取工作区域作业人员
*/
- suspend fun getWorkers(projectId: String): String {
- return api.getWorkers(AuthenticationHelper.token!!, projectId)
+ suspend fun getWorkSiteWorkers(): String {
+ return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId)
}
/**
* 上传图片
*/
suspend fun uploadImage(image: File): String {
- val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val requestBody = image.asRequestBody("image/png".toMediaTypeOrNull())
val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
return api.uploadImage(AuthenticationHelper.token!!, imagePart)
}
/**
- * 获取四合一数据
- */
- suspend fun getAirCondition(): String {
- return api.getAirCondition(AuthenticationHelper.token!!)
- }
-
- /**
* 上报每个大阶段场景
*/
suspend fun notifyStageFinished(operationId: String?, stage: String): String {
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
new file mode 100644
index 0000000..337aaf1
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
@@ -0,0 +1,125 @@
+package com.casic.br.operationsite.test.service
+
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.app.Service
+import android.content.Intent
+import android.os.Handler
+import android.os.IBinder
+import android.os.Message
+import android.util.Log
+import androidx.core.app.NotificationCompat
+import com.casic.br.operationsite.test.R
+import com.casic.br.operationsite.test.extensions.convert
+import com.casic.br.operationsite.test.util.LocaleConstant
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener
+import com.pengxh.kt.lite.utils.socket.tcp.TcpClient
+
+class SocketConnectionService : Service(), OnTcpConnectStateListener, Handler.Callback {
+
+ companion object {
+ var weakReferenceHandler: WeakReferenceHandler? = null
+ }
+
+ override fun handleMessage(msg: Message): Boolean {
+ if (!tcpClient.isRunning()) {
+ "数据通讯服务断开连接,指令发送失败".show(this)
+ return true
+ }
+
+ when (msg.what) {
+ LocaleConstant.COMMAND_TEST_CODE -> {
+ val commandStr = msg.obj as String
+ tcpClient.sendMessage(commandStr.convert())
+ }
+
+ LocaleConstant.GAS_ALARM_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.GAS_ALARM_COMMAND)
+ }
+
+ LocaleConstant.CONFIRM_AIR_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.CONFIRM_AIR_COMMAND)
+ }
+
+ LocaleConstant.START_VIDEO_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.START_VIDEO_COMMAND)
+ }
+ }
+ return true
+ }
+
+ private val kTag = "SocketService"
+ private val notificationId = 1
+ private val tcpClient by lazy { TcpClient(this) }
+ private val notificationManager by lazy { getSystemService(NOTIFICATION_SERVICE) as NotificationManager }
+ private var notificationBuilder: NotificationCompat.Builder? = null
+
+ override fun onBind(intent: Intent?): IBinder? {
+ return null
+ }
+
+ override fun onCreate() {
+ super.onCreate()
+ val name = "${resources.getString(R.string.app_name)}前台服务"
+ val channel = NotificationChannel(
+ "socket_connection_service_channel", name, NotificationManager.IMPORTANCE_HIGH
+ )
+ channel.description = "Channel for socket connection service"
+ notificationManager.createNotificationChannel(channel)
+ notificationBuilder = NotificationCompat.Builder(this, "socket_connection_service_channel")
+ .setSmallIcon(R.mipmap.ic_launcher)
+ .setContentTitle("数据通讯服务连接中...")
+ .setContentText("为保证程序正常运行,请勿移除此通知")
+ .setPriority(NotificationCompat.PRIORITY_HIGH) // 设置通知优先级
+ .setOngoing(true)
+ .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
+
+ val notification = notificationBuilder?.build()
+ startForeground(notificationId, notification)
+ }
+
+ override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
+ if (weakReferenceHandler == null) {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+ tcpClient.start(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
+ Log.d(kTag, "onStartCommand: SocketConnectionService")
+ return START_STICKY
+ }
+
+ override fun onConnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务已连接")
+ "数据通讯服务连接成功,现在可以下发指令了".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDisconnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务断开连接")
+ "数据通讯服务断开连接".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onConnectFailed() {
+ notificationBuilder?.setContentTitle("数据通讯服务连接出错,开始重连")
+ "数据通讯服务连接出错,开始重连".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ tcpClient.stop(false)
+ stopForeground(STOP_FOREGROUND_REMOVE)
+ Log.d(kTag, "onDestroy: SocketConnectionService")
+ }
+
+ override fun onMessageReceived(bytes: ByteArray?) {
+ if (bytes == null) {
+ return
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
deleted file mode 100644
index bc3c0ca..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.casic.br.operationsite.test.service
-
-import android.app.Service
-import android.content.Intent
-import android.os.Handler
-import android.os.IBinder
-import android.os.Message
-import com.casic.br.operationsite.test.util.LocaleConstant
-import com.casic.br.operationsite.test.util.tcp.SocketManager
-import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.WeakReferenceHandler
-
-class TcpMessageService : Service(), Handler.Callback {
-
- companion object {
- lateinit var weakReferenceHandler: WeakReferenceHandler
- }
-
- private val kTag = "TcpMessageService"
-
- override fun onBind(intent: Intent?): IBinder? {
- return null
- }
-
- override fun onCreate() {
- super.onCreate()
- weakReferenceHandler = WeakReferenceHandler(this)
- SocketManager.get.connectTcpServer(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
- }
-
- override fun onDestroy() {
- super.onDestroy()
- SocketManager.get.close()
- }
-
- override fun handleMessage(msg: Message): Boolean {
- if (msg.what == LocaleConstant.TCP_CONNECTED_CODE) {
- "指令连接成功,现在可以下发指令了".show(this)
- } else {
- "指令连接断开,开始自动重连".show(this)
- }
- return true
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt b/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt
deleted file mode 100644
index 56bc436..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.casic.br.operationsite.test.util
-
-import android.content.Context
-import android.widget.ImageView
-import com.bumptech.glide.Glide
-import com.bumptech.glide.load.resource.bitmap.CenterCrop
-import com.bumptech.glide.load.resource.bitmap.RoundedCorners
-import com.bumptech.glide.request.RequestOptions
-import com.casic.br.operationsite.test.R
-import com.luck.picture.lib.engine.ImageEngine
-import com.luck.picture.lib.utils.ActivityCompatHelper
-
-
-class GlideLoadEngine private constructor() : ImageEngine {
-
- companion object {
- val get: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
- GlideLoadEngine()
- }
- }
-
- override fun loadImage(context: Context, url: String, imageView: ImageView) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context).load(url).into(imageView);
- }
-
- override fun loadImage(
- context: Context,
- imageView: ImageView,
- url: String,
- maxWidth: Int,
- maxHeight: Int
- ) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context)
- .load(url)
- .override(maxWidth, maxHeight)
- .into(imageView)
- }
-
- override fun loadAlbumCover(context: Context, url: String, imageView: ImageView) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context)
- .asBitmap()
- .load(url)
- .override(180, 180)
- .sizeMultiplier(0.5f)
- .transform(CenterCrop(), RoundedCorners(8))
- .placeholder(R.drawable.ps_image_placeholder)
- .into(imageView)
- }
-
- override fun pauseRequests(context: Context?) {
- context?.let { Glide.with(it).pauseRequests() }
- }
-
- override fun resumeRequests(context: Context?) {
- context?.let { Glide.with(it).resumeRequests() }
- }
-
- override fun loadGridImage(context: Context, url: String, imageView: ImageView) {
- Glide.with(context)
- .load(url)
- .apply(RequestOptions().placeholder(R.drawable.ps_image_placeholder))
- .into(imageView)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt b/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
index ec57ebc..92cf048 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
@@ -1,13 +1,13 @@
package com.casic.br.operationsite.test.util
import android.util.Log
-import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.LifecycleOwner
-import androidx.lifecycle.LifecycleRegistry
-import androidx.lifecycle.lifecycleScope
import com.google.gson.Gson
import com.google.gson.JsonObject
+import com.pengxh.kt.lite.utils.LiteKitConstant
+import kotlinx.coroutines.CoroutineExceptionHandler
+import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import okhttp3.MediaType.Companion.toMediaType
@@ -21,10 +21,9 @@
/**
* Service里面的Http请求
* */
-class HttpRequestHelper(builder: Builder) : LifecycleOwner {
+class HttpRequestHelper(builder: Builder) {
private val kTag = "HttpRequestHelper"
- private val registry = LifecycleRegistry(this)
private val gson by lazy { Gson() }
class Builder {
@@ -68,6 +67,9 @@
}
fun build(): HttpRequestHelper {
+ if (!::key.isInitialized || !::value.isInitialized || !::url.isInitialized || !::httpRequestCallback.isInitialized) {
+ throw IllegalStateException("All properties must be initialized before building.")
+ }
return HttpRequestHelper(this)
}
}
@@ -81,7 +83,7 @@
/**
* 发起网络请求
* */
- fun start() {
+ fun start(timeoutSeconds: Long = LiteKitConstant.HTTP_TIMEOUT) {
val param = JsonObject()
map.forEach {
param.add(it.key, gson.toJsonTree(it.value))
@@ -91,30 +93,43 @@
)
//构建Request
val request = Request.Builder().addHeader(key, value).post(requestBody).url(url).build()
- lifecycleScope.launch(Dispatchers.IO) {
- val interceptor = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
- override fun log(message: String) {
- Log.d(kTag, ">>>>> $message")
- }
- })
- interceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
- val client = OkHttpClient.Builder()
- .addInterceptor(interceptor)
- .readTimeout(10, TimeUnit.SECONDS)
- .connectTimeout(30, TimeUnit.SECONDS)
- .writeTimeout(10, TimeUnit.SECONDS)
- .build()
+
+ val logLevel = HttpLoggingInterceptor.Level.NONE
+ val interceptor = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
+ override fun log(message: String) {
+ Log.d(kTag, ">>>>> $message")
+ }
+ }).setLevel(logLevel)
+
+ val client = OkHttpClient.Builder()
+ .addInterceptor(interceptor)
+ .readTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .connectTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .writeTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .build()
+
+ val job = SupervisorJob()
+ val scope = CoroutineScope(Dispatchers.Main + job)
+ scope.launch(Dispatchers.Main + CoroutineExceptionHandler { _, throwable ->
+ callback.onFailure(throwable)
+ }) {
try {
- val response = client.newCall(request).execute()
- response.body?.apply {
- withContext(Dispatchers.Main) {
- callback.onSuccess(string())
+ val response = withContext(Dispatchers.IO) {
+ client.newCall(request).execute()
+ }
+ if (response.isSuccessful) {
+ response.body?.string()?.let {
+ callback.onSuccess(it)
+ } ?: run {
+ callback.onFailure(IOException("Response body is null"))
}
+ } else {
+ callback.onFailure(IOException("Unexpected code ${response.code}"))
}
- } catch (e: IOException) {
- withContext(Dispatchers.Main) {
- callback.onFailure(e)
- }
+ } catch (e: Exception) {
+ callback.onFailure(e)
+ } finally {
+ job.cancel()
}
}
}
@@ -124,8 +139,4 @@
fun onFailure(throwable: Throwable)
}
-
- override fun getLifecycle(): Lifecycle {
- return registry
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
index 63ae413..68584bb 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
@@ -28,8 +28,8 @@
)
}
-// const val SERVER_BASE_URL = "http://192.168.9.99:8085"
- const val SERVER_BASE_URL = "http://139.198.19.235:22006"
+ const val SERVER_BASE_URL = "http://111.198.10.15:22006"
+// const val SERVER_BASE_URL = "http://139.198.19.235:22006"
const val IMAGE_BED_URL = "${SERVER_BASE_URL}/emergency/prepareUpload"
@@ -51,7 +51,8 @@
const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig"
const val ACCOUNT = "account"
const val PASSWORD = "password"
- const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_NAME_KEY = "USER_NAME_KEY"
+ const val USER_ID_KEY = "USER_ID_KEY"
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 10
@@ -61,8 +62,10 @@
const val WEBSOCKET_MESSAGE_CODE = 101
const val WEBSOCKET_DISCONNECTED_CODE = 102
- const val TCP_CONNECTED_CODE = 103
- const val TCP_DISCONNECTED_CODE = 104
+ const val COMMAND_TEST_CODE = 202506001
+ const val GAS_ALARM_CODE = 202506002
+ const val CONFIRM_AIR_COMMAND_CODE = 202506003
+ const val START_VIDEO_COMMAND_CODE = 202506004
//作业前检测
val CONFIRM_AIR_COMMAND =
@@ -73,6 +76,6 @@
byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x11, 0x00, 0xA5.toByte())
//甲烷阈值报警
- val GAS_COMMAND =
+ val GAS_ALARM_COMMAND =
byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x14, 0x00, 0xA8.toByte())
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt b/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt
index f044fd3..14514a0 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt
@@ -3,11 +3,11 @@
import com.shuyu.gsyvideoplayer.GSYVideoManager
import com.shuyu.gsyvideoplayer.model.VideoOptionModel
import com.shuyu.gsyvideoplayer.utils.GSYVideoType
-import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
+import com.shuyu.gsyvideoplayer.video.NormalGSYVideoPlayer
import tv.danmaku.ijk.media.player.IjkMediaPlayer
object VideoPlayerManager {
- fun setGSYVideoPlayerOptions(videoPlayer: StandardGSYVideoPlayer, url: String) {
+ fun setGSYVideoPlayerOptions(videoPlayer: NormalGSYVideoPlayer, url: String) {
val list = ArrayList()
//开启软解码,硬解码:1、打开,0、关闭
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/ISocketListener.kt b/app/src/main/java/com/casic/br/operationsite/test/util/tcp/ISocketListener.kt
deleted file mode 100644
index a00a2a8..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/ISocketListener.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.casic.br.operationsite.test.util.tcp
-
-interface ISocketListener {
- companion object {
- const val STATUS_CONNECT_SUCCESS: Byte = 1 //连接成功
- const val STATUS_CONNECT_CLOSED: Byte = 0 //关闭连接
- const val STATUS_CONNECT_ERROR: Byte = -1 //连接失败
- }
-
- /**
- * 当接收到系统消息
- */
- fun onMessageResponse(data: ByteArray?)
-
- /**
- * 当连接状态发生变化时调用
- */
- fun onServiceStatusConnectChanged(statusCode: Byte)
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketChannelHandle.kt b/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketChannelHandle.kt
deleted file mode 100644
index 8963268..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketChannelHandle.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.casic.br.operationsite.test.util.tcp
-
-import android.util.Log
-import io.netty.channel.ChannelHandlerContext
-import io.netty.channel.SimpleChannelInboundHandler
-
-class SocketChannelHandle(private val listener: ISocketListener?) :
- SimpleChannelInboundHandler() {
-
- private val kTag = "SocketChannelHandle"
-
- override fun channelActive(ctx: ChannelHandlerContext) {
- super.channelActive(ctx)
- Log.d(kTag, "channelActive ===> 连接成功")
- listener?.onServiceStatusConnectChanged(ISocketListener.STATUS_CONNECT_SUCCESS)
- }
-
- override fun channelInactive(ctx: ChannelHandlerContext) {
- super.channelInactive(ctx)
- Log.e(kTag, "channelInactive: 连接断开")
- listener?.onServiceStatusConnectChanged(ISocketListener.STATUS_CONNECT_CLOSED)
- }
-
- override fun channelRead0(ctx: ChannelHandlerContext, data: ByteArray?) {
- listener?.onMessageResponse(data)
- }
-
- override fun exceptionCaught(ctx: ChannelHandlerContext, cause: Throwable) {
- super.exceptionCaught(ctx, cause)
- Log.d(kTag, "exceptionCaught ===> $cause")
- listener?.onServiceStatusConnectChanged(ISocketListener.STATUS_CONNECT_ERROR)
- cause.printStackTrace()
- ctx.close()
- }
-}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ede224a..bb07476 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
@@ -37,7 +40,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
@@ -49,14 +52,14 @@
-
-
-
+
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
index 90aa34e..7a487d2 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
@@ -3,32 +3,27 @@
import android.content.Context
import com.casic.br.operationsite.test.callback.OnImageCompressListener
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.JsonParser
+import com.google.gson.Gson
+import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.createCompressImageDir
import com.pengxh.kt.lite.utils.SaveKeyValues
import top.zibin.luban.Luban
import top.zibin.luban.OnCompressListener
import java.io.File
+val gson by lazy { Gson() }
+
/**
* String扩展方法
*/
-fun String.getResponseCode(): Int {
+fun String.getResponseHeader(): Pair {
if (this.isBlank()) {
- return 404
+ return Pair(404, "Invalid Response")
}
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("code").asInt
-}
-
-fun String.getResponseMessage(): String {
- if (this.isBlank()) {
- return ""
- }
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("message").asString
+ val jsonObject = gson.fromJson(this, JsonObject::class.java)
+ val code = jsonObject.get("code").asInt
+ val message = jsonObject.get("message").asString
+ return Pair(code, message)
}
//拼接图片地址
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
deleted file mode 100644
index 758b3bd..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class AirConditionModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private double o2;
- private int h2s;
- private int co;
- private int ch4;
-
- public double getO2() {
- return o2;
- }
-
- public void setO2(double o2) {
- this.o2 = o2;
- }
-
- public int getH2s() {
- return h2s;
- }
-
- public void setH2s(int h2s) {
- this.h2s = h2s;
- }
-
- public int getCo() {
- return co;
- }
-
- public void setCo(int co) {
- this.co = co;
- }
-
- public int getCh4() {
- return ch4;
- }
-
- public void setCh4(int ch4) {
- this.ch4 = ch4;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
index f0a8f63..70228ef 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
@@ -65,13 +65,26 @@
}
public static class RowsModel {
+ private String borderPointCount;
private String createTime;
+ private String deptFullName;
+ private String deptId;
+ private String deptName;
+ private List> deviceList;
+ private String finishTime;
+ private String groupDeviceCode;
+ private String groupDeviceId;
private String id;
private String imageUrl;
+ private String locationTime;
+ private List pointLocation;
+ private String pointLocationJson;
private String projectState;
private String projectStateName;
private String registerTime;
+ private String startTime;
private String updateTime;
+ private String valid;
private String workPerson;
private String workPersonDeptId;
private String workPersonDeptName;
@@ -80,6 +93,16 @@
private String workRoad;
private String workSiteDesc;
private String workTitle;
+ private String workType;
+ private String workTypeName;
+
+ public String getBorderPointCount() {
+ return borderPointCount;
+ }
+
+ public void setBorderPointCount(String borderPointCount) {
+ this.borderPointCount = borderPointCount;
+ }
public String getCreateTime() {
return createTime;
@@ -89,6 +112,62 @@
this.createTime = createTime;
}
+ public String getDeptFullName() {
+ return deptFullName;
+ }
+
+ public void setDeptFullName(String deptFullName) {
+ this.deptFullName = deptFullName;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public List> getDeviceList() {
+ return deviceList;
+ }
+
+ public void setDeviceList(List> deviceList) {
+ this.deviceList = deviceList;
+ }
+
+ public String getFinishTime() {
+ return finishTime;
+ }
+
+ public void setFinishTime(String finishTime) {
+ this.finishTime = finishTime;
+ }
+
+ public String getGroupDeviceCode() {
+ return groupDeviceCode;
+ }
+
+ public void setGroupDeviceCode(String groupDeviceCode) {
+ this.groupDeviceCode = groupDeviceCode;
+ }
+
+ public String getGroupDeviceId() {
+ return groupDeviceId;
+ }
+
+ public void setGroupDeviceId(String groupDeviceId) {
+ this.groupDeviceId = groupDeviceId;
+ }
+
public String getId() {
return id;
}
@@ -105,6 +184,30 @@
this.imageUrl = imageUrl;
}
+ public String getLocationTime() {
+ return locationTime;
+ }
+
+ public void setLocationTime(String locationTime) {
+ this.locationTime = locationTime;
+ }
+
+ public List getPointLocation() {
+ return pointLocation;
+ }
+
+ public void setPointLocation(List pointLocation) {
+ this.pointLocation = pointLocation;
+ }
+
+ public String getPointLocationJson() {
+ return pointLocationJson;
+ }
+
+ public void setPointLocationJson(String pointLocationJson) {
+ this.pointLocationJson = pointLocationJson;
+ }
+
public String getProjectState() {
return projectState;
}
@@ -129,6 +232,14 @@
this.registerTime = registerTime;
}
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
public String getUpdateTime() {
return updateTime;
}
@@ -137,6 +248,14 @@
this.updateTime = updateTime;
}
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
public String getWorkPerson() {
return workPerson;
}
@@ -200,6 +319,43 @@
public void setWorkTitle(String workTitle) {
this.workTitle = workTitle;
}
+
+ public String getWorkType() {
+ return workType;
+ }
+
+ public void setWorkType(String workType) {
+ this.workType = workType;
+ }
+
+ public String getWorkTypeName() {
+ return workTypeName;
+ }
+
+ public void setWorkTypeName(String workTypeName) {
+ this.workTypeName = workTypeName;
+ }
+
+ public static class PointLocationModel {
+ private String lng;
+ private String lat;
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
new file mode 100644
index 0000000..5d87443
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
@@ -0,0 +1,487 @@
+package com.casic.br.operationsite.test.model;
+
+import java.util.List;
+
+public class WorkSiteWorkerModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataModel {
+ private boolean alarmFlag;
+ private String createTime;
+ private String deptId;
+ private String deptName;
+ private String enterReason;
+ private String gender;
+ private String genderName;
+ private HealthModel health;
+ private String id;
+ private String idCardNumber;
+ private String isRegister;
+ private LocationModel location;
+ private MultiGasModel multiGas;
+ private String ownerShip;
+ private String phoneNumber;
+ private String registerTime;
+ private String status;
+ private String statusName;
+ private String workerAvatar;
+ private String workerName;
+ private String workerType;
+ private String workerTypeName;
+
+ public boolean isAlarmFlag() {
+ return alarmFlag;
+ }
+
+ public void setAlarmFlag(boolean alarmFlag) {
+ this.alarmFlag = alarmFlag;
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public String getEnterReason() {
+ return enterReason;
+ }
+
+ public void setEnterReason(String enterReason) {
+ this.enterReason = enterReason;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+ public String getGenderName() {
+ return genderName;
+ }
+
+ public void setGenderName(String genderName) {
+ this.genderName = genderName;
+ }
+
+ public HealthModel getHealth() {
+ return health;
+ }
+
+ public void setHealth(HealthModel health) {
+ this.health = health;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIdCardNumber() {
+ return idCardNumber;
+ }
+
+ public void setIdCardNumber(String idCardNumber) {
+ this.idCardNumber = idCardNumber;
+ }
+
+ public String getIsRegister() {
+ return isRegister;
+ }
+
+ public void setIsRegister(String isRegister) {
+ this.isRegister = isRegister;
+ }
+
+ public LocationModel getLocation() {
+ return location;
+ }
+
+ public void setLocation(LocationModel location) {
+ this.location = location;
+ }
+
+ public MultiGasModel getMultiGas() {
+ return multiGas;
+ }
+
+ public void setMultiGas(MultiGasModel multiGas) {
+ this.multiGas = multiGas;
+ }
+
+ public String getOwnerShip() {
+ return ownerShip;
+ }
+
+ public void setOwnerShip(String ownerShip) {
+ this.ownerShip = ownerShip;
+ }
+
+ public String getPhoneNumber() {
+ return phoneNumber;
+ }
+
+ public void setPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ }
+
+ public String getRegisterTime() {
+ return registerTime;
+ }
+
+ public void setRegisterTime(String registerTime) {
+ this.registerTime = registerTime;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getStatusName() {
+ return statusName;
+ }
+
+ public void setStatusName(String statusName) {
+ this.statusName = statusName;
+ }
+
+ public String getWorkerAvatar() {
+ return workerAvatar;
+ }
+
+ public void setWorkerAvatar(String workerAvatar) {
+ this.workerAvatar = workerAvatar;
+ }
+
+ public String getWorkerName() {
+ return workerName;
+ }
+
+ public void setWorkerName(String workerName) {
+ this.workerName = workerName;
+ }
+
+ public String getWorkerType() {
+ return workerType;
+ }
+
+ public void setWorkerType(String workerType) {
+ this.workerType = workerType;
+ }
+
+ public String getWorkerTypeName() {
+ return workerTypeName;
+ }
+
+ public void setWorkerTypeName(String workerTypeName) {
+ this.workerTypeName = workerTypeName;
+ }
+
+ public static class HealthModel {
+ private String bloodOxygen;
+ private String deviceCode;
+ private String deviceId;
+ private String groupCode;
+ private String heartRate;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getBloodOxygen() {
+ return bloodOxygen;
+ }
+
+ public void setBloodOxygen(String bloodOxygen) {
+ this.bloodOxygen = bloodOxygen;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getHeartRate() {
+ return heartRate;
+ }
+
+ public void setHeartRate(String heartRate) {
+ this.heartRate = heartRate;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class LocationModel {
+ private String deviceCode;
+ private String deviceId;
+ private String gdLat;
+ private String gdLng;
+ private String groupCode;
+ private String lat;
+ private String lng;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGdLat() {
+ return gdLat;
+ }
+
+ public void setGdLat(String gdLat) {
+ this.gdLat = gdLat;
+ }
+
+ public String getGdLng() {
+ return gdLng;
+ }
+
+ public void setGdLng(String gdLng) {
+ this.gdLng = gdLng;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class MultiGasModel {
+ private String coValue;
+ private String deviceCode;
+ private String deviceId;
+ private String exValue;
+ private String groupCode;
+ private String h2sValue;
+ private String o2Value;
+ private String projectId;
+ private String projectName;
+ private String uploadTimestamp;
+
+ public String getCoValue() {
+ return coValue;
+ }
+
+ public void setCoValue(String coValue) {
+ this.coValue = coValue;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getExValue() {
+ return exValue;
+ }
+
+ public void setExValue(String exValue) {
+ this.exValue = exValue;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getH2sValue() {
+ return h2sValue;
+ }
+
+ public void setH2sValue(String h2sValue) {
+ this.h2sValue = h2sValue;
+ }
+
+ public String getO2Value() {
+ return o2Value;
+ }
+
+ public void setO2Value(String o2Value) {
+ this.o2Value = o2Value;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
deleted file mode 100644
index e32edab..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
+++ /dev/null
@@ -1,226 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class WorkerModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private boolean alarmFlag;
- private String bloodOxygen;
- private String braceletCode;
- private String cell;
- private String co;
- private String gas;
- private String gasTime;
- private String h2s;
- private String hatCode;
- private String hatId;
- private String heartRate;
- private String lat;
- private String lng;
- private String location;
- private String o2;
- private String signal;
- private String time;
- private String vastCode;
- private String workerId;
- private String workerName;
-
- public boolean isAlarmFlag() {
- return alarmFlag;
- }
-
- public void setAlarmFlag(boolean alarmFlag) {
- this.alarmFlag = alarmFlag;
- }
-
- public String getBloodOxygen() {
- return bloodOxygen;
- }
-
- public void setBloodOxygen(String bloodOxygen) {
- this.bloodOxygen = bloodOxygen;
- }
-
- public String getBraceletCode() {
- return braceletCode;
- }
-
- public void setBraceletCode(String braceletCode) {
- this.braceletCode = braceletCode;
- }
-
- public String getCell() {
- return cell;
- }
-
- public void setCell(String cell) {
- this.cell = cell;
- }
-
- public String getCo() {
- return co;
- }
-
- public void setCo(String co) {
- this.co = co;
- }
-
- public String getGas() {
- return gas;
- }
-
- public void setGas(String gas) {
- this.gas = gas;
- }
-
- public String getGasTime() {
- return gasTime;
- }
-
- public void setGasTime(String gasTime) {
- this.gasTime = gasTime;
- }
-
- public String getH2s() {
- return h2s;
- }
-
- public void setH2s(String h2s) {
- this.h2s = h2s;
- }
-
- public String getHatCode() {
- return hatCode;
- }
-
- public void setHatCode(String hatCode) {
- this.hatCode = hatCode;
- }
-
- public String getHatId() {
- return hatId;
- }
-
- public void setHatId(String hatId) {
- this.hatId = hatId;
- }
-
- public String getHeartRate() {
- return heartRate;
- }
-
- public void setHeartRate(String heartRate) {
- this.heartRate = heartRate;
- }
-
- public String getLat() {
- return lat;
- }
-
- public void setLat(String lat) {
- this.lat = lat;
- }
-
- public String getLng() {
- return lng;
- }
-
- public void setLng(String lng) {
- this.lng = lng;
- }
-
- public String getLocation() {
- return location;
- }
-
- public void setLocation(String location) {
- this.location = location;
- }
-
- public String getO2() {
- return o2;
- }
-
- public void setO2(String o2) {
- this.o2 = o2;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getTime() {
- return time;
- }
-
- public void setTime(String time) {
- this.time = time;
- }
-
- public String getVastCode() {
- return vastCode;
- }
-
- public void setVastCode(String vastCode) {
- this.vastCode = vastCode;
- }
-
- public String getWorkerId() {
- return workerId;
- }
-
- public void setWorkerId(String workerId) {
- this.workerId = workerId;
- }
-
- public String getWorkerName() {
- return workerName;
- }
-
- public void setWorkerName(String workerName) {
- this.workerName = workerName;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
index 4d68464..f56e8a1 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
@@ -2,7 +2,15 @@
import okhttp3.MultipartBody
import okhttp3.RequestBody
-import retrofit2.http.*
+import retrofit2.http.Body
+import retrofit2.http.Field
+import retrofit2.http.FormUrlEncoded
+import retrofit2.http.GET
+import retrofit2.http.Header
+import retrofit2.http.Multipart
+import retrofit2.http.POST
+import retrofit2.http.Part
+import retrofit2.http.Query
interface RetrofitService {
/**
@@ -41,7 +49,7 @@
/**
* 实施中列表
*/
- @GET("/site/listPage")
+ @GET("/v3/site/listPage")
suspend fun getProjectListByPage(
@Header("token") token: String,
@Query("keywords") keywords: String,
@@ -53,19 +61,13 @@
/**
* 获取工作区域作业人员
*/
- @GET("/overview/workerList")
- suspend fun getWorkers(
+ @GET("/v3/overview/workerList")
+ suspend fun getWorkSiteWorkers(
@Header("token") token: String,
@Query("projectId") projectId: String
): String
/**
- * 获取四合一数据
- */
- @GET("/emergency/startCheckOxygen")
- suspend fun getAirCondition(@Header("token") token: String): String
-
- /**
* 上报每个大阶段场景
* */
@GET("/emergency/notifyStageFinished")
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
index ed19c9f..a813fb0 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
@@ -3,7 +3,7 @@
import android.util.Log
import com.casic.br.operationsite.test.util.AuthenticationHelper
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.Gson
+import com.casic.br.operationsite.test.util.RuntimeCache
import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.RetrofitFactory
@@ -11,14 +11,13 @@
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
-import okhttp3.RequestBody
+import okhttp3.RequestBody.Companion.asRequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import java.io.File
object RetrofitServiceManager {
private const val kTag = "RetrofitServiceManager"
- private val gson by lazy { Gson() }
private val api by lazy {
val httpConfig = SaveKeyValues.getValue(
@@ -67,27 +66,20 @@
/**
* 获取工作区域作业人员
*/
- suspend fun getWorkers(projectId: String): String {
- return api.getWorkers(AuthenticationHelper.token!!, projectId)
+ suspend fun getWorkSiteWorkers(): String {
+ return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId)
}
/**
* 上传图片
*/
suspend fun uploadImage(image: File): String {
- val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val requestBody = image.asRequestBody("image/png".toMediaTypeOrNull())
val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
return api.uploadImage(AuthenticationHelper.token!!, imagePart)
}
/**
- * 获取四合一数据
- */
- suspend fun getAirCondition(): String {
- return api.getAirCondition(AuthenticationHelper.token!!)
- }
-
- /**
* 上报每个大阶段场景
*/
suspend fun notifyStageFinished(operationId: String?, stage: String): String {
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
new file mode 100644
index 0000000..337aaf1
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
@@ -0,0 +1,125 @@
+package com.casic.br.operationsite.test.service
+
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.app.Service
+import android.content.Intent
+import android.os.Handler
+import android.os.IBinder
+import android.os.Message
+import android.util.Log
+import androidx.core.app.NotificationCompat
+import com.casic.br.operationsite.test.R
+import com.casic.br.operationsite.test.extensions.convert
+import com.casic.br.operationsite.test.util.LocaleConstant
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener
+import com.pengxh.kt.lite.utils.socket.tcp.TcpClient
+
+class SocketConnectionService : Service(), OnTcpConnectStateListener, Handler.Callback {
+
+ companion object {
+ var weakReferenceHandler: WeakReferenceHandler? = null
+ }
+
+ override fun handleMessage(msg: Message): Boolean {
+ if (!tcpClient.isRunning()) {
+ "数据通讯服务断开连接,指令发送失败".show(this)
+ return true
+ }
+
+ when (msg.what) {
+ LocaleConstant.COMMAND_TEST_CODE -> {
+ val commandStr = msg.obj as String
+ tcpClient.sendMessage(commandStr.convert())
+ }
+
+ LocaleConstant.GAS_ALARM_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.GAS_ALARM_COMMAND)
+ }
+
+ LocaleConstant.CONFIRM_AIR_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.CONFIRM_AIR_COMMAND)
+ }
+
+ LocaleConstant.START_VIDEO_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.START_VIDEO_COMMAND)
+ }
+ }
+ return true
+ }
+
+ private val kTag = "SocketService"
+ private val notificationId = 1
+ private val tcpClient by lazy { TcpClient(this) }
+ private val notificationManager by lazy { getSystemService(NOTIFICATION_SERVICE) as NotificationManager }
+ private var notificationBuilder: NotificationCompat.Builder? = null
+
+ override fun onBind(intent: Intent?): IBinder? {
+ return null
+ }
+
+ override fun onCreate() {
+ super.onCreate()
+ val name = "${resources.getString(R.string.app_name)}前台服务"
+ val channel = NotificationChannel(
+ "socket_connection_service_channel", name, NotificationManager.IMPORTANCE_HIGH
+ )
+ channel.description = "Channel for socket connection service"
+ notificationManager.createNotificationChannel(channel)
+ notificationBuilder = NotificationCompat.Builder(this, "socket_connection_service_channel")
+ .setSmallIcon(R.mipmap.ic_launcher)
+ .setContentTitle("数据通讯服务连接中...")
+ .setContentText("为保证程序正常运行,请勿移除此通知")
+ .setPriority(NotificationCompat.PRIORITY_HIGH) // 设置通知优先级
+ .setOngoing(true)
+ .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
+
+ val notification = notificationBuilder?.build()
+ startForeground(notificationId, notification)
+ }
+
+ override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
+ if (weakReferenceHandler == null) {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+ tcpClient.start(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
+ Log.d(kTag, "onStartCommand: SocketConnectionService")
+ return START_STICKY
+ }
+
+ override fun onConnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务已连接")
+ "数据通讯服务连接成功,现在可以下发指令了".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDisconnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务断开连接")
+ "数据通讯服务断开连接".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onConnectFailed() {
+ notificationBuilder?.setContentTitle("数据通讯服务连接出错,开始重连")
+ "数据通讯服务连接出错,开始重连".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ tcpClient.stop(false)
+ stopForeground(STOP_FOREGROUND_REMOVE)
+ Log.d(kTag, "onDestroy: SocketConnectionService")
+ }
+
+ override fun onMessageReceived(bytes: ByteArray?) {
+ if (bytes == null) {
+ return
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
deleted file mode 100644
index bc3c0ca..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.casic.br.operationsite.test.service
-
-import android.app.Service
-import android.content.Intent
-import android.os.Handler
-import android.os.IBinder
-import android.os.Message
-import com.casic.br.operationsite.test.util.LocaleConstant
-import com.casic.br.operationsite.test.util.tcp.SocketManager
-import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.WeakReferenceHandler
-
-class TcpMessageService : Service(), Handler.Callback {
-
- companion object {
- lateinit var weakReferenceHandler: WeakReferenceHandler
- }
-
- private val kTag = "TcpMessageService"
-
- override fun onBind(intent: Intent?): IBinder? {
- return null
- }
-
- override fun onCreate() {
- super.onCreate()
- weakReferenceHandler = WeakReferenceHandler(this)
- SocketManager.get.connectTcpServer(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
- }
-
- override fun onDestroy() {
- super.onDestroy()
- SocketManager.get.close()
- }
-
- override fun handleMessage(msg: Message): Boolean {
- if (msg.what == LocaleConstant.TCP_CONNECTED_CODE) {
- "指令连接成功,现在可以下发指令了".show(this)
- } else {
- "指令连接断开,开始自动重连".show(this)
- }
- return true
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt b/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt
deleted file mode 100644
index 56bc436..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.casic.br.operationsite.test.util
-
-import android.content.Context
-import android.widget.ImageView
-import com.bumptech.glide.Glide
-import com.bumptech.glide.load.resource.bitmap.CenterCrop
-import com.bumptech.glide.load.resource.bitmap.RoundedCorners
-import com.bumptech.glide.request.RequestOptions
-import com.casic.br.operationsite.test.R
-import com.luck.picture.lib.engine.ImageEngine
-import com.luck.picture.lib.utils.ActivityCompatHelper
-
-
-class GlideLoadEngine private constructor() : ImageEngine {
-
- companion object {
- val get: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
- GlideLoadEngine()
- }
- }
-
- override fun loadImage(context: Context, url: String, imageView: ImageView) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context).load(url).into(imageView);
- }
-
- override fun loadImage(
- context: Context,
- imageView: ImageView,
- url: String,
- maxWidth: Int,
- maxHeight: Int
- ) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context)
- .load(url)
- .override(maxWidth, maxHeight)
- .into(imageView)
- }
-
- override fun loadAlbumCover(context: Context, url: String, imageView: ImageView) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context)
- .asBitmap()
- .load(url)
- .override(180, 180)
- .sizeMultiplier(0.5f)
- .transform(CenterCrop(), RoundedCorners(8))
- .placeholder(R.drawable.ps_image_placeholder)
- .into(imageView)
- }
-
- override fun pauseRequests(context: Context?) {
- context?.let { Glide.with(it).pauseRequests() }
- }
-
- override fun resumeRequests(context: Context?) {
- context?.let { Glide.with(it).resumeRequests() }
- }
-
- override fun loadGridImage(context: Context, url: String, imageView: ImageView) {
- Glide.with(context)
- .load(url)
- .apply(RequestOptions().placeholder(R.drawable.ps_image_placeholder))
- .into(imageView)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt b/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
index ec57ebc..92cf048 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
@@ -1,13 +1,13 @@
package com.casic.br.operationsite.test.util
import android.util.Log
-import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.LifecycleOwner
-import androidx.lifecycle.LifecycleRegistry
-import androidx.lifecycle.lifecycleScope
import com.google.gson.Gson
import com.google.gson.JsonObject
+import com.pengxh.kt.lite.utils.LiteKitConstant
+import kotlinx.coroutines.CoroutineExceptionHandler
+import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import okhttp3.MediaType.Companion.toMediaType
@@ -21,10 +21,9 @@
/**
* Service里面的Http请求
* */
-class HttpRequestHelper(builder: Builder) : LifecycleOwner {
+class HttpRequestHelper(builder: Builder) {
private val kTag = "HttpRequestHelper"
- private val registry = LifecycleRegistry(this)
private val gson by lazy { Gson() }
class Builder {
@@ -68,6 +67,9 @@
}
fun build(): HttpRequestHelper {
+ if (!::key.isInitialized || !::value.isInitialized || !::url.isInitialized || !::httpRequestCallback.isInitialized) {
+ throw IllegalStateException("All properties must be initialized before building.")
+ }
return HttpRequestHelper(this)
}
}
@@ -81,7 +83,7 @@
/**
* 发起网络请求
* */
- fun start() {
+ fun start(timeoutSeconds: Long = LiteKitConstant.HTTP_TIMEOUT) {
val param = JsonObject()
map.forEach {
param.add(it.key, gson.toJsonTree(it.value))
@@ -91,30 +93,43 @@
)
//构建Request
val request = Request.Builder().addHeader(key, value).post(requestBody).url(url).build()
- lifecycleScope.launch(Dispatchers.IO) {
- val interceptor = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
- override fun log(message: String) {
- Log.d(kTag, ">>>>> $message")
- }
- })
- interceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
- val client = OkHttpClient.Builder()
- .addInterceptor(interceptor)
- .readTimeout(10, TimeUnit.SECONDS)
- .connectTimeout(30, TimeUnit.SECONDS)
- .writeTimeout(10, TimeUnit.SECONDS)
- .build()
+
+ val logLevel = HttpLoggingInterceptor.Level.NONE
+ val interceptor = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
+ override fun log(message: String) {
+ Log.d(kTag, ">>>>> $message")
+ }
+ }).setLevel(logLevel)
+
+ val client = OkHttpClient.Builder()
+ .addInterceptor(interceptor)
+ .readTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .connectTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .writeTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .build()
+
+ val job = SupervisorJob()
+ val scope = CoroutineScope(Dispatchers.Main + job)
+ scope.launch(Dispatchers.Main + CoroutineExceptionHandler { _, throwable ->
+ callback.onFailure(throwable)
+ }) {
try {
- val response = client.newCall(request).execute()
- response.body?.apply {
- withContext(Dispatchers.Main) {
- callback.onSuccess(string())
+ val response = withContext(Dispatchers.IO) {
+ client.newCall(request).execute()
+ }
+ if (response.isSuccessful) {
+ response.body?.string()?.let {
+ callback.onSuccess(it)
+ } ?: run {
+ callback.onFailure(IOException("Response body is null"))
}
+ } else {
+ callback.onFailure(IOException("Unexpected code ${response.code}"))
}
- } catch (e: IOException) {
- withContext(Dispatchers.Main) {
- callback.onFailure(e)
- }
+ } catch (e: Exception) {
+ callback.onFailure(e)
+ } finally {
+ job.cancel()
}
}
}
@@ -124,8 +139,4 @@
fun onFailure(throwable: Throwable)
}
-
- override fun getLifecycle(): Lifecycle {
- return registry
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
index 63ae413..68584bb 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
@@ -28,8 +28,8 @@
)
}
-// const val SERVER_BASE_URL = "http://192.168.9.99:8085"
- const val SERVER_BASE_URL = "http://139.198.19.235:22006"
+ const val SERVER_BASE_URL = "http://111.198.10.15:22006"
+// const val SERVER_BASE_URL = "http://139.198.19.235:22006"
const val IMAGE_BED_URL = "${SERVER_BASE_URL}/emergency/prepareUpload"
@@ -51,7 +51,8 @@
const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig"
const val ACCOUNT = "account"
const val PASSWORD = "password"
- const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_NAME_KEY = "USER_NAME_KEY"
+ const val USER_ID_KEY = "USER_ID_KEY"
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 10
@@ -61,8 +62,10 @@
const val WEBSOCKET_MESSAGE_CODE = 101
const val WEBSOCKET_DISCONNECTED_CODE = 102
- const val TCP_CONNECTED_CODE = 103
- const val TCP_DISCONNECTED_CODE = 104
+ const val COMMAND_TEST_CODE = 202506001
+ const val GAS_ALARM_CODE = 202506002
+ const val CONFIRM_AIR_COMMAND_CODE = 202506003
+ const val START_VIDEO_COMMAND_CODE = 202506004
//作业前检测
val CONFIRM_AIR_COMMAND =
@@ -73,6 +76,6 @@
byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x11, 0x00, 0xA5.toByte())
//甲烷阈值报警
- val GAS_COMMAND =
+ val GAS_ALARM_COMMAND =
byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x14, 0x00, 0xA8.toByte())
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt b/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt
index f044fd3..14514a0 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt
@@ -3,11 +3,11 @@
import com.shuyu.gsyvideoplayer.GSYVideoManager
import com.shuyu.gsyvideoplayer.model.VideoOptionModel
import com.shuyu.gsyvideoplayer.utils.GSYVideoType
-import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
+import com.shuyu.gsyvideoplayer.video.NormalGSYVideoPlayer
import tv.danmaku.ijk.media.player.IjkMediaPlayer
object VideoPlayerManager {
- fun setGSYVideoPlayerOptions(videoPlayer: StandardGSYVideoPlayer, url: String) {
+ fun setGSYVideoPlayerOptions(videoPlayer: NormalGSYVideoPlayer, url: String) {
val list = ArrayList()
//开启软解码,硬解码:1、打开,0、关闭
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/ISocketListener.kt b/app/src/main/java/com/casic/br/operationsite/test/util/tcp/ISocketListener.kt
deleted file mode 100644
index a00a2a8..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/ISocketListener.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.casic.br.operationsite.test.util.tcp
-
-interface ISocketListener {
- companion object {
- const val STATUS_CONNECT_SUCCESS: Byte = 1 //连接成功
- const val STATUS_CONNECT_CLOSED: Byte = 0 //关闭连接
- const val STATUS_CONNECT_ERROR: Byte = -1 //连接失败
- }
-
- /**
- * 当接收到系统消息
- */
- fun onMessageResponse(data: ByteArray?)
-
- /**
- * 当连接状态发生变化时调用
- */
- fun onServiceStatusConnectChanged(statusCode: Byte)
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketChannelHandle.kt b/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketChannelHandle.kt
deleted file mode 100644
index 8963268..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketChannelHandle.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.casic.br.operationsite.test.util.tcp
-
-import android.util.Log
-import io.netty.channel.ChannelHandlerContext
-import io.netty.channel.SimpleChannelInboundHandler
-
-class SocketChannelHandle(private val listener: ISocketListener?) :
- SimpleChannelInboundHandler() {
-
- private val kTag = "SocketChannelHandle"
-
- override fun channelActive(ctx: ChannelHandlerContext) {
- super.channelActive(ctx)
- Log.d(kTag, "channelActive ===> 连接成功")
- listener?.onServiceStatusConnectChanged(ISocketListener.STATUS_CONNECT_SUCCESS)
- }
-
- override fun channelInactive(ctx: ChannelHandlerContext) {
- super.channelInactive(ctx)
- Log.e(kTag, "channelInactive: 连接断开")
- listener?.onServiceStatusConnectChanged(ISocketListener.STATUS_CONNECT_CLOSED)
- }
-
- override fun channelRead0(ctx: ChannelHandlerContext, data: ByteArray?) {
- listener?.onMessageResponse(data)
- }
-
- override fun exceptionCaught(ctx: ChannelHandlerContext, cause: Throwable) {
- super.exceptionCaught(ctx, cause)
- Log.d(kTag, "exceptionCaught ===> $cause")
- listener?.onServiceStatusConnectChanged(ISocketListener.STATUS_CONNECT_ERROR)
- cause.printStackTrace()
- ctx.close()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketClient.kt b/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketClient.kt
deleted file mode 100644
index 12d4ac8..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketClient.kt
+++ /dev/null
@@ -1,155 +0,0 @@
-package com.casic.br.operationsite.test.util.tcp
-
-import android.os.SystemClock
-import android.util.Log
-import com.casic.br.operationsite.test.service.TcpMessageService
-import com.casic.br.operationsite.test.util.LocaleConstant
-import io.netty.bootstrap.Bootstrap
-import io.netty.channel.AdaptiveRecvByteBufAllocator
-import io.netty.channel.Channel
-import io.netty.channel.ChannelFuture
-import io.netty.channel.ChannelFutureListener
-import io.netty.channel.ChannelInitializer
-import io.netty.channel.ChannelOption
-import io.netty.channel.nio.NioEventLoopGroup
-import io.netty.channel.socket.SocketChannel
-import io.netty.channel.socket.nio.NioSocketChannel
-import io.netty.handler.codec.bytes.ByteArrayDecoder
-import io.netty.handler.codec.bytes.ByteArrayEncoder
-import io.netty.handler.timeout.IdleStateHandler
-
-class SocketClient {
-
- private val kTag = "SocketClient"
-
- private var host: String? = null
- private var port = 9000
- private var nioEventLoopGroup: NioEventLoopGroup? = null
- private var channel: Channel? = null
- private var listener: ISocketListener? = null
-
- //现在连接的状态
- var connectStatus = false //判断是否已连接
- private var reconnectNum = Int.MAX_VALUE //定义的重连到时候用
- private var isNeedReconnect = true //是否需要重连
- var isConnecting = false //是否正在连接
- private set
- private var reconnectIntervalTime: Long = 5000 //重连的时间
-
- fun setSocketListener(listener: ISocketListener?) {
- this.listener = listener
- }
-
- fun connect(host: String, port: Int) {
- this.host = host
- this.port = port
- Log.d(kTag, "connect ===> 开始连接TCP服务器")
- if (isConnecting) {
- return
- }
- //起个线程
- val clientThread: Thread = object : Thread("client-Netty") {
- override fun run() {
- super.run()
- isNeedReconnect = true
- reconnectNum = Int.MAX_VALUE
- connectServer()
- }
- }
- clientThread.start()
- }
-
- private fun connectServer() {
- synchronized(this@SocketClient) {
- var channelFuture: ChannelFuture? = null //连接管理对象
- if (!connectStatus) {
- isConnecting = true
- nioEventLoopGroup = NioEventLoopGroup() //设置的连接group
- val bootstrap = Bootstrap()
- bootstrap.group(nioEventLoopGroup) //设置的一系列连接参数操作等
- .channel(NioSocketChannel::class.java)
- .option(ChannelOption.TCP_NODELAY, true) //无阻塞
- .option(ChannelOption.SO_KEEPALIVE, true) //长连接
- .option(
- ChannelOption.RCVBUF_ALLOCATOR,
- AdaptiveRecvByteBufAllocator(5000, 5000, 8000)
- ) //接收缓冲区 最小值太小时数据接收不全
- .handler(object : ChannelInitializer() {
- override fun initChannel(channel: SocketChannel) {
- val pipeline = channel.pipeline()
- //参数1:代表读套接字超时的时间,没收到数据会触发读超时回调;
- //参数2:代表写套接字超时时间,没进行写会触发写超时回调;
- //参数3:将在未执行读取或写入时触发超时回调,0代表不处理;
- //读超时尽量设置大于写超时,代表多次写超时时写心跳包,多次写了心跳数据仍然读超时代表当前连接错误,即可断开连接重新连接
- pipeline.addLast(IdleStateHandler(60, 10, 0))
- pipeline.addLast(ByteArrayDecoder())
- pipeline.addLast(ByteArrayEncoder())
- pipeline.addLast(SocketChannelHandle(listener))
- }
- })
- try {
- //连接监听
- channelFuture = bootstrap.connect(host, port)
- .addListener(object : ChannelFutureListener {
- override fun operationComplete(channelFuture: ChannelFuture) {
- if (channelFuture.isSuccess) {
- connectStatus = true
- channel = channelFuture.channel()
- TcpMessageService.weakReferenceHandler.sendEmptyMessage(
- LocaleConstant.TCP_CONNECTED_CODE
- )
- } else {
- connectStatus = false
- TcpMessageService.weakReferenceHandler.sendEmptyMessage(
- LocaleConstant.TCP_DISCONNECTED_CODE
- )
- }
- isConnecting = false
- }
- }).sync()
- // 等待连接关闭
- channelFuture.channel().closeFuture().sync()
- } catch (e: Exception) {
- e.printStackTrace()
- } finally {
- connectStatus = false
- if (null != channelFuture) {
- if (channelFuture.channel() != null && channelFuture.channel().isOpen) {
- channelFuture.channel().close()
- }
- }
- nioEventLoopGroup?.shutdownGracefully()
- reconnect() //重新连接
- }
- }
- }
- }
-
- //断开连接
- fun disconnect() {
- Log.d(kTag, "disconnect ===> 断开连接")
- isNeedReconnect = false
- nioEventLoopGroup?.shutdownGracefully()
- }
-
- //重新连接
- private fun reconnect() {
- if (isNeedReconnect && reconnectNum > 0 && !connectStatus) {
- reconnectNum--
- SystemClock.sleep(reconnectIntervalTime)
- if (isNeedReconnect && reconnectNum > 0 && !connectStatus) {
- Log.d(kTag, "reconnect ===> 重新连接")
- connectServer()
- }
- }
- }
-
- fun sendData(bytes: ByteArray) {
- channel?.writeAndFlush(bytes)?.addListener(ChannelFutureListener { future ->
- if (!future.isSuccess) {
- future.channel().close()
- nioEventLoopGroup!!.shutdownGracefully()
- }
- })
- }
-}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ede224a..bb07476 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
@@ -37,7 +40,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
@@ -49,14 +52,14 @@
-
-
-
+
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
index 90aa34e..7a487d2 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
@@ -3,32 +3,27 @@
import android.content.Context
import com.casic.br.operationsite.test.callback.OnImageCompressListener
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.JsonParser
+import com.google.gson.Gson
+import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.createCompressImageDir
import com.pengxh.kt.lite.utils.SaveKeyValues
import top.zibin.luban.Luban
import top.zibin.luban.OnCompressListener
import java.io.File
+val gson by lazy { Gson() }
+
/**
* String扩展方法
*/
-fun String.getResponseCode(): Int {
+fun String.getResponseHeader(): Pair {
if (this.isBlank()) {
- return 404
+ return Pair(404, "Invalid Response")
}
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("code").asInt
-}
-
-fun String.getResponseMessage(): String {
- if (this.isBlank()) {
- return ""
- }
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("message").asString
+ val jsonObject = gson.fromJson(this, JsonObject::class.java)
+ val code = jsonObject.get("code").asInt
+ val message = jsonObject.get("message").asString
+ return Pair(code, message)
}
//拼接图片地址
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
deleted file mode 100644
index 758b3bd..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class AirConditionModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private double o2;
- private int h2s;
- private int co;
- private int ch4;
-
- public double getO2() {
- return o2;
- }
-
- public void setO2(double o2) {
- this.o2 = o2;
- }
-
- public int getH2s() {
- return h2s;
- }
-
- public void setH2s(int h2s) {
- this.h2s = h2s;
- }
-
- public int getCo() {
- return co;
- }
-
- public void setCo(int co) {
- this.co = co;
- }
-
- public int getCh4() {
- return ch4;
- }
-
- public void setCh4(int ch4) {
- this.ch4 = ch4;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
index f0a8f63..70228ef 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
@@ -65,13 +65,26 @@
}
public static class RowsModel {
+ private String borderPointCount;
private String createTime;
+ private String deptFullName;
+ private String deptId;
+ private String deptName;
+ private List> deviceList;
+ private String finishTime;
+ private String groupDeviceCode;
+ private String groupDeviceId;
private String id;
private String imageUrl;
+ private String locationTime;
+ private List pointLocation;
+ private String pointLocationJson;
private String projectState;
private String projectStateName;
private String registerTime;
+ private String startTime;
private String updateTime;
+ private String valid;
private String workPerson;
private String workPersonDeptId;
private String workPersonDeptName;
@@ -80,6 +93,16 @@
private String workRoad;
private String workSiteDesc;
private String workTitle;
+ private String workType;
+ private String workTypeName;
+
+ public String getBorderPointCount() {
+ return borderPointCount;
+ }
+
+ public void setBorderPointCount(String borderPointCount) {
+ this.borderPointCount = borderPointCount;
+ }
public String getCreateTime() {
return createTime;
@@ -89,6 +112,62 @@
this.createTime = createTime;
}
+ public String getDeptFullName() {
+ return deptFullName;
+ }
+
+ public void setDeptFullName(String deptFullName) {
+ this.deptFullName = deptFullName;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public List> getDeviceList() {
+ return deviceList;
+ }
+
+ public void setDeviceList(List> deviceList) {
+ this.deviceList = deviceList;
+ }
+
+ public String getFinishTime() {
+ return finishTime;
+ }
+
+ public void setFinishTime(String finishTime) {
+ this.finishTime = finishTime;
+ }
+
+ public String getGroupDeviceCode() {
+ return groupDeviceCode;
+ }
+
+ public void setGroupDeviceCode(String groupDeviceCode) {
+ this.groupDeviceCode = groupDeviceCode;
+ }
+
+ public String getGroupDeviceId() {
+ return groupDeviceId;
+ }
+
+ public void setGroupDeviceId(String groupDeviceId) {
+ this.groupDeviceId = groupDeviceId;
+ }
+
public String getId() {
return id;
}
@@ -105,6 +184,30 @@
this.imageUrl = imageUrl;
}
+ public String getLocationTime() {
+ return locationTime;
+ }
+
+ public void setLocationTime(String locationTime) {
+ this.locationTime = locationTime;
+ }
+
+ public List getPointLocation() {
+ return pointLocation;
+ }
+
+ public void setPointLocation(List pointLocation) {
+ this.pointLocation = pointLocation;
+ }
+
+ public String getPointLocationJson() {
+ return pointLocationJson;
+ }
+
+ public void setPointLocationJson(String pointLocationJson) {
+ this.pointLocationJson = pointLocationJson;
+ }
+
public String getProjectState() {
return projectState;
}
@@ -129,6 +232,14 @@
this.registerTime = registerTime;
}
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
public String getUpdateTime() {
return updateTime;
}
@@ -137,6 +248,14 @@
this.updateTime = updateTime;
}
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
public String getWorkPerson() {
return workPerson;
}
@@ -200,6 +319,43 @@
public void setWorkTitle(String workTitle) {
this.workTitle = workTitle;
}
+
+ public String getWorkType() {
+ return workType;
+ }
+
+ public void setWorkType(String workType) {
+ this.workType = workType;
+ }
+
+ public String getWorkTypeName() {
+ return workTypeName;
+ }
+
+ public void setWorkTypeName(String workTypeName) {
+ this.workTypeName = workTypeName;
+ }
+
+ public static class PointLocationModel {
+ private String lng;
+ private String lat;
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
new file mode 100644
index 0000000..5d87443
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
@@ -0,0 +1,487 @@
+package com.casic.br.operationsite.test.model;
+
+import java.util.List;
+
+public class WorkSiteWorkerModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataModel {
+ private boolean alarmFlag;
+ private String createTime;
+ private String deptId;
+ private String deptName;
+ private String enterReason;
+ private String gender;
+ private String genderName;
+ private HealthModel health;
+ private String id;
+ private String idCardNumber;
+ private String isRegister;
+ private LocationModel location;
+ private MultiGasModel multiGas;
+ private String ownerShip;
+ private String phoneNumber;
+ private String registerTime;
+ private String status;
+ private String statusName;
+ private String workerAvatar;
+ private String workerName;
+ private String workerType;
+ private String workerTypeName;
+
+ public boolean isAlarmFlag() {
+ return alarmFlag;
+ }
+
+ public void setAlarmFlag(boolean alarmFlag) {
+ this.alarmFlag = alarmFlag;
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public String getEnterReason() {
+ return enterReason;
+ }
+
+ public void setEnterReason(String enterReason) {
+ this.enterReason = enterReason;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+ public String getGenderName() {
+ return genderName;
+ }
+
+ public void setGenderName(String genderName) {
+ this.genderName = genderName;
+ }
+
+ public HealthModel getHealth() {
+ return health;
+ }
+
+ public void setHealth(HealthModel health) {
+ this.health = health;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIdCardNumber() {
+ return idCardNumber;
+ }
+
+ public void setIdCardNumber(String idCardNumber) {
+ this.idCardNumber = idCardNumber;
+ }
+
+ public String getIsRegister() {
+ return isRegister;
+ }
+
+ public void setIsRegister(String isRegister) {
+ this.isRegister = isRegister;
+ }
+
+ public LocationModel getLocation() {
+ return location;
+ }
+
+ public void setLocation(LocationModel location) {
+ this.location = location;
+ }
+
+ public MultiGasModel getMultiGas() {
+ return multiGas;
+ }
+
+ public void setMultiGas(MultiGasModel multiGas) {
+ this.multiGas = multiGas;
+ }
+
+ public String getOwnerShip() {
+ return ownerShip;
+ }
+
+ public void setOwnerShip(String ownerShip) {
+ this.ownerShip = ownerShip;
+ }
+
+ public String getPhoneNumber() {
+ return phoneNumber;
+ }
+
+ public void setPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ }
+
+ public String getRegisterTime() {
+ return registerTime;
+ }
+
+ public void setRegisterTime(String registerTime) {
+ this.registerTime = registerTime;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getStatusName() {
+ return statusName;
+ }
+
+ public void setStatusName(String statusName) {
+ this.statusName = statusName;
+ }
+
+ public String getWorkerAvatar() {
+ return workerAvatar;
+ }
+
+ public void setWorkerAvatar(String workerAvatar) {
+ this.workerAvatar = workerAvatar;
+ }
+
+ public String getWorkerName() {
+ return workerName;
+ }
+
+ public void setWorkerName(String workerName) {
+ this.workerName = workerName;
+ }
+
+ public String getWorkerType() {
+ return workerType;
+ }
+
+ public void setWorkerType(String workerType) {
+ this.workerType = workerType;
+ }
+
+ public String getWorkerTypeName() {
+ return workerTypeName;
+ }
+
+ public void setWorkerTypeName(String workerTypeName) {
+ this.workerTypeName = workerTypeName;
+ }
+
+ public static class HealthModel {
+ private String bloodOxygen;
+ private String deviceCode;
+ private String deviceId;
+ private String groupCode;
+ private String heartRate;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getBloodOxygen() {
+ return bloodOxygen;
+ }
+
+ public void setBloodOxygen(String bloodOxygen) {
+ this.bloodOxygen = bloodOxygen;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getHeartRate() {
+ return heartRate;
+ }
+
+ public void setHeartRate(String heartRate) {
+ this.heartRate = heartRate;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class LocationModel {
+ private String deviceCode;
+ private String deviceId;
+ private String gdLat;
+ private String gdLng;
+ private String groupCode;
+ private String lat;
+ private String lng;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGdLat() {
+ return gdLat;
+ }
+
+ public void setGdLat(String gdLat) {
+ this.gdLat = gdLat;
+ }
+
+ public String getGdLng() {
+ return gdLng;
+ }
+
+ public void setGdLng(String gdLng) {
+ this.gdLng = gdLng;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class MultiGasModel {
+ private String coValue;
+ private String deviceCode;
+ private String deviceId;
+ private String exValue;
+ private String groupCode;
+ private String h2sValue;
+ private String o2Value;
+ private String projectId;
+ private String projectName;
+ private String uploadTimestamp;
+
+ public String getCoValue() {
+ return coValue;
+ }
+
+ public void setCoValue(String coValue) {
+ this.coValue = coValue;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getExValue() {
+ return exValue;
+ }
+
+ public void setExValue(String exValue) {
+ this.exValue = exValue;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getH2sValue() {
+ return h2sValue;
+ }
+
+ public void setH2sValue(String h2sValue) {
+ this.h2sValue = h2sValue;
+ }
+
+ public String getO2Value() {
+ return o2Value;
+ }
+
+ public void setO2Value(String o2Value) {
+ this.o2Value = o2Value;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
deleted file mode 100644
index e32edab..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
+++ /dev/null
@@ -1,226 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class WorkerModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private boolean alarmFlag;
- private String bloodOxygen;
- private String braceletCode;
- private String cell;
- private String co;
- private String gas;
- private String gasTime;
- private String h2s;
- private String hatCode;
- private String hatId;
- private String heartRate;
- private String lat;
- private String lng;
- private String location;
- private String o2;
- private String signal;
- private String time;
- private String vastCode;
- private String workerId;
- private String workerName;
-
- public boolean isAlarmFlag() {
- return alarmFlag;
- }
-
- public void setAlarmFlag(boolean alarmFlag) {
- this.alarmFlag = alarmFlag;
- }
-
- public String getBloodOxygen() {
- return bloodOxygen;
- }
-
- public void setBloodOxygen(String bloodOxygen) {
- this.bloodOxygen = bloodOxygen;
- }
-
- public String getBraceletCode() {
- return braceletCode;
- }
-
- public void setBraceletCode(String braceletCode) {
- this.braceletCode = braceletCode;
- }
-
- public String getCell() {
- return cell;
- }
-
- public void setCell(String cell) {
- this.cell = cell;
- }
-
- public String getCo() {
- return co;
- }
-
- public void setCo(String co) {
- this.co = co;
- }
-
- public String getGas() {
- return gas;
- }
-
- public void setGas(String gas) {
- this.gas = gas;
- }
-
- public String getGasTime() {
- return gasTime;
- }
-
- public void setGasTime(String gasTime) {
- this.gasTime = gasTime;
- }
-
- public String getH2s() {
- return h2s;
- }
-
- public void setH2s(String h2s) {
- this.h2s = h2s;
- }
-
- public String getHatCode() {
- return hatCode;
- }
-
- public void setHatCode(String hatCode) {
- this.hatCode = hatCode;
- }
-
- public String getHatId() {
- return hatId;
- }
-
- public void setHatId(String hatId) {
- this.hatId = hatId;
- }
-
- public String getHeartRate() {
- return heartRate;
- }
-
- public void setHeartRate(String heartRate) {
- this.heartRate = heartRate;
- }
-
- public String getLat() {
- return lat;
- }
-
- public void setLat(String lat) {
- this.lat = lat;
- }
-
- public String getLng() {
- return lng;
- }
-
- public void setLng(String lng) {
- this.lng = lng;
- }
-
- public String getLocation() {
- return location;
- }
-
- public void setLocation(String location) {
- this.location = location;
- }
-
- public String getO2() {
- return o2;
- }
-
- public void setO2(String o2) {
- this.o2 = o2;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getTime() {
- return time;
- }
-
- public void setTime(String time) {
- this.time = time;
- }
-
- public String getVastCode() {
- return vastCode;
- }
-
- public void setVastCode(String vastCode) {
- this.vastCode = vastCode;
- }
-
- public String getWorkerId() {
- return workerId;
- }
-
- public void setWorkerId(String workerId) {
- this.workerId = workerId;
- }
-
- public String getWorkerName() {
- return workerName;
- }
-
- public void setWorkerName(String workerName) {
- this.workerName = workerName;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
index 4d68464..f56e8a1 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
@@ -2,7 +2,15 @@
import okhttp3.MultipartBody
import okhttp3.RequestBody
-import retrofit2.http.*
+import retrofit2.http.Body
+import retrofit2.http.Field
+import retrofit2.http.FormUrlEncoded
+import retrofit2.http.GET
+import retrofit2.http.Header
+import retrofit2.http.Multipart
+import retrofit2.http.POST
+import retrofit2.http.Part
+import retrofit2.http.Query
interface RetrofitService {
/**
@@ -41,7 +49,7 @@
/**
* 实施中列表
*/
- @GET("/site/listPage")
+ @GET("/v3/site/listPage")
suspend fun getProjectListByPage(
@Header("token") token: String,
@Query("keywords") keywords: String,
@@ -53,19 +61,13 @@
/**
* 获取工作区域作业人员
*/
- @GET("/overview/workerList")
- suspend fun getWorkers(
+ @GET("/v3/overview/workerList")
+ suspend fun getWorkSiteWorkers(
@Header("token") token: String,
@Query("projectId") projectId: String
): String
/**
- * 获取四合一数据
- */
- @GET("/emergency/startCheckOxygen")
- suspend fun getAirCondition(@Header("token") token: String): String
-
- /**
* 上报每个大阶段场景
* */
@GET("/emergency/notifyStageFinished")
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
index ed19c9f..a813fb0 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
@@ -3,7 +3,7 @@
import android.util.Log
import com.casic.br.operationsite.test.util.AuthenticationHelper
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.Gson
+import com.casic.br.operationsite.test.util.RuntimeCache
import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.RetrofitFactory
@@ -11,14 +11,13 @@
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
-import okhttp3.RequestBody
+import okhttp3.RequestBody.Companion.asRequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import java.io.File
object RetrofitServiceManager {
private const val kTag = "RetrofitServiceManager"
- private val gson by lazy { Gson() }
private val api by lazy {
val httpConfig = SaveKeyValues.getValue(
@@ -67,27 +66,20 @@
/**
* 获取工作区域作业人员
*/
- suspend fun getWorkers(projectId: String): String {
- return api.getWorkers(AuthenticationHelper.token!!, projectId)
+ suspend fun getWorkSiteWorkers(): String {
+ return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId)
}
/**
* 上传图片
*/
suspend fun uploadImage(image: File): String {
- val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val requestBody = image.asRequestBody("image/png".toMediaTypeOrNull())
val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
return api.uploadImage(AuthenticationHelper.token!!, imagePart)
}
/**
- * 获取四合一数据
- */
- suspend fun getAirCondition(): String {
- return api.getAirCondition(AuthenticationHelper.token!!)
- }
-
- /**
* 上报每个大阶段场景
*/
suspend fun notifyStageFinished(operationId: String?, stage: String): String {
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
new file mode 100644
index 0000000..337aaf1
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
@@ -0,0 +1,125 @@
+package com.casic.br.operationsite.test.service
+
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.app.Service
+import android.content.Intent
+import android.os.Handler
+import android.os.IBinder
+import android.os.Message
+import android.util.Log
+import androidx.core.app.NotificationCompat
+import com.casic.br.operationsite.test.R
+import com.casic.br.operationsite.test.extensions.convert
+import com.casic.br.operationsite.test.util.LocaleConstant
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener
+import com.pengxh.kt.lite.utils.socket.tcp.TcpClient
+
+class SocketConnectionService : Service(), OnTcpConnectStateListener, Handler.Callback {
+
+ companion object {
+ var weakReferenceHandler: WeakReferenceHandler? = null
+ }
+
+ override fun handleMessage(msg: Message): Boolean {
+ if (!tcpClient.isRunning()) {
+ "数据通讯服务断开连接,指令发送失败".show(this)
+ return true
+ }
+
+ when (msg.what) {
+ LocaleConstant.COMMAND_TEST_CODE -> {
+ val commandStr = msg.obj as String
+ tcpClient.sendMessage(commandStr.convert())
+ }
+
+ LocaleConstant.GAS_ALARM_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.GAS_ALARM_COMMAND)
+ }
+
+ LocaleConstant.CONFIRM_AIR_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.CONFIRM_AIR_COMMAND)
+ }
+
+ LocaleConstant.START_VIDEO_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.START_VIDEO_COMMAND)
+ }
+ }
+ return true
+ }
+
+ private val kTag = "SocketService"
+ private val notificationId = 1
+ private val tcpClient by lazy { TcpClient(this) }
+ private val notificationManager by lazy { getSystemService(NOTIFICATION_SERVICE) as NotificationManager }
+ private var notificationBuilder: NotificationCompat.Builder? = null
+
+ override fun onBind(intent: Intent?): IBinder? {
+ return null
+ }
+
+ override fun onCreate() {
+ super.onCreate()
+ val name = "${resources.getString(R.string.app_name)}前台服务"
+ val channel = NotificationChannel(
+ "socket_connection_service_channel", name, NotificationManager.IMPORTANCE_HIGH
+ )
+ channel.description = "Channel for socket connection service"
+ notificationManager.createNotificationChannel(channel)
+ notificationBuilder = NotificationCompat.Builder(this, "socket_connection_service_channel")
+ .setSmallIcon(R.mipmap.ic_launcher)
+ .setContentTitle("数据通讯服务连接中...")
+ .setContentText("为保证程序正常运行,请勿移除此通知")
+ .setPriority(NotificationCompat.PRIORITY_HIGH) // 设置通知优先级
+ .setOngoing(true)
+ .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
+
+ val notification = notificationBuilder?.build()
+ startForeground(notificationId, notification)
+ }
+
+ override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
+ if (weakReferenceHandler == null) {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+ tcpClient.start(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
+ Log.d(kTag, "onStartCommand: SocketConnectionService")
+ return START_STICKY
+ }
+
+ override fun onConnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务已连接")
+ "数据通讯服务连接成功,现在可以下发指令了".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDisconnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务断开连接")
+ "数据通讯服务断开连接".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onConnectFailed() {
+ notificationBuilder?.setContentTitle("数据通讯服务连接出错,开始重连")
+ "数据通讯服务连接出错,开始重连".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ tcpClient.stop(false)
+ stopForeground(STOP_FOREGROUND_REMOVE)
+ Log.d(kTag, "onDestroy: SocketConnectionService")
+ }
+
+ override fun onMessageReceived(bytes: ByteArray?) {
+ if (bytes == null) {
+ return
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
deleted file mode 100644
index bc3c0ca..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.casic.br.operationsite.test.service
-
-import android.app.Service
-import android.content.Intent
-import android.os.Handler
-import android.os.IBinder
-import android.os.Message
-import com.casic.br.operationsite.test.util.LocaleConstant
-import com.casic.br.operationsite.test.util.tcp.SocketManager
-import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.WeakReferenceHandler
-
-class TcpMessageService : Service(), Handler.Callback {
-
- companion object {
- lateinit var weakReferenceHandler: WeakReferenceHandler
- }
-
- private val kTag = "TcpMessageService"
-
- override fun onBind(intent: Intent?): IBinder? {
- return null
- }
-
- override fun onCreate() {
- super.onCreate()
- weakReferenceHandler = WeakReferenceHandler(this)
- SocketManager.get.connectTcpServer(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
- }
-
- override fun onDestroy() {
- super.onDestroy()
- SocketManager.get.close()
- }
-
- override fun handleMessage(msg: Message): Boolean {
- if (msg.what == LocaleConstant.TCP_CONNECTED_CODE) {
- "指令连接成功,现在可以下发指令了".show(this)
- } else {
- "指令连接断开,开始自动重连".show(this)
- }
- return true
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt b/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt
deleted file mode 100644
index 56bc436..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.casic.br.operationsite.test.util
-
-import android.content.Context
-import android.widget.ImageView
-import com.bumptech.glide.Glide
-import com.bumptech.glide.load.resource.bitmap.CenterCrop
-import com.bumptech.glide.load.resource.bitmap.RoundedCorners
-import com.bumptech.glide.request.RequestOptions
-import com.casic.br.operationsite.test.R
-import com.luck.picture.lib.engine.ImageEngine
-import com.luck.picture.lib.utils.ActivityCompatHelper
-
-
-class GlideLoadEngine private constructor() : ImageEngine {
-
- companion object {
- val get: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
- GlideLoadEngine()
- }
- }
-
- override fun loadImage(context: Context, url: String, imageView: ImageView) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context).load(url).into(imageView);
- }
-
- override fun loadImage(
- context: Context,
- imageView: ImageView,
- url: String,
- maxWidth: Int,
- maxHeight: Int
- ) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context)
- .load(url)
- .override(maxWidth, maxHeight)
- .into(imageView)
- }
-
- override fun loadAlbumCover(context: Context, url: String, imageView: ImageView) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context)
- .asBitmap()
- .load(url)
- .override(180, 180)
- .sizeMultiplier(0.5f)
- .transform(CenterCrop(), RoundedCorners(8))
- .placeholder(R.drawable.ps_image_placeholder)
- .into(imageView)
- }
-
- override fun pauseRequests(context: Context?) {
- context?.let { Glide.with(it).pauseRequests() }
- }
-
- override fun resumeRequests(context: Context?) {
- context?.let { Glide.with(it).resumeRequests() }
- }
-
- override fun loadGridImage(context: Context, url: String, imageView: ImageView) {
- Glide.with(context)
- .load(url)
- .apply(RequestOptions().placeholder(R.drawable.ps_image_placeholder))
- .into(imageView)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt b/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
index ec57ebc..92cf048 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
@@ -1,13 +1,13 @@
package com.casic.br.operationsite.test.util
import android.util.Log
-import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.LifecycleOwner
-import androidx.lifecycle.LifecycleRegistry
-import androidx.lifecycle.lifecycleScope
import com.google.gson.Gson
import com.google.gson.JsonObject
+import com.pengxh.kt.lite.utils.LiteKitConstant
+import kotlinx.coroutines.CoroutineExceptionHandler
+import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import okhttp3.MediaType.Companion.toMediaType
@@ -21,10 +21,9 @@
/**
* Service里面的Http请求
* */
-class HttpRequestHelper(builder: Builder) : LifecycleOwner {
+class HttpRequestHelper(builder: Builder) {
private val kTag = "HttpRequestHelper"
- private val registry = LifecycleRegistry(this)
private val gson by lazy { Gson() }
class Builder {
@@ -68,6 +67,9 @@
}
fun build(): HttpRequestHelper {
+ if (!::key.isInitialized || !::value.isInitialized || !::url.isInitialized || !::httpRequestCallback.isInitialized) {
+ throw IllegalStateException("All properties must be initialized before building.")
+ }
return HttpRequestHelper(this)
}
}
@@ -81,7 +83,7 @@
/**
* 发起网络请求
* */
- fun start() {
+ fun start(timeoutSeconds: Long = LiteKitConstant.HTTP_TIMEOUT) {
val param = JsonObject()
map.forEach {
param.add(it.key, gson.toJsonTree(it.value))
@@ -91,30 +93,43 @@
)
//构建Request
val request = Request.Builder().addHeader(key, value).post(requestBody).url(url).build()
- lifecycleScope.launch(Dispatchers.IO) {
- val interceptor = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
- override fun log(message: String) {
- Log.d(kTag, ">>>>> $message")
- }
- })
- interceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
- val client = OkHttpClient.Builder()
- .addInterceptor(interceptor)
- .readTimeout(10, TimeUnit.SECONDS)
- .connectTimeout(30, TimeUnit.SECONDS)
- .writeTimeout(10, TimeUnit.SECONDS)
- .build()
+
+ val logLevel = HttpLoggingInterceptor.Level.NONE
+ val interceptor = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
+ override fun log(message: String) {
+ Log.d(kTag, ">>>>> $message")
+ }
+ }).setLevel(logLevel)
+
+ val client = OkHttpClient.Builder()
+ .addInterceptor(interceptor)
+ .readTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .connectTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .writeTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .build()
+
+ val job = SupervisorJob()
+ val scope = CoroutineScope(Dispatchers.Main + job)
+ scope.launch(Dispatchers.Main + CoroutineExceptionHandler { _, throwable ->
+ callback.onFailure(throwable)
+ }) {
try {
- val response = client.newCall(request).execute()
- response.body?.apply {
- withContext(Dispatchers.Main) {
- callback.onSuccess(string())
+ val response = withContext(Dispatchers.IO) {
+ client.newCall(request).execute()
+ }
+ if (response.isSuccessful) {
+ response.body?.string()?.let {
+ callback.onSuccess(it)
+ } ?: run {
+ callback.onFailure(IOException("Response body is null"))
}
+ } else {
+ callback.onFailure(IOException("Unexpected code ${response.code}"))
}
- } catch (e: IOException) {
- withContext(Dispatchers.Main) {
- callback.onFailure(e)
- }
+ } catch (e: Exception) {
+ callback.onFailure(e)
+ } finally {
+ job.cancel()
}
}
}
@@ -124,8 +139,4 @@
fun onFailure(throwable: Throwable)
}
-
- override fun getLifecycle(): Lifecycle {
- return registry
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
index 63ae413..68584bb 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
@@ -28,8 +28,8 @@
)
}
-// const val SERVER_BASE_URL = "http://192.168.9.99:8085"
- const val SERVER_BASE_URL = "http://139.198.19.235:22006"
+ const val SERVER_BASE_URL = "http://111.198.10.15:22006"
+// const val SERVER_BASE_URL = "http://139.198.19.235:22006"
const val IMAGE_BED_URL = "${SERVER_BASE_URL}/emergency/prepareUpload"
@@ -51,7 +51,8 @@
const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig"
const val ACCOUNT = "account"
const val PASSWORD = "password"
- const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_NAME_KEY = "USER_NAME_KEY"
+ const val USER_ID_KEY = "USER_ID_KEY"
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 10
@@ -61,8 +62,10 @@
const val WEBSOCKET_MESSAGE_CODE = 101
const val WEBSOCKET_DISCONNECTED_CODE = 102
- const val TCP_CONNECTED_CODE = 103
- const val TCP_DISCONNECTED_CODE = 104
+ const val COMMAND_TEST_CODE = 202506001
+ const val GAS_ALARM_CODE = 202506002
+ const val CONFIRM_AIR_COMMAND_CODE = 202506003
+ const val START_VIDEO_COMMAND_CODE = 202506004
//作业前检测
val CONFIRM_AIR_COMMAND =
@@ -73,6 +76,6 @@
byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x11, 0x00, 0xA5.toByte())
//甲烷阈值报警
- val GAS_COMMAND =
+ val GAS_ALARM_COMMAND =
byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x14, 0x00, 0xA8.toByte())
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt b/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt
index f044fd3..14514a0 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt
@@ -3,11 +3,11 @@
import com.shuyu.gsyvideoplayer.GSYVideoManager
import com.shuyu.gsyvideoplayer.model.VideoOptionModel
import com.shuyu.gsyvideoplayer.utils.GSYVideoType
-import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
+import com.shuyu.gsyvideoplayer.video.NormalGSYVideoPlayer
import tv.danmaku.ijk.media.player.IjkMediaPlayer
object VideoPlayerManager {
- fun setGSYVideoPlayerOptions(videoPlayer: StandardGSYVideoPlayer, url: String) {
+ fun setGSYVideoPlayerOptions(videoPlayer: NormalGSYVideoPlayer, url: String) {
val list = ArrayList()
//开启软解码,硬解码:1、打开,0、关闭
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/ISocketListener.kt b/app/src/main/java/com/casic/br/operationsite/test/util/tcp/ISocketListener.kt
deleted file mode 100644
index a00a2a8..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/ISocketListener.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.casic.br.operationsite.test.util.tcp
-
-interface ISocketListener {
- companion object {
- const val STATUS_CONNECT_SUCCESS: Byte = 1 //连接成功
- const val STATUS_CONNECT_CLOSED: Byte = 0 //关闭连接
- const val STATUS_CONNECT_ERROR: Byte = -1 //连接失败
- }
-
- /**
- * 当接收到系统消息
- */
- fun onMessageResponse(data: ByteArray?)
-
- /**
- * 当连接状态发生变化时调用
- */
- fun onServiceStatusConnectChanged(statusCode: Byte)
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketChannelHandle.kt b/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketChannelHandle.kt
deleted file mode 100644
index 8963268..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketChannelHandle.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.casic.br.operationsite.test.util.tcp
-
-import android.util.Log
-import io.netty.channel.ChannelHandlerContext
-import io.netty.channel.SimpleChannelInboundHandler
-
-class SocketChannelHandle(private val listener: ISocketListener?) :
- SimpleChannelInboundHandler() {
-
- private val kTag = "SocketChannelHandle"
-
- override fun channelActive(ctx: ChannelHandlerContext) {
- super.channelActive(ctx)
- Log.d(kTag, "channelActive ===> 连接成功")
- listener?.onServiceStatusConnectChanged(ISocketListener.STATUS_CONNECT_SUCCESS)
- }
-
- override fun channelInactive(ctx: ChannelHandlerContext) {
- super.channelInactive(ctx)
- Log.e(kTag, "channelInactive: 连接断开")
- listener?.onServiceStatusConnectChanged(ISocketListener.STATUS_CONNECT_CLOSED)
- }
-
- override fun channelRead0(ctx: ChannelHandlerContext, data: ByteArray?) {
- listener?.onMessageResponse(data)
- }
-
- override fun exceptionCaught(ctx: ChannelHandlerContext, cause: Throwable) {
- super.exceptionCaught(ctx, cause)
- Log.d(kTag, "exceptionCaught ===> $cause")
- listener?.onServiceStatusConnectChanged(ISocketListener.STATUS_CONNECT_ERROR)
- cause.printStackTrace()
- ctx.close()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketClient.kt b/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketClient.kt
deleted file mode 100644
index 12d4ac8..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketClient.kt
+++ /dev/null
@@ -1,155 +0,0 @@
-package com.casic.br.operationsite.test.util.tcp
-
-import android.os.SystemClock
-import android.util.Log
-import com.casic.br.operationsite.test.service.TcpMessageService
-import com.casic.br.operationsite.test.util.LocaleConstant
-import io.netty.bootstrap.Bootstrap
-import io.netty.channel.AdaptiveRecvByteBufAllocator
-import io.netty.channel.Channel
-import io.netty.channel.ChannelFuture
-import io.netty.channel.ChannelFutureListener
-import io.netty.channel.ChannelInitializer
-import io.netty.channel.ChannelOption
-import io.netty.channel.nio.NioEventLoopGroup
-import io.netty.channel.socket.SocketChannel
-import io.netty.channel.socket.nio.NioSocketChannel
-import io.netty.handler.codec.bytes.ByteArrayDecoder
-import io.netty.handler.codec.bytes.ByteArrayEncoder
-import io.netty.handler.timeout.IdleStateHandler
-
-class SocketClient {
-
- private val kTag = "SocketClient"
-
- private var host: String? = null
- private var port = 9000
- private var nioEventLoopGroup: NioEventLoopGroup? = null
- private var channel: Channel? = null
- private var listener: ISocketListener? = null
-
- //现在连接的状态
- var connectStatus = false //判断是否已连接
- private var reconnectNum = Int.MAX_VALUE //定义的重连到时候用
- private var isNeedReconnect = true //是否需要重连
- var isConnecting = false //是否正在连接
- private set
- private var reconnectIntervalTime: Long = 5000 //重连的时间
-
- fun setSocketListener(listener: ISocketListener?) {
- this.listener = listener
- }
-
- fun connect(host: String, port: Int) {
- this.host = host
- this.port = port
- Log.d(kTag, "connect ===> 开始连接TCP服务器")
- if (isConnecting) {
- return
- }
- //起个线程
- val clientThread: Thread = object : Thread("client-Netty") {
- override fun run() {
- super.run()
- isNeedReconnect = true
- reconnectNum = Int.MAX_VALUE
- connectServer()
- }
- }
- clientThread.start()
- }
-
- private fun connectServer() {
- synchronized(this@SocketClient) {
- var channelFuture: ChannelFuture? = null //连接管理对象
- if (!connectStatus) {
- isConnecting = true
- nioEventLoopGroup = NioEventLoopGroup() //设置的连接group
- val bootstrap = Bootstrap()
- bootstrap.group(nioEventLoopGroup) //设置的一系列连接参数操作等
- .channel(NioSocketChannel::class.java)
- .option(ChannelOption.TCP_NODELAY, true) //无阻塞
- .option(ChannelOption.SO_KEEPALIVE, true) //长连接
- .option(
- ChannelOption.RCVBUF_ALLOCATOR,
- AdaptiveRecvByteBufAllocator(5000, 5000, 8000)
- ) //接收缓冲区 最小值太小时数据接收不全
- .handler(object : ChannelInitializer() {
- override fun initChannel(channel: SocketChannel) {
- val pipeline = channel.pipeline()
- //参数1:代表读套接字超时的时间,没收到数据会触发读超时回调;
- //参数2:代表写套接字超时时间,没进行写会触发写超时回调;
- //参数3:将在未执行读取或写入时触发超时回调,0代表不处理;
- //读超时尽量设置大于写超时,代表多次写超时时写心跳包,多次写了心跳数据仍然读超时代表当前连接错误,即可断开连接重新连接
- pipeline.addLast(IdleStateHandler(60, 10, 0))
- pipeline.addLast(ByteArrayDecoder())
- pipeline.addLast(ByteArrayEncoder())
- pipeline.addLast(SocketChannelHandle(listener))
- }
- })
- try {
- //连接监听
- channelFuture = bootstrap.connect(host, port)
- .addListener(object : ChannelFutureListener {
- override fun operationComplete(channelFuture: ChannelFuture) {
- if (channelFuture.isSuccess) {
- connectStatus = true
- channel = channelFuture.channel()
- TcpMessageService.weakReferenceHandler.sendEmptyMessage(
- LocaleConstant.TCP_CONNECTED_CODE
- )
- } else {
- connectStatus = false
- TcpMessageService.weakReferenceHandler.sendEmptyMessage(
- LocaleConstant.TCP_DISCONNECTED_CODE
- )
- }
- isConnecting = false
- }
- }).sync()
- // 等待连接关闭
- channelFuture.channel().closeFuture().sync()
- } catch (e: Exception) {
- e.printStackTrace()
- } finally {
- connectStatus = false
- if (null != channelFuture) {
- if (channelFuture.channel() != null && channelFuture.channel().isOpen) {
- channelFuture.channel().close()
- }
- }
- nioEventLoopGroup?.shutdownGracefully()
- reconnect() //重新连接
- }
- }
- }
- }
-
- //断开连接
- fun disconnect() {
- Log.d(kTag, "disconnect ===> 断开连接")
- isNeedReconnect = false
- nioEventLoopGroup?.shutdownGracefully()
- }
-
- //重新连接
- private fun reconnect() {
- if (isNeedReconnect && reconnectNum > 0 && !connectStatus) {
- reconnectNum--
- SystemClock.sleep(reconnectIntervalTime)
- if (isNeedReconnect && reconnectNum > 0 && !connectStatus) {
- Log.d(kTag, "reconnect ===> 重新连接")
- connectServer()
- }
- }
- }
-
- fun sendData(bytes: ByteArray) {
- channel?.writeAndFlush(bytes)?.addListener(ChannelFutureListener { future ->
- if (!future.isSuccess) {
- future.channel().close()
- nioEventLoopGroup!!.shutdownGracefully()
- }
- })
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketManager.kt b/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketManager.kt
deleted file mode 100644
index fa76606..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketManager.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.casic.br.operationsite.test.util.tcp
-
-import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.LifecycleOwner
-import androidx.lifecycle.LifecycleRegistry
-import androidx.lifecycle.lifecycleScope
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.launch
-
-class SocketManager private constructor() : LifecycleOwner, ISocketListener {
-
- private val kTag = "SocketManager"
- private val registry = LifecycleRegistry(this)
- var nettyClient: SocketClient = SocketClient()
-
- companion object {
- val get by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { SocketManager() }
- }
-
- fun connectTcpServer(hostname: String, port: Int) {
- lifecycleScope.launch(Dispatchers.IO) {
- if (!nettyClient.connectStatus) {
- nettyClient.setSocketListener(this@SocketManager)
- nettyClient.connect(hostname, port)
- } else {
- nettyClient.disconnect()
- }
- }
- }
-
- override fun onMessageResponse(data: ByteArray?) {
-
- }
-
- override fun onServiceStatusConnectChanged(statusCode: Byte) {
-
- }
-
- fun send(data: ByteArray) {
- lifecycleScope.launch(Dispatchers.IO) {
- nettyClient.sendData(data)
- }
- }
-
- fun close() {
- nettyClient.disconnect()
- }
-
- override fun getLifecycle(): Lifecycle {
- return registry
- }
-}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index c472770..e929963 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,5 @@
.cxx
local.properties
app/old
-app/release
\ No newline at end of file
+app/release
+/.kotlin
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 361554e..7660f21 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,20 @@
import java.text.SimpleDateFormat
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
+plugins {
+ id('com.android.application')
+ id('org.jetbrains.kotlin.android')
+}
android {
- compileSdkVersion 33
+ namespace 'com.casic.br.operationsite.test'
+ compileSdk 35
defaultConfig {
- applicationId "com.casic.br.operationsite.test"
- minSdkVersion 23
- targetSdkVersion 33
+ applicationId 'com.casic.br.operationsite.test'
+ minSdk 26
+ targetSdk 35
versionCode 1080
- versionName "1.0.8.0"
+ versionName '1.0.8.0'
}
buildTypes {
@@ -30,48 +33,41 @@
jvmTarget = '1.8'
}
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
buildFeatures {
- viewBinding true
+ buildConfig = true
+ viewBinding = true
}
- applicationVariants.configureEach { variant ->
- variant.outputs.configureEach {
- outputFileName = "XCGZ_YS_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
+ applicationVariants.configureEach {
+ outputs.configureEach {
+ outputFileName = 'XCGZ_YS_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk'
}
}
}
static def getBuildDate() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.CHINA)
+ SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA)
return dateFormat.format(System.currentTimeMillis())
}
dependencies {
-//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.10'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
+ //基础依赖库
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.5'
+ implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
//MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.0'
+ implementation 'com.github.bumptech.glide:glide:4.14.2'
//图片选择框架
implementation 'io.github.lucksiege:pictureselector:v3.11.1'
//图片压缩
@@ -84,26 +80,25 @@
implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0'
//网络请求和接口封装
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.12.0'
//官方Json解析库
implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//CameraX
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
+ implementation 'androidx.camera:camera-core:1.2.3'
// CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation 'androidx.camera:camera-camera2:1.2.3'
// CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation 'androidx.camera:camera-lifecycle:1.2.3'
// CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
+ implementation 'androidx.camera:camera-view:1.2.3'
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
//视频播放器,RTSP流
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-java:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-java:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-exo2:v10.1.0'
+ implementation 'com.github.CarGuo.GSYVideoPlayer:gsyvideoplayer-ex_so:v10.1.0'
+ //大图
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ede224a..bb07476 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,9 @@
+
+
+
@@ -37,7 +40,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
@@ -49,14 +52,14 @@
-
-
-
+
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
index 90aa34e..7a487d2 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt
@@ -3,32 +3,27 @@
import android.content.Context
import com.casic.br.operationsite.test.callback.OnImageCompressListener
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.JsonParser
+import com.google.gson.Gson
+import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.createCompressImageDir
import com.pengxh.kt.lite.utils.SaveKeyValues
import top.zibin.luban.Luban
import top.zibin.luban.OnCompressListener
import java.io.File
+val gson by lazy { Gson() }
+
/**
* String扩展方法
*/
-fun String.getResponseCode(): Int {
+fun String.getResponseHeader(): Pair {
if (this.isBlank()) {
- return 404
+ return Pair(404, "Invalid Response")
}
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("code").asInt
-}
-
-fun String.getResponseMessage(): String {
- if (this.isBlank()) {
- return ""
- }
- val element = JsonParser.parseString(this)
- val jsonObject = element.asJsonObject
- return jsonObject.get("message").asString
+ val jsonObject = gson.fromJson(this, JsonObject::class.java)
+ val code = jsonObject.get("code").asInt
+ val message = jsonObject.get("message").asString
+ return Pair(code, message)
}
//拼接图片地址
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
deleted file mode 100644
index 758b3bd..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/AirConditionModel.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class AirConditionModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private double o2;
- private int h2s;
- private int co;
- private int ch4;
-
- public double getO2() {
- return o2;
- }
-
- public void setO2(double o2) {
- this.o2 = o2;
- }
-
- public int getH2s() {
- return h2s;
- }
-
- public void setH2s(int h2s) {
- this.h2s = h2s;
- }
-
- public int getCo() {
- return co;
- }
-
- public void setCo(int co) {
- this.co = co;
- }
-
- public int getCh4() {
- return ch4;
- }
-
- public void setCh4(int ch4) {
- this.ch4 = ch4;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
index f0a8f63..70228ef 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteListModel.java
@@ -65,13 +65,26 @@
}
public static class RowsModel {
+ private String borderPointCount;
private String createTime;
+ private String deptFullName;
+ private String deptId;
+ private String deptName;
+ private List> deviceList;
+ private String finishTime;
+ private String groupDeviceCode;
+ private String groupDeviceId;
private String id;
private String imageUrl;
+ private String locationTime;
+ private List pointLocation;
+ private String pointLocationJson;
private String projectState;
private String projectStateName;
private String registerTime;
+ private String startTime;
private String updateTime;
+ private String valid;
private String workPerson;
private String workPersonDeptId;
private String workPersonDeptName;
@@ -80,6 +93,16 @@
private String workRoad;
private String workSiteDesc;
private String workTitle;
+ private String workType;
+ private String workTypeName;
+
+ public String getBorderPointCount() {
+ return borderPointCount;
+ }
+
+ public void setBorderPointCount(String borderPointCount) {
+ this.borderPointCount = borderPointCount;
+ }
public String getCreateTime() {
return createTime;
@@ -89,6 +112,62 @@
this.createTime = createTime;
}
+ public String getDeptFullName() {
+ return deptFullName;
+ }
+
+ public void setDeptFullName(String deptFullName) {
+ this.deptFullName = deptFullName;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public List> getDeviceList() {
+ return deviceList;
+ }
+
+ public void setDeviceList(List> deviceList) {
+ this.deviceList = deviceList;
+ }
+
+ public String getFinishTime() {
+ return finishTime;
+ }
+
+ public void setFinishTime(String finishTime) {
+ this.finishTime = finishTime;
+ }
+
+ public String getGroupDeviceCode() {
+ return groupDeviceCode;
+ }
+
+ public void setGroupDeviceCode(String groupDeviceCode) {
+ this.groupDeviceCode = groupDeviceCode;
+ }
+
+ public String getGroupDeviceId() {
+ return groupDeviceId;
+ }
+
+ public void setGroupDeviceId(String groupDeviceId) {
+ this.groupDeviceId = groupDeviceId;
+ }
+
public String getId() {
return id;
}
@@ -105,6 +184,30 @@
this.imageUrl = imageUrl;
}
+ public String getLocationTime() {
+ return locationTime;
+ }
+
+ public void setLocationTime(String locationTime) {
+ this.locationTime = locationTime;
+ }
+
+ public List getPointLocation() {
+ return pointLocation;
+ }
+
+ public void setPointLocation(List pointLocation) {
+ this.pointLocation = pointLocation;
+ }
+
+ public String getPointLocationJson() {
+ return pointLocationJson;
+ }
+
+ public void setPointLocationJson(String pointLocationJson) {
+ this.pointLocationJson = pointLocationJson;
+ }
+
public String getProjectState() {
return projectState;
}
@@ -129,6 +232,14 @@
this.registerTime = registerTime;
}
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
public String getUpdateTime() {
return updateTime;
}
@@ -137,6 +248,14 @@
this.updateTime = updateTime;
}
+ public String getValid() {
+ return valid;
+ }
+
+ public void setValid(String valid) {
+ this.valid = valid;
+ }
+
public String getWorkPerson() {
return workPerson;
}
@@ -200,6 +319,43 @@
public void setWorkTitle(String workTitle) {
this.workTitle = workTitle;
}
+
+ public String getWorkType() {
+ return workType;
+ }
+
+ public void setWorkType(String workType) {
+ this.workType = workType;
+ }
+
+ public String getWorkTypeName() {
+ return workTypeName;
+ }
+
+ public void setWorkTypeName(String workTypeName) {
+ this.workTypeName = workTypeName;
+ }
+
+ public static class PointLocationModel {
+ private String lng;
+ private String lat;
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
new file mode 100644
index 0000000..5d87443
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/model/WorkSiteWorkerModel.java
@@ -0,0 +1,487 @@
+package com.casic.br.operationsite.test.model;
+
+import java.util.List;
+
+public class WorkSiteWorkerModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataModel {
+ private boolean alarmFlag;
+ private String createTime;
+ private String deptId;
+ private String deptName;
+ private String enterReason;
+ private String gender;
+ private String genderName;
+ private HealthModel health;
+ private String id;
+ private String idCardNumber;
+ private String isRegister;
+ private LocationModel location;
+ private MultiGasModel multiGas;
+ private String ownerShip;
+ private String phoneNumber;
+ private String registerTime;
+ private String status;
+ private String statusName;
+ private String workerAvatar;
+ private String workerName;
+ private String workerType;
+ private String workerTypeName;
+
+ public boolean isAlarmFlag() {
+ return alarmFlag;
+ }
+
+ public void setAlarmFlag(boolean alarmFlag) {
+ this.alarmFlag = alarmFlag;
+ }
+
+ public String getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(String createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(String deptId) {
+ this.deptId = deptId;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public String getEnterReason() {
+ return enterReason;
+ }
+
+ public void setEnterReason(String enterReason) {
+ this.enterReason = enterReason;
+ }
+
+ public String getGender() {
+ return gender;
+ }
+
+ public void setGender(String gender) {
+ this.gender = gender;
+ }
+
+ public String getGenderName() {
+ return genderName;
+ }
+
+ public void setGenderName(String genderName) {
+ this.genderName = genderName;
+ }
+
+ public HealthModel getHealth() {
+ return health;
+ }
+
+ public void setHealth(HealthModel health) {
+ this.health = health;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIdCardNumber() {
+ return idCardNumber;
+ }
+
+ public void setIdCardNumber(String idCardNumber) {
+ this.idCardNumber = idCardNumber;
+ }
+
+ public String getIsRegister() {
+ return isRegister;
+ }
+
+ public void setIsRegister(String isRegister) {
+ this.isRegister = isRegister;
+ }
+
+ public LocationModel getLocation() {
+ return location;
+ }
+
+ public void setLocation(LocationModel location) {
+ this.location = location;
+ }
+
+ public MultiGasModel getMultiGas() {
+ return multiGas;
+ }
+
+ public void setMultiGas(MultiGasModel multiGas) {
+ this.multiGas = multiGas;
+ }
+
+ public String getOwnerShip() {
+ return ownerShip;
+ }
+
+ public void setOwnerShip(String ownerShip) {
+ this.ownerShip = ownerShip;
+ }
+
+ public String getPhoneNumber() {
+ return phoneNumber;
+ }
+
+ public void setPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ }
+
+ public String getRegisterTime() {
+ return registerTime;
+ }
+
+ public void setRegisterTime(String registerTime) {
+ this.registerTime = registerTime;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getStatusName() {
+ return statusName;
+ }
+
+ public void setStatusName(String statusName) {
+ this.statusName = statusName;
+ }
+
+ public String getWorkerAvatar() {
+ return workerAvatar;
+ }
+
+ public void setWorkerAvatar(String workerAvatar) {
+ this.workerAvatar = workerAvatar;
+ }
+
+ public String getWorkerName() {
+ return workerName;
+ }
+
+ public void setWorkerName(String workerName) {
+ this.workerName = workerName;
+ }
+
+ public String getWorkerType() {
+ return workerType;
+ }
+
+ public void setWorkerType(String workerType) {
+ this.workerType = workerType;
+ }
+
+ public String getWorkerTypeName() {
+ return workerTypeName;
+ }
+
+ public void setWorkerTypeName(String workerTypeName) {
+ this.workerTypeName = workerTypeName;
+ }
+
+ public static class HealthModel {
+ private String bloodOxygen;
+ private String deviceCode;
+ private String deviceId;
+ private String groupCode;
+ private String heartRate;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getBloodOxygen() {
+ return bloodOxygen;
+ }
+
+ public void setBloodOxygen(String bloodOxygen) {
+ this.bloodOxygen = bloodOxygen;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getHeartRate() {
+ return heartRate;
+ }
+
+ public void setHeartRate(String heartRate) {
+ this.heartRate = heartRate;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class LocationModel {
+ private String deviceCode;
+ private String deviceId;
+ private String gdLat;
+ private String gdLng;
+ private String groupCode;
+ private String lat;
+ private String lng;
+ private String projectId;
+ private String uploadTimestamp;
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getGdLat() {
+ return gdLat;
+ }
+
+ public void setGdLat(String gdLat) {
+ this.gdLat = gdLat;
+ }
+
+ public String getGdLng() {
+ return gdLng;
+ }
+
+ public void setGdLng(String gdLng) {
+ this.gdLng = gdLng;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+
+ public static class MultiGasModel {
+ private String coValue;
+ private String deviceCode;
+ private String deviceId;
+ private String exValue;
+ private String groupCode;
+ private String h2sValue;
+ private String o2Value;
+ private String projectId;
+ private String projectName;
+ private String uploadTimestamp;
+
+ public String getCoValue() {
+ return coValue;
+ }
+
+ public void setCoValue(String coValue) {
+ this.coValue = coValue;
+ }
+
+ public String getDeviceCode() {
+ return deviceCode;
+ }
+
+ public void setDeviceCode(String deviceCode) {
+ this.deviceCode = deviceCode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getExValue() {
+ return exValue;
+ }
+
+ public void setExValue(String exValue) {
+ this.exValue = exValue;
+ }
+
+ public String getGroupCode() {
+ return groupCode;
+ }
+
+ public void setGroupCode(String groupCode) {
+ this.groupCode = groupCode;
+ }
+
+ public String getH2sValue() {
+ return h2sValue;
+ }
+
+ public void setH2sValue(String h2sValue) {
+ this.h2sValue = h2sValue;
+ }
+
+ public String getO2Value() {
+ return o2Value;
+ }
+
+ public void setO2Value(String o2Value) {
+ this.o2Value = o2Value;
+ }
+
+ public String getProjectId() {
+ return projectId;
+ }
+
+ public void setProjectId(String projectId) {
+ this.projectId = projectId;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ public String getUploadTimestamp() {
+ return uploadTimestamp;
+ }
+
+ public void setUploadTimestamp(String uploadTimestamp) {
+ this.uploadTimestamp = uploadTimestamp;
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
deleted file mode 100644
index e32edab..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/model/WorkerModel.java
+++ /dev/null
@@ -1,226 +0,0 @@
-package com.casic.br.operationsite.test.model;
-
-import java.util.List;
-
-public class WorkerModel {
-
- private int code;
- private List data;
- private String message;
- private boolean success;
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public List getData() {
- return data;
- }
-
- public void setData(List data) {
- this.data = data;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public static class DataModel {
- private boolean alarmFlag;
- private String bloodOxygen;
- private String braceletCode;
- private String cell;
- private String co;
- private String gas;
- private String gasTime;
- private String h2s;
- private String hatCode;
- private String hatId;
- private String heartRate;
- private String lat;
- private String lng;
- private String location;
- private String o2;
- private String signal;
- private String time;
- private String vastCode;
- private String workerId;
- private String workerName;
-
- public boolean isAlarmFlag() {
- return alarmFlag;
- }
-
- public void setAlarmFlag(boolean alarmFlag) {
- this.alarmFlag = alarmFlag;
- }
-
- public String getBloodOxygen() {
- return bloodOxygen;
- }
-
- public void setBloodOxygen(String bloodOxygen) {
- this.bloodOxygen = bloodOxygen;
- }
-
- public String getBraceletCode() {
- return braceletCode;
- }
-
- public void setBraceletCode(String braceletCode) {
- this.braceletCode = braceletCode;
- }
-
- public String getCell() {
- return cell;
- }
-
- public void setCell(String cell) {
- this.cell = cell;
- }
-
- public String getCo() {
- return co;
- }
-
- public void setCo(String co) {
- this.co = co;
- }
-
- public String getGas() {
- return gas;
- }
-
- public void setGas(String gas) {
- this.gas = gas;
- }
-
- public String getGasTime() {
- return gasTime;
- }
-
- public void setGasTime(String gasTime) {
- this.gasTime = gasTime;
- }
-
- public String getH2s() {
- return h2s;
- }
-
- public void setH2s(String h2s) {
- this.h2s = h2s;
- }
-
- public String getHatCode() {
- return hatCode;
- }
-
- public void setHatCode(String hatCode) {
- this.hatCode = hatCode;
- }
-
- public String getHatId() {
- return hatId;
- }
-
- public void setHatId(String hatId) {
- this.hatId = hatId;
- }
-
- public String getHeartRate() {
- return heartRate;
- }
-
- public void setHeartRate(String heartRate) {
- this.heartRate = heartRate;
- }
-
- public String getLat() {
- return lat;
- }
-
- public void setLat(String lat) {
- this.lat = lat;
- }
-
- public String getLng() {
- return lng;
- }
-
- public void setLng(String lng) {
- this.lng = lng;
- }
-
- public String getLocation() {
- return location;
- }
-
- public void setLocation(String location) {
- this.location = location;
- }
-
- public String getO2() {
- return o2;
- }
-
- public void setO2(String o2) {
- this.o2 = o2;
- }
-
- public String getSignal() {
- return signal;
- }
-
- public void setSignal(String signal) {
- this.signal = signal;
- }
-
- public String getTime() {
- return time;
- }
-
- public void setTime(String time) {
- this.time = time;
- }
-
- public String getVastCode() {
- return vastCode;
- }
-
- public void setVastCode(String vastCode) {
- this.vastCode = vastCode;
- }
-
- public String getWorkerId() {
- return workerId;
- }
-
- public void setWorkerId(String workerId) {
- this.workerId = workerId;
- }
-
- public String getWorkerName() {
- return workerName;
- }
-
- public void setWorkerName(String workerName) {
- this.workerName = workerName;
- }
- }
-}
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
index 4d68464..f56e8a1 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitService.kt
@@ -2,7 +2,15 @@
import okhttp3.MultipartBody
import okhttp3.RequestBody
-import retrofit2.http.*
+import retrofit2.http.Body
+import retrofit2.http.Field
+import retrofit2.http.FormUrlEncoded
+import retrofit2.http.GET
+import retrofit2.http.Header
+import retrofit2.http.Multipart
+import retrofit2.http.POST
+import retrofit2.http.Part
+import retrofit2.http.Query
interface RetrofitService {
/**
@@ -41,7 +49,7 @@
/**
* 实施中列表
*/
- @GET("/site/listPage")
+ @GET("/v3/site/listPage")
suspend fun getProjectListByPage(
@Header("token") token: String,
@Query("keywords") keywords: String,
@@ -53,19 +61,13 @@
/**
* 获取工作区域作业人员
*/
- @GET("/overview/workerList")
- suspend fun getWorkers(
+ @GET("/v3/overview/workerList")
+ suspend fun getWorkSiteWorkers(
@Header("token") token: String,
@Query("projectId") projectId: String
): String
/**
- * 获取四合一数据
- */
- @GET("/emergency/startCheckOxygen")
- suspend fun getAirCondition(@Header("token") token: String): String
-
- /**
* 上报每个大阶段场景
* */
@GET("/emergency/notifyStageFinished")
diff --git a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
index ed19c9f..a813fb0 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/retrofit/RetrofitServiceManager.kt
@@ -3,7 +3,7 @@
import android.util.Log
import com.casic.br.operationsite.test.util.AuthenticationHelper
import com.casic.br.operationsite.test.util.LocaleConstant
-import com.google.gson.Gson
+import com.casic.br.operationsite.test.util.RuntimeCache
import com.google.gson.JsonObject
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.RetrofitFactory
@@ -11,14 +11,13 @@
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
-import okhttp3.RequestBody
+import okhttp3.RequestBody.Companion.asRequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import java.io.File
object RetrofitServiceManager {
private const val kTag = "RetrofitServiceManager"
- private val gson by lazy { Gson() }
private val api by lazy {
val httpConfig = SaveKeyValues.getValue(
@@ -67,27 +66,20 @@
/**
* 获取工作区域作业人员
*/
- suspend fun getWorkers(projectId: String): String {
- return api.getWorkers(AuthenticationHelper.token!!, projectId)
+ suspend fun getWorkSiteWorkers(): String {
+ return api.getWorkSiteWorkers(AuthenticationHelper.token!!, RuntimeCache.projectId)
}
/**
* 上传图片
*/
suspend fun uploadImage(image: File): String {
- val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val requestBody = image.asRequestBody("image/png".toMediaTypeOrNull())
val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
return api.uploadImage(AuthenticationHelper.token!!, imagePart)
}
/**
- * 获取四合一数据
- */
- suspend fun getAirCondition(): String {
- return api.getAirCondition(AuthenticationHelper.token!!)
- }
-
- /**
* 上报每个大阶段场景
*/
suspend fun notifyStageFinished(operationId: String?, stage: String): String {
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
new file mode 100644
index 0000000..337aaf1
--- /dev/null
+++ b/app/src/main/java/com/casic/br/operationsite/test/service/SocketConnectionService.kt
@@ -0,0 +1,125 @@
+package com.casic.br.operationsite.test.service
+
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.app.Service
+import android.content.Intent
+import android.os.Handler
+import android.os.IBinder
+import android.os.Message
+import android.util.Log
+import androidx.core.app.NotificationCompat
+import com.casic.br.operationsite.test.R
+import com.casic.br.operationsite.test.extensions.convert
+import com.casic.br.operationsite.test.util.LocaleConstant
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.utils.socket.tcp.OnTcpConnectStateListener
+import com.pengxh.kt.lite.utils.socket.tcp.TcpClient
+
+class SocketConnectionService : Service(), OnTcpConnectStateListener, Handler.Callback {
+
+ companion object {
+ var weakReferenceHandler: WeakReferenceHandler? = null
+ }
+
+ override fun handleMessage(msg: Message): Boolean {
+ if (!tcpClient.isRunning()) {
+ "数据通讯服务断开连接,指令发送失败".show(this)
+ return true
+ }
+
+ when (msg.what) {
+ LocaleConstant.COMMAND_TEST_CODE -> {
+ val commandStr = msg.obj as String
+ tcpClient.sendMessage(commandStr.convert())
+ }
+
+ LocaleConstant.GAS_ALARM_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.GAS_ALARM_COMMAND)
+ }
+
+ LocaleConstant.CONFIRM_AIR_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.CONFIRM_AIR_COMMAND)
+ }
+
+ LocaleConstant.START_VIDEO_COMMAND_CODE -> {
+ tcpClient.sendMessage(LocaleConstant.START_VIDEO_COMMAND)
+ }
+ }
+ return true
+ }
+
+ private val kTag = "SocketService"
+ private val notificationId = 1
+ private val tcpClient by lazy { TcpClient(this) }
+ private val notificationManager by lazy { getSystemService(NOTIFICATION_SERVICE) as NotificationManager }
+ private var notificationBuilder: NotificationCompat.Builder? = null
+
+ override fun onBind(intent: Intent?): IBinder? {
+ return null
+ }
+
+ override fun onCreate() {
+ super.onCreate()
+ val name = "${resources.getString(R.string.app_name)}前台服务"
+ val channel = NotificationChannel(
+ "socket_connection_service_channel", name, NotificationManager.IMPORTANCE_HIGH
+ )
+ channel.description = "Channel for socket connection service"
+ notificationManager.createNotificationChannel(channel)
+ notificationBuilder = NotificationCompat.Builder(this, "socket_connection_service_channel")
+ .setSmallIcon(R.mipmap.ic_launcher)
+ .setContentTitle("数据通讯服务连接中...")
+ .setContentText("为保证程序正常运行,请勿移除此通知")
+ .setPriority(NotificationCompat.PRIORITY_HIGH) // 设置通知优先级
+ .setOngoing(true)
+ .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
+
+ val notification = notificationBuilder?.build()
+ startForeground(notificationId, notification)
+ }
+
+ override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
+ if (weakReferenceHandler == null) {
+ weakReferenceHandler = WeakReferenceHandler(this)
+ }
+ tcpClient.start(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
+ Log.d(kTag, "onStartCommand: SocketConnectionService")
+ return START_STICKY
+ }
+
+ override fun onConnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务已连接")
+ "数据通讯服务连接成功,现在可以下发指令了".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDisconnected() {
+ notificationBuilder?.setContentTitle("数据通讯服务断开连接")
+ "数据通讯服务断开连接".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onConnectFailed() {
+ notificationBuilder?.setContentTitle("数据通讯服务连接出错,开始重连")
+ "数据通讯服务连接出错,开始重连".show(this)
+ val notification = notificationBuilder?.build()
+ notificationManager.notify(notificationId, notification)
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ tcpClient.stop(false)
+ stopForeground(STOP_FOREGROUND_REMOVE)
+ Log.d(kTag, "onDestroy: SocketConnectionService")
+ }
+
+ override fun onMessageReceived(bytes: ByteArray?) {
+ if (bytes == null) {
+ return
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt b/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
deleted file mode 100644
index bc3c0ca..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/service/TcpMessageService.kt
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.casic.br.operationsite.test.service
-
-import android.app.Service
-import android.content.Intent
-import android.os.Handler
-import android.os.IBinder
-import android.os.Message
-import com.casic.br.operationsite.test.util.LocaleConstant
-import com.casic.br.operationsite.test.util.tcp.SocketManager
-import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.WeakReferenceHandler
-
-class TcpMessageService : Service(), Handler.Callback {
-
- companion object {
- lateinit var weakReferenceHandler: WeakReferenceHandler
- }
-
- private val kTag = "TcpMessageService"
-
- override fun onBind(intent: Intent?): IBinder? {
- return null
- }
-
- override fun onCreate() {
- super.onCreate()
- weakReferenceHandler = WeakReferenceHandler(this)
- SocketManager.get.connectTcpServer(LocaleConstant.GAS_BASE_IP, LocaleConstant.TCP_PORT)
- }
-
- override fun onDestroy() {
- super.onDestroy()
- SocketManager.get.close()
- }
-
- override fun handleMessage(msg: Message): Boolean {
- if (msg.what == LocaleConstant.TCP_CONNECTED_CODE) {
- "指令连接成功,现在可以下发指令了".show(this)
- } else {
- "指令连接断开,开始自动重连".show(this)
- }
- return true
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt b/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt
deleted file mode 100644
index 56bc436..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/GlideLoadEngine.kt
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.casic.br.operationsite.test.util
-
-import android.content.Context
-import android.widget.ImageView
-import com.bumptech.glide.Glide
-import com.bumptech.glide.load.resource.bitmap.CenterCrop
-import com.bumptech.glide.load.resource.bitmap.RoundedCorners
-import com.bumptech.glide.request.RequestOptions
-import com.casic.br.operationsite.test.R
-import com.luck.picture.lib.engine.ImageEngine
-import com.luck.picture.lib.utils.ActivityCompatHelper
-
-
-class GlideLoadEngine private constructor() : ImageEngine {
-
- companion object {
- val get: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
- GlideLoadEngine()
- }
- }
-
- override fun loadImage(context: Context, url: String, imageView: ImageView) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context).load(url).into(imageView);
- }
-
- override fun loadImage(
- context: Context,
- imageView: ImageView,
- url: String,
- maxWidth: Int,
- maxHeight: Int
- ) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context)
- .load(url)
- .override(maxWidth, maxHeight)
- .into(imageView)
- }
-
- override fun loadAlbumCover(context: Context, url: String, imageView: ImageView) {
- if (!ActivityCompatHelper.assertValidRequest(context)) {
- return
- }
- Glide.with(context)
- .asBitmap()
- .load(url)
- .override(180, 180)
- .sizeMultiplier(0.5f)
- .transform(CenterCrop(), RoundedCorners(8))
- .placeholder(R.drawable.ps_image_placeholder)
- .into(imageView)
- }
-
- override fun pauseRequests(context: Context?) {
- context?.let { Glide.with(it).pauseRequests() }
- }
-
- override fun resumeRequests(context: Context?) {
- context?.let { Glide.with(it).resumeRequests() }
- }
-
- override fun loadGridImage(context: Context, url: String, imageView: ImageView) {
- Glide.with(context)
- .load(url)
- .apply(RequestOptions().placeholder(R.drawable.ps_image_placeholder))
- .into(imageView)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt b/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
index ec57ebc..92cf048 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/HttpRequestHelper.kt
@@ -1,13 +1,13 @@
package com.casic.br.operationsite.test.util
import android.util.Log
-import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.LifecycleOwner
-import androidx.lifecycle.LifecycleRegistry
-import androidx.lifecycle.lifecycleScope
import com.google.gson.Gson
import com.google.gson.JsonObject
+import com.pengxh.kt.lite.utils.LiteKitConstant
+import kotlinx.coroutines.CoroutineExceptionHandler
+import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import okhttp3.MediaType.Companion.toMediaType
@@ -21,10 +21,9 @@
/**
* Service里面的Http请求
* */
-class HttpRequestHelper(builder: Builder) : LifecycleOwner {
+class HttpRequestHelper(builder: Builder) {
private val kTag = "HttpRequestHelper"
- private val registry = LifecycleRegistry(this)
private val gson by lazy { Gson() }
class Builder {
@@ -68,6 +67,9 @@
}
fun build(): HttpRequestHelper {
+ if (!::key.isInitialized || !::value.isInitialized || !::url.isInitialized || !::httpRequestCallback.isInitialized) {
+ throw IllegalStateException("All properties must be initialized before building.")
+ }
return HttpRequestHelper(this)
}
}
@@ -81,7 +83,7 @@
/**
* 发起网络请求
* */
- fun start() {
+ fun start(timeoutSeconds: Long = LiteKitConstant.HTTP_TIMEOUT) {
val param = JsonObject()
map.forEach {
param.add(it.key, gson.toJsonTree(it.value))
@@ -91,30 +93,43 @@
)
//构建Request
val request = Request.Builder().addHeader(key, value).post(requestBody).url(url).build()
- lifecycleScope.launch(Dispatchers.IO) {
- val interceptor = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
- override fun log(message: String) {
- Log.d(kTag, ">>>>> $message")
- }
- })
- interceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
- val client = OkHttpClient.Builder()
- .addInterceptor(interceptor)
- .readTimeout(10, TimeUnit.SECONDS)
- .connectTimeout(30, TimeUnit.SECONDS)
- .writeTimeout(10, TimeUnit.SECONDS)
- .build()
+
+ val logLevel = HttpLoggingInterceptor.Level.NONE
+ val interceptor = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
+ override fun log(message: String) {
+ Log.d(kTag, ">>>>> $message")
+ }
+ }).setLevel(logLevel)
+
+ val client = OkHttpClient.Builder()
+ .addInterceptor(interceptor)
+ .readTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .connectTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .writeTimeout(timeoutSeconds, TimeUnit.SECONDS)
+ .build()
+
+ val job = SupervisorJob()
+ val scope = CoroutineScope(Dispatchers.Main + job)
+ scope.launch(Dispatchers.Main + CoroutineExceptionHandler { _, throwable ->
+ callback.onFailure(throwable)
+ }) {
try {
- val response = client.newCall(request).execute()
- response.body?.apply {
- withContext(Dispatchers.Main) {
- callback.onSuccess(string())
+ val response = withContext(Dispatchers.IO) {
+ client.newCall(request).execute()
+ }
+ if (response.isSuccessful) {
+ response.body?.string()?.let {
+ callback.onSuccess(it)
+ } ?: run {
+ callback.onFailure(IOException("Response body is null"))
}
+ } else {
+ callback.onFailure(IOException("Unexpected code ${response.code}"))
}
- } catch (e: IOException) {
- withContext(Dispatchers.Main) {
- callback.onFailure(e)
- }
+ } catch (e: Exception) {
+ callback.onFailure(e)
+ } finally {
+ job.cancel()
}
}
}
@@ -124,8 +139,4 @@
fun onFailure(throwable: Throwable)
}
-
- override fun getLifecycle(): Lifecycle {
- return registry
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
index 63ae413..68584bb 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/LocaleConstant.kt
@@ -28,8 +28,8 @@
)
}
-// const val SERVER_BASE_URL = "http://192.168.9.99:8085"
- const val SERVER_BASE_URL = "http://139.198.19.235:22006"
+ const val SERVER_BASE_URL = "http://111.198.10.15:22006"
+// const val SERVER_BASE_URL = "http://139.198.19.235:22006"
const val IMAGE_BED_URL = "${SERVER_BASE_URL}/emergency/prepareUpload"
@@ -51,7 +51,8 @@
const val DEVICE_CONTROL_SERVER_CONFIG = "deviceControlServerConfig"
const val ACCOUNT = "account"
const val PASSWORD = "password"
- const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_NAME_KEY = "USER_NAME_KEY"
+ const val USER_ID_KEY = "USER_ID_KEY"
const val PERMISSIONS_CODE = 999
const val PAGE_LIMIT = 10
@@ -61,8 +62,10 @@
const val WEBSOCKET_MESSAGE_CODE = 101
const val WEBSOCKET_DISCONNECTED_CODE = 102
- const val TCP_CONNECTED_CODE = 103
- const val TCP_DISCONNECTED_CODE = 104
+ const val COMMAND_TEST_CODE = 202506001
+ const val GAS_ALARM_CODE = 202506002
+ const val CONFIRM_AIR_COMMAND_CODE = 202506003
+ const val START_VIDEO_COMMAND_CODE = 202506004
//作业前检测
val CONFIRM_AIR_COMMAND =
@@ -73,6 +76,6 @@
byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x11, 0x00, 0xA5.toByte())
//甲烷阈值报警
- val GAS_COMMAND =
+ val GAS_ALARM_COMMAND =
byteArrayOf(0xAA.toByte(), 0x01, 0x00, 0x93.toByte(), 0x14, 0x00, 0xA8.toByte())
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt b/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt
index f044fd3..14514a0 100644
--- a/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt
+++ b/app/src/main/java/com/casic/br/operationsite/test/util/VideoPlayerManager.kt
@@ -3,11 +3,11 @@
import com.shuyu.gsyvideoplayer.GSYVideoManager
import com.shuyu.gsyvideoplayer.model.VideoOptionModel
import com.shuyu.gsyvideoplayer.utils.GSYVideoType
-import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
+import com.shuyu.gsyvideoplayer.video.NormalGSYVideoPlayer
import tv.danmaku.ijk.media.player.IjkMediaPlayer
object VideoPlayerManager {
- fun setGSYVideoPlayerOptions(videoPlayer: StandardGSYVideoPlayer, url: String) {
+ fun setGSYVideoPlayerOptions(videoPlayer: NormalGSYVideoPlayer, url: String) {
val list = ArrayList()
//开启软解码,硬解码:1、打开,0、关闭
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/ISocketListener.kt b/app/src/main/java/com/casic/br/operationsite/test/util/tcp/ISocketListener.kt
deleted file mode 100644
index a00a2a8..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/ISocketListener.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.casic.br.operationsite.test.util.tcp
-
-interface ISocketListener {
- companion object {
- const val STATUS_CONNECT_SUCCESS: Byte = 1 //连接成功
- const val STATUS_CONNECT_CLOSED: Byte = 0 //关闭连接
- const val STATUS_CONNECT_ERROR: Byte = -1 //连接失败
- }
-
- /**
- * 当接收到系统消息
- */
- fun onMessageResponse(data: ByteArray?)
-
- /**
- * 当连接状态发生变化时调用
- */
- fun onServiceStatusConnectChanged(statusCode: Byte)
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketChannelHandle.kt b/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketChannelHandle.kt
deleted file mode 100644
index 8963268..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketChannelHandle.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.casic.br.operationsite.test.util.tcp
-
-import android.util.Log
-import io.netty.channel.ChannelHandlerContext
-import io.netty.channel.SimpleChannelInboundHandler
-
-class SocketChannelHandle(private val listener: ISocketListener?) :
- SimpleChannelInboundHandler() {
-
- private val kTag = "SocketChannelHandle"
-
- override fun channelActive(ctx: ChannelHandlerContext) {
- super.channelActive(ctx)
- Log.d(kTag, "channelActive ===> 连接成功")
- listener?.onServiceStatusConnectChanged(ISocketListener.STATUS_CONNECT_SUCCESS)
- }
-
- override fun channelInactive(ctx: ChannelHandlerContext) {
- super.channelInactive(ctx)
- Log.e(kTag, "channelInactive: 连接断开")
- listener?.onServiceStatusConnectChanged(ISocketListener.STATUS_CONNECT_CLOSED)
- }
-
- override fun channelRead0(ctx: ChannelHandlerContext, data: ByteArray?) {
- listener?.onMessageResponse(data)
- }
-
- override fun exceptionCaught(ctx: ChannelHandlerContext, cause: Throwable) {
- super.exceptionCaught(ctx, cause)
- Log.d(kTag, "exceptionCaught ===> $cause")
- listener?.onServiceStatusConnectChanged(ISocketListener.STATUS_CONNECT_ERROR)
- cause.printStackTrace()
- ctx.close()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketClient.kt b/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketClient.kt
deleted file mode 100644
index 12d4ac8..0000000
--- a/app/src/main/java/com/casic/br/operationsite/test/util/tcp/SocketClient.kt
+++ /dev/null
@@ -1,155 +0,0 @@
-package com.casic.br.operationsite.test.util.tcp
-
-import android.os.SystemClock
-import android.util.Log
-import com.casic.br.operationsite.test.service.TcpMessageService
-import com.casic.br.operationsite.test.util.LocaleConstant
-import io.netty.bootstrap.Bootstrap
-import io.netty.channel.AdaptiveRecvByteBufAllocator
-import io.netty.channel.Channel
-import io.netty.channel.ChannelFuture
-import io.netty.channel.ChannelFutureListener
-import io.netty.channel.ChannelInitializer
-import io.netty.channel.ChannelOption
-import io.netty.channel.nio.NioEventLoopGroup
-import io.netty.channel.socket.SocketChannel
-import io.netty.channel.socket.nio.NioSocketChannel
-import io.netty.handler.codec.bytes.ByteArrayDecoder
-import io.netty.handler.codec.bytes.ByteArrayEncoder
-import io.netty.handler.timeout.IdleStateHandler
-
-class SocketClient {
-
- private val kTag = "SocketClient"
-
- private var host: String? = null
- private var port = 9000
- private var nioEventLoopGroup: NioEventLoopGroup? = null
- private var channel: Channel? = null
- private var listener: ISocketListener? = null
-
- //现在连接的状态
- var connectStatus = false //判断是否已连接
- private var reconnectNum = Int.MAX_VALUE //定义的重连到时候用
- private var isNeedReconnect = true //是否需要重连
- var isConnecting = false //是否正在连接
- private set
- private var reconnectIntervalTime: Long = 5000 //重连的时间
-
- fun setSocketListener(listener: ISocketListener?) {
- this.listener = listener
- }
-
- fun connect(host: String, port: Int) {
- this.host = host
- this.port = port
- Log.d(kTag, "connect ===> 开始连接TCP服务器")
- if (isConnecting) {
- return
- }
- //起个线程
- val clientThread: Thread = object : Thread("client-Netty") {
- override fun run() {
- super.run()
- isNeedReconnect = true
- reconnectNum = Int.MAX_VALUE
- connectServer()
- }
- }
- clientThread.start()
- }
-
- private fun connectServer() {
- synchronized(this@SocketClient) {
- var channelFuture: ChannelFuture? = null //连接管理对象
- if (!connectStatus) {
- isConnecting = true
- nioEventLoopGroup = NioEventLoopGroup() //设置的连接group
- val bootstrap = Bootstrap()
- bootstrap.group(nioEventLoopGroup) //设置的一系列连接参数操作等
- .channel(NioSocketChannel::class.java)
- .option(ChannelOption.TCP_NODELAY, true) //无阻塞
- .option(ChannelOption.SO_KEEPALIVE, true) //长连接
- .option(
- ChannelOption.RCVBUF_ALLOCATOR,
- AdaptiveRecvByteBufAllocator(5000, 5000, 8000)
- ) //接收缓冲区 最小值太小时数据接收不全
- .handler(object : ChannelInitializer