diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..16e60f2 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,123 @@ +import java.text.SimpleDateFormat + +plugins { + id('com.android.application') + id('org.jetbrains.kotlin.android') +} + +android { + namespace 'com.casic.br.operationsite' + compileSdk 35 + + defaultConfig { + applicationId 'com.casic.br.operationsite' + minSdk 26 + targetSdk 35 + versionCode 1130 + versionName '1.1.3.0' + } + + signingConfigs { + release { + storeFile file('OperationSite.jks') + keyAlias 'key0' + storePassword '123456789' + keyPassword '123456789' + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + buildFeatures { + buildConfig = true + viewBinding = true + } + + applicationVariants.configureEach { + outputs.configureEach { + outputFileName = 'XCGZ_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk' + } + } +} + +static def getBuildDate() { + SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA) + return dateFormat.format(System.currentTimeMillis()) +} + +dependencies { + 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.geyifeng.immersionbar:immersionbar:3.2.2' + //Kotlin协程 + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2' + //MVVM+LiveData + 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.12.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' + //图片压缩 + implementation 'top.zibin:Luban:1.1.8' + //返回值转换器 + implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' + implementation 'com.squareup.retrofit2:converter-scalars:2.3.0' + implementation 'com.squareup.retrofit2:converter-gson:2.8.1' + //okhttp3日志拦截器 + implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0' + //网络请求和接口封装 + implementation 'com.squareup.retrofit2:retrofit:2.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' + //高德地图 + implementation 'com.amap.api:3dmap:latest.integration' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //CameraX + implementation 'androidx.camera:camera-core:1.2.3' + // CameraX Camera2 extensions + implementation 'androidx.camera:camera-camera2:1.2.3' + // CameraX Lifecycle library + implementation 'androidx.camera:camera-lifecycle:1.2.3' + // CameraX View class + implementation 'androidx.camera:camera-view:1.2.3' + //TCP + implementation 'io.netty:netty-all:4.1.23.Final' + //WebView + implementation 'com.just.agentweb:agentweb-androidx:4.1.4' + //视频播放器,RTSP流 + 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' + //扫码 + implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' + //图表 + implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..16e60f2 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,123 @@ +import java.text.SimpleDateFormat + +plugins { + id('com.android.application') + id('org.jetbrains.kotlin.android') +} + +android { + namespace 'com.casic.br.operationsite' + compileSdk 35 + + defaultConfig { + applicationId 'com.casic.br.operationsite' + minSdk 26 + targetSdk 35 + versionCode 1130 + versionName '1.1.3.0' + } + + signingConfigs { + release { + storeFile file('OperationSite.jks') + keyAlias 'key0' + storePassword '123456789' + keyPassword '123456789' + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + buildFeatures { + buildConfig = true + viewBinding = true + } + + applicationVariants.configureEach { + outputs.configureEach { + outputFileName = 'XCGZ_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk' + } + } +} + +static def getBuildDate() { + SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA) + return dateFormat.format(System.currentTimeMillis()) +} + +dependencies { + 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.geyifeng.immersionbar:immersionbar:3.2.2' + //Kotlin协程 + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2' + //MVVM+LiveData + 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.12.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' + //图片压缩 + implementation 'top.zibin:Luban:1.1.8' + //返回值转换器 + implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' + implementation 'com.squareup.retrofit2:converter-scalars:2.3.0' + implementation 'com.squareup.retrofit2:converter-gson:2.8.1' + //okhttp3日志拦截器 + implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0' + //网络请求和接口封装 + implementation 'com.squareup.retrofit2:retrofit:2.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' + //高德地图 + implementation 'com.amap.api:3dmap:latest.integration' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //CameraX + implementation 'androidx.camera:camera-core:1.2.3' + // CameraX Camera2 extensions + implementation 'androidx.camera:camera-camera2:1.2.3' + // CameraX Lifecycle library + implementation 'androidx.camera:camera-lifecycle:1.2.3' + // CameraX View class + implementation 'androidx.camera:camera-view:1.2.3' + //TCP + implementation 'io.netty:netty-all:4.1.23.Final' + //WebView + implementation 'com.just.agentweb:agentweb-androidx:4.1.4' + //视频播放器,RTSP流 + 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' + //扫码 + implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' + //图表 + implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' +} \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts deleted file mode 100644 index c3a66e8..0000000 --- a/app/build.gradle.kts +++ /dev/null @@ -1,132 +0,0 @@ -import com.android.build.gradle.internal.api.ApkVariantOutputImpl -import java.text.SimpleDateFormat -import java.util.Locale - -plugins { - id("com.android.application") - id("org.jetbrains.kotlin.android") -} - -android { - namespace = "com.casic.br.operationsite" - compileSdk = 35 - - defaultConfig { - applicationId = "com.casic.br.operationsite" - minSdk = 26 - targetSdk = 35 - versionCode = 1130 - versionName = "1.1.3.0" - } - - signingConfigs { - create("release") { - storeFile = file("OperationSite.jks") - keyAlias = "key0" - storePassword = "123456789" - keyPassword = "123456789" - } - } - - buildTypes { - val signConfig = signingConfigs.getByName("release") - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - signingConfig = signConfig - } - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = "1.8" - } - - buildFeatures { - buildConfig = true - viewBinding = true - } - - applicationVariants.all { - outputs.all { - if (this is ApkVariantOutputImpl) { - outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" - } - } - } -} - -fun getBuildDate(): String { - val dateFormat = SimpleDateFormat("yyyyMMdd", Locale.CHINA) - return dateFormat.format(System.currentTimeMillis()) -} - -dependencies { - //基础依赖库 - implementation("com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4") - implementation("androidx.core:core-ktx:1.13.1") - implementation("androidx.appcompat:appcompat:1.7.0") - implementation("com.google.android.material:material:1.10.0") - //Google官方授权框架 - implementation("pub.devrel:easypermissions:3.0.0") - //沉浸式状态栏。基础依赖包,必须要依赖 - implementation("com.geyifeng.immersionbar:immersionbar:3.2.2") - //Kotlin协程 - implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") - //MVVM+LiveData - 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.12.0") - //图片选择框架 - implementation("io.github.lucksiege:pictureselector:v3.11.1") - //图片压缩 - implementation("top.zibin:Luban:1.1.8") - //返回值转换器 - implementation("com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2") - implementation("com.squareup.retrofit2:converter-scalars:2.3.0") - implementation("com.squareup.retrofit2:converter-gson:2.8.1") - //okhttp3日志拦截器 - implementation("com.squareup.okhttp3:logging-interceptor:4.6.0") - //网络请求和接口封装 - implementation("com.squareup.retrofit2:retrofit:2.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") - //高德地图 - implementation("com.amap.api:3dmap:latest.integration") - //高德地图搜索 - implementation("com.amap.api:search:8.1.0") - //CameraX - implementation("androidx.camera:camera-core:1.2.3") - // CameraX Camera2 extensions - implementation("androidx.camera:camera-camera2:1.2.3") - // CameraX Lifecycle library - implementation("androidx.camera:camera-lifecycle:1.2.3") - // CameraX View class - implementation("androidx.camera:camera-view:1.2.3") - //TCP - implementation("io.netty:netty-all:4.1.23.Final") - //WebView - implementation("com.just.agentweb:agentweb-androidx:4.1.4") - //视频播放器,RTSP流 - 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") - //扫码 - implementation("cn.bertsir.zbarLibary:zbarlibary:1.4.2") - //图表 - implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") -} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..16e60f2 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,123 @@ +import java.text.SimpleDateFormat + +plugins { + id('com.android.application') + id('org.jetbrains.kotlin.android') +} + +android { + namespace 'com.casic.br.operationsite' + compileSdk 35 + + defaultConfig { + applicationId 'com.casic.br.operationsite' + minSdk 26 + targetSdk 35 + versionCode 1130 + versionName '1.1.3.0' + } + + signingConfigs { + release { + storeFile file('OperationSite.jks') + keyAlias 'key0' + storePassword '123456789' + keyPassword '123456789' + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + buildFeatures { + buildConfig = true + viewBinding = true + } + + applicationVariants.configureEach { + outputs.configureEach { + outputFileName = 'XCGZ_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk' + } + } +} + +static def getBuildDate() { + SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA) + return dateFormat.format(System.currentTimeMillis()) +} + +dependencies { + 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.geyifeng.immersionbar:immersionbar:3.2.2' + //Kotlin协程 + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2' + //MVVM+LiveData + 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.12.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' + //图片压缩 + implementation 'top.zibin:Luban:1.1.8' + //返回值转换器 + implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' + implementation 'com.squareup.retrofit2:converter-scalars:2.3.0' + implementation 'com.squareup.retrofit2:converter-gson:2.8.1' + //okhttp3日志拦截器 + implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0' + //网络请求和接口封装 + implementation 'com.squareup.retrofit2:retrofit:2.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' + //高德地图 + implementation 'com.amap.api:3dmap:latest.integration' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //CameraX + implementation 'androidx.camera:camera-core:1.2.3' + // CameraX Camera2 extensions + implementation 'androidx.camera:camera-camera2:1.2.3' + // CameraX Lifecycle library + implementation 'androidx.camera:camera-lifecycle:1.2.3' + // CameraX View class + implementation 'androidx.camera:camera-view:1.2.3' + //TCP + implementation 'io.netty:netty-all:4.1.23.Final' + //WebView + implementation 'com.just.agentweb:agentweb-androidx:4.1.4' + //视频播放器,RTSP流 + 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' + //扫码 + implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' + //图表 + implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' +} \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts deleted file mode 100644 index c3a66e8..0000000 --- a/app/build.gradle.kts +++ /dev/null @@ -1,132 +0,0 @@ -import com.android.build.gradle.internal.api.ApkVariantOutputImpl -import java.text.SimpleDateFormat -import java.util.Locale - -plugins { - id("com.android.application") - id("org.jetbrains.kotlin.android") -} - -android { - namespace = "com.casic.br.operationsite" - compileSdk = 35 - - defaultConfig { - applicationId = "com.casic.br.operationsite" - minSdk = 26 - targetSdk = 35 - versionCode = 1130 - versionName = "1.1.3.0" - } - - signingConfigs { - create("release") { - storeFile = file("OperationSite.jks") - keyAlias = "key0" - storePassword = "123456789" - keyPassword = "123456789" - } - } - - buildTypes { - val signConfig = signingConfigs.getByName("release") - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - signingConfig = signConfig - } - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = "1.8" - } - - buildFeatures { - buildConfig = true - viewBinding = true - } - - applicationVariants.all { - outputs.all { - if (this is ApkVariantOutputImpl) { - outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" - } - } - } -} - -fun getBuildDate(): String { - val dateFormat = SimpleDateFormat("yyyyMMdd", Locale.CHINA) - return dateFormat.format(System.currentTimeMillis()) -} - -dependencies { - //基础依赖库 - implementation("com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4") - implementation("androidx.core:core-ktx:1.13.1") - implementation("androidx.appcompat:appcompat:1.7.0") - implementation("com.google.android.material:material:1.10.0") - //Google官方授权框架 - implementation("pub.devrel:easypermissions:3.0.0") - //沉浸式状态栏。基础依赖包,必须要依赖 - implementation("com.geyifeng.immersionbar:immersionbar:3.2.2") - //Kotlin协程 - implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") - //MVVM+LiveData - 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.12.0") - //图片选择框架 - implementation("io.github.lucksiege:pictureselector:v3.11.1") - //图片压缩 - implementation("top.zibin:Luban:1.1.8") - //返回值转换器 - implementation("com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2") - implementation("com.squareup.retrofit2:converter-scalars:2.3.0") - implementation("com.squareup.retrofit2:converter-gson:2.8.1") - //okhttp3日志拦截器 - implementation("com.squareup.okhttp3:logging-interceptor:4.6.0") - //网络请求和接口封装 - implementation("com.squareup.retrofit2:retrofit:2.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") - //高德地图 - implementation("com.amap.api:3dmap:latest.integration") - //高德地图搜索 - implementation("com.amap.api:search:8.1.0") - //CameraX - implementation("androidx.camera:camera-core:1.2.3") - // CameraX Camera2 extensions - implementation("androidx.camera:camera-camera2:1.2.3") - // CameraX Lifecycle library - implementation("androidx.camera:camera-lifecycle:1.2.3") - // CameraX View class - implementation("androidx.camera:camera-view:1.2.3") - //TCP - implementation("io.netty:netty-all:4.1.23.Final") - //WebView - implementation("com.just.agentweb:agentweb-androidx:4.1.4") - //视频播放器,RTSP流 - 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") - //扫码 - implementation("cn.bertsir.zbarLibary:zbarlibary:1.4.2") - //图表 - implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt index f415243..f35e2f3 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt @@ -15,12 +15,10 @@ class DeviceControllerFragment : KotlinBaseFragment() { - private lateinit var deviceViewModel: DeviceViewModel + private val deviceViewModel by lazy { ViewModelProvider(this)[DeviceViewModel::class.java] } private var speed = 5 override fun initOnCreate(savedInstanceState: Bundle?) { - deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - binding.currentSpeedView.text = "速度:${speed}" } diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..16e60f2 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,123 @@ +import java.text.SimpleDateFormat + +plugins { + id('com.android.application') + id('org.jetbrains.kotlin.android') +} + +android { + namespace 'com.casic.br.operationsite' + compileSdk 35 + + defaultConfig { + applicationId 'com.casic.br.operationsite' + minSdk 26 + targetSdk 35 + versionCode 1130 + versionName '1.1.3.0' + } + + signingConfigs { + release { + storeFile file('OperationSite.jks') + keyAlias 'key0' + storePassword '123456789' + keyPassword '123456789' + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + buildFeatures { + buildConfig = true + viewBinding = true + } + + applicationVariants.configureEach { + outputs.configureEach { + outputFileName = 'XCGZ_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk' + } + } +} + +static def getBuildDate() { + SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA) + return dateFormat.format(System.currentTimeMillis()) +} + +dependencies { + 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.geyifeng.immersionbar:immersionbar:3.2.2' + //Kotlin协程 + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2' + //MVVM+LiveData + 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.12.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' + //图片压缩 + implementation 'top.zibin:Luban:1.1.8' + //返回值转换器 + implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' + implementation 'com.squareup.retrofit2:converter-scalars:2.3.0' + implementation 'com.squareup.retrofit2:converter-gson:2.8.1' + //okhttp3日志拦截器 + implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0' + //网络请求和接口封装 + implementation 'com.squareup.retrofit2:retrofit:2.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' + //高德地图 + implementation 'com.amap.api:3dmap:latest.integration' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //CameraX + implementation 'androidx.camera:camera-core:1.2.3' + // CameraX Camera2 extensions + implementation 'androidx.camera:camera-camera2:1.2.3' + // CameraX Lifecycle library + implementation 'androidx.camera:camera-lifecycle:1.2.3' + // CameraX View class + implementation 'androidx.camera:camera-view:1.2.3' + //TCP + implementation 'io.netty:netty-all:4.1.23.Final' + //WebView + implementation 'com.just.agentweb:agentweb-androidx:4.1.4' + //视频播放器,RTSP流 + 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' + //扫码 + implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' + //图表 + implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' +} \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts deleted file mode 100644 index c3a66e8..0000000 --- a/app/build.gradle.kts +++ /dev/null @@ -1,132 +0,0 @@ -import com.android.build.gradle.internal.api.ApkVariantOutputImpl -import java.text.SimpleDateFormat -import java.util.Locale - -plugins { - id("com.android.application") - id("org.jetbrains.kotlin.android") -} - -android { - namespace = "com.casic.br.operationsite" - compileSdk = 35 - - defaultConfig { - applicationId = "com.casic.br.operationsite" - minSdk = 26 - targetSdk = 35 - versionCode = 1130 - versionName = "1.1.3.0" - } - - signingConfigs { - create("release") { - storeFile = file("OperationSite.jks") - keyAlias = "key0" - storePassword = "123456789" - keyPassword = "123456789" - } - } - - buildTypes { - val signConfig = signingConfigs.getByName("release") - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - signingConfig = signConfig - } - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = "1.8" - } - - buildFeatures { - buildConfig = true - viewBinding = true - } - - applicationVariants.all { - outputs.all { - if (this is ApkVariantOutputImpl) { - outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" - } - } - } -} - -fun getBuildDate(): String { - val dateFormat = SimpleDateFormat("yyyyMMdd", Locale.CHINA) - return dateFormat.format(System.currentTimeMillis()) -} - -dependencies { - //基础依赖库 - implementation("com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4") - implementation("androidx.core:core-ktx:1.13.1") - implementation("androidx.appcompat:appcompat:1.7.0") - implementation("com.google.android.material:material:1.10.0") - //Google官方授权框架 - implementation("pub.devrel:easypermissions:3.0.0") - //沉浸式状态栏。基础依赖包,必须要依赖 - implementation("com.geyifeng.immersionbar:immersionbar:3.2.2") - //Kotlin协程 - implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") - //MVVM+LiveData - 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.12.0") - //图片选择框架 - implementation("io.github.lucksiege:pictureselector:v3.11.1") - //图片压缩 - implementation("top.zibin:Luban:1.1.8") - //返回值转换器 - implementation("com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2") - implementation("com.squareup.retrofit2:converter-scalars:2.3.0") - implementation("com.squareup.retrofit2:converter-gson:2.8.1") - //okhttp3日志拦截器 - implementation("com.squareup.okhttp3:logging-interceptor:4.6.0") - //网络请求和接口封装 - implementation("com.squareup.retrofit2:retrofit:2.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") - //高德地图 - implementation("com.amap.api:3dmap:latest.integration") - //高德地图搜索 - implementation("com.amap.api:search:8.1.0") - //CameraX - implementation("androidx.camera:camera-core:1.2.3") - // CameraX Camera2 extensions - implementation("androidx.camera:camera-camera2:1.2.3") - // CameraX Lifecycle library - implementation("androidx.camera:camera-lifecycle:1.2.3") - // CameraX View class - implementation("androidx.camera:camera-view:1.2.3") - //TCP - implementation("io.netty:netty-all:4.1.23.Final") - //WebView - implementation("com.just.agentweb:agentweb-androidx:4.1.4") - //视频播放器,RTSP流 - 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") - //扫码 - implementation("cn.bertsir.zbarLibary:zbarlibary:1.4.2") - //图表 - implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt index f415243..f35e2f3 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt @@ -15,12 +15,10 @@ class DeviceControllerFragment : KotlinBaseFragment() { - private lateinit var deviceViewModel: DeviceViewModel + private val deviceViewModel by lazy { ViewModelProvider(this)[DeviceViewModel::class.java] } private var speed = 5 override fun initOnCreate(savedInstanceState: Bundle?) { - deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - binding.currentSpeedView.text = "速度:${speed}" } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index b97e7a7..13f14d4 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -31,9 +31,9 @@ private val kTag = "AlarmListActivity" private val context = this@AlarmListActivity - private lateinit var systemViewModel: SystemViewModel + private val systemViewModel by lazy { ViewModelProvider(this)[SystemViewModel::class.java] } + private val alarmViewModel by lazy { ViewModelProvider(this)[AlarmViewModel::class.java] } private lateinit var alarmAdapter: NormalRecyclerAdapter - private lateinit var alarmViewModel: AlarmViewModel private var dictModels: MutableList = ArrayList() private var page = 1 private var isRefresh = false @@ -73,7 +73,6 @@ ActivityStackManager.addActivity(this) //获取报警类型列表 - systemViewModel = ViewModelProvider(this)[SystemViewModel::class.java] systemViewModel.dictLiveData.observe(this) { if (it.code == 200) { dictModels = it.data @@ -81,7 +80,6 @@ } systemViewModel.getSystemDict(this, "alarmType") - alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows!! diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..16e60f2 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,123 @@ +import java.text.SimpleDateFormat + +plugins { + id('com.android.application') + id('org.jetbrains.kotlin.android') +} + +android { + namespace 'com.casic.br.operationsite' + compileSdk 35 + + defaultConfig { + applicationId 'com.casic.br.operationsite' + minSdk 26 + targetSdk 35 + versionCode 1130 + versionName '1.1.3.0' + } + + signingConfigs { + release { + storeFile file('OperationSite.jks') + keyAlias 'key0' + storePassword '123456789' + keyPassword '123456789' + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + buildFeatures { + buildConfig = true + viewBinding = true + } + + applicationVariants.configureEach { + outputs.configureEach { + outputFileName = 'XCGZ_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk' + } + } +} + +static def getBuildDate() { + SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA) + return dateFormat.format(System.currentTimeMillis()) +} + +dependencies { + 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.geyifeng.immersionbar:immersionbar:3.2.2' + //Kotlin协程 + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2' + //MVVM+LiveData + 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.12.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' + //图片压缩 + implementation 'top.zibin:Luban:1.1.8' + //返回值转换器 + implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' + implementation 'com.squareup.retrofit2:converter-scalars:2.3.0' + implementation 'com.squareup.retrofit2:converter-gson:2.8.1' + //okhttp3日志拦截器 + implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0' + //网络请求和接口封装 + implementation 'com.squareup.retrofit2:retrofit:2.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' + //高德地图 + implementation 'com.amap.api:3dmap:latest.integration' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //CameraX + implementation 'androidx.camera:camera-core:1.2.3' + // CameraX Camera2 extensions + implementation 'androidx.camera:camera-camera2:1.2.3' + // CameraX Lifecycle library + implementation 'androidx.camera:camera-lifecycle:1.2.3' + // CameraX View class + implementation 'androidx.camera:camera-view:1.2.3' + //TCP + implementation 'io.netty:netty-all:4.1.23.Final' + //WebView + implementation 'com.just.agentweb:agentweb-androidx:4.1.4' + //视频播放器,RTSP流 + 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' + //扫码 + implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' + //图表 + implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' +} \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts deleted file mode 100644 index c3a66e8..0000000 --- a/app/build.gradle.kts +++ /dev/null @@ -1,132 +0,0 @@ -import com.android.build.gradle.internal.api.ApkVariantOutputImpl -import java.text.SimpleDateFormat -import java.util.Locale - -plugins { - id("com.android.application") - id("org.jetbrains.kotlin.android") -} - -android { - namespace = "com.casic.br.operationsite" - compileSdk = 35 - - defaultConfig { - applicationId = "com.casic.br.operationsite" - minSdk = 26 - targetSdk = 35 - versionCode = 1130 - versionName = "1.1.3.0" - } - - signingConfigs { - create("release") { - storeFile = file("OperationSite.jks") - keyAlias = "key0" - storePassword = "123456789" - keyPassword = "123456789" - } - } - - buildTypes { - val signConfig = signingConfigs.getByName("release") - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - signingConfig = signConfig - } - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = "1.8" - } - - buildFeatures { - buildConfig = true - viewBinding = true - } - - applicationVariants.all { - outputs.all { - if (this is ApkVariantOutputImpl) { - outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" - } - } - } -} - -fun getBuildDate(): String { - val dateFormat = SimpleDateFormat("yyyyMMdd", Locale.CHINA) - return dateFormat.format(System.currentTimeMillis()) -} - -dependencies { - //基础依赖库 - implementation("com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4") - implementation("androidx.core:core-ktx:1.13.1") - implementation("androidx.appcompat:appcompat:1.7.0") - implementation("com.google.android.material:material:1.10.0") - //Google官方授权框架 - implementation("pub.devrel:easypermissions:3.0.0") - //沉浸式状态栏。基础依赖包,必须要依赖 - implementation("com.geyifeng.immersionbar:immersionbar:3.2.2") - //Kotlin协程 - implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") - //MVVM+LiveData - 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.12.0") - //图片选择框架 - implementation("io.github.lucksiege:pictureselector:v3.11.1") - //图片压缩 - implementation("top.zibin:Luban:1.1.8") - //返回值转换器 - implementation("com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2") - implementation("com.squareup.retrofit2:converter-scalars:2.3.0") - implementation("com.squareup.retrofit2:converter-gson:2.8.1") - //okhttp3日志拦截器 - implementation("com.squareup.okhttp3:logging-interceptor:4.6.0") - //网络请求和接口封装 - implementation("com.squareup.retrofit2:retrofit:2.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") - //高德地图 - implementation("com.amap.api:3dmap:latest.integration") - //高德地图搜索 - implementation("com.amap.api:search:8.1.0") - //CameraX - implementation("androidx.camera:camera-core:1.2.3") - // CameraX Camera2 extensions - implementation("androidx.camera:camera-camera2:1.2.3") - // CameraX Lifecycle library - implementation("androidx.camera:camera-lifecycle:1.2.3") - // CameraX View class - implementation("androidx.camera:camera-view:1.2.3") - //TCP - implementation("io.netty:netty-all:4.1.23.Final") - //WebView - implementation("com.just.agentweb:agentweb-androidx:4.1.4") - //视频播放器,RTSP流 - 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") - //扫码 - implementation("cn.bertsir.zbarLibary:zbarlibary:1.4.2") - //图表 - implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt index f415243..f35e2f3 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt @@ -15,12 +15,10 @@ class DeviceControllerFragment : KotlinBaseFragment() { - private lateinit var deviceViewModel: DeviceViewModel + private val deviceViewModel by lazy { ViewModelProvider(this)[DeviceViewModel::class.java] } private var speed = 5 override fun initOnCreate(savedInstanceState: Bundle?) { - deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - binding.currentSpeedView.text = "速度:${speed}" } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index b97e7a7..13f14d4 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -31,9 +31,9 @@ private val kTag = "AlarmListActivity" private val context = this@AlarmListActivity - private lateinit var systemViewModel: SystemViewModel + private val systemViewModel by lazy { ViewModelProvider(this)[SystemViewModel::class.java] } + private val alarmViewModel by lazy { ViewModelProvider(this)[AlarmViewModel::class.java] } private lateinit var alarmAdapter: NormalRecyclerAdapter - private lateinit var alarmViewModel: AlarmViewModel private var dictModels: MutableList = ArrayList() private var page = 1 private var isRefresh = false @@ -73,7 +73,6 @@ ActivityStackManager.addActivity(this) //获取报警类型列表 - systemViewModel = ViewModelProvider(this)[SystemViewModel::class.java] systemViewModel.dictLiveData.observe(this) { if (it.code == 200) { dictModels = it.data @@ -81,7 +80,6 @@ } systemViewModel.getSystemDict(this, "alarmType") - alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows!! diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index 3b63a5e..f9537ee 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -23,7 +23,13 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.getScreenWidth +import com.pengxh.kt.lite.extensions.isPhoneNumber +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.ActivityStackManager import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog @@ -34,12 +40,12 @@ class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" - private lateinit var imageAdapter: EditableImageAdapter - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var applyViewModel: ApplyViewModel private val context = this + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val applyViewModel by lazy { ViewModelProvider(this)[ApplyViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages = ArrayList() + private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityApplyEnterBinding { return ActivityApplyEnterBinding.inflate(layoutInflater) @@ -60,7 +66,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -72,8 +77,6 @@ } } - applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] - //左右边距 val viewWidth = getScreenWidth() - (10 + 10).dp2px(this) imageAdapter = EditableImageAdapter(this, recyclerViewImages, viewWidth, 1, 3) diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..16e60f2 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,123 @@ +import java.text.SimpleDateFormat + +plugins { + id('com.android.application') + id('org.jetbrains.kotlin.android') +} + +android { + namespace 'com.casic.br.operationsite' + compileSdk 35 + + defaultConfig { + applicationId 'com.casic.br.operationsite' + minSdk 26 + targetSdk 35 + versionCode 1130 + versionName '1.1.3.0' + } + + signingConfigs { + release { + storeFile file('OperationSite.jks') + keyAlias 'key0' + storePassword '123456789' + keyPassword '123456789' + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + buildFeatures { + buildConfig = true + viewBinding = true + } + + applicationVariants.configureEach { + outputs.configureEach { + outputFileName = 'XCGZ_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk' + } + } +} + +static def getBuildDate() { + SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA) + return dateFormat.format(System.currentTimeMillis()) +} + +dependencies { + 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.geyifeng.immersionbar:immersionbar:3.2.2' + //Kotlin协程 + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2' + //MVVM+LiveData + 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.12.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' + //图片压缩 + implementation 'top.zibin:Luban:1.1.8' + //返回值转换器 + implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' + implementation 'com.squareup.retrofit2:converter-scalars:2.3.0' + implementation 'com.squareup.retrofit2:converter-gson:2.8.1' + //okhttp3日志拦截器 + implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0' + //网络请求和接口封装 + implementation 'com.squareup.retrofit2:retrofit:2.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' + //高德地图 + implementation 'com.amap.api:3dmap:latest.integration' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //CameraX + implementation 'androidx.camera:camera-core:1.2.3' + // CameraX Camera2 extensions + implementation 'androidx.camera:camera-camera2:1.2.3' + // CameraX Lifecycle library + implementation 'androidx.camera:camera-lifecycle:1.2.3' + // CameraX View class + implementation 'androidx.camera:camera-view:1.2.3' + //TCP + implementation 'io.netty:netty-all:4.1.23.Final' + //WebView + implementation 'com.just.agentweb:agentweb-androidx:4.1.4' + //视频播放器,RTSP流 + 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' + //扫码 + implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' + //图表 + implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' +} \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts deleted file mode 100644 index c3a66e8..0000000 --- a/app/build.gradle.kts +++ /dev/null @@ -1,132 +0,0 @@ -import com.android.build.gradle.internal.api.ApkVariantOutputImpl -import java.text.SimpleDateFormat -import java.util.Locale - -plugins { - id("com.android.application") - id("org.jetbrains.kotlin.android") -} - -android { - namespace = "com.casic.br.operationsite" - compileSdk = 35 - - defaultConfig { - applicationId = "com.casic.br.operationsite" - minSdk = 26 - targetSdk = 35 - versionCode = 1130 - versionName = "1.1.3.0" - } - - signingConfigs { - create("release") { - storeFile = file("OperationSite.jks") - keyAlias = "key0" - storePassword = "123456789" - keyPassword = "123456789" - } - } - - buildTypes { - val signConfig = signingConfigs.getByName("release") - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - signingConfig = signConfig - } - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = "1.8" - } - - buildFeatures { - buildConfig = true - viewBinding = true - } - - applicationVariants.all { - outputs.all { - if (this is ApkVariantOutputImpl) { - outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" - } - } - } -} - -fun getBuildDate(): String { - val dateFormat = SimpleDateFormat("yyyyMMdd", Locale.CHINA) - return dateFormat.format(System.currentTimeMillis()) -} - -dependencies { - //基础依赖库 - implementation("com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4") - implementation("androidx.core:core-ktx:1.13.1") - implementation("androidx.appcompat:appcompat:1.7.0") - implementation("com.google.android.material:material:1.10.0") - //Google官方授权框架 - implementation("pub.devrel:easypermissions:3.0.0") - //沉浸式状态栏。基础依赖包,必须要依赖 - implementation("com.geyifeng.immersionbar:immersionbar:3.2.2") - //Kotlin协程 - implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") - //MVVM+LiveData - 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.12.0") - //图片选择框架 - implementation("io.github.lucksiege:pictureselector:v3.11.1") - //图片压缩 - implementation("top.zibin:Luban:1.1.8") - //返回值转换器 - implementation("com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2") - implementation("com.squareup.retrofit2:converter-scalars:2.3.0") - implementation("com.squareup.retrofit2:converter-gson:2.8.1") - //okhttp3日志拦截器 - implementation("com.squareup.okhttp3:logging-interceptor:4.6.0") - //网络请求和接口封装 - implementation("com.squareup.retrofit2:retrofit:2.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") - //高德地图 - implementation("com.amap.api:3dmap:latest.integration") - //高德地图搜索 - implementation("com.amap.api:search:8.1.0") - //CameraX - implementation("androidx.camera:camera-core:1.2.3") - // CameraX Camera2 extensions - implementation("androidx.camera:camera-camera2:1.2.3") - // CameraX Lifecycle library - implementation("androidx.camera:camera-lifecycle:1.2.3") - // CameraX View class - implementation("androidx.camera:camera-view:1.2.3") - //TCP - implementation("io.netty:netty-all:4.1.23.Final") - //WebView - implementation("com.just.agentweb:agentweb-androidx:4.1.4") - //视频播放器,RTSP流 - 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") - //扫码 - implementation("cn.bertsir.zbarLibary:zbarlibary:1.4.2") - //图表 - implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt index f415243..f35e2f3 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt @@ -15,12 +15,10 @@ class DeviceControllerFragment : KotlinBaseFragment() { - private lateinit var deviceViewModel: DeviceViewModel + private val deviceViewModel by lazy { ViewModelProvider(this)[DeviceViewModel::class.java] } private var speed = 5 override fun initOnCreate(savedInstanceState: Bundle?) { - deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - binding.currentSpeedView.text = "速度:${speed}" } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index b97e7a7..13f14d4 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -31,9 +31,9 @@ private val kTag = "AlarmListActivity" private val context = this@AlarmListActivity - private lateinit var systemViewModel: SystemViewModel + private val systemViewModel by lazy { ViewModelProvider(this)[SystemViewModel::class.java] } + private val alarmViewModel by lazy { ViewModelProvider(this)[AlarmViewModel::class.java] } private lateinit var alarmAdapter: NormalRecyclerAdapter - private lateinit var alarmViewModel: AlarmViewModel private var dictModels: MutableList = ArrayList() private var page = 1 private var isRefresh = false @@ -73,7 +73,6 @@ ActivityStackManager.addActivity(this) //获取报警类型列表 - systemViewModel = ViewModelProvider(this)[SystemViewModel::class.java] systemViewModel.dictLiveData.observe(this) { if (it.code == 200) { dictModels = it.data @@ -81,7 +80,6 @@ } systemViewModel.getSystemDict(this, "alarmType") - alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows!! diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index 3b63a5e..f9537ee 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -23,7 +23,13 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.getScreenWidth +import com.pengxh.kt.lite.extensions.isPhoneNumber +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.ActivityStackManager import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog @@ -34,12 +40,12 @@ class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" - private lateinit var imageAdapter: EditableImageAdapter - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var applyViewModel: ApplyViewModel private val context = this + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val applyViewModel by lazy { ViewModelProvider(this)[ApplyViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages = ArrayList() + private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityApplyEnterBinding { return ActivityApplyEnterBinding.inflate(layoutInflater) @@ -60,7 +66,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -72,8 +77,6 @@ } } - applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] - //左右边距 val viewWidth = getScreenWidth() - (10 + 10).dp2px(this) imageAdapter = EditableImageAdapter(this, recyclerViewImages, viewWidth, 1, 3) diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt index f4d4354..145a8bd 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -37,8 +37,8 @@ private val kTag = "GasDetailActivity" private val gson by lazy { Gson() } private val formatter by lazy { DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private lateinit var aMap: AMap - private lateinit var tubeViewModel: TubeViewModel override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) @@ -67,7 +67,6 @@ val lineDataSets = ArrayList() val dataSet = LineDataSet(strengthEntries, "") - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] tubeViewModel.tubeGasHistoryLiveData.observe(this) { if (it.code == 200) { it.data.forEachIndexed { index, x -> diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..16e60f2 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,123 @@ +import java.text.SimpleDateFormat + +plugins { + id('com.android.application') + id('org.jetbrains.kotlin.android') +} + +android { + namespace 'com.casic.br.operationsite' + compileSdk 35 + + defaultConfig { + applicationId 'com.casic.br.operationsite' + minSdk 26 + targetSdk 35 + versionCode 1130 + versionName '1.1.3.0' + } + + signingConfigs { + release { + storeFile file('OperationSite.jks') + keyAlias 'key0' + storePassword '123456789' + keyPassword '123456789' + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + buildFeatures { + buildConfig = true + viewBinding = true + } + + applicationVariants.configureEach { + outputs.configureEach { + outputFileName = 'XCGZ_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk' + } + } +} + +static def getBuildDate() { + SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA) + return dateFormat.format(System.currentTimeMillis()) +} + +dependencies { + 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.geyifeng.immersionbar:immersionbar:3.2.2' + //Kotlin协程 + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2' + //MVVM+LiveData + 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.12.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' + //图片压缩 + implementation 'top.zibin:Luban:1.1.8' + //返回值转换器 + implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' + implementation 'com.squareup.retrofit2:converter-scalars:2.3.0' + implementation 'com.squareup.retrofit2:converter-gson:2.8.1' + //okhttp3日志拦截器 + implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0' + //网络请求和接口封装 + implementation 'com.squareup.retrofit2:retrofit:2.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' + //高德地图 + implementation 'com.amap.api:3dmap:latest.integration' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //CameraX + implementation 'androidx.camera:camera-core:1.2.3' + // CameraX Camera2 extensions + implementation 'androidx.camera:camera-camera2:1.2.3' + // CameraX Lifecycle library + implementation 'androidx.camera:camera-lifecycle:1.2.3' + // CameraX View class + implementation 'androidx.camera:camera-view:1.2.3' + //TCP + implementation 'io.netty:netty-all:4.1.23.Final' + //WebView + implementation 'com.just.agentweb:agentweb-androidx:4.1.4' + //视频播放器,RTSP流 + 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' + //扫码 + implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' + //图表 + implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' +} \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts deleted file mode 100644 index c3a66e8..0000000 --- a/app/build.gradle.kts +++ /dev/null @@ -1,132 +0,0 @@ -import com.android.build.gradle.internal.api.ApkVariantOutputImpl -import java.text.SimpleDateFormat -import java.util.Locale - -plugins { - id("com.android.application") - id("org.jetbrains.kotlin.android") -} - -android { - namespace = "com.casic.br.operationsite" - compileSdk = 35 - - defaultConfig { - applicationId = "com.casic.br.operationsite" - minSdk = 26 - targetSdk = 35 - versionCode = 1130 - versionName = "1.1.3.0" - } - - signingConfigs { - create("release") { - storeFile = file("OperationSite.jks") - keyAlias = "key0" - storePassword = "123456789" - keyPassword = "123456789" - } - } - - buildTypes { - val signConfig = signingConfigs.getByName("release") - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - signingConfig = signConfig - } - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = "1.8" - } - - buildFeatures { - buildConfig = true - viewBinding = true - } - - applicationVariants.all { - outputs.all { - if (this is ApkVariantOutputImpl) { - outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" - } - } - } -} - -fun getBuildDate(): String { - val dateFormat = SimpleDateFormat("yyyyMMdd", Locale.CHINA) - return dateFormat.format(System.currentTimeMillis()) -} - -dependencies { - //基础依赖库 - implementation("com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4") - implementation("androidx.core:core-ktx:1.13.1") - implementation("androidx.appcompat:appcompat:1.7.0") - implementation("com.google.android.material:material:1.10.0") - //Google官方授权框架 - implementation("pub.devrel:easypermissions:3.0.0") - //沉浸式状态栏。基础依赖包,必须要依赖 - implementation("com.geyifeng.immersionbar:immersionbar:3.2.2") - //Kotlin协程 - implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") - //MVVM+LiveData - 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.12.0") - //图片选择框架 - implementation("io.github.lucksiege:pictureselector:v3.11.1") - //图片压缩 - implementation("top.zibin:Luban:1.1.8") - //返回值转换器 - implementation("com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2") - implementation("com.squareup.retrofit2:converter-scalars:2.3.0") - implementation("com.squareup.retrofit2:converter-gson:2.8.1") - //okhttp3日志拦截器 - implementation("com.squareup.okhttp3:logging-interceptor:4.6.0") - //网络请求和接口封装 - implementation("com.squareup.retrofit2:retrofit:2.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") - //高德地图 - implementation("com.amap.api:3dmap:latest.integration") - //高德地图搜索 - implementation("com.amap.api:search:8.1.0") - //CameraX - implementation("androidx.camera:camera-core:1.2.3") - // CameraX Camera2 extensions - implementation("androidx.camera:camera-camera2:1.2.3") - // CameraX Lifecycle library - implementation("androidx.camera:camera-lifecycle:1.2.3") - // CameraX View class - implementation("androidx.camera:camera-view:1.2.3") - //TCP - implementation("io.netty:netty-all:4.1.23.Final") - //WebView - implementation("com.just.agentweb:agentweb-androidx:4.1.4") - //视频播放器,RTSP流 - 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") - //扫码 - implementation("cn.bertsir.zbarLibary:zbarlibary:1.4.2") - //图表 - implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt index f415243..f35e2f3 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt @@ -15,12 +15,10 @@ class DeviceControllerFragment : KotlinBaseFragment() { - private lateinit var deviceViewModel: DeviceViewModel + private val deviceViewModel by lazy { ViewModelProvider(this)[DeviceViewModel::class.java] } private var speed = 5 override fun initOnCreate(savedInstanceState: Bundle?) { - deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - binding.currentSpeedView.text = "速度:${speed}" } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index b97e7a7..13f14d4 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -31,9 +31,9 @@ private val kTag = "AlarmListActivity" private val context = this@AlarmListActivity - private lateinit var systemViewModel: SystemViewModel + private val systemViewModel by lazy { ViewModelProvider(this)[SystemViewModel::class.java] } + private val alarmViewModel by lazy { ViewModelProvider(this)[AlarmViewModel::class.java] } private lateinit var alarmAdapter: NormalRecyclerAdapter - private lateinit var alarmViewModel: AlarmViewModel private var dictModels: MutableList = ArrayList() private var page = 1 private var isRefresh = false @@ -73,7 +73,6 @@ ActivityStackManager.addActivity(this) //获取报警类型列表 - systemViewModel = ViewModelProvider(this)[SystemViewModel::class.java] systemViewModel.dictLiveData.observe(this) { if (it.code == 200) { dictModels = it.data @@ -81,7 +80,6 @@ } systemViewModel.getSystemDict(this, "alarmType") - alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows!! diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index 3b63a5e..f9537ee 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -23,7 +23,13 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.getScreenWidth +import com.pengxh.kt.lite.extensions.isPhoneNumber +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.ActivityStackManager import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog @@ -34,12 +40,12 @@ class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" - private lateinit var imageAdapter: EditableImageAdapter - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var applyViewModel: ApplyViewModel private val context = this + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val applyViewModel by lazy { ViewModelProvider(this)[ApplyViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages = ArrayList() + private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityApplyEnterBinding { return ActivityApplyEnterBinding.inflate(layoutInflater) @@ -60,7 +66,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -72,8 +77,6 @@ } } - applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] - //左右边距 val viewWidth = getScreenWidth() - (10 + 10).dp2px(this) imageAdapter = EditableImageAdapter(this, recyclerViewImages, viewWidth, 1, 3) diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt index f4d4354..145a8bd 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -37,8 +37,8 @@ private val kTag = "GasDetailActivity" private val gson by lazy { Gson() } private val formatter by lazy { DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private lateinit var aMap: AMap - private lateinit var tubeViewModel: TubeViewModel override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) @@ -67,7 +67,6 @@ val lineDataSets = ArrayList() val dataSet = LineDataSet(strengthEntries, "") - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] tubeViewModel.tubeGasHistoryLiveData.observe(this) { if (it.code == 200) { it.data.forEachIndexed { index, x -> diff --git a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt index c0b4fb0..cd7a93f 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt @@ -48,10 +48,10 @@ private val qrManager by lazy { QrManager.getInstance().init(QrConfigCreator.create(this)) } + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages: ArrayList = ArrayList() //真实图片路径 - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var tubeViewModel: TubeViewModel private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityInstallEquipmentBinding { @@ -73,7 +73,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -85,8 +84,6 @@ } } - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] - val userName = SaveKeyValues.getValue(LocaleConstant.USER_NAME_KEY, "") as String if (userName.isNotBlank()) { binding.operatorView.setText(userName) diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..16e60f2 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,123 @@ +import java.text.SimpleDateFormat + +plugins { + id('com.android.application') + id('org.jetbrains.kotlin.android') +} + +android { + namespace 'com.casic.br.operationsite' + compileSdk 35 + + defaultConfig { + applicationId 'com.casic.br.operationsite' + minSdk 26 + targetSdk 35 + versionCode 1130 + versionName '1.1.3.0' + } + + signingConfigs { + release { + storeFile file('OperationSite.jks') + keyAlias 'key0' + storePassword '123456789' + keyPassword '123456789' + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + buildFeatures { + buildConfig = true + viewBinding = true + } + + applicationVariants.configureEach { + outputs.configureEach { + outputFileName = 'XCGZ_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk' + } + } +} + +static def getBuildDate() { + SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA) + return dateFormat.format(System.currentTimeMillis()) +} + +dependencies { + 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.geyifeng.immersionbar:immersionbar:3.2.2' + //Kotlin协程 + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2' + //MVVM+LiveData + 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.12.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' + //图片压缩 + implementation 'top.zibin:Luban:1.1.8' + //返回值转换器 + implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' + implementation 'com.squareup.retrofit2:converter-scalars:2.3.0' + implementation 'com.squareup.retrofit2:converter-gson:2.8.1' + //okhttp3日志拦截器 + implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0' + //网络请求和接口封装 + implementation 'com.squareup.retrofit2:retrofit:2.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' + //高德地图 + implementation 'com.amap.api:3dmap:latest.integration' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //CameraX + implementation 'androidx.camera:camera-core:1.2.3' + // CameraX Camera2 extensions + implementation 'androidx.camera:camera-camera2:1.2.3' + // CameraX Lifecycle library + implementation 'androidx.camera:camera-lifecycle:1.2.3' + // CameraX View class + implementation 'androidx.camera:camera-view:1.2.3' + //TCP + implementation 'io.netty:netty-all:4.1.23.Final' + //WebView + implementation 'com.just.agentweb:agentweb-androidx:4.1.4' + //视频播放器,RTSP流 + 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' + //扫码 + implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' + //图表 + implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' +} \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts deleted file mode 100644 index c3a66e8..0000000 --- a/app/build.gradle.kts +++ /dev/null @@ -1,132 +0,0 @@ -import com.android.build.gradle.internal.api.ApkVariantOutputImpl -import java.text.SimpleDateFormat -import java.util.Locale - -plugins { - id("com.android.application") - id("org.jetbrains.kotlin.android") -} - -android { - namespace = "com.casic.br.operationsite" - compileSdk = 35 - - defaultConfig { - applicationId = "com.casic.br.operationsite" - minSdk = 26 - targetSdk = 35 - versionCode = 1130 - versionName = "1.1.3.0" - } - - signingConfigs { - create("release") { - storeFile = file("OperationSite.jks") - keyAlias = "key0" - storePassword = "123456789" - keyPassword = "123456789" - } - } - - buildTypes { - val signConfig = signingConfigs.getByName("release") - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - signingConfig = signConfig - } - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = "1.8" - } - - buildFeatures { - buildConfig = true - viewBinding = true - } - - applicationVariants.all { - outputs.all { - if (this is ApkVariantOutputImpl) { - outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" - } - } - } -} - -fun getBuildDate(): String { - val dateFormat = SimpleDateFormat("yyyyMMdd", Locale.CHINA) - return dateFormat.format(System.currentTimeMillis()) -} - -dependencies { - //基础依赖库 - implementation("com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4") - implementation("androidx.core:core-ktx:1.13.1") - implementation("androidx.appcompat:appcompat:1.7.0") - implementation("com.google.android.material:material:1.10.0") - //Google官方授权框架 - implementation("pub.devrel:easypermissions:3.0.0") - //沉浸式状态栏。基础依赖包,必须要依赖 - implementation("com.geyifeng.immersionbar:immersionbar:3.2.2") - //Kotlin协程 - implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") - //MVVM+LiveData - 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.12.0") - //图片选择框架 - implementation("io.github.lucksiege:pictureselector:v3.11.1") - //图片压缩 - implementation("top.zibin:Luban:1.1.8") - //返回值转换器 - implementation("com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2") - implementation("com.squareup.retrofit2:converter-scalars:2.3.0") - implementation("com.squareup.retrofit2:converter-gson:2.8.1") - //okhttp3日志拦截器 - implementation("com.squareup.okhttp3:logging-interceptor:4.6.0") - //网络请求和接口封装 - implementation("com.squareup.retrofit2:retrofit:2.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") - //高德地图 - implementation("com.amap.api:3dmap:latest.integration") - //高德地图搜索 - implementation("com.amap.api:search:8.1.0") - //CameraX - implementation("androidx.camera:camera-core:1.2.3") - // CameraX Camera2 extensions - implementation("androidx.camera:camera-camera2:1.2.3") - // CameraX Lifecycle library - implementation("androidx.camera:camera-lifecycle:1.2.3") - // CameraX View class - implementation("androidx.camera:camera-view:1.2.3") - //TCP - implementation("io.netty:netty-all:4.1.23.Final") - //WebView - implementation("com.just.agentweb:agentweb-androidx:4.1.4") - //视频播放器,RTSP流 - 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") - //扫码 - implementation("cn.bertsir.zbarLibary:zbarlibary:1.4.2") - //图表 - implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt index f415243..f35e2f3 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt @@ -15,12 +15,10 @@ class DeviceControllerFragment : KotlinBaseFragment() { - private lateinit var deviceViewModel: DeviceViewModel + private val deviceViewModel by lazy { ViewModelProvider(this)[DeviceViewModel::class.java] } private var speed = 5 override fun initOnCreate(savedInstanceState: Bundle?) { - deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - binding.currentSpeedView.text = "速度:${speed}" } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index b97e7a7..13f14d4 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -31,9 +31,9 @@ private val kTag = "AlarmListActivity" private val context = this@AlarmListActivity - private lateinit var systemViewModel: SystemViewModel + private val systemViewModel by lazy { ViewModelProvider(this)[SystemViewModel::class.java] } + private val alarmViewModel by lazy { ViewModelProvider(this)[AlarmViewModel::class.java] } private lateinit var alarmAdapter: NormalRecyclerAdapter - private lateinit var alarmViewModel: AlarmViewModel private var dictModels: MutableList = ArrayList() private var page = 1 private var isRefresh = false @@ -73,7 +73,6 @@ ActivityStackManager.addActivity(this) //获取报警类型列表 - systemViewModel = ViewModelProvider(this)[SystemViewModel::class.java] systemViewModel.dictLiveData.observe(this) { if (it.code == 200) { dictModels = it.data @@ -81,7 +80,6 @@ } systemViewModel.getSystemDict(this, "alarmType") - alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows!! diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index 3b63a5e..f9537ee 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -23,7 +23,13 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.getScreenWidth +import com.pengxh.kt.lite.extensions.isPhoneNumber +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.ActivityStackManager import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog @@ -34,12 +40,12 @@ class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" - private lateinit var imageAdapter: EditableImageAdapter - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var applyViewModel: ApplyViewModel private val context = this + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val applyViewModel by lazy { ViewModelProvider(this)[ApplyViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages = ArrayList() + private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityApplyEnterBinding { return ActivityApplyEnterBinding.inflate(layoutInflater) @@ -60,7 +66,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -72,8 +77,6 @@ } } - applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] - //左右边距 val viewWidth = getScreenWidth() - (10 + 10).dp2px(this) imageAdapter = EditableImageAdapter(this, recyclerViewImages, viewWidth, 1, 3) diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt index f4d4354..145a8bd 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -37,8 +37,8 @@ private val kTag = "GasDetailActivity" private val gson by lazy { Gson() } private val formatter by lazy { DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private lateinit var aMap: AMap - private lateinit var tubeViewModel: TubeViewModel override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) @@ -67,7 +67,6 @@ val lineDataSets = ArrayList() val dataSet = LineDataSet(strengthEntries, "") - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] tubeViewModel.tubeGasHistoryLiveData.observe(this) { if (it.code == 200) { it.data.forEachIndexed { index, x -> diff --git a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt index c0b4fb0..cd7a93f 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt @@ -48,10 +48,10 @@ private val qrManager by lazy { QrManager.getInstance().init(QrConfigCreator.create(this)) } + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages: ArrayList = ArrayList() //真实图片路径 - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var tubeViewModel: TubeViewModel private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityInstallEquipmentBinding { @@ -73,7 +73,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -85,8 +84,6 @@ } } - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] - val userName = SaveKeyValues.getValue(LocaleConstant.USER_NAME_KEY, "") as String if (userName.isNotBlank()) { binding.operatorView.setText(userName) diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index c6bfc82..ee0bf0b 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -24,9 +24,9 @@ class LoginActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { - private lateinit var authenticateViewModel: AuthenticateViewModel - private lateinit var loginViewModel: LoginViewModel - private lateinit var userViewModel: UserViewModel + private val authenticateViewModel by lazy { ViewModelProvider(this)[AuthenticateViewModel::class.java] } + private val loginViewModel by lazy { ViewModelProvider(this)[LoginViewModel::class.java] } + private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } override fun initViewBinding(): ActivityLoginBinding { return ActivityLoginBinding.inflate(layoutInflater) @@ -53,9 +53,6 @@ binding.userPasswordView.setText( SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String ) - authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] - loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] - userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } override fun observeRequestState() { diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..16e60f2 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,123 @@ +import java.text.SimpleDateFormat + +plugins { + id('com.android.application') + id('org.jetbrains.kotlin.android') +} + +android { + namespace 'com.casic.br.operationsite' + compileSdk 35 + + defaultConfig { + applicationId 'com.casic.br.operationsite' + minSdk 26 + targetSdk 35 + versionCode 1130 + versionName '1.1.3.0' + } + + signingConfigs { + release { + storeFile file('OperationSite.jks') + keyAlias 'key0' + storePassword '123456789' + keyPassword '123456789' + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + buildFeatures { + buildConfig = true + viewBinding = true + } + + applicationVariants.configureEach { + outputs.configureEach { + outputFileName = 'XCGZ_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk' + } + } +} + +static def getBuildDate() { + SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA) + return dateFormat.format(System.currentTimeMillis()) +} + +dependencies { + 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.geyifeng.immersionbar:immersionbar:3.2.2' + //Kotlin协程 + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2' + //MVVM+LiveData + 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.12.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' + //图片压缩 + implementation 'top.zibin:Luban:1.1.8' + //返回值转换器 + implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' + implementation 'com.squareup.retrofit2:converter-scalars:2.3.0' + implementation 'com.squareup.retrofit2:converter-gson:2.8.1' + //okhttp3日志拦截器 + implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0' + //网络请求和接口封装 + implementation 'com.squareup.retrofit2:retrofit:2.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' + //高德地图 + implementation 'com.amap.api:3dmap:latest.integration' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //CameraX + implementation 'androidx.camera:camera-core:1.2.3' + // CameraX Camera2 extensions + implementation 'androidx.camera:camera-camera2:1.2.3' + // CameraX Lifecycle library + implementation 'androidx.camera:camera-lifecycle:1.2.3' + // CameraX View class + implementation 'androidx.camera:camera-view:1.2.3' + //TCP + implementation 'io.netty:netty-all:4.1.23.Final' + //WebView + implementation 'com.just.agentweb:agentweb-androidx:4.1.4' + //视频播放器,RTSP流 + 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' + //扫码 + implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' + //图表 + implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' +} \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts deleted file mode 100644 index c3a66e8..0000000 --- a/app/build.gradle.kts +++ /dev/null @@ -1,132 +0,0 @@ -import com.android.build.gradle.internal.api.ApkVariantOutputImpl -import java.text.SimpleDateFormat -import java.util.Locale - -plugins { - id("com.android.application") - id("org.jetbrains.kotlin.android") -} - -android { - namespace = "com.casic.br.operationsite" - compileSdk = 35 - - defaultConfig { - applicationId = "com.casic.br.operationsite" - minSdk = 26 - targetSdk = 35 - versionCode = 1130 - versionName = "1.1.3.0" - } - - signingConfigs { - create("release") { - storeFile = file("OperationSite.jks") - keyAlias = "key0" - storePassword = "123456789" - keyPassword = "123456789" - } - } - - buildTypes { - val signConfig = signingConfigs.getByName("release") - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - signingConfig = signConfig - } - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = "1.8" - } - - buildFeatures { - buildConfig = true - viewBinding = true - } - - applicationVariants.all { - outputs.all { - if (this is ApkVariantOutputImpl) { - outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" - } - } - } -} - -fun getBuildDate(): String { - val dateFormat = SimpleDateFormat("yyyyMMdd", Locale.CHINA) - return dateFormat.format(System.currentTimeMillis()) -} - -dependencies { - //基础依赖库 - implementation("com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4") - implementation("androidx.core:core-ktx:1.13.1") - implementation("androidx.appcompat:appcompat:1.7.0") - implementation("com.google.android.material:material:1.10.0") - //Google官方授权框架 - implementation("pub.devrel:easypermissions:3.0.0") - //沉浸式状态栏。基础依赖包,必须要依赖 - implementation("com.geyifeng.immersionbar:immersionbar:3.2.2") - //Kotlin协程 - implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") - //MVVM+LiveData - 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.12.0") - //图片选择框架 - implementation("io.github.lucksiege:pictureselector:v3.11.1") - //图片压缩 - implementation("top.zibin:Luban:1.1.8") - //返回值转换器 - implementation("com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2") - implementation("com.squareup.retrofit2:converter-scalars:2.3.0") - implementation("com.squareup.retrofit2:converter-gson:2.8.1") - //okhttp3日志拦截器 - implementation("com.squareup.okhttp3:logging-interceptor:4.6.0") - //网络请求和接口封装 - implementation("com.squareup.retrofit2:retrofit:2.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") - //高德地图 - implementation("com.amap.api:3dmap:latest.integration") - //高德地图搜索 - implementation("com.amap.api:search:8.1.0") - //CameraX - implementation("androidx.camera:camera-core:1.2.3") - // CameraX Camera2 extensions - implementation("androidx.camera:camera-camera2:1.2.3") - // CameraX Lifecycle library - implementation("androidx.camera:camera-lifecycle:1.2.3") - // CameraX View class - implementation("androidx.camera:camera-view:1.2.3") - //TCP - implementation("io.netty:netty-all:4.1.23.Final") - //WebView - implementation("com.just.agentweb:agentweb-androidx:4.1.4") - //视频播放器,RTSP流 - 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") - //扫码 - implementation("cn.bertsir.zbarLibary:zbarlibary:1.4.2") - //图表 - implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt index f415243..f35e2f3 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt @@ -15,12 +15,10 @@ class DeviceControllerFragment : KotlinBaseFragment() { - private lateinit var deviceViewModel: DeviceViewModel + private val deviceViewModel by lazy { ViewModelProvider(this)[DeviceViewModel::class.java] } private var speed = 5 override fun initOnCreate(savedInstanceState: Bundle?) { - deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - binding.currentSpeedView.text = "速度:${speed}" } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index b97e7a7..13f14d4 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -31,9 +31,9 @@ private val kTag = "AlarmListActivity" private val context = this@AlarmListActivity - private lateinit var systemViewModel: SystemViewModel + private val systemViewModel by lazy { ViewModelProvider(this)[SystemViewModel::class.java] } + private val alarmViewModel by lazy { ViewModelProvider(this)[AlarmViewModel::class.java] } private lateinit var alarmAdapter: NormalRecyclerAdapter - private lateinit var alarmViewModel: AlarmViewModel private var dictModels: MutableList = ArrayList() private var page = 1 private var isRefresh = false @@ -73,7 +73,6 @@ ActivityStackManager.addActivity(this) //获取报警类型列表 - systemViewModel = ViewModelProvider(this)[SystemViewModel::class.java] systemViewModel.dictLiveData.observe(this) { if (it.code == 200) { dictModels = it.data @@ -81,7 +80,6 @@ } systemViewModel.getSystemDict(this, "alarmType") - alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows!! diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index 3b63a5e..f9537ee 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -23,7 +23,13 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.getScreenWidth +import com.pengxh.kt.lite.extensions.isPhoneNumber +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.ActivityStackManager import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog @@ -34,12 +40,12 @@ class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" - private lateinit var imageAdapter: EditableImageAdapter - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var applyViewModel: ApplyViewModel private val context = this + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val applyViewModel by lazy { ViewModelProvider(this)[ApplyViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages = ArrayList() + private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityApplyEnterBinding { return ActivityApplyEnterBinding.inflate(layoutInflater) @@ -60,7 +66,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -72,8 +77,6 @@ } } - applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] - //左右边距 val viewWidth = getScreenWidth() - (10 + 10).dp2px(this) imageAdapter = EditableImageAdapter(this, recyclerViewImages, viewWidth, 1, 3) diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt index f4d4354..145a8bd 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -37,8 +37,8 @@ private val kTag = "GasDetailActivity" private val gson by lazy { Gson() } private val formatter by lazy { DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private lateinit var aMap: AMap - private lateinit var tubeViewModel: TubeViewModel override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) @@ -67,7 +67,6 @@ val lineDataSets = ArrayList() val dataSet = LineDataSet(strengthEntries, "") - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] tubeViewModel.tubeGasHistoryLiveData.observe(this) { if (it.code == 200) { it.data.forEachIndexed { index, x -> diff --git a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt index c0b4fb0..cd7a93f 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt @@ -48,10 +48,10 @@ private val qrManager by lazy { QrManager.getInstance().init(QrConfigCreator.create(this)) } + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages: ArrayList = ArrayList() //真实图片路径 - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var tubeViewModel: TubeViewModel private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityInstallEquipmentBinding { @@ -73,7 +73,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -85,8 +84,6 @@ } } - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] - val userName = SaveKeyValues.getValue(LocaleConstant.USER_NAME_KEY, "") as String if (userName.isNotBlank()) { binding.operatorView.setText(userName) diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index c6bfc82..ee0bf0b 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -24,9 +24,9 @@ class LoginActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { - private lateinit var authenticateViewModel: AuthenticateViewModel - private lateinit var loginViewModel: LoginViewModel - private lateinit var userViewModel: UserViewModel + private val authenticateViewModel by lazy { ViewModelProvider(this)[AuthenticateViewModel::class.java] } + private val loginViewModel by lazy { ViewModelProvider(this)[LoginViewModel::class.java] } + private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } override fun initViewBinding(): ActivityLoginBinding { return ActivityLoginBinding.inflate(layoutInflater) @@ -53,9 +53,6 @@ binding.userPasswordView.setText( SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String ) - authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] - loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] - userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 3b0e1a3..376dd51 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -26,8 +26,8 @@ private val kTag = "MainActivity" private val marginOffset by lazy { 5.dp2px(this) } + private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } private lateinit var workSiteAdapter: NormalRecyclerAdapter - private lateinit var workSiteViewModel: WorkSiteViewModel private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -43,7 +43,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteLiveData.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows!! diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..16e60f2 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,123 @@ +import java.text.SimpleDateFormat + +plugins { + id('com.android.application') + id('org.jetbrains.kotlin.android') +} + +android { + namespace 'com.casic.br.operationsite' + compileSdk 35 + + defaultConfig { + applicationId 'com.casic.br.operationsite' + minSdk 26 + targetSdk 35 + versionCode 1130 + versionName '1.1.3.0' + } + + signingConfigs { + release { + storeFile file('OperationSite.jks') + keyAlias 'key0' + storePassword '123456789' + keyPassword '123456789' + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + buildFeatures { + buildConfig = true + viewBinding = true + } + + applicationVariants.configureEach { + outputs.configureEach { + outputFileName = 'XCGZ_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk' + } + } +} + +static def getBuildDate() { + SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA) + return dateFormat.format(System.currentTimeMillis()) +} + +dependencies { + 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.geyifeng.immersionbar:immersionbar:3.2.2' + //Kotlin协程 + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2' + //MVVM+LiveData + 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.12.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' + //图片压缩 + implementation 'top.zibin:Luban:1.1.8' + //返回值转换器 + implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' + implementation 'com.squareup.retrofit2:converter-scalars:2.3.0' + implementation 'com.squareup.retrofit2:converter-gson:2.8.1' + //okhttp3日志拦截器 + implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0' + //网络请求和接口封装 + implementation 'com.squareup.retrofit2:retrofit:2.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' + //高德地图 + implementation 'com.amap.api:3dmap:latest.integration' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //CameraX + implementation 'androidx.camera:camera-core:1.2.3' + // CameraX Camera2 extensions + implementation 'androidx.camera:camera-camera2:1.2.3' + // CameraX Lifecycle library + implementation 'androidx.camera:camera-lifecycle:1.2.3' + // CameraX View class + implementation 'androidx.camera:camera-view:1.2.3' + //TCP + implementation 'io.netty:netty-all:4.1.23.Final' + //WebView + implementation 'com.just.agentweb:agentweb-androidx:4.1.4' + //视频播放器,RTSP流 + 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' + //扫码 + implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' + //图表 + implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' +} \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts deleted file mode 100644 index c3a66e8..0000000 --- a/app/build.gradle.kts +++ /dev/null @@ -1,132 +0,0 @@ -import com.android.build.gradle.internal.api.ApkVariantOutputImpl -import java.text.SimpleDateFormat -import java.util.Locale - -plugins { - id("com.android.application") - id("org.jetbrains.kotlin.android") -} - -android { - namespace = "com.casic.br.operationsite" - compileSdk = 35 - - defaultConfig { - applicationId = "com.casic.br.operationsite" - minSdk = 26 - targetSdk = 35 - versionCode = 1130 - versionName = "1.1.3.0" - } - - signingConfigs { - create("release") { - storeFile = file("OperationSite.jks") - keyAlias = "key0" - storePassword = "123456789" - keyPassword = "123456789" - } - } - - buildTypes { - val signConfig = signingConfigs.getByName("release") - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - signingConfig = signConfig - } - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = "1.8" - } - - buildFeatures { - buildConfig = true - viewBinding = true - } - - applicationVariants.all { - outputs.all { - if (this is ApkVariantOutputImpl) { - outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" - } - } - } -} - -fun getBuildDate(): String { - val dateFormat = SimpleDateFormat("yyyyMMdd", Locale.CHINA) - return dateFormat.format(System.currentTimeMillis()) -} - -dependencies { - //基础依赖库 - implementation("com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4") - implementation("androidx.core:core-ktx:1.13.1") - implementation("androidx.appcompat:appcompat:1.7.0") - implementation("com.google.android.material:material:1.10.0") - //Google官方授权框架 - implementation("pub.devrel:easypermissions:3.0.0") - //沉浸式状态栏。基础依赖包,必须要依赖 - implementation("com.geyifeng.immersionbar:immersionbar:3.2.2") - //Kotlin协程 - implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") - //MVVM+LiveData - 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.12.0") - //图片选择框架 - implementation("io.github.lucksiege:pictureselector:v3.11.1") - //图片压缩 - implementation("top.zibin:Luban:1.1.8") - //返回值转换器 - implementation("com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2") - implementation("com.squareup.retrofit2:converter-scalars:2.3.0") - implementation("com.squareup.retrofit2:converter-gson:2.8.1") - //okhttp3日志拦截器 - implementation("com.squareup.okhttp3:logging-interceptor:4.6.0") - //网络请求和接口封装 - implementation("com.squareup.retrofit2:retrofit:2.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") - //高德地图 - implementation("com.amap.api:3dmap:latest.integration") - //高德地图搜索 - implementation("com.amap.api:search:8.1.0") - //CameraX - implementation("androidx.camera:camera-core:1.2.3") - // CameraX Camera2 extensions - implementation("androidx.camera:camera-camera2:1.2.3") - // CameraX Lifecycle library - implementation("androidx.camera:camera-lifecycle:1.2.3") - // CameraX View class - implementation("androidx.camera:camera-view:1.2.3") - //TCP - implementation("io.netty:netty-all:4.1.23.Final") - //WebView - implementation("com.just.agentweb:agentweb-androidx:4.1.4") - //视频播放器,RTSP流 - 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") - //扫码 - implementation("cn.bertsir.zbarLibary:zbarlibary:1.4.2") - //图表 - implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt index f415243..f35e2f3 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt @@ -15,12 +15,10 @@ class DeviceControllerFragment : KotlinBaseFragment() { - private lateinit var deviceViewModel: DeviceViewModel + private val deviceViewModel by lazy { ViewModelProvider(this)[DeviceViewModel::class.java] } private var speed = 5 override fun initOnCreate(savedInstanceState: Bundle?) { - deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - binding.currentSpeedView.text = "速度:${speed}" } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index b97e7a7..13f14d4 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -31,9 +31,9 @@ private val kTag = "AlarmListActivity" private val context = this@AlarmListActivity - private lateinit var systemViewModel: SystemViewModel + private val systemViewModel by lazy { ViewModelProvider(this)[SystemViewModel::class.java] } + private val alarmViewModel by lazy { ViewModelProvider(this)[AlarmViewModel::class.java] } private lateinit var alarmAdapter: NormalRecyclerAdapter - private lateinit var alarmViewModel: AlarmViewModel private var dictModels: MutableList = ArrayList() private var page = 1 private var isRefresh = false @@ -73,7 +73,6 @@ ActivityStackManager.addActivity(this) //获取报警类型列表 - systemViewModel = ViewModelProvider(this)[SystemViewModel::class.java] systemViewModel.dictLiveData.observe(this) { if (it.code == 200) { dictModels = it.data @@ -81,7 +80,6 @@ } systemViewModel.getSystemDict(this, "alarmType") - alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows!! diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index 3b63a5e..f9537ee 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -23,7 +23,13 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.getScreenWidth +import com.pengxh.kt.lite.extensions.isPhoneNumber +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.ActivityStackManager import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog @@ -34,12 +40,12 @@ class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" - private lateinit var imageAdapter: EditableImageAdapter - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var applyViewModel: ApplyViewModel private val context = this + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val applyViewModel by lazy { ViewModelProvider(this)[ApplyViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages = ArrayList() + private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityApplyEnterBinding { return ActivityApplyEnterBinding.inflate(layoutInflater) @@ -60,7 +66,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -72,8 +77,6 @@ } } - applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] - //左右边距 val viewWidth = getScreenWidth() - (10 + 10).dp2px(this) imageAdapter = EditableImageAdapter(this, recyclerViewImages, viewWidth, 1, 3) diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt index f4d4354..145a8bd 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -37,8 +37,8 @@ private val kTag = "GasDetailActivity" private val gson by lazy { Gson() } private val formatter by lazy { DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private lateinit var aMap: AMap - private lateinit var tubeViewModel: TubeViewModel override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) @@ -67,7 +67,6 @@ val lineDataSets = ArrayList() val dataSet = LineDataSet(strengthEntries, "") - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] tubeViewModel.tubeGasHistoryLiveData.observe(this) { if (it.code == 200) { it.data.forEachIndexed { index, x -> diff --git a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt index c0b4fb0..cd7a93f 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt @@ -48,10 +48,10 @@ private val qrManager by lazy { QrManager.getInstance().init(QrConfigCreator.create(this)) } + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages: ArrayList = ArrayList() //真实图片路径 - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var tubeViewModel: TubeViewModel private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityInstallEquipmentBinding { @@ -73,7 +73,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -85,8 +84,6 @@ } } - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] - val userName = SaveKeyValues.getValue(LocaleConstant.USER_NAME_KEY, "") as String if (userName.isNotBlank()) { binding.operatorView.setText(userName) diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index c6bfc82..ee0bf0b 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -24,9 +24,9 @@ class LoginActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { - private lateinit var authenticateViewModel: AuthenticateViewModel - private lateinit var loginViewModel: LoginViewModel - private lateinit var userViewModel: UserViewModel + private val authenticateViewModel by lazy { ViewModelProvider(this)[AuthenticateViewModel::class.java] } + private val loginViewModel by lazy { ViewModelProvider(this)[LoginViewModel::class.java] } + private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } override fun initViewBinding(): ActivityLoginBinding { return ActivityLoginBinding.inflate(layoutInflater) @@ -53,9 +53,6 @@ binding.userPasswordView.setText( SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String ) - authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] - loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] - userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 3b0e1a3..376dd51 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -26,8 +26,8 @@ private val kTag = "MainActivity" private val marginOffset by lazy { 5.dp2px(this) } + private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } private lateinit var workSiteAdapter: NormalRecyclerAdapter - private lateinit var workSiteViewModel: WorkSiteViewModel private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -43,7 +43,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteLiveData.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows!! diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index cf9708b..046de29 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -57,12 +57,12 @@ private val kTag = "WorkSiteTabActivity" private val context = this + private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } + private val loginViewModel by lazy { ViewModelProvider(this)[LoginViewModel::class.java] } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private val devices = ArrayList() private val workers = ArrayList() private lateinit var aMap: AMap - private lateinit var workSiteViewModel: WorkSiteViewModel - private lateinit var loginViewModel: LoginViewModel - private lateinit var tubeViewModel: TubeViewModel private lateinit var bottomSheetBehavior: BottomSheetBehavior<*> private var clickedMarker: Marker? = null private var isReloadData = false @@ -128,7 +128,6 @@ /** * 数据初始化 * */ - workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) workSiteViewModel.detailLiveData.observe(this) { if (it.code == 200) { @@ -238,7 +237,6 @@ } } - loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] loginViewModel.outResultModel.observe(this) { if (it.code == 200) { AuthenticationHelper.removeToken() @@ -247,8 +245,6 @@ } } - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] - // 初始化 BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(binding.cardView) bottomSheetBehavior.state = BottomSheetBehavior.STATE_HIDDEN diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..16e60f2 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,123 @@ +import java.text.SimpleDateFormat + +plugins { + id('com.android.application') + id('org.jetbrains.kotlin.android') +} + +android { + namespace 'com.casic.br.operationsite' + compileSdk 35 + + defaultConfig { + applicationId 'com.casic.br.operationsite' + minSdk 26 + targetSdk 35 + versionCode 1130 + versionName '1.1.3.0' + } + + signingConfigs { + release { + storeFile file('OperationSite.jks') + keyAlias 'key0' + storePassword '123456789' + keyPassword '123456789' + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + buildFeatures { + buildConfig = true + viewBinding = true + } + + applicationVariants.configureEach { + outputs.configureEach { + outputFileName = 'XCGZ_' + getBuildDate() + '_' + defaultConfig.versionName + '.apk' + } + } +} + +static def getBuildDate() { + SimpleDateFormat dateFormat = new SimpleDateFormat('yyyyMMdd', Locale.CHINA) + return dateFormat.format(System.currentTimeMillis()) +} + +dependencies { + 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.geyifeng.immersionbar:immersionbar:3.2.2' + //Kotlin协程 + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2' + //MVVM+LiveData + 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.12.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' + //图片压缩 + implementation 'top.zibin:Luban:1.1.8' + //返回值转换器 + implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' + implementation 'com.squareup.retrofit2:converter-scalars:2.3.0' + implementation 'com.squareup.retrofit2:converter-gson:2.8.1' + //okhttp3日志拦截器 + implementation 'com.squareup.okhttp3:logging-interceptor:4.6.0' + //网络请求和接口封装 + implementation 'com.squareup.retrofit2:retrofit:2.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' + //高德地图 + implementation 'com.amap.api:3dmap:latest.integration' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //CameraX + implementation 'androidx.camera:camera-core:1.2.3' + // CameraX Camera2 extensions + implementation 'androidx.camera:camera-camera2:1.2.3' + // CameraX Lifecycle library + implementation 'androidx.camera:camera-lifecycle:1.2.3' + // CameraX View class + implementation 'androidx.camera:camera-view:1.2.3' + //TCP + implementation 'io.netty:netty-all:4.1.23.Final' + //WebView + implementation 'com.just.agentweb:agentweb-androidx:4.1.4' + //视频播放器,RTSP流 + 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' + //扫码 + implementation 'cn.bertsir.zbarLibary:zbarlibary:1.4.2' + //图表 + implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' +} \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts deleted file mode 100644 index c3a66e8..0000000 --- a/app/build.gradle.kts +++ /dev/null @@ -1,132 +0,0 @@ -import com.android.build.gradle.internal.api.ApkVariantOutputImpl -import java.text.SimpleDateFormat -import java.util.Locale - -plugins { - id("com.android.application") - id("org.jetbrains.kotlin.android") -} - -android { - namespace = "com.casic.br.operationsite" - compileSdk = 35 - - defaultConfig { - applicationId = "com.casic.br.operationsite" - minSdk = 26 - targetSdk = 35 - versionCode = 1130 - versionName = "1.1.3.0" - } - - signingConfigs { - create("release") { - storeFile = file("OperationSite.jks") - keyAlias = "key0" - storePassword = "123456789" - keyPassword = "123456789" - } - } - - buildTypes { - val signConfig = signingConfigs.getByName("release") - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - signingConfig = signConfig - } - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = "1.8" - } - - buildFeatures { - buildConfig = true - viewBinding = true - } - - applicationVariants.all { - outputs.all { - if (this is ApkVariantOutputImpl) { - outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" - } - } - } -} - -fun getBuildDate(): String { - val dateFormat = SimpleDateFormat("yyyyMMdd", Locale.CHINA) - return dateFormat.format(System.currentTimeMillis()) -} - -dependencies { - //基础依赖库 - implementation("com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4") - implementation("androidx.core:core-ktx:1.13.1") - implementation("androidx.appcompat:appcompat:1.7.0") - implementation("com.google.android.material:material:1.10.0") - //Google官方授权框架 - implementation("pub.devrel:easypermissions:3.0.0") - //沉浸式状态栏。基础依赖包,必须要依赖 - implementation("com.geyifeng.immersionbar:immersionbar:3.2.2") - //Kotlin协程 - implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") - //MVVM+LiveData - 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.12.0") - //图片选择框架 - implementation("io.github.lucksiege:pictureselector:v3.11.1") - //图片压缩 - implementation("top.zibin:Luban:1.1.8") - //返回值转换器 - implementation("com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2") - implementation("com.squareup.retrofit2:converter-scalars:2.3.0") - implementation("com.squareup.retrofit2:converter-gson:2.8.1") - //okhttp3日志拦截器 - implementation("com.squareup.okhttp3:logging-interceptor:4.6.0") - //网络请求和接口封装 - implementation("com.squareup.retrofit2:retrofit:2.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") - //高德地图 - implementation("com.amap.api:3dmap:latest.integration") - //高德地图搜索 - implementation("com.amap.api:search:8.1.0") - //CameraX - implementation("androidx.camera:camera-core:1.2.3") - // CameraX Camera2 extensions - implementation("androidx.camera:camera-camera2:1.2.3") - // CameraX Lifecycle library - implementation("androidx.camera:camera-lifecycle:1.2.3") - // CameraX View class - implementation("androidx.camera:camera-view:1.2.3") - //TCP - implementation("io.netty:netty-all:4.1.23.Final") - //WebView - implementation("com.just.agentweb:agentweb-androidx:4.1.4") - //视频播放器,RTSP流 - 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") - //扫码 - implementation("cn.bertsir.zbarLibary:zbarlibary:1.4.2") - //图表 - implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt index f415243..f35e2f3 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragments/DeviceControllerFragment.kt @@ -15,12 +15,10 @@ class DeviceControllerFragment : KotlinBaseFragment() { - private lateinit var deviceViewModel: DeviceViewModel + private val deviceViewModel by lazy { ViewModelProvider(this)[DeviceViewModel::class.java] } private var speed = 5 override fun initOnCreate(savedInstanceState: Bundle?) { - deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - binding.currentSpeedView.text = "速度:${speed}" } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index b97e7a7..13f14d4 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -31,9 +31,9 @@ private val kTag = "AlarmListActivity" private val context = this@AlarmListActivity - private lateinit var systemViewModel: SystemViewModel + private val systemViewModel by lazy { ViewModelProvider(this)[SystemViewModel::class.java] } + private val alarmViewModel by lazy { ViewModelProvider(this)[AlarmViewModel::class.java] } private lateinit var alarmAdapter: NormalRecyclerAdapter - private lateinit var alarmViewModel: AlarmViewModel private var dictModels: MutableList = ArrayList() private var page = 1 private var isRefresh = false @@ -73,7 +73,6 @@ ActivityStackManager.addActivity(this) //获取报警类型列表 - systemViewModel = ViewModelProvider(this)[SystemViewModel::class.java] systemViewModel.dictLiveData.observe(this) { if (it.code == 200) { dictModels = it.data @@ -81,7 +80,6 @@ } systemViewModel.getSystemDict(this, "alarmType") - alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows!! diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index 3b63a5e..f9537ee 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -23,7 +23,13 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.getScreenWidth +import com.pengxh.kt.lite.extensions.isPhoneNumber +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.ActivityStackManager import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog @@ -34,12 +40,12 @@ class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" - private lateinit var imageAdapter: EditableImageAdapter - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var applyViewModel: ApplyViewModel private val context = this + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val applyViewModel by lazy { ViewModelProvider(this)[ApplyViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages = ArrayList() + private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityApplyEnterBinding { return ActivityApplyEnterBinding.inflate(layoutInflater) @@ -60,7 +66,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -72,8 +77,6 @@ } } - applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] - //左右边距 val viewWidth = getScreenWidth() - (10 + 10).dp2px(this) imageAdapter = EditableImageAdapter(this, recyclerViewImages, viewWidth, 1, 3) diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt index f4d4354..145a8bd 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -37,8 +37,8 @@ private val kTag = "GasDetailActivity" private val gson by lazy { Gson() } private val formatter by lazy { DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private lateinit var aMap: AMap - private lateinit var tubeViewModel: TubeViewModel override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) @@ -67,7 +67,6 @@ val lineDataSets = ArrayList() val dataSet = LineDataSet(strengthEntries, "") - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] tubeViewModel.tubeGasHistoryLiveData.observe(this) { if (it.code == 200) { it.data.forEachIndexed { index, x -> diff --git a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt index c0b4fb0..cd7a93f 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt @@ -48,10 +48,10 @@ private val qrManager by lazy { QrManager.getInstance().init(QrConfigCreator.create(this)) } + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages: ArrayList = ArrayList() //真实图片路径 - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var tubeViewModel: TubeViewModel private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityInstallEquipmentBinding { @@ -73,7 +73,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -85,8 +84,6 @@ } } - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] - val userName = SaveKeyValues.getValue(LocaleConstant.USER_NAME_KEY, "") as String if (userName.isNotBlank()) { binding.operatorView.setText(userName) diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index c6bfc82..ee0bf0b 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -24,9 +24,9 @@ class LoginActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { - private lateinit var authenticateViewModel: AuthenticateViewModel - private lateinit var loginViewModel: LoginViewModel - private lateinit var userViewModel: UserViewModel + private val authenticateViewModel by lazy { ViewModelProvider(this)[AuthenticateViewModel::class.java] } + private val loginViewModel by lazy { ViewModelProvider(this)[LoginViewModel::class.java] } + private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } override fun initViewBinding(): ActivityLoginBinding { return ActivityLoginBinding.inflate(layoutInflater) @@ -53,9 +53,6 @@ binding.userPasswordView.setText( SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String ) - authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] - loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] - userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 3b0e1a3..376dd51 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -26,8 +26,8 @@ private val kTag = "MainActivity" private val marginOffset by lazy { 5.dp2px(this) } + private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } private lateinit var workSiteAdapter: NormalRecyclerAdapter - private lateinit var workSiteViewModel: WorkSiteViewModel private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -43,7 +43,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteLiveData.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows!! diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index cf9708b..046de29 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -57,12 +57,12 @@ private val kTag = "WorkSiteTabActivity" private val context = this + private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } + private val loginViewModel by lazy { ViewModelProvider(this)[LoginViewModel::class.java] } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private val devices = ArrayList() private val workers = ArrayList() private lateinit var aMap: AMap - private lateinit var workSiteViewModel: WorkSiteViewModel - private lateinit var loginViewModel: LoginViewModel - private lateinit var tubeViewModel: TubeViewModel private lateinit var bottomSheetBehavior: BottomSheetBehavior<*> private var clickedMarker: Marker? = null private var isReloadData = false @@ -128,7 +128,6 @@ /** * 数据初始化 * */ - workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) workSiteViewModel.detailLiveData.observe(this) { if (it.code == 200) { @@ -238,7 +237,6 @@ } } - loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] loginViewModel.outResultModel.observe(this) { if (it.code == 200) { AuthenticationHelper.removeToken() @@ -247,8 +245,6 @@ } } - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] - // 初始化 BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(binding.cardView) bottomSheetBehavior.state = BottomSheetBehavior.STATE_HIDDEN diff --git a/app/src/main/res/layout/activity_site_tab.xml b/app/src/main/res/layout/activity_site_tab.xml index 16628ba..d6610c7 100644 --- a/app/src/main/res/layout/activity_site_tab.xml +++ b/app/src/main/res/layout/activity_site_tab.xml @@ -243,7 +243,7 @@ () { - private lateinit var deviceViewModel: DeviceViewModel + private val deviceViewModel by lazy { ViewModelProvider(this)[DeviceViewModel::class.java] } private var speed = 5 override fun initOnCreate(savedInstanceState: Bundle?) { - deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - binding.currentSpeedView.text = "速度:${speed}" } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index b97e7a7..13f14d4 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -31,9 +31,9 @@ private val kTag = "AlarmListActivity" private val context = this@AlarmListActivity - private lateinit var systemViewModel: SystemViewModel + private val systemViewModel by lazy { ViewModelProvider(this)[SystemViewModel::class.java] } + private val alarmViewModel by lazy { ViewModelProvider(this)[AlarmViewModel::class.java] } private lateinit var alarmAdapter: NormalRecyclerAdapter - private lateinit var alarmViewModel: AlarmViewModel private var dictModels: MutableList = ArrayList() private var page = 1 private var isRefresh = false @@ -73,7 +73,6 @@ ActivityStackManager.addActivity(this) //获取报警类型列表 - systemViewModel = ViewModelProvider(this)[SystemViewModel::class.java] systemViewModel.dictLiveData.observe(this) { if (it.code == 200) { dictModels = it.data @@ -81,7 +80,6 @@ } systemViewModel.getSystemDict(this, "alarmType") - alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows!! diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index 3b63a5e..f9537ee 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -23,7 +23,13 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.getScreenWidth +import com.pengxh.kt.lite.extensions.isPhoneNumber +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.ActivityStackManager import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog @@ -34,12 +40,12 @@ class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" - private lateinit var imageAdapter: EditableImageAdapter - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var applyViewModel: ApplyViewModel private val context = this + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val applyViewModel by lazy { ViewModelProvider(this)[ApplyViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages = ArrayList() + private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityApplyEnterBinding { return ActivityApplyEnterBinding.inflate(layoutInflater) @@ -60,7 +66,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -72,8 +77,6 @@ } } - applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] - //左右边距 val viewWidth = getScreenWidth() - (10 + 10).dp2px(this) imageAdapter = EditableImageAdapter(this, recyclerViewImages, viewWidth, 1, 3) diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt index f4d4354..145a8bd 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -37,8 +37,8 @@ private val kTag = "GasDetailActivity" private val gson by lazy { Gson() } private val formatter by lazy { DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private lateinit var aMap: AMap - private lateinit var tubeViewModel: TubeViewModel override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) @@ -67,7 +67,6 @@ val lineDataSets = ArrayList() val dataSet = LineDataSet(strengthEntries, "") - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] tubeViewModel.tubeGasHistoryLiveData.observe(this) { if (it.code == 200) { it.data.forEachIndexed { index, x -> diff --git a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt index c0b4fb0..cd7a93f 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt @@ -48,10 +48,10 @@ private val qrManager by lazy { QrManager.getInstance().init(QrConfigCreator.create(this)) } + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages: ArrayList = ArrayList() //真实图片路径 - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var tubeViewModel: TubeViewModel private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityInstallEquipmentBinding { @@ -73,7 +73,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -85,8 +84,6 @@ } } - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] - val userName = SaveKeyValues.getValue(LocaleConstant.USER_NAME_KEY, "") as String if (userName.isNotBlank()) { binding.operatorView.setText(userName) diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index c6bfc82..ee0bf0b 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -24,9 +24,9 @@ class LoginActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { - private lateinit var authenticateViewModel: AuthenticateViewModel - private lateinit var loginViewModel: LoginViewModel - private lateinit var userViewModel: UserViewModel + private val authenticateViewModel by lazy { ViewModelProvider(this)[AuthenticateViewModel::class.java] } + private val loginViewModel by lazy { ViewModelProvider(this)[LoginViewModel::class.java] } + private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } override fun initViewBinding(): ActivityLoginBinding { return ActivityLoginBinding.inflate(layoutInflater) @@ -53,9 +53,6 @@ binding.userPasswordView.setText( SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String ) - authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] - loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] - userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 3b0e1a3..376dd51 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -26,8 +26,8 @@ private val kTag = "MainActivity" private val marginOffset by lazy { 5.dp2px(this) } + private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } private lateinit var workSiteAdapter: NormalRecyclerAdapter - private lateinit var workSiteViewModel: WorkSiteViewModel private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -43,7 +43,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteLiveData.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows!! diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index cf9708b..046de29 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -57,12 +57,12 @@ private val kTag = "WorkSiteTabActivity" private val context = this + private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } + private val loginViewModel by lazy { ViewModelProvider(this)[LoginViewModel::class.java] } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private val devices = ArrayList() private val workers = ArrayList() private lateinit var aMap: AMap - private lateinit var workSiteViewModel: WorkSiteViewModel - private lateinit var loginViewModel: LoginViewModel - private lateinit var tubeViewModel: TubeViewModel private lateinit var bottomSheetBehavior: BottomSheetBehavior<*> private var clickedMarker: Marker? = null private var isReloadData = false @@ -128,7 +128,6 @@ /** * 数据初始化 * */ - workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) workSiteViewModel.detailLiveData.observe(this) { if (it.code == 200) { @@ -238,7 +237,6 @@ } } - loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] loginViewModel.outResultModel.observe(this) { if (it.code == 200) { AuthenticationHelper.removeToken() @@ -247,8 +245,6 @@ } } - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] - // 初始化 BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(binding.cardView) bottomSheetBehavior.state = BottomSheetBehavior.STATE_HIDDEN diff --git a/app/src/main/res/layout/activity_site_tab.xml b/app/src/main/res/layout/activity_site_tab.xml index 16628ba..d6610c7 100644 --- a/app/src/main/res/layout/activity_site_tab.xml +++ b/app/src/main/res/layout/activity_site_tab.xml @@ -243,7 +243,7 @@ () { - private lateinit var deviceViewModel: DeviceViewModel + private val deviceViewModel by lazy { ViewModelProvider(this)[DeviceViewModel::class.java] } private var speed = 5 override fun initOnCreate(savedInstanceState: Bundle?) { - deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - binding.currentSpeedView.text = "速度:${speed}" } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index b97e7a7..13f14d4 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -31,9 +31,9 @@ private val kTag = "AlarmListActivity" private val context = this@AlarmListActivity - private lateinit var systemViewModel: SystemViewModel + private val systemViewModel by lazy { ViewModelProvider(this)[SystemViewModel::class.java] } + private val alarmViewModel by lazy { ViewModelProvider(this)[AlarmViewModel::class.java] } private lateinit var alarmAdapter: NormalRecyclerAdapter - private lateinit var alarmViewModel: AlarmViewModel private var dictModels: MutableList = ArrayList() private var page = 1 private var isRefresh = false @@ -73,7 +73,6 @@ ActivityStackManager.addActivity(this) //获取报警类型列表 - systemViewModel = ViewModelProvider(this)[SystemViewModel::class.java] systemViewModel.dictLiveData.observe(this) { if (it.code == 200) { dictModels = it.data @@ -81,7 +80,6 @@ } systemViewModel.getSystemDict(this, "alarmType") - alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows!! diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index 3b63a5e..f9537ee 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -23,7 +23,13 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.getScreenWidth +import com.pengxh.kt.lite.extensions.isPhoneNumber +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.ActivityStackManager import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog @@ -34,12 +40,12 @@ class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" - private lateinit var imageAdapter: EditableImageAdapter - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var applyViewModel: ApplyViewModel private val context = this + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val applyViewModel by lazy { ViewModelProvider(this)[ApplyViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages = ArrayList() + private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityApplyEnterBinding { return ActivityApplyEnterBinding.inflate(layoutInflater) @@ -60,7 +66,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -72,8 +77,6 @@ } } - applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] - //左右边距 val viewWidth = getScreenWidth() - (10 + 10).dp2px(this) imageAdapter = EditableImageAdapter(this, recyclerViewImages, viewWidth, 1, 3) diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt index f4d4354..145a8bd 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -37,8 +37,8 @@ private val kTag = "GasDetailActivity" private val gson by lazy { Gson() } private val formatter by lazy { DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private lateinit var aMap: AMap - private lateinit var tubeViewModel: TubeViewModel override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) @@ -67,7 +67,6 @@ val lineDataSets = ArrayList() val dataSet = LineDataSet(strengthEntries, "") - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] tubeViewModel.tubeGasHistoryLiveData.observe(this) { if (it.code == 200) { it.data.forEachIndexed { index, x -> diff --git a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt index c0b4fb0..cd7a93f 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt @@ -48,10 +48,10 @@ private val qrManager by lazy { QrManager.getInstance().init(QrConfigCreator.create(this)) } + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages: ArrayList = ArrayList() //真实图片路径 - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var tubeViewModel: TubeViewModel private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityInstallEquipmentBinding { @@ -73,7 +73,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -85,8 +84,6 @@ } } - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] - val userName = SaveKeyValues.getValue(LocaleConstant.USER_NAME_KEY, "") as String if (userName.isNotBlank()) { binding.operatorView.setText(userName) diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index c6bfc82..ee0bf0b 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -24,9 +24,9 @@ class LoginActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { - private lateinit var authenticateViewModel: AuthenticateViewModel - private lateinit var loginViewModel: LoginViewModel - private lateinit var userViewModel: UserViewModel + private val authenticateViewModel by lazy { ViewModelProvider(this)[AuthenticateViewModel::class.java] } + private val loginViewModel by lazy { ViewModelProvider(this)[LoginViewModel::class.java] } + private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } override fun initViewBinding(): ActivityLoginBinding { return ActivityLoginBinding.inflate(layoutInflater) @@ -53,9 +53,6 @@ binding.userPasswordView.setText( SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String ) - authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] - loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] - userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 3b0e1a3..376dd51 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -26,8 +26,8 @@ private val kTag = "MainActivity" private val marginOffset by lazy { 5.dp2px(this) } + private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } private lateinit var workSiteAdapter: NormalRecyclerAdapter - private lateinit var workSiteViewModel: WorkSiteViewModel private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -43,7 +43,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteLiveData.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows!! diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index cf9708b..046de29 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -57,12 +57,12 @@ private val kTag = "WorkSiteTabActivity" private val context = this + private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } + private val loginViewModel by lazy { ViewModelProvider(this)[LoginViewModel::class.java] } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private val devices = ArrayList() private val workers = ArrayList() private lateinit var aMap: AMap - private lateinit var workSiteViewModel: WorkSiteViewModel - private lateinit var loginViewModel: LoginViewModel - private lateinit var tubeViewModel: TubeViewModel private lateinit var bottomSheetBehavior: BottomSheetBehavior<*> private var clickedMarker: Marker? = null private var isReloadData = false @@ -128,7 +128,6 @@ /** * 数据初始化 * */ - workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) workSiteViewModel.detailLiveData.observe(this) { if (it.code == 200) { @@ -238,7 +237,6 @@ } } - loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] loginViewModel.outResultModel.observe(this) { if (it.code == 200) { AuthenticationHelper.removeToken() @@ -247,8 +245,6 @@ } } - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] - // 初始化 BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(binding.cardView) bottomSheetBehavior.state = BottomSheetBehavior.STATE_HIDDEN diff --git a/app/src/main/res/layout/activity_site_tab.xml b/app/src/main/res/layout/activity_site_tab.xml index 16628ba..d6610c7 100644 --- a/app/src/main/res/layout/activity_site_tab.xml +++ b/app/src/main/res/layout/activity_site_tab.xml @@ -243,7 +243,7 @@ () { - private lateinit var deviceViewModel: DeviceViewModel + private val deviceViewModel by lazy { ViewModelProvider(this)[DeviceViewModel::class.java] } private var speed = 5 override fun initOnCreate(savedInstanceState: Bundle?) { - deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - binding.currentSpeedView.text = "速度:${speed}" } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index b97e7a7..13f14d4 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -31,9 +31,9 @@ private val kTag = "AlarmListActivity" private val context = this@AlarmListActivity - private lateinit var systemViewModel: SystemViewModel + private val systemViewModel by lazy { ViewModelProvider(this)[SystemViewModel::class.java] } + private val alarmViewModel by lazy { ViewModelProvider(this)[AlarmViewModel::class.java] } private lateinit var alarmAdapter: NormalRecyclerAdapter - private lateinit var alarmViewModel: AlarmViewModel private var dictModels: MutableList = ArrayList() private var page = 1 private var isRefresh = false @@ -73,7 +73,6 @@ ActivityStackManager.addActivity(this) //获取报警类型列表 - systemViewModel = ViewModelProvider(this)[SystemViewModel::class.java] systemViewModel.dictLiveData.observe(this) { if (it.code == 200) { dictModels = it.data @@ -81,7 +80,6 @@ } systemViewModel.getSystemDict(this, "alarmType") - alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows!! diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index 3b63a5e..f9537ee 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -23,7 +23,13 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.getScreenWidth +import com.pengxh.kt.lite.extensions.isPhoneNumber +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.ActivityStackManager import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog @@ -34,12 +40,12 @@ class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" - private lateinit var imageAdapter: EditableImageAdapter - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var applyViewModel: ApplyViewModel private val context = this + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val applyViewModel by lazy { ViewModelProvider(this)[ApplyViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages = ArrayList() + private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityApplyEnterBinding { return ActivityApplyEnterBinding.inflate(layoutInflater) @@ -60,7 +66,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -72,8 +77,6 @@ } } - applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] - //左右边距 val viewWidth = getScreenWidth() - (10 + 10).dp2px(this) imageAdapter = EditableImageAdapter(this, recyclerViewImages, viewWidth, 1, 3) diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt index f4d4354..145a8bd 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -37,8 +37,8 @@ private val kTag = "GasDetailActivity" private val gson by lazy { Gson() } private val formatter by lazy { DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private lateinit var aMap: AMap - private lateinit var tubeViewModel: TubeViewModel override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) @@ -67,7 +67,6 @@ val lineDataSets = ArrayList() val dataSet = LineDataSet(strengthEntries, "") - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] tubeViewModel.tubeGasHistoryLiveData.observe(this) { if (it.code == 200) { it.data.forEachIndexed { index, x -> diff --git a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt index c0b4fb0..cd7a93f 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt @@ -48,10 +48,10 @@ private val qrManager by lazy { QrManager.getInstance().init(QrConfigCreator.create(this)) } + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages: ArrayList = ArrayList() //真实图片路径 - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var tubeViewModel: TubeViewModel private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityInstallEquipmentBinding { @@ -73,7 +73,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -85,8 +84,6 @@ } } - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] - val userName = SaveKeyValues.getValue(LocaleConstant.USER_NAME_KEY, "") as String if (userName.isNotBlank()) { binding.operatorView.setText(userName) diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index c6bfc82..ee0bf0b 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -24,9 +24,9 @@ class LoginActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { - private lateinit var authenticateViewModel: AuthenticateViewModel - private lateinit var loginViewModel: LoginViewModel - private lateinit var userViewModel: UserViewModel + private val authenticateViewModel by lazy { ViewModelProvider(this)[AuthenticateViewModel::class.java] } + private val loginViewModel by lazy { ViewModelProvider(this)[LoginViewModel::class.java] } + private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } override fun initViewBinding(): ActivityLoginBinding { return ActivityLoginBinding.inflate(layoutInflater) @@ -53,9 +53,6 @@ binding.userPasswordView.setText( SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String ) - authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] - loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] - userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 3b0e1a3..376dd51 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -26,8 +26,8 @@ private val kTag = "MainActivity" private val marginOffset by lazy { 5.dp2px(this) } + private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } private lateinit var workSiteAdapter: NormalRecyclerAdapter - private lateinit var workSiteViewModel: WorkSiteViewModel private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -43,7 +43,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteLiveData.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows!! diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index cf9708b..046de29 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -57,12 +57,12 @@ private val kTag = "WorkSiteTabActivity" private val context = this + private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } + private val loginViewModel by lazy { ViewModelProvider(this)[LoginViewModel::class.java] } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private val devices = ArrayList() private val workers = ArrayList() private lateinit var aMap: AMap - private lateinit var workSiteViewModel: WorkSiteViewModel - private lateinit var loginViewModel: LoginViewModel - private lateinit var tubeViewModel: TubeViewModel private lateinit var bottomSheetBehavior: BottomSheetBehavior<*> private var clickedMarker: Marker? = null private var isReloadData = false @@ -128,7 +128,6 @@ /** * 数据初始化 * */ - workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) workSiteViewModel.detailLiveData.observe(this) { if (it.code == 200) { @@ -238,7 +237,6 @@ } } - loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] loginViewModel.outResultModel.observe(this) { if (it.code == 200) { AuthenticationHelper.removeToken() @@ -247,8 +245,6 @@ } } - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] - // 初始化 BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(binding.cardView) bottomSheetBehavior.state = BottomSheetBehavior.STATE_HIDDEN diff --git a/app/src/main/res/layout/activity_site_tab.xml b/app/src/main/res/layout/activity_site_tab.xml index 16628ba..d6610c7 100644 --- a/app/src/main/res/layout/activity_site_tab.xml +++ b/app/src/main/res/layout/activity_site_tab.xml @@ -243,7 +243,7 @@ () { - private lateinit var deviceViewModel: DeviceViewModel + private val deviceViewModel by lazy { ViewModelProvider(this)[DeviceViewModel::class.java] } private var speed = 5 override fun initOnCreate(savedInstanceState: Bundle?) { - deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] - binding.currentSpeedView.text = "速度:${speed}" } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index b97e7a7..13f14d4 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -31,9 +31,9 @@ private val kTag = "AlarmListActivity" private val context = this@AlarmListActivity - private lateinit var systemViewModel: SystemViewModel + private val systemViewModel by lazy { ViewModelProvider(this)[SystemViewModel::class.java] } + private val alarmViewModel by lazy { ViewModelProvider(this)[AlarmViewModel::class.java] } private lateinit var alarmAdapter: NormalRecyclerAdapter - private lateinit var alarmViewModel: AlarmViewModel private var dictModels: MutableList = ArrayList() private var page = 1 private var isRefresh = false @@ -73,7 +73,6 @@ ActivityStackManager.addActivity(this) //获取报警类型列表 - systemViewModel = ViewModelProvider(this)[SystemViewModel::class.java] systemViewModel.dictLiveData.observe(this) { if (it.code == 200) { dictModels = it.data @@ -81,7 +80,6 @@ } systemViewModel.getSystemDict(this, "alarmType") - alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows!! diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index 3b63a5e..f9537ee 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -23,7 +23,13 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.getScreenWidth +import com.pengxh.kt.lite.extensions.isPhoneNumber +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.ActivityStackManager import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog @@ -34,12 +40,12 @@ class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" - private lateinit var imageAdapter: EditableImageAdapter - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var applyViewModel: ApplyViewModel private val context = this + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val applyViewModel by lazy { ViewModelProvider(this)[ApplyViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages = ArrayList() + private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityApplyEnterBinding { return ActivityApplyEnterBinding.inflate(layoutInflater) @@ -60,7 +66,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -72,8 +77,6 @@ } } - applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] - //左右边距 val viewWidth = getScreenWidth() - (10 + 10).dp2px(this) imageAdapter = EditableImageAdapter(this, recyclerViewImages, viewWidth, 1, 3) diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt index f4d4354..145a8bd 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -37,8 +37,8 @@ private val kTag = "GasDetailActivity" private val gson by lazy { Gson() } private val formatter by lazy { DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private lateinit var aMap: AMap - private lateinit var tubeViewModel: TubeViewModel override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) @@ -67,7 +67,6 @@ val lineDataSets = ArrayList() val dataSet = LineDataSet(strengthEntries, "") - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] tubeViewModel.tubeGasHistoryLiveData.observe(this) { if (it.code == 200) { it.data.forEachIndexed { index, x -> diff --git a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt index c0b4fb0..cd7a93f 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt @@ -48,10 +48,10 @@ private val qrManager by lazy { QrManager.getInstance().init(QrConfigCreator.create(this)) } + private val uploadFileViewModel by lazy { ViewModelProvider(this)[UploadFileViewModel::class.java] } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val recyclerViewImages: ArrayList = ArrayList() //真实图片路径 - private lateinit var uploadFileViewModel: UploadFileViewModel - private lateinit var tubeViewModel: TubeViewModel private lateinit var imageAdapter: EditableImageAdapter override fun initViewBinding(): ActivityInstallEquipmentBinding { @@ -73,7 +73,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] uploadFileViewModel.resultModel.observe(this) { if (it.code == 200) { val url = it.data.toString() @@ -85,8 +84,6 @@ } } - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] - val userName = SaveKeyValues.getValue(LocaleConstant.USER_NAME_KEY, "") as String if (userName.isNotBlank()) { binding.operatorView.setText(userName) diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index c6bfc82..ee0bf0b 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -24,9 +24,9 @@ class LoginActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { - private lateinit var authenticateViewModel: AuthenticateViewModel - private lateinit var loginViewModel: LoginViewModel - private lateinit var userViewModel: UserViewModel + private val authenticateViewModel by lazy { ViewModelProvider(this)[AuthenticateViewModel::class.java] } + private val loginViewModel by lazy { ViewModelProvider(this)[LoginViewModel::class.java] } + private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } override fun initViewBinding(): ActivityLoginBinding { return ActivityLoginBinding.inflate(layoutInflater) @@ -53,9 +53,6 @@ binding.userPasswordView.setText( SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String ) - authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] - loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] - userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 3b0e1a3..376dd51 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -26,8 +26,8 @@ private val kTag = "MainActivity" private val marginOffset by lazy { 5.dp2px(this) } + private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } private lateinit var workSiteAdapter: NormalRecyclerAdapter - private lateinit var workSiteViewModel: WorkSiteViewModel private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -43,7 +43,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteLiveData.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows!! diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index cf9708b..046de29 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -57,12 +57,12 @@ private val kTag = "WorkSiteTabActivity" private val context = this + private val workSiteViewModel by lazy { ViewModelProvider(this)[WorkSiteViewModel::class.java] } + private val loginViewModel by lazy { ViewModelProvider(this)[LoginViewModel::class.java] } + private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } private val devices = ArrayList() private val workers = ArrayList() private lateinit var aMap: AMap - private lateinit var workSiteViewModel: WorkSiteViewModel - private lateinit var loginViewModel: LoginViewModel - private lateinit var tubeViewModel: TubeViewModel private lateinit var bottomSheetBehavior: BottomSheetBehavior<*> private var clickedMarker: Marker? = null private var isReloadData = false @@ -128,7 +128,6 @@ /** * 数据初始化 * */ - workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.getProjectDetail(this, RuntimeCache.projectId) workSiteViewModel.detailLiveData.observe(this) { if (it.code == 200) { @@ -238,7 +237,6 @@ } } - loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] loginViewModel.outResultModel.observe(this) { if (it.code == 200) { AuthenticationHelper.removeToken() @@ -247,8 +245,6 @@ } } - tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] - // 初始化 BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(binding.cardView) bottomSheetBehavior.state = BottomSheetBehavior.STATE_HIDDEN diff --git a/app/src/main/res/layout/activity_site_tab.xml b/app/src/main/res/layout/activity_site_tab.xml index 16628ba..d6610c7 100644 --- a/app/src/main/res/layout/activity_site_tab.xml +++ b/app/src/main/res/layout/activity_site_tab.xml @@ -243,7 +243,7 @@