diff --git a/app/build.gradle b/app/build.gradle
deleted file mode 100644
index 496c7cc..0000000
--- a/app/build.gradle
+++ /dev/null
@@ -1,130 +0,0 @@
-import java.text.SimpleDateFormat
-
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-
-android {
- signingConfigs {
- release {
- storeFile file('OperationSite.jks')
- storePassword '123456789'
- keyAlias 'key0'
- keyPassword '123456789'
- }
- }
- compileSdkVersion 33
-
- defaultConfig {
- applicationId "com.casic.br.operationsite"
- minSdkVersion 26
- targetSdkVersion 33
- versionCode 1090
- versionName "1.0.9.0"
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- kotlinOptions {
- jvmTarget = '1.8'
- }
-
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
- buildFeatures {
- viewBinding true
- }
-
- applicationVariants.configureEach { variant ->
- variant.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 fileTree(include: ['*.jar'], dir: 'libs')
- //基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
- //Google官方授权框架
- implementation 'pub.devrel:easypermissions:3.0.0'
- //沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
- //Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
- //图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.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.9.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
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
- // CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
- // CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
- // CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
- //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:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
- //大图
- implementation 'com.github.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
deleted file mode 100644
index 496c7cc..0000000
--- a/app/build.gradle
+++ /dev/null
@@ -1,130 +0,0 @@
-import java.text.SimpleDateFormat
-
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-
-android {
- signingConfigs {
- release {
- storeFile file('OperationSite.jks')
- storePassword '123456789'
- keyAlias 'key0'
- keyPassword '123456789'
- }
- }
- compileSdkVersion 33
-
- defaultConfig {
- applicationId "com.casic.br.operationsite"
- minSdkVersion 26
- targetSdkVersion 33
- versionCode 1090
- versionName "1.0.9.0"
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- kotlinOptions {
- jvmTarget = '1.8'
- }
-
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
- buildFeatures {
- viewBinding true
- }
-
- applicationVariants.configureEach { variant ->
- variant.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 fileTree(include: ['*.jar'], dir: 'libs')
- //基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
- //Google官方授权框架
- implementation 'pub.devrel:easypermissions:3.0.0'
- //沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
- //Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
- //图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.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.9.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
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
- // CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
- // CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
- // CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
- //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:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
- //大图
- implementation 'com.github.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
new file mode 100644
index 0000000..3561334
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,134 @@
+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 = 36
+
+ defaultConfig {
+ applicationId = "com.casic.br.operationsite"
+ minSdk = 26
+ targetSdk = 36
+ versionCode = 1090
+ versionName = "1.0.9.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.9.0")
+ implementation("androidx.appcompat:appcompat:1.6.1")
+ implementation("com.google.android.material:material:1.6.1")
+ //Google官方授权框架
+ implementation("pub.devrel:easypermissions:3.0.0")
+ //沉浸式状态栏。基础依赖包,必须要依赖
+ implementation("com.geyifeng.immersionbar:immersionbar:3.2.2")
+ //Kotlin协程
+ implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.5.1")
+ //MVVM+LiveData
+ implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-extensions:2.2.0")
+ //图片加载框架
+ implementation("com.github.bumptech.glide:glide:4.9.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.9.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:v8.4.0-release-jitpack")
+ //是否需要ExoPlayer模式
+ implementation("com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack")
+ //更多ijk的编码支持
+ implementation("com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack")
+ //大图
+ implementation("com.github.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
deleted file mode 100644
index 496c7cc..0000000
--- a/app/build.gradle
+++ /dev/null
@@ -1,130 +0,0 @@
-import java.text.SimpleDateFormat
-
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-
-android {
- signingConfigs {
- release {
- storeFile file('OperationSite.jks')
- storePassword '123456789'
- keyAlias 'key0'
- keyPassword '123456789'
- }
- }
- compileSdkVersion 33
-
- defaultConfig {
- applicationId "com.casic.br.operationsite"
- minSdkVersion 26
- targetSdkVersion 33
- versionCode 1090
- versionName "1.0.9.0"
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- kotlinOptions {
- jvmTarget = '1.8'
- }
-
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
- buildFeatures {
- viewBinding true
- }
-
- applicationVariants.configureEach { variant ->
- variant.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 fileTree(include: ['*.jar'], dir: 'libs')
- //基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
- //Google官方授权框架
- implementation 'pub.devrel:easypermissions:3.0.0'
- //沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
- //Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
- //图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.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.9.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
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
- // CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
- // CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
- // CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
- //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:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
- //大图
- implementation 'com.github.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
new file mode 100644
index 0000000..3561334
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,134 @@
+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 = 36
+
+ defaultConfig {
+ applicationId = "com.casic.br.operationsite"
+ minSdk = 26
+ targetSdk = 36
+ versionCode = 1090
+ versionName = "1.0.9.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.9.0")
+ implementation("androidx.appcompat:appcompat:1.6.1")
+ implementation("com.google.android.material:material:1.6.1")
+ //Google官方授权框架
+ implementation("pub.devrel:easypermissions:3.0.0")
+ //沉浸式状态栏。基础依赖包,必须要依赖
+ implementation("com.geyifeng.immersionbar:immersionbar:3.2.2")
+ //Kotlin协程
+ implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.5.1")
+ //MVVM+LiveData
+ implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-extensions:2.2.0")
+ //图片加载框架
+ implementation("com.github.bumptech.glide:glide:4.9.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.9.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:v8.4.0-release-jitpack")
+ //是否需要ExoPlayer模式
+ implementation("com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack")
+ //更多ijk的编码支持
+ implementation("com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack")
+ //大图
+ implementation("com.github.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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c394d71..95caacb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -24,7 +25,9 @@
-
+
@@ -48,7 +51,7 @@
android:theme="@style/Theme.OperationSite"
android:usesCleartextTraffic="true">
@@ -57,7 +60,6 @@
-
@@ -83,7 +85,9 @@
-
+
diff --git a/app/build.gradle b/app/build.gradle
deleted file mode 100644
index 496c7cc..0000000
--- a/app/build.gradle
+++ /dev/null
@@ -1,130 +0,0 @@
-import java.text.SimpleDateFormat
-
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-
-android {
- signingConfigs {
- release {
- storeFile file('OperationSite.jks')
- storePassword '123456789'
- keyAlias 'key0'
- keyPassword '123456789'
- }
- }
- compileSdkVersion 33
-
- defaultConfig {
- applicationId "com.casic.br.operationsite"
- minSdkVersion 26
- targetSdkVersion 33
- versionCode 1090
- versionName "1.0.9.0"
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- kotlinOptions {
- jvmTarget = '1.8'
- }
-
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
- buildFeatures {
- viewBinding true
- }
-
- applicationVariants.configureEach { variant ->
- variant.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 fileTree(include: ['*.jar'], dir: 'libs')
- //基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
- //Google官方授权框架
- implementation 'pub.devrel:easypermissions:3.0.0'
- //沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
- //Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
- //图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.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.9.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
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
- // CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
- // CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
- // CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
- //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:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
- //大图
- implementation 'com.github.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
new file mode 100644
index 0000000..3561334
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,134 @@
+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 = 36
+
+ defaultConfig {
+ applicationId = "com.casic.br.operationsite"
+ minSdk = 26
+ targetSdk = 36
+ versionCode = 1090
+ versionName = "1.0.9.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.9.0")
+ implementation("androidx.appcompat:appcompat:1.6.1")
+ implementation("com.google.android.material:material:1.6.1")
+ //Google官方授权框架
+ implementation("pub.devrel:easypermissions:3.0.0")
+ //沉浸式状态栏。基础依赖包,必须要依赖
+ implementation("com.geyifeng.immersionbar:immersionbar:3.2.2")
+ //Kotlin协程
+ implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.5.1")
+ //MVVM+LiveData
+ implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-extensions:2.2.0")
+ //图片加载框架
+ implementation("com.github.bumptech.glide:glide:4.9.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.9.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:v8.4.0-release-jitpack")
+ //是否需要ExoPlayer模式
+ implementation("com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack")
+ //更多ijk的编码支持
+ implementation("com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack")
+ //大图
+ implementation("com.github.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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c394d71..95caacb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -24,7 +25,9 @@
-
+
@@ -48,7 +51,7 @@
android:theme="@style/Theme.OperationSite"
android:usesCleartextTraffic="true">
@@ -57,7 +60,6 @@
-
@@ -83,7 +85,9 @@
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
index 3142bc9..8800a40 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
@@ -12,8 +12,14 @@
import android.util.DisplayMetrics
import android.view.Surface
import android.view.WindowManager
-import androidx.annotation.NonNull
-import androidx.camera.core.*
+import androidx.camera.core.AspectRatio
+import androidx.camera.core.CameraInfo
+import androidx.camera.core.CameraSelector
+import androidx.camera.core.CameraState
+import androidx.camera.core.ImageAnalysis
+import androidx.camera.core.ImageCapture
+import androidx.camera.core.ImageCaptureException
+import androidx.camera.core.Preview
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.core.content.ContextCompat
import com.casic.br.operationsite.R
@@ -30,8 +36,15 @@
import java.io.File
import java.io.IOException
import java.text.SimpleDateFormat
-import java.util.*
-import java.util.concurrent.*
+import java.util.Date
+import java.util.Locale
+import java.util.concurrent.ExecutionException
+import java.util.concurrent.ExecutorService
+import java.util.concurrent.Executors
+import java.util.concurrent.LinkedBlockingQueue
+import java.util.concurrent.ThreadFactory
+import java.util.concurrent.ThreadPoolExecutor
+import java.util.concurrent.TimeUnit
import kotlin.math.abs
@@ -96,7 +109,7 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
- private fun bindPreview(@NonNull cameraProvider: ProcessCameraProvider) {
+ private fun bindPreview(cameraProvider: ProcessCameraProvider) {
val screenAspectRatio: Int = if (android.os.Build.VERSION.SDK_INT >= 30) {
val metrics: Rect = windowManager.currentWindowMetrics.bounds
aspectRatio(metrics.width(), metrics.height())
diff --git a/app/build.gradle b/app/build.gradle
deleted file mode 100644
index 496c7cc..0000000
--- a/app/build.gradle
+++ /dev/null
@@ -1,130 +0,0 @@
-import java.text.SimpleDateFormat
-
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-
-android {
- signingConfigs {
- release {
- storeFile file('OperationSite.jks')
- storePassword '123456789'
- keyAlias 'key0'
- keyPassword '123456789'
- }
- }
- compileSdkVersion 33
-
- defaultConfig {
- applicationId "com.casic.br.operationsite"
- minSdkVersion 26
- targetSdkVersion 33
- versionCode 1090
- versionName "1.0.9.0"
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- kotlinOptions {
- jvmTarget = '1.8'
- }
-
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
- buildFeatures {
- viewBinding true
- }
-
- applicationVariants.configureEach { variant ->
- variant.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 fileTree(include: ['*.jar'], dir: 'libs')
- //基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
- //Google官方授权框架
- implementation 'pub.devrel:easypermissions:3.0.0'
- //沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
- //Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
- //图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.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.9.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
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
- // CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
- // CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
- // CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
- //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:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
- //大图
- implementation 'com.github.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
new file mode 100644
index 0000000..3561334
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,134 @@
+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 = 36
+
+ defaultConfig {
+ applicationId = "com.casic.br.operationsite"
+ minSdk = 26
+ targetSdk = 36
+ versionCode = 1090
+ versionName = "1.0.9.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.9.0")
+ implementation("androidx.appcompat:appcompat:1.6.1")
+ implementation("com.google.android.material:material:1.6.1")
+ //Google官方授权框架
+ implementation("pub.devrel:easypermissions:3.0.0")
+ //沉浸式状态栏。基础依赖包,必须要依赖
+ implementation("com.geyifeng.immersionbar:immersionbar:3.2.2")
+ //Kotlin协程
+ implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.5.1")
+ //MVVM+LiveData
+ implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-extensions:2.2.0")
+ //图片加载框架
+ implementation("com.github.bumptech.glide:glide:4.9.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.9.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:v8.4.0-release-jitpack")
+ //是否需要ExoPlayer模式
+ implementation("com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack")
+ //更多ijk的编码支持
+ implementation("com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack")
+ //大图
+ implementation("com.github.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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c394d71..95caacb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -24,7 +25,9 @@
-
+
@@ -48,7 +51,7 @@
android:theme="@style/Theme.OperationSite"
android:usesCleartextTraffic="true">
@@ -57,7 +60,6 @@
-
@@ -83,7 +85,9 @@
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
index 3142bc9..8800a40 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
@@ -12,8 +12,14 @@
import android.util.DisplayMetrics
import android.view.Surface
import android.view.WindowManager
-import androidx.annotation.NonNull
-import androidx.camera.core.*
+import androidx.camera.core.AspectRatio
+import androidx.camera.core.CameraInfo
+import androidx.camera.core.CameraSelector
+import androidx.camera.core.CameraState
+import androidx.camera.core.ImageAnalysis
+import androidx.camera.core.ImageCapture
+import androidx.camera.core.ImageCaptureException
+import androidx.camera.core.Preview
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.core.content.ContextCompat
import com.casic.br.operationsite.R
@@ -30,8 +36,15 @@
import java.io.File
import java.io.IOException
import java.text.SimpleDateFormat
-import java.util.*
-import java.util.concurrent.*
+import java.util.Date
+import java.util.Locale
+import java.util.concurrent.ExecutionException
+import java.util.concurrent.ExecutorService
+import java.util.concurrent.Executors
+import java.util.concurrent.LinkedBlockingQueue
+import java.util.concurrent.ThreadFactory
+import java.util.concurrent.ThreadPoolExecutor
+import java.util.concurrent.TimeUnit
import kotlin.math.abs
@@ -96,7 +109,7 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
- private fun bindPreview(@NonNull cameraProvider: ProcessCameraProvider) {
+ private fun bindPreview(cameraProvider: ProcessCameraProvider) {
val screenAspectRatio: Int = if (android.os.Build.VERSION.SDK_INT >= 30) {
val metrics: Rect = windowManager.currentWindowMetrics.bounds
aspectRatio(metrics.width(), metrics.height())
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 c292dc5..c6bfc82 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
@@ -2,6 +2,7 @@
import android.os.Bundle
import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.MapsInitializer
import com.casic.br.operationsite.R
import com.casic.br.operationsite.databinding.ActivityLoginBinding
import com.casic.br.operationsite.extensions.initImmersionBar
@@ -18,8 +19,10 @@
import com.pengxh.kt.lite.utils.LoadState
import com.pengxh.kt.lite.utils.LoadingDialog
import com.pengxh.kt.lite.utils.SaveKeyValues
+import pub.devrel.easypermissions.EasyPermissions
-class LoginActivity : KotlinBaseActivity() {
+class LoginActivity : KotlinBaseActivity(),
+ EasyPermissions.PermissionCallbacks {
private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var loginViewModel: LoginViewModel
@@ -35,6 +38,16 @@
override fun initOnCreate(savedInstanceState: Bundle?) {
ActivityStackManager.addActivity(this)
+
+ if (!EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
+ EasyPermissions.requestPermissions(
+ this@LoginActivity,
+ resources.getString(R.string.app_name) + "需要获取相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
+ }
+
// 设置默认账号密码
binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String)
binding.userPasswordView.setText(
@@ -97,4 +110,20 @@
}
}
}
+
+ override fun onRequestPermissionsResult(
+ requestCode: Int, permissions: Array, grantResults: IntArray
+ ) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults)
+ EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
+ }
+
+ override fun onPermissionsGranted(requestCode: Int, perms: List) {
+ MapsInitializer.updatePrivacyShow(this, true, true)
+ MapsInitializer.updatePrivacyAgree(this, true)
+ }
+
+ override fun onPermissionsDenied(requestCode: Int, perms: List) {
+
+ }
}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
deleted file mode 100644
index 496c7cc..0000000
--- a/app/build.gradle
+++ /dev/null
@@ -1,130 +0,0 @@
-import java.text.SimpleDateFormat
-
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-
-android {
- signingConfigs {
- release {
- storeFile file('OperationSite.jks')
- storePassword '123456789'
- keyAlias 'key0'
- keyPassword '123456789'
- }
- }
- compileSdkVersion 33
-
- defaultConfig {
- applicationId "com.casic.br.operationsite"
- minSdkVersion 26
- targetSdkVersion 33
- versionCode 1090
- versionName "1.0.9.0"
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- kotlinOptions {
- jvmTarget = '1.8'
- }
-
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
- buildFeatures {
- viewBinding true
- }
-
- applicationVariants.configureEach { variant ->
- variant.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 fileTree(include: ['*.jar'], dir: 'libs')
- //基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
- //Google官方授权框架
- implementation 'pub.devrel:easypermissions:3.0.0'
- //沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
- //Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
- //图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.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.9.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
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
- // CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
- // CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
- // CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
- //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:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
- //大图
- implementation 'com.github.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
new file mode 100644
index 0000000..3561334
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,134 @@
+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 = 36
+
+ defaultConfig {
+ applicationId = "com.casic.br.operationsite"
+ minSdk = 26
+ targetSdk = 36
+ versionCode = 1090
+ versionName = "1.0.9.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.9.0")
+ implementation("androidx.appcompat:appcompat:1.6.1")
+ implementation("com.google.android.material:material:1.6.1")
+ //Google官方授权框架
+ implementation("pub.devrel:easypermissions:3.0.0")
+ //沉浸式状态栏。基础依赖包,必须要依赖
+ implementation("com.geyifeng.immersionbar:immersionbar:3.2.2")
+ //Kotlin协程
+ implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.5.1")
+ //MVVM+LiveData
+ implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-extensions:2.2.0")
+ //图片加载框架
+ implementation("com.github.bumptech.glide:glide:4.9.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.9.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:v8.4.0-release-jitpack")
+ //是否需要ExoPlayer模式
+ implementation("com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack")
+ //更多ijk的编码支持
+ implementation("com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack")
+ //大图
+ implementation("com.github.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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c394d71..95caacb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -24,7 +25,9 @@
-
+
@@ -48,7 +51,7 @@
android:theme="@style/Theme.OperationSite"
android:usesCleartextTraffic="true">
@@ -57,7 +60,6 @@
-
@@ -83,7 +85,9 @@
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
index 3142bc9..8800a40 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
@@ -12,8 +12,14 @@
import android.util.DisplayMetrics
import android.view.Surface
import android.view.WindowManager
-import androidx.annotation.NonNull
-import androidx.camera.core.*
+import androidx.camera.core.AspectRatio
+import androidx.camera.core.CameraInfo
+import androidx.camera.core.CameraSelector
+import androidx.camera.core.CameraState
+import androidx.camera.core.ImageAnalysis
+import androidx.camera.core.ImageCapture
+import androidx.camera.core.ImageCaptureException
+import androidx.camera.core.Preview
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.core.content.ContextCompat
import com.casic.br.operationsite.R
@@ -30,8 +36,15 @@
import java.io.File
import java.io.IOException
import java.text.SimpleDateFormat
-import java.util.*
-import java.util.concurrent.*
+import java.util.Date
+import java.util.Locale
+import java.util.concurrent.ExecutionException
+import java.util.concurrent.ExecutorService
+import java.util.concurrent.Executors
+import java.util.concurrent.LinkedBlockingQueue
+import java.util.concurrent.ThreadFactory
+import java.util.concurrent.ThreadPoolExecutor
+import java.util.concurrent.TimeUnit
import kotlin.math.abs
@@ -96,7 +109,7 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
- private fun bindPreview(@NonNull cameraProvider: ProcessCameraProvider) {
+ private fun bindPreview(cameraProvider: ProcessCameraProvider) {
val screenAspectRatio: Int = if (android.os.Build.VERSION.SDK_INT >= 30) {
val metrics: Rect = windowManager.currentWindowMetrics.bounds
aspectRatio(metrics.width(), metrics.height())
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 c292dc5..c6bfc82 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
@@ -2,6 +2,7 @@
import android.os.Bundle
import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.MapsInitializer
import com.casic.br.operationsite.R
import com.casic.br.operationsite.databinding.ActivityLoginBinding
import com.casic.br.operationsite.extensions.initImmersionBar
@@ -18,8 +19,10 @@
import com.pengxh.kt.lite.utils.LoadState
import com.pengxh.kt.lite.utils.LoadingDialog
import com.pengxh.kt.lite.utils.SaveKeyValues
+import pub.devrel.easypermissions.EasyPermissions
-class LoginActivity : KotlinBaseActivity() {
+class LoginActivity : KotlinBaseActivity(),
+ EasyPermissions.PermissionCallbacks {
private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var loginViewModel: LoginViewModel
@@ -35,6 +38,16 @@
override fun initOnCreate(savedInstanceState: Bundle?) {
ActivityStackManager.addActivity(this)
+
+ if (!EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
+ EasyPermissions.requestPermissions(
+ this@LoginActivity,
+ resources.getString(R.string.app_name) + "需要获取相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
+ }
+
// 设置默认账号密码
binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String)
binding.userPasswordView.setText(
@@ -97,4 +110,20 @@
}
}
}
+
+ override fun onRequestPermissionsResult(
+ requestCode: Int, permissions: Array, grantResults: IntArray
+ ) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults)
+ EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
+ }
+
+ override fun onPermissionsGranted(requestCode: Int, perms: List) {
+ MapsInitializer.updatePrivacyShow(this, true, true)
+ MapsInitializer.updatePrivacyAgree(this, true)
+ }
+
+ override fun onPermissionsDenied(requestCode: Int, perms: List) {
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt
deleted file mode 100644
index 88ac116..0000000
--- a/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.casic.br.operationsite.view
-
-import android.os.Bundle
-import androidx.appcompat.app.AppCompatActivity
-import com.amap.api.maps.MapsInitializer
-import com.casic.br.operationsite.R
-import com.casic.br.operationsite.utils.LocaleConstant
-import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ActivityStackManager
-import pub.devrel.easypermissions.EasyPermissions
-import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-
-class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- ActivityStackManager.addActivity(this)
- if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
- startLoginActivity()
- } else {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
- }
-
- private fun startLoginActivity() {
- //先把导航隐私政策声明,后面导航会用到
- MapsInitializer.updatePrivacyShow(this, true, true)
- MapsInitializer.updatePrivacyAgree(this, true)
- navigatePageTo()
- finish()
- }
-
- override fun onRequestPermissionsResult(
- requestCode: Int, permissions: Array, grantResults: IntArray
- ) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults)
- EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
- }
-
- override fun onPermissionsGranted(requestCode: Int, perms: List) {
- startLoginActivity()
- }
-
- override fun onPermissionsDenied(requestCode: Int, perms: List) {
-
- }
-}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
deleted file mode 100644
index 496c7cc..0000000
--- a/app/build.gradle
+++ /dev/null
@@ -1,130 +0,0 @@
-import java.text.SimpleDateFormat
-
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-
-android {
- signingConfigs {
- release {
- storeFile file('OperationSite.jks')
- storePassword '123456789'
- keyAlias 'key0'
- keyPassword '123456789'
- }
- }
- compileSdkVersion 33
-
- defaultConfig {
- applicationId "com.casic.br.operationsite"
- minSdkVersion 26
- targetSdkVersion 33
- versionCode 1090
- versionName "1.0.9.0"
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- kotlinOptions {
- jvmTarget = '1.8'
- }
-
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
- buildFeatures {
- viewBinding true
- }
-
- applicationVariants.configureEach { variant ->
- variant.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 fileTree(include: ['*.jar'], dir: 'libs')
- //基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
- //Google官方授权框架
- implementation 'pub.devrel:easypermissions:3.0.0'
- //沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
- //Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
- //图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.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.9.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
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
- // CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
- // CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
- // CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
- //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:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
- //大图
- implementation 'com.github.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
new file mode 100644
index 0000000..3561334
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,134 @@
+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 = 36
+
+ defaultConfig {
+ applicationId = "com.casic.br.operationsite"
+ minSdk = 26
+ targetSdk = 36
+ versionCode = 1090
+ versionName = "1.0.9.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.9.0")
+ implementation("androidx.appcompat:appcompat:1.6.1")
+ implementation("com.google.android.material:material:1.6.1")
+ //Google官方授权框架
+ implementation("pub.devrel:easypermissions:3.0.0")
+ //沉浸式状态栏。基础依赖包,必须要依赖
+ implementation("com.geyifeng.immersionbar:immersionbar:3.2.2")
+ //Kotlin协程
+ implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.5.1")
+ //MVVM+LiveData
+ implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-extensions:2.2.0")
+ //图片加载框架
+ implementation("com.github.bumptech.glide:glide:4.9.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.9.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:v8.4.0-release-jitpack")
+ //是否需要ExoPlayer模式
+ implementation("com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack")
+ //更多ijk的编码支持
+ implementation("com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack")
+ //大图
+ implementation("com.github.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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c394d71..95caacb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -24,7 +25,9 @@
-
+
@@ -48,7 +51,7 @@
android:theme="@style/Theme.OperationSite"
android:usesCleartextTraffic="true">
@@ -57,7 +60,6 @@
-
@@ -83,7 +85,9 @@
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
index 3142bc9..8800a40 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
@@ -12,8 +12,14 @@
import android.util.DisplayMetrics
import android.view.Surface
import android.view.WindowManager
-import androidx.annotation.NonNull
-import androidx.camera.core.*
+import androidx.camera.core.AspectRatio
+import androidx.camera.core.CameraInfo
+import androidx.camera.core.CameraSelector
+import androidx.camera.core.CameraState
+import androidx.camera.core.ImageAnalysis
+import androidx.camera.core.ImageCapture
+import androidx.camera.core.ImageCaptureException
+import androidx.camera.core.Preview
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.core.content.ContextCompat
import com.casic.br.operationsite.R
@@ -30,8 +36,15 @@
import java.io.File
import java.io.IOException
import java.text.SimpleDateFormat
-import java.util.*
-import java.util.concurrent.*
+import java.util.Date
+import java.util.Locale
+import java.util.concurrent.ExecutionException
+import java.util.concurrent.ExecutorService
+import java.util.concurrent.Executors
+import java.util.concurrent.LinkedBlockingQueue
+import java.util.concurrent.ThreadFactory
+import java.util.concurrent.ThreadPoolExecutor
+import java.util.concurrent.TimeUnit
import kotlin.math.abs
@@ -96,7 +109,7 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
- private fun bindPreview(@NonNull cameraProvider: ProcessCameraProvider) {
+ private fun bindPreview(cameraProvider: ProcessCameraProvider) {
val screenAspectRatio: Int = if (android.os.Build.VERSION.SDK_INT >= 30) {
val metrics: Rect = windowManager.currentWindowMetrics.bounds
aspectRatio(metrics.width(), metrics.height())
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 c292dc5..c6bfc82 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
@@ -2,6 +2,7 @@
import android.os.Bundle
import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.MapsInitializer
import com.casic.br.operationsite.R
import com.casic.br.operationsite.databinding.ActivityLoginBinding
import com.casic.br.operationsite.extensions.initImmersionBar
@@ -18,8 +19,10 @@
import com.pengxh.kt.lite.utils.LoadState
import com.pengxh.kt.lite.utils.LoadingDialog
import com.pengxh.kt.lite.utils.SaveKeyValues
+import pub.devrel.easypermissions.EasyPermissions
-class LoginActivity : KotlinBaseActivity() {
+class LoginActivity : KotlinBaseActivity(),
+ EasyPermissions.PermissionCallbacks {
private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var loginViewModel: LoginViewModel
@@ -35,6 +38,16 @@
override fun initOnCreate(savedInstanceState: Bundle?) {
ActivityStackManager.addActivity(this)
+
+ if (!EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
+ EasyPermissions.requestPermissions(
+ this@LoginActivity,
+ resources.getString(R.string.app_name) + "需要获取相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
+ }
+
// 设置默认账号密码
binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String)
binding.userPasswordView.setText(
@@ -97,4 +110,20 @@
}
}
}
+
+ override fun onRequestPermissionsResult(
+ requestCode: Int, permissions: Array, grantResults: IntArray
+ ) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults)
+ EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
+ }
+
+ override fun onPermissionsGranted(requestCode: Int, perms: List) {
+ MapsInitializer.updatePrivacyShow(this, true, true)
+ MapsInitializer.updatePrivacyAgree(this, true)
+ }
+
+ override fun onPermissionsDenied(requestCode: Int, perms: List) {
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt
deleted file mode 100644
index 88ac116..0000000
--- a/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.casic.br.operationsite.view
-
-import android.os.Bundle
-import androidx.appcompat.app.AppCompatActivity
-import com.amap.api.maps.MapsInitializer
-import com.casic.br.operationsite.R
-import com.casic.br.operationsite.utils.LocaleConstant
-import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ActivityStackManager
-import pub.devrel.easypermissions.EasyPermissions
-import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-
-class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- ActivityStackManager.addActivity(this)
- if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
- startLoginActivity()
- } else {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
- }
-
- private fun startLoginActivity() {
- //先把导航隐私政策声明,后面导航会用到
- MapsInitializer.updatePrivacyShow(this, true, true)
- MapsInitializer.updatePrivacyAgree(this, true)
- navigatePageTo()
- finish()
- }
-
- override fun onRequestPermissionsResult(
- requestCode: Int, permissions: Array, grantResults: IntArray
- ) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults)
- EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
- }
-
- override fun onPermissionsGranted(requestCode: Int, perms: List) {
- startLoginActivity()
- }
-
- override fun onPermissionsDenied(requestCode: Int, perms: List) {
-
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt b/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
index b05aa5b..d26ce5b 100644
--- a/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
+++ b/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
@@ -6,6 +6,7 @@
import android.graphics.Path
import android.widget.TextView
import androidx.core.graphics.drawable.toBitmap
+import androidx.core.graphics.withTranslation
import com.casic.br.operationsite.R
import com.github.mikephil.charting.components.MarkerView
import com.github.mikephil.charting.data.Entry
@@ -61,15 +62,13 @@
return
}
- val saveId = canvas.save()
- canvas.translate(posX, posY)
+ canvas.withTranslation(posX, posY) {
+ canvas.drawBitmap(dotBitmap, -dotBitmap.width / 2f, -dotBitmap.height / 2f, null)
- canvas.drawBitmap(dotBitmap, -dotBitmap.width / 2f, -dotBitmap.height / 2f, null)
+ drawArrow(canvas, posX, posY)
- drawArrow(canvas, posX, posY)
-
- draw(canvas)
- canvas.restoreToCount(saveId)
+ draw(canvas)
+ }
}
private fun drawArrow(canvas: Canvas, posX: Float, posY: Float) {
diff --git a/app/build.gradle b/app/build.gradle
deleted file mode 100644
index 496c7cc..0000000
--- a/app/build.gradle
+++ /dev/null
@@ -1,130 +0,0 @@
-import java.text.SimpleDateFormat
-
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-
-android {
- signingConfigs {
- release {
- storeFile file('OperationSite.jks')
- storePassword '123456789'
- keyAlias 'key0'
- keyPassword '123456789'
- }
- }
- compileSdkVersion 33
-
- defaultConfig {
- applicationId "com.casic.br.operationsite"
- minSdkVersion 26
- targetSdkVersion 33
- versionCode 1090
- versionName "1.0.9.0"
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- kotlinOptions {
- jvmTarget = '1.8'
- }
-
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
- buildFeatures {
- viewBinding true
- }
-
- applicationVariants.configureEach { variant ->
- variant.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 fileTree(include: ['*.jar'], dir: 'libs')
- //基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
- //Google官方授权框架
- implementation 'pub.devrel:easypermissions:3.0.0'
- //沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
- //Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
- //图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.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.9.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
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
- // CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
- // CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
- // CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
- //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:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
- //大图
- implementation 'com.github.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
new file mode 100644
index 0000000..3561334
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,134 @@
+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 = 36
+
+ defaultConfig {
+ applicationId = "com.casic.br.operationsite"
+ minSdk = 26
+ targetSdk = 36
+ versionCode = 1090
+ versionName = "1.0.9.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.9.0")
+ implementation("androidx.appcompat:appcompat:1.6.1")
+ implementation("com.google.android.material:material:1.6.1")
+ //Google官方授权框架
+ implementation("pub.devrel:easypermissions:3.0.0")
+ //沉浸式状态栏。基础依赖包,必须要依赖
+ implementation("com.geyifeng.immersionbar:immersionbar:3.2.2")
+ //Kotlin协程
+ implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.5.1")
+ //MVVM+LiveData
+ implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-extensions:2.2.0")
+ //图片加载框架
+ implementation("com.github.bumptech.glide:glide:4.9.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.9.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:v8.4.0-release-jitpack")
+ //是否需要ExoPlayer模式
+ implementation("com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack")
+ //更多ijk的编码支持
+ implementation("com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack")
+ //大图
+ implementation("com.github.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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c394d71..95caacb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -24,7 +25,9 @@
-
+
@@ -48,7 +51,7 @@
android:theme="@style/Theme.OperationSite"
android:usesCleartextTraffic="true">
@@ -57,7 +60,6 @@
-
@@ -83,7 +85,9 @@
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
index 3142bc9..8800a40 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
@@ -12,8 +12,14 @@
import android.util.DisplayMetrics
import android.view.Surface
import android.view.WindowManager
-import androidx.annotation.NonNull
-import androidx.camera.core.*
+import androidx.camera.core.AspectRatio
+import androidx.camera.core.CameraInfo
+import androidx.camera.core.CameraSelector
+import androidx.camera.core.CameraState
+import androidx.camera.core.ImageAnalysis
+import androidx.camera.core.ImageCapture
+import androidx.camera.core.ImageCaptureException
+import androidx.camera.core.Preview
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.core.content.ContextCompat
import com.casic.br.operationsite.R
@@ -30,8 +36,15 @@
import java.io.File
import java.io.IOException
import java.text.SimpleDateFormat
-import java.util.*
-import java.util.concurrent.*
+import java.util.Date
+import java.util.Locale
+import java.util.concurrent.ExecutionException
+import java.util.concurrent.ExecutorService
+import java.util.concurrent.Executors
+import java.util.concurrent.LinkedBlockingQueue
+import java.util.concurrent.ThreadFactory
+import java.util.concurrent.ThreadPoolExecutor
+import java.util.concurrent.TimeUnit
import kotlin.math.abs
@@ -96,7 +109,7 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
- private fun bindPreview(@NonNull cameraProvider: ProcessCameraProvider) {
+ private fun bindPreview(cameraProvider: ProcessCameraProvider) {
val screenAspectRatio: Int = if (android.os.Build.VERSION.SDK_INT >= 30) {
val metrics: Rect = windowManager.currentWindowMetrics.bounds
aspectRatio(metrics.width(), metrics.height())
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 c292dc5..c6bfc82 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
@@ -2,6 +2,7 @@
import android.os.Bundle
import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.MapsInitializer
import com.casic.br.operationsite.R
import com.casic.br.operationsite.databinding.ActivityLoginBinding
import com.casic.br.operationsite.extensions.initImmersionBar
@@ -18,8 +19,10 @@
import com.pengxh.kt.lite.utils.LoadState
import com.pengxh.kt.lite.utils.LoadingDialog
import com.pengxh.kt.lite.utils.SaveKeyValues
+import pub.devrel.easypermissions.EasyPermissions
-class LoginActivity : KotlinBaseActivity() {
+class LoginActivity : KotlinBaseActivity(),
+ EasyPermissions.PermissionCallbacks {
private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var loginViewModel: LoginViewModel
@@ -35,6 +38,16 @@
override fun initOnCreate(savedInstanceState: Bundle?) {
ActivityStackManager.addActivity(this)
+
+ if (!EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
+ EasyPermissions.requestPermissions(
+ this@LoginActivity,
+ resources.getString(R.string.app_name) + "需要获取相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
+ }
+
// 设置默认账号密码
binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String)
binding.userPasswordView.setText(
@@ -97,4 +110,20 @@
}
}
}
+
+ override fun onRequestPermissionsResult(
+ requestCode: Int, permissions: Array, grantResults: IntArray
+ ) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults)
+ EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
+ }
+
+ override fun onPermissionsGranted(requestCode: Int, perms: List) {
+ MapsInitializer.updatePrivacyShow(this, true, true)
+ MapsInitializer.updatePrivacyAgree(this, true)
+ }
+
+ override fun onPermissionsDenied(requestCode: Int, perms: List) {
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt
deleted file mode 100644
index 88ac116..0000000
--- a/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.casic.br.operationsite.view
-
-import android.os.Bundle
-import androidx.appcompat.app.AppCompatActivity
-import com.amap.api.maps.MapsInitializer
-import com.casic.br.operationsite.R
-import com.casic.br.operationsite.utils.LocaleConstant
-import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ActivityStackManager
-import pub.devrel.easypermissions.EasyPermissions
-import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-
-class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- ActivityStackManager.addActivity(this)
- if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
- startLoginActivity()
- } else {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
- }
-
- private fun startLoginActivity() {
- //先把导航隐私政策声明,后面导航会用到
- MapsInitializer.updatePrivacyShow(this, true, true)
- MapsInitializer.updatePrivacyAgree(this, true)
- navigatePageTo()
- finish()
- }
-
- override fun onRequestPermissionsResult(
- requestCode: Int, permissions: Array, grantResults: IntArray
- ) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults)
- EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
- }
-
- override fun onPermissionsGranted(requestCode: Int, perms: List) {
- startLoginActivity()
- }
-
- override fun onPermissionsDenied(requestCode: Int, perms: List) {
-
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt b/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
index b05aa5b..d26ce5b 100644
--- a/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
+++ b/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
@@ -6,6 +6,7 @@
import android.graphics.Path
import android.widget.TextView
import androidx.core.graphics.drawable.toBitmap
+import androidx.core.graphics.withTranslation
import com.casic.br.operationsite.R
import com.github.mikephil.charting.components.MarkerView
import com.github.mikephil.charting.data.Entry
@@ -61,15 +62,13 @@
return
}
- val saveId = canvas.save()
- canvas.translate(posX, posY)
+ canvas.withTranslation(posX, posY) {
+ canvas.drawBitmap(dotBitmap, -dotBitmap.width / 2f, -dotBitmap.height / 2f, null)
- canvas.drawBitmap(dotBitmap, -dotBitmap.width / 2f, -dotBitmap.height / 2f, null)
+ drawArrow(canvas, posX, posY)
- drawArrow(canvas, posX, posY)
-
- draw(canvas)
- canvas.restoreToCount(saveId)
+ draw(canvas)
+ }
}
private fun drawArrow(canvas: Canvas, posX: Float, posY: Float) {
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 4054610..aebab2b 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -1,9 +1,12 @@
-
+
diff --git a/app/build.gradle b/app/build.gradle
deleted file mode 100644
index 496c7cc..0000000
--- a/app/build.gradle
+++ /dev/null
@@ -1,130 +0,0 @@
-import java.text.SimpleDateFormat
-
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-
-android {
- signingConfigs {
- release {
- storeFile file('OperationSite.jks')
- storePassword '123456789'
- keyAlias 'key0'
- keyPassword '123456789'
- }
- }
- compileSdkVersion 33
-
- defaultConfig {
- applicationId "com.casic.br.operationsite"
- minSdkVersion 26
- targetSdkVersion 33
- versionCode 1090
- versionName "1.0.9.0"
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- kotlinOptions {
- jvmTarget = '1.8'
- }
-
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
- buildFeatures {
- viewBinding true
- }
-
- applicationVariants.configureEach { variant ->
- variant.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 fileTree(include: ['*.jar'], dir: 'libs')
- //基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
- //Google官方授权框架
- implementation 'pub.devrel:easypermissions:3.0.0'
- //沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
- //Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
- //图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.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.9.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
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
- // CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
- // CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
- // CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
- //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:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
- //大图
- implementation 'com.github.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
new file mode 100644
index 0000000..3561334
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,134 @@
+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 = 36
+
+ defaultConfig {
+ applicationId = "com.casic.br.operationsite"
+ minSdk = 26
+ targetSdk = 36
+ versionCode = 1090
+ versionName = "1.0.9.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.9.0")
+ implementation("androidx.appcompat:appcompat:1.6.1")
+ implementation("com.google.android.material:material:1.6.1")
+ //Google官方授权框架
+ implementation("pub.devrel:easypermissions:3.0.0")
+ //沉浸式状态栏。基础依赖包,必须要依赖
+ implementation("com.geyifeng.immersionbar:immersionbar:3.2.2")
+ //Kotlin协程
+ implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.5.1")
+ //MVVM+LiveData
+ implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-extensions:2.2.0")
+ //图片加载框架
+ implementation("com.github.bumptech.glide:glide:4.9.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.9.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:v8.4.0-release-jitpack")
+ //是否需要ExoPlayer模式
+ implementation("com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack")
+ //更多ijk的编码支持
+ implementation("com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack")
+ //大图
+ implementation("com.github.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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c394d71..95caacb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -24,7 +25,9 @@
-
+
@@ -48,7 +51,7 @@
android:theme="@style/Theme.OperationSite"
android:usesCleartextTraffic="true">
@@ -57,7 +60,6 @@
-
@@ -83,7 +85,9 @@
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
index 3142bc9..8800a40 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
@@ -12,8 +12,14 @@
import android.util.DisplayMetrics
import android.view.Surface
import android.view.WindowManager
-import androidx.annotation.NonNull
-import androidx.camera.core.*
+import androidx.camera.core.AspectRatio
+import androidx.camera.core.CameraInfo
+import androidx.camera.core.CameraSelector
+import androidx.camera.core.CameraState
+import androidx.camera.core.ImageAnalysis
+import androidx.camera.core.ImageCapture
+import androidx.camera.core.ImageCaptureException
+import androidx.camera.core.Preview
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.core.content.ContextCompat
import com.casic.br.operationsite.R
@@ -30,8 +36,15 @@
import java.io.File
import java.io.IOException
import java.text.SimpleDateFormat
-import java.util.*
-import java.util.concurrent.*
+import java.util.Date
+import java.util.Locale
+import java.util.concurrent.ExecutionException
+import java.util.concurrent.ExecutorService
+import java.util.concurrent.Executors
+import java.util.concurrent.LinkedBlockingQueue
+import java.util.concurrent.ThreadFactory
+import java.util.concurrent.ThreadPoolExecutor
+import java.util.concurrent.TimeUnit
import kotlin.math.abs
@@ -96,7 +109,7 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
- private fun bindPreview(@NonNull cameraProvider: ProcessCameraProvider) {
+ private fun bindPreview(cameraProvider: ProcessCameraProvider) {
val screenAspectRatio: Int = if (android.os.Build.VERSION.SDK_INT >= 30) {
val metrics: Rect = windowManager.currentWindowMetrics.bounds
aspectRatio(metrics.width(), metrics.height())
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 c292dc5..c6bfc82 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
@@ -2,6 +2,7 @@
import android.os.Bundle
import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.MapsInitializer
import com.casic.br.operationsite.R
import com.casic.br.operationsite.databinding.ActivityLoginBinding
import com.casic.br.operationsite.extensions.initImmersionBar
@@ -18,8 +19,10 @@
import com.pengxh.kt.lite.utils.LoadState
import com.pengxh.kt.lite.utils.LoadingDialog
import com.pengxh.kt.lite.utils.SaveKeyValues
+import pub.devrel.easypermissions.EasyPermissions
-class LoginActivity : KotlinBaseActivity() {
+class LoginActivity : KotlinBaseActivity(),
+ EasyPermissions.PermissionCallbacks {
private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var loginViewModel: LoginViewModel
@@ -35,6 +38,16 @@
override fun initOnCreate(savedInstanceState: Bundle?) {
ActivityStackManager.addActivity(this)
+
+ if (!EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
+ EasyPermissions.requestPermissions(
+ this@LoginActivity,
+ resources.getString(R.string.app_name) + "需要获取相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
+ }
+
// 设置默认账号密码
binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String)
binding.userPasswordView.setText(
@@ -97,4 +110,20 @@
}
}
}
+
+ override fun onRequestPermissionsResult(
+ requestCode: Int, permissions: Array, grantResults: IntArray
+ ) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults)
+ EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
+ }
+
+ override fun onPermissionsGranted(requestCode: Int, perms: List) {
+ MapsInitializer.updatePrivacyShow(this, true, true)
+ MapsInitializer.updatePrivacyAgree(this, true)
+ }
+
+ override fun onPermissionsDenied(requestCode: Int, perms: List) {
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt
deleted file mode 100644
index 88ac116..0000000
--- a/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.casic.br.operationsite.view
-
-import android.os.Bundle
-import androidx.appcompat.app.AppCompatActivity
-import com.amap.api.maps.MapsInitializer
-import com.casic.br.operationsite.R
-import com.casic.br.operationsite.utils.LocaleConstant
-import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ActivityStackManager
-import pub.devrel.easypermissions.EasyPermissions
-import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-
-class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- ActivityStackManager.addActivity(this)
- if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
- startLoginActivity()
- } else {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
- }
-
- private fun startLoginActivity() {
- //先把导航隐私政策声明,后面导航会用到
- MapsInitializer.updatePrivacyShow(this, true, true)
- MapsInitializer.updatePrivacyAgree(this, true)
- navigatePageTo()
- finish()
- }
-
- override fun onRequestPermissionsResult(
- requestCode: Int, permissions: Array, grantResults: IntArray
- ) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults)
- EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
- }
-
- override fun onPermissionsGranted(requestCode: Int, perms: List) {
- startLoginActivity()
- }
-
- override fun onPermissionsDenied(requestCode: Int, perms: List) {
-
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt b/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
index b05aa5b..d26ce5b 100644
--- a/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
+++ b/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
@@ -6,6 +6,7 @@
import android.graphics.Path
import android.widget.TextView
import androidx.core.graphics.drawable.toBitmap
+import androidx.core.graphics.withTranslation
import com.casic.br.operationsite.R
import com.github.mikephil.charting.components.MarkerView
import com.github.mikephil.charting.data.Entry
@@ -61,15 +62,13 @@
return
}
- val saveId = canvas.save()
- canvas.translate(posX, posY)
+ canvas.withTranslation(posX, posY) {
+ canvas.drawBitmap(dotBitmap, -dotBitmap.width / 2f, -dotBitmap.height / 2f, null)
- canvas.drawBitmap(dotBitmap, -dotBitmap.width / 2f, -dotBitmap.height / 2f, null)
+ drawArrow(canvas, posX, posY)
- drawArrow(canvas, posX, posY)
-
- draw(canvas)
- canvas.restoreToCount(saveId)
+ draw(canvas)
+ }
}
private fun drawArrow(canvas: Canvas, posX: Float, posY: Float) {
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 4054610..aebab2b 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -1,9 +1,12 @@
-
+
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index 07b29b5..0000000
--- a/build.gradle
+++ /dev/null
@@ -1,28 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-buildscript {
- ext.kotlin_version = '1.6.10'
- repositories {
- maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
- google()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:4.2.2'
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
-
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
-}
-
-allprojects {
- repositories {
- maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
- //依赖库
- maven { url 'https://jitpack.io' }
- google()
- }
-}
-
-tasks.register('clean', Delete) {
- delete rootProject.buildDir
-}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
deleted file mode 100644
index 496c7cc..0000000
--- a/app/build.gradle
+++ /dev/null
@@ -1,130 +0,0 @@
-import java.text.SimpleDateFormat
-
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-
-android {
- signingConfigs {
- release {
- storeFile file('OperationSite.jks')
- storePassword '123456789'
- keyAlias 'key0'
- keyPassword '123456789'
- }
- }
- compileSdkVersion 33
-
- defaultConfig {
- applicationId "com.casic.br.operationsite"
- minSdkVersion 26
- targetSdkVersion 33
- versionCode 1090
- versionName "1.0.9.0"
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- kotlinOptions {
- jvmTarget = '1.8'
- }
-
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
- buildFeatures {
- viewBinding true
- }
-
- applicationVariants.configureEach { variant ->
- variant.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 fileTree(include: ['*.jar'], dir: 'libs')
- //基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
- //Google官方授权框架
- implementation 'pub.devrel:easypermissions:3.0.0'
- //沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
- //Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
- //图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.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.9.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
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
- // CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
- // CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
- // CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
- //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:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
- //大图
- implementation 'com.github.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
new file mode 100644
index 0000000..3561334
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,134 @@
+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 = 36
+
+ defaultConfig {
+ applicationId = "com.casic.br.operationsite"
+ minSdk = 26
+ targetSdk = 36
+ versionCode = 1090
+ versionName = "1.0.9.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.9.0")
+ implementation("androidx.appcompat:appcompat:1.6.1")
+ implementation("com.google.android.material:material:1.6.1")
+ //Google官方授权框架
+ implementation("pub.devrel:easypermissions:3.0.0")
+ //沉浸式状态栏。基础依赖包,必须要依赖
+ implementation("com.geyifeng.immersionbar:immersionbar:3.2.2")
+ //Kotlin协程
+ implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.5.1")
+ //MVVM+LiveData
+ implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-extensions:2.2.0")
+ //图片加载框架
+ implementation("com.github.bumptech.glide:glide:4.9.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.9.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:v8.4.0-release-jitpack")
+ //是否需要ExoPlayer模式
+ implementation("com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack")
+ //更多ijk的编码支持
+ implementation("com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack")
+ //大图
+ implementation("com.github.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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c394d71..95caacb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -24,7 +25,9 @@
-
+
@@ -48,7 +51,7 @@
android:theme="@style/Theme.OperationSite"
android:usesCleartextTraffic="true">
@@ -57,7 +60,6 @@
-
@@ -83,7 +85,9 @@
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
index 3142bc9..8800a40 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
@@ -12,8 +12,14 @@
import android.util.DisplayMetrics
import android.view.Surface
import android.view.WindowManager
-import androidx.annotation.NonNull
-import androidx.camera.core.*
+import androidx.camera.core.AspectRatio
+import androidx.camera.core.CameraInfo
+import androidx.camera.core.CameraSelector
+import androidx.camera.core.CameraState
+import androidx.camera.core.ImageAnalysis
+import androidx.camera.core.ImageCapture
+import androidx.camera.core.ImageCaptureException
+import androidx.camera.core.Preview
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.core.content.ContextCompat
import com.casic.br.operationsite.R
@@ -30,8 +36,15 @@
import java.io.File
import java.io.IOException
import java.text.SimpleDateFormat
-import java.util.*
-import java.util.concurrent.*
+import java.util.Date
+import java.util.Locale
+import java.util.concurrent.ExecutionException
+import java.util.concurrent.ExecutorService
+import java.util.concurrent.Executors
+import java.util.concurrent.LinkedBlockingQueue
+import java.util.concurrent.ThreadFactory
+import java.util.concurrent.ThreadPoolExecutor
+import java.util.concurrent.TimeUnit
import kotlin.math.abs
@@ -96,7 +109,7 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
- private fun bindPreview(@NonNull cameraProvider: ProcessCameraProvider) {
+ private fun bindPreview(cameraProvider: ProcessCameraProvider) {
val screenAspectRatio: Int = if (android.os.Build.VERSION.SDK_INT >= 30) {
val metrics: Rect = windowManager.currentWindowMetrics.bounds
aspectRatio(metrics.width(), metrics.height())
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 c292dc5..c6bfc82 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
@@ -2,6 +2,7 @@
import android.os.Bundle
import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.MapsInitializer
import com.casic.br.operationsite.R
import com.casic.br.operationsite.databinding.ActivityLoginBinding
import com.casic.br.operationsite.extensions.initImmersionBar
@@ -18,8 +19,10 @@
import com.pengxh.kt.lite.utils.LoadState
import com.pengxh.kt.lite.utils.LoadingDialog
import com.pengxh.kt.lite.utils.SaveKeyValues
+import pub.devrel.easypermissions.EasyPermissions
-class LoginActivity : KotlinBaseActivity() {
+class LoginActivity : KotlinBaseActivity(),
+ EasyPermissions.PermissionCallbacks {
private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var loginViewModel: LoginViewModel
@@ -35,6 +38,16 @@
override fun initOnCreate(savedInstanceState: Bundle?) {
ActivityStackManager.addActivity(this)
+
+ if (!EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
+ EasyPermissions.requestPermissions(
+ this@LoginActivity,
+ resources.getString(R.string.app_name) + "需要获取相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
+ }
+
// 设置默认账号密码
binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String)
binding.userPasswordView.setText(
@@ -97,4 +110,20 @@
}
}
}
+
+ override fun onRequestPermissionsResult(
+ requestCode: Int, permissions: Array, grantResults: IntArray
+ ) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults)
+ EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
+ }
+
+ override fun onPermissionsGranted(requestCode: Int, perms: List) {
+ MapsInitializer.updatePrivacyShow(this, true, true)
+ MapsInitializer.updatePrivacyAgree(this, true)
+ }
+
+ override fun onPermissionsDenied(requestCode: Int, perms: List) {
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt
deleted file mode 100644
index 88ac116..0000000
--- a/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.casic.br.operationsite.view
-
-import android.os.Bundle
-import androidx.appcompat.app.AppCompatActivity
-import com.amap.api.maps.MapsInitializer
-import com.casic.br.operationsite.R
-import com.casic.br.operationsite.utils.LocaleConstant
-import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ActivityStackManager
-import pub.devrel.easypermissions.EasyPermissions
-import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-
-class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- ActivityStackManager.addActivity(this)
- if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
- startLoginActivity()
- } else {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
- }
-
- private fun startLoginActivity() {
- //先把导航隐私政策声明,后面导航会用到
- MapsInitializer.updatePrivacyShow(this, true, true)
- MapsInitializer.updatePrivacyAgree(this, true)
- navigatePageTo()
- finish()
- }
-
- override fun onRequestPermissionsResult(
- requestCode: Int, permissions: Array, grantResults: IntArray
- ) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults)
- EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
- }
-
- override fun onPermissionsGranted(requestCode: Int, perms: List) {
- startLoginActivity()
- }
-
- override fun onPermissionsDenied(requestCode: Int, perms: List) {
-
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt b/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
index b05aa5b..d26ce5b 100644
--- a/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
+++ b/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
@@ -6,6 +6,7 @@
import android.graphics.Path
import android.widget.TextView
import androidx.core.graphics.drawable.toBitmap
+import androidx.core.graphics.withTranslation
import com.casic.br.operationsite.R
import com.github.mikephil.charting.components.MarkerView
import com.github.mikephil.charting.data.Entry
@@ -61,15 +62,13 @@
return
}
- val saveId = canvas.save()
- canvas.translate(posX, posY)
+ canvas.withTranslation(posX, posY) {
+ canvas.drawBitmap(dotBitmap, -dotBitmap.width / 2f, -dotBitmap.height / 2f, null)
- canvas.drawBitmap(dotBitmap, -dotBitmap.width / 2f, -dotBitmap.height / 2f, null)
+ drawArrow(canvas, posX, posY)
- drawArrow(canvas, posX, posY)
-
- draw(canvas)
- canvas.restoreToCount(saveId)
+ draw(canvas)
+ }
}
private fun drawArrow(canvas: Canvas, posX: Float, posY: Float) {
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 4054610..aebab2b 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -1,9 +1,12 @@
-
+
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index 07b29b5..0000000
--- a/build.gradle
+++ /dev/null
@@ -1,28 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-buildscript {
- ext.kotlin_version = '1.6.10'
- repositories {
- maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
- google()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:4.2.2'
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
-
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
-}
-
-allprojects {
- repositories {
- maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
- //依赖库
- maven { url 'https://jitpack.io' }
- google()
- }
-}
-
-tasks.register('clean', Delete) {
- delete rootProject.buildDir
-}
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
new file mode 100644
index 0000000..b12e2fc
--- /dev/null
+++ b/build.gradle.kts
@@ -0,0 +1,5 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+plugins {
+ id("com.android.application") version "8.1.0" apply false
+ id("org.jetbrains.kotlin.android") version "1.8.0" apply false
+}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
deleted file mode 100644
index 496c7cc..0000000
--- a/app/build.gradle
+++ /dev/null
@@ -1,130 +0,0 @@
-import java.text.SimpleDateFormat
-
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-
-android {
- signingConfigs {
- release {
- storeFile file('OperationSite.jks')
- storePassword '123456789'
- keyAlias 'key0'
- keyPassword '123456789'
- }
- }
- compileSdkVersion 33
-
- defaultConfig {
- applicationId "com.casic.br.operationsite"
- minSdkVersion 26
- targetSdkVersion 33
- versionCode 1090
- versionName "1.0.9.0"
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- kotlinOptions {
- jvmTarget = '1.8'
- }
-
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
- buildFeatures {
- viewBinding true
- }
-
- applicationVariants.configureEach { variant ->
- variant.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 fileTree(include: ['*.jar'], dir: 'libs')
- //基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
- //Google官方授权框架
- implementation 'pub.devrel:easypermissions:3.0.0'
- //沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
- //Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
- //图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.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.9.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
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
- // CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
- // CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
- // CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
- //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:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
- //大图
- implementation 'com.github.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
new file mode 100644
index 0000000..3561334
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,134 @@
+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 = 36
+
+ defaultConfig {
+ applicationId = "com.casic.br.operationsite"
+ minSdk = 26
+ targetSdk = 36
+ versionCode = 1090
+ versionName = "1.0.9.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.9.0")
+ implementation("androidx.appcompat:appcompat:1.6.1")
+ implementation("com.google.android.material:material:1.6.1")
+ //Google官方授权框架
+ implementation("pub.devrel:easypermissions:3.0.0")
+ //沉浸式状态栏。基础依赖包,必须要依赖
+ implementation("com.geyifeng.immersionbar:immersionbar:3.2.2")
+ //Kotlin协程
+ implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.5.1")
+ //MVVM+LiveData
+ implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-extensions:2.2.0")
+ //图片加载框架
+ implementation("com.github.bumptech.glide:glide:4.9.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.9.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:v8.4.0-release-jitpack")
+ //是否需要ExoPlayer模式
+ implementation("com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack")
+ //更多ijk的编码支持
+ implementation("com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack")
+ //大图
+ implementation("com.github.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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c394d71..95caacb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -24,7 +25,9 @@
-
+
@@ -48,7 +51,7 @@
android:theme="@style/Theme.OperationSite"
android:usesCleartextTraffic="true">
@@ -57,7 +60,6 @@
-
@@ -83,7 +85,9 @@
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
index 3142bc9..8800a40 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
@@ -12,8 +12,14 @@
import android.util.DisplayMetrics
import android.view.Surface
import android.view.WindowManager
-import androidx.annotation.NonNull
-import androidx.camera.core.*
+import androidx.camera.core.AspectRatio
+import androidx.camera.core.CameraInfo
+import androidx.camera.core.CameraSelector
+import androidx.camera.core.CameraState
+import androidx.camera.core.ImageAnalysis
+import androidx.camera.core.ImageCapture
+import androidx.camera.core.ImageCaptureException
+import androidx.camera.core.Preview
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.core.content.ContextCompat
import com.casic.br.operationsite.R
@@ -30,8 +36,15 @@
import java.io.File
import java.io.IOException
import java.text.SimpleDateFormat
-import java.util.*
-import java.util.concurrent.*
+import java.util.Date
+import java.util.Locale
+import java.util.concurrent.ExecutionException
+import java.util.concurrent.ExecutorService
+import java.util.concurrent.Executors
+import java.util.concurrent.LinkedBlockingQueue
+import java.util.concurrent.ThreadFactory
+import java.util.concurrent.ThreadPoolExecutor
+import java.util.concurrent.TimeUnit
import kotlin.math.abs
@@ -96,7 +109,7 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
- private fun bindPreview(@NonNull cameraProvider: ProcessCameraProvider) {
+ private fun bindPreview(cameraProvider: ProcessCameraProvider) {
val screenAspectRatio: Int = if (android.os.Build.VERSION.SDK_INT >= 30) {
val metrics: Rect = windowManager.currentWindowMetrics.bounds
aspectRatio(metrics.width(), metrics.height())
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 c292dc5..c6bfc82 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
@@ -2,6 +2,7 @@
import android.os.Bundle
import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.MapsInitializer
import com.casic.br.operationsite.R
import com.casic.br.operationsite.databinding.ActivityLoginBinding
import com.casic.br.operationsite.extensions.initImmersionBar
@@ -18,8 +19,10 @@
import com.pengxh.kt.lite.utils.LoadState
import com.pengxh.kt.lite.utils.LoadingDialog
import com.pengxh.kt.lite.utils.SaveKeyValues
+import pub.devrel.easypermissions.EasyPermissions
-class LoginActivity : KotlinBaseActivity() {
+class LoginActivity : KotlinBaseActivity(),
+ EasyPermissions.PermissionCallbacks {
private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var loginViewModel: LoginViewModel
@@ -35,6 +38,16 @@
override fun initOnCreate(savedInstanceState: Bundle?) {
ActivityStackManager.addActivity(this)
+
+ if (!EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
+ EasyPermissions.requestPermissions(
+ this@LoginActivity,
+ resources.getString(R.string.app_name) + "需要获取相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
+ }
+
// 设置默认账号密码
binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String)
binding.userPasswordView.setText(
@@ -97,4 +110,20 @@
}
}
}
+
+ override fun onRequestPermissionsResult(
+ requestCode: Int, permissions: Array, grantResults: IntArray
+ ) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults)
+ EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
+ }
+
+ override fun onPermissionsGranted(requestCode: Int, perms: List) {
+ MapsInitializer.updatePrivacyShow(this, true, true)
+ MapsInitializer.updatePrivacyAgree(this, true)
+ }
+
+ override fun onPermissionsDenied(requestCode: Int, perms: List) {
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt
deleted file mode 100644
index 88ac116..0000000
--- a/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.casic.br.operationsite.view
-
-import android.os.Bundle
-import androidx.appcompat.app.AppCompatActivity
-import com.amap.api.maps.MapsInitializer
-import com.casic.br.operationsite.R
-import com.casic.br.operationsite.utils.LocaleConstant
-import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ActivityStackManager
-import pub.devrel.easypermissions.EasyPermissions
-import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-
-class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- ActivityStackManager.addActivity(this)
- if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
- startLoginActivity()
- } else {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
- }
-
- private fun startLoginActivity() {
- //先把导航隐私政策声明,后面导航会用到
- MapsInitializer.updatePrivacyShow(this, true, true)
- MapsInitializer.updatePrivacyAgree(this, true)
- navigatePageTo()
- finish()
- }
-
- override fun onRequestPermissionsResult(
- requestCode: Int, permissions: Array, grantResults: IntArray
- ) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults)
- EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
- }
-
- override fun onPermissionsGranted(requestCode: Int, perms: List) {
- startLoginActivity()
- }
-
- override fun onPermissionsDenied(requestCode: Int, perms: List) {
-
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt b/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
index b05aa5b..d26ce5b 100644
--- a/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
+++ b/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
@@ -6,6 +6,7 @@
import android.graphics.Path
import android.widget.TextView
import androidx.core.graphics.drawable.toBitmap
+import androidx.core.graphics.withTranslation
import com.casic.br.operationsite.R
import com.github.mikephil.charting.components.MarkerView
import com.github.mikephil.charting.data.Entry
@@ -61,15 +62,13 @@
return
}
- val saveId = canvas.save()
- canvas.translate(posX, posY)
+ canvas.withTranslation(posX, posY) {
+ canvas.drawBitmap(dotBitmap, -dotBitmap.width / 2f, -dotBitmap.height / 2f, null)
- canvas.drawBitmap(dotBitmap, -dotBitmap.width / 2f, -dotBitmap.height / 2f, null)
+ drawArrow(canvas, posX, posY)
- drawArrow(canvas, posX, posY)
-
- draw(canvas)
- canvas.restoreToCount(saveId)
+ draw(canvas)
+ }
}
private fun drawArrow(canvas: Canvas, posX: Float, posY: Float) {
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 4054610..aebab2b 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -1,9 +1,12 @@
-
+
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index 07b29b5..0000000
--- a/build.gradle
+++ /dev/null
@@ -1,28 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-buildscript {
- ext.kotlin_version = '1.6.10'
- repositories {
- maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
- google()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:4.2.2'
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
-
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
-}
-
-allprojects {
- repositories {
- maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
- //依赖库
- maven { url 'https://jitpack.io' }
- google()
- }
-}
-
-tasks.register('clean', Delete) {
- delete rootProject.buildDir
-}
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
new file mode 100644
index 0000000..b12e2fc
--- /dev/null
+++ b/build.gradle.kts
@@ -0,0 +1,5 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+plugins {
+ id("com.android.application") version "8.1.0" apply false
+ id("org.jetbrains.kotlin.android") version "1.8.0" apply false
+}
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 2fb06da..967d90f 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Fri Jul 08 18:11:47 CST 2022
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
distributionPath=wrapper/dists
-zipStorePath=wrapper/dists
+distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.0-bin.zip
zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/app/build.gradle b/app/build.gradle
deleted file mode 100644
index 496c7cc..0000000
--- a/app/build.gradle
+++ /dev/null
@@ -1,130 +0,0 @@
-import java.text.SimpleDateFormat
-
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-
-android {
- signingConfigs {
- release {
- storeFile file('OperationSite.jks')
- storePassword '123456789'
- keyAlias 'key0'
- keyPassword '123456789'
- }
- }
- compileSdkVersion 33
-
- defaultConfig {
- applicationId "com.casic.br.operationsite"
- minSdkVersion 26
- targetSdkVersion 33
- versionCode 1090
- versionName "1.0.9.0"
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- kotlinOptions {
- jvmTarget = '1.8'
- }
-
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
- buildFeatures {
- viewBinding true
- }
-
- applicationVariants.configureEach { variant ->
- variant.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 fileTree(include: ['*.jar'], dir: 'libs')
- //基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
- //Google官方授权框架
- implementation 'pub.devrel:easypermissions:3.0.0'
- //沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
- //Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
- //图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.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.9.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
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
- // CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
- // CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
- // CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
- //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:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
- //大图
- implementation 'com.github.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
new file mode 100644
index 0000000..3561334
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,134 @@
+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 = 36
+
+ defaultConfig {
+ applicationId = "com.casic.br.operationsite"
+ minSdk = 26
+ targetSdk = 36
+ versionCode = 1090
+ versionName = "1.0.9.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.9.0")
+ implementation("androidx.appcompat:appcompat:1.6.1")
+ implementation("com.google.android.material:material:1.6.1")
+ //Google官方授权框架
+ implementation("pub.devrel:easypermissions:3.0.0")
+ //沉浸式状态栏。基础依赖包,必须要依赖
+ implementation("com.geyifeng.immersionbar:immersionbar:3.2.2")
+ //Kotlin协程
+ implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.5.1")
+ //MVVM+LiveData
+ implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-extensions:2.2.0")
+ //图片加载框架
+ implementation("com.github.bumptech.glide:glide:4.9.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.9.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:v8.4.0-release-jitpack")
+ //是否需要ExoPlayer模式
+ implementation("com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack")
+ //更多ijk的编码支持
+ implementation("com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack")
+ //大图
+ implementation("com.github.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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c394d71..95caacb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -24,7 +25,9 @@
-
+
@@ -48,7 +51,7 @@
android:theme="@style/Theme.OperationSite"
android:usesCleartextTraffic="true">
@@ -57,7 +60,6 @@
-
@@ -83,7 +85,9 @@
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
index 3142bc9..8800a40 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
@@ -12,8 +12,14 @@
import android.util.DisplayMetrics
import android.view.Surface
import android.view.WindowManager
-import androidx.annotation.NonNull
-import androidx.camera.core.*
+import androidx.camera.core.AspectRatio
+import androidx.camera.core.CameraInfo
+import androidx.camera.core.CameraSelector
+import androidx.camera.core.CameraState
+import androidx.camera.core.ImageAnalysis
+import androidx.camera.core.ImageCapture
+import androidx.camera.core.ImageCaptureException
+import androidx.camera.core.Preview
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.core.content.ContextCompat
import com.casic.br.operationsite.R
@@ -30,8 +36,15 @@
import java.io.File
import java.io.IOException
import java.text.SimpleDateFormat
-import java.util.*
-import java.util.concurrent.*
+import java.util.Date
+import java.util.Locale
+import java.util.concurrent.ExecutionException
+import java.util.concurrent.ExecutorService
+import java.util.concurrent.Executors
+import java.util.concurrent.LinkedBlockingQueue
+import java.util.concurrent.ThreadFactory
+import java.util.concurrent.ThreadPoolExecutor
+import java.util.concurrent.TimeUnit
import kotlin.math.abs
@@ -96,7 +109,7 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
- private fun bindPreview(@NonNull cameraProvider: ProcessCameraProvider) {
+ private fun bindPreview(cameraProvider: ProcessCameraProvider) {
val screenAspectRatio: Int = if (android.os.Build.VERSION.SDK_INT >= 30) {
val metrics: Rect = windowManager.currentWindowMetrics.bounds
aspectRatio(metrics.width(), metrics.height())
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 c292dc5..c6bfc82 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
@@ -2,6 +2,7 @@
import android.os.Bundle
import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.MapsInitializer
import com.casic.br.operationsite.R
import com.casic.br.operationsite.databinding.ActivityLoginBinding
import com.casic.br.operationsite.extensions.initImmersionBar
@@ -18,8 +19,10 @@
import com.pengxh.kt.lite.utils.LoadState
import com.pengxh.kt.lite.utils.LoadingDialog
import com.pengxh.kt.lite.utils.SaveKeyValues
+import pub.devrel.easypermissions.EasyPermissions
-class LoginActivity : KotlinBaseActivity() {
+class LoginActivity : KotlinBaseActivity(),
+ EasyPermissions.PermissionCallbacks {
private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var loginViewModel: LoginViewModel
@@ -35,6 +38,16 @@
override fun initOnCreate(savedInstanceState: Bundle?) {
ActivityStackManager.addActivity(this)
+
+ if (!EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
+ EasyPermissions.requestPermissions(
+ this@LoginActivity,
+ resources.getString(R.string.app_name) + "需要获取相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
+ }
+
// 设置默认账号密码
binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String)
binding.userPasswordView.setText(
@@ -97,4 +110,20 @@
}
}
}
+
+ override fun onRequestPermissionsResult(
+ requestCode: Int, permissions: Array, grantResults: IntArray
+ ) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults)
+ EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
+ }
+
+ override fun onPermissionsGranted(requestCode: Int, perms: List) {
+ MapsInitializer.updatePrivacyShow(this, true, true)
+ MapsInitializer.updatePrivacyAgree(this, true)
+ }
+
+ override fun onPermissionsDenied(requestCode: Int, perms: List) {
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt
deleted file mode 100644
index 88ac116..0000000
--- a/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.casic.br.operationsite.view
-
-import android.os.Bundle
-import androidx.appcompat.app.AppCompatActivity
-import com.amap.api.maps.MapsInitializer
-import com.casic.br.operationsite.R
-import com.casic.br.operationsite.utils.LocaleConstant
-import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ActivityStackManager
-import pub.devrel.easypermissions.EasyPermissions
-import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-
-class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- ActivityStackManager.addActivity(this)
- if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
- startLoginActivity()
- } else {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
- }
-
- private fun startLoginActivity() {
- //先把导航隐私政策声明,后面导航会用到
- MapsInitializer.updatePrivacyShow(this, true, true)
- MapsInitializer.updatePrivacyAgree(this, true)
- navigatePageTo()
- finish()
- }
-
- override fun onRequestPermissionsResult(
- requestCode: Int, permissions: Array, grantResults: IntArray
- ) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults)
- EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
- }
-
- override fun onPermissionsGranted(requestCode: Int, perms: List) {
- startLoginActivity()
- }
-
- override fun onPermissionsDenied(requestCode: Int, perms: List) {
-
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt b/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
index b05aa5b..d26ce5b 100644
--- a/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
+++ b/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
@@ -6,6 +6,7 @@
import android.graphics.Path
import android.widget.TextView
import androidx.core.graphics.drawable.toBitmap
+import androidx.core.graphics.withTranslation
import com.casic.br.operationsite.R
import com.github.mikephil.charting.components.MarkerView
import com.github.mikephil.charting.data.Entry
@@ -61,15 +62,13 @@
return
}
- val saveId = canvas.save()
- canvas.translate(posX, posY)
+ canvas.withTranslation(posX, posY) {
+ canvas.drawBitmap(dotBitmap, -dotBitmap.width / 2f, -dotBitmap.height / 2f, null)
- canvas.drawBitmap(dotBitmap, -dotBitmap.width / 2f, -dotBitmap.height / 2f, null)
+ drawArrow(canvas, posX, posY)
- drawArrow(canvas, posX, posY)
-
- draw(canvas)
- canvas.restoreToCount(saveId)
+ draw(canvas)
+ }
}
private fun drawArrow(canvas: Canvas, posX: Float, posY: Float) {
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 4054610..aebab2b 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -1,9 +1,12 @@
-
+
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index 07b29b5..0000000
--- a/build.gradle
+++ /dev/null
@@ -1,28 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-buildscript {
- ext.kotlin_version = '1.6.10'
- repositories {
- maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
- google()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:4.2.2'
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
-
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
-}
-
-allprojects {
- repositories {
- maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
- //依赖库
- maven { url 'https://jitpack.io' }
- google()
- }
-}
-
-tasks.register('clean', Delete) {
- delete rootProject.buildDir
-}
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
new file mode 100644
index 0000000..b12e2fc
--- /dev/null
+++ b/build.gradle.kts
@@ -0,0 +1,5 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+plugins {
+ id("com.android.application") version "8.1.0" apply false
+ id("org.jetbrains.kotlin.android") version "1.8.0" apply false
+}
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 2fb06da..967d90f 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Fri Jul 08 18:11:47 CST 2022
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
distributionPath=wrapper/dists
-zipStorePath=wrapper/dists
+distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.0-bin.zip
zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/settings.gradle b/settings.gradle
deleted file mode 100644
index baf6b74..0000000
--- a/settings.gradle
+++ /dev/null
@@ -1,2 +0,0 @@
-rootProject.name = "OperationSite"
-include ':app'
diff --git a/app/build.gradle b/app/build.gradle
deleted file mode 100644
index 496c7cc..0000000
--- a/app/build.gradle
+++ /dev/null
@@ -1,130 +0,0 @@
-import java.text.SimpleDateFormat
-
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-
-android {
- signingConfigs {
- release {
- storeFile file('OperationSite.jks')
- storePassword '123456789'
- keyAlias 'key0'
- keyPassword '123456789'
- }
- }
- compileSdkVersion 33
-
- defaultConfig {
- applicationId "com.casic.br.operationsite"
- minSdkVersion 26
- targetSdkVersion 33
- versionCode 1090
- versionName "1.0.9.0"
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- kotlinOptions {
- jvmTarget = '1.8'
- }
-
- kotlin {
- experimental {
- coroutines 'enable'
- }
- }
-
- buildFeatures {
- viewBinding true
- }
-
- applicationVariants.configureEach { variant ->
- variant.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 fileTree(include: ['*.jar'], dir: 'libs')
- //基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
- implementation 'androidx.core:core-ktx:1.9.0'
- def base_version = "1.6.1"
- implementation "androidx.appcompat:appcompat:${base_version}"
- implementation "com.google.android.material:material:${base_version}"
- //Google官方授权框架
- implementation 'pub.devrel:easypermissions:3.0.0'
- //沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
- def vm_version = "2.5.1"
- //Kotlin协程
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
- //图片加载框架
- implementation 'com.github.bumptech.glide:glide:4.9.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.9.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
- def camerax_version = '1.2.3'
- implementation "androidx.camera:camera-core:$camerax_version"
- // CameraX Camera2 extensions
- implementation "androidx.camera:camera-camera2:$camerax_version"
- // CameraX Lifecycle library
- implementation "androidx.camera:camera-lifecycle:$camerax_version"
- // CameraX View class
- implementation "androidx.camera:camera-view:$camerax_version"
- //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:v8.4.0-release-jitpack'
- //是否需要ExoPlayer模式
- implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack'
- //更多ijk的编码支持
- implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack'
- //大图
- implementation 'com.github.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
new file mode 100644
index 0000000..3561334
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,134 @@
+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 = 36
+
+ defaultConfig {
+ applicationId = "com.casic.br.operationsite"
+ minSdk = 26
+ targetSdk = 36
+ versionCode = 1090
+ versionName = "1.0.9.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.9.0")
+ implementation("androidx.appcompat:appcompat:1.6.1")
+ implementation("com.google.android.material:material:1.6.1")
+ //Google官方授权框架
+ implementation("pub.devrel:easypermissions:3.0.0")
+ //沉浸式状态栏。基础依赖包,必须要依赖
+ implementation("com.geyifeng.immersionbar:immersionbar:3.2.2")
+ //Kotlin协程
+ implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.5.1")
+ //MVVM+LiveData
+ implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1")
+ implementation("androidx.lifecycle:lifecycle-extensions:2.2.0")
+ //图片加载框架
+ implementation("com.github.bumptech.glide:glide:4.9.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.9.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:v8.4.0-release-jitpack")
+ //是否需要ExoPlayer模式
+ implementation("com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.4.0-release-jitpack")
+ //更多ijk的编码支持
+ implementation("com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.4.0-release-jitpack")
+ //大图
+ implementation("com.github.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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c394d71..95caacb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -24,7 +25,9 @@
-
+
@@ -48,7 +51,7 @@
android:theme="@style/Theme.OperationSite"
android:usesCleartextTraffic="true">
@@ -57,7 +60,6 @@
-
@@ -83,7 +85,9 @@
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
index 3142bc9..8800a40 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt
@@ -12,8 +12,14 @@
import android.util.DisplayMetrics
import android.view.Surface
import android.view.WindowManager
-import androidx.annotation.NonNull
-import androidx.camera.core.*
+import androidx.camera.core.AspectRatio
+import androidx.camera.core.CameraInfo
+import androidx.camera.core.CameraSelector
+import androidx.camera.core.CameraState
+import androidx.camera.core.ImageAnalysis
+import androidx.camera.core.ImageCapture
+import androidx.camera.core.ImageCaptureException
+import androidx.camera.core.Preview
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.core.content.ContextCompat
import com.casic.br.operationsite.R
@@ -30,8 +36,15 @@
import java.io.File
import java.io.IOException
import java.text.SimpleDateFormat
-import java.util.*
-import java.util.concurrent.*
+import java.util.Date
+import java.util.Locale
+import java.util.concurrent.ExecutionException
+import java.util.concurrent.ExecutorService
+import java.util.concurrent.Executors
+import java.util.concurrent.LinkedBlockingQueue
+import java.util.concurrent.ThreadFactory
+import java.util.concurrent.ThreadPoolExecutor
+import java.util.concurrent.TimeUnit
import kotlin.math.abs
@@ -96,7 +109,7 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
- private fun bindPreview(@NonNull cameraProvider: ProcessCameraProvider) {
+ private fun bindPreview(cameraProvider: ProcessCameraProvider) {
val screenAspectRatio: Int = if (android.os.Build.VERSION.SDK_INT >= 30) {
val metrics: Rect = windowManager.currentWindowMetrics.bounds
aspectRatio(metrics.width(), metrics.height())
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 c292dc5..c6bfc82 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
@@ -2,6 +2,7 @@
import android.os.Bundle
import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.MapsInitializer
import com.casic.br.operationsite.R
import com.casic.br.operationsite.databinding.ActivityLoginBinding
import com.casic.br.operationsite.extensions.initImmersionBar
@@ -18,8 +19,10 @@
import com.pengxh.kt.lite.utils.LoadState
import com.pengxh.kt.lite.utils.LoadingDialog
import com.pengxh.kt.lite.utils.SaveKeyValues
+import pub.devrel.easypermissions.EasyPermissions
-class LoginActivity : KotlinBaseActivity() {
+class LoginActivity : KotlinBaseActivity(),
+ EasyPermissions.PermissionCallbacks {
private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var loginViewModel: LoginViewModel
@@ -35,6 +38,16 @@
override fun initOnCreate(savedInstanceState: Bundle?) {
ActivityStackManager.addActivity(this)
+
+ if (!EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
+ EasyPermissions.requestPermissions(
+ this@LoginActivity,
+ resources.getString(R.string.app_name) + "需要获取相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
+ }
+
// 设置默认账号密码
binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String)
binding.userPasswordView.setText(
@@ -97,4 +110,20 @@
}
}
}
+
+ override fun onRequestPermissionsResult(
+ requestCode: Int, permissions: Array, grantResults: IntArray
+ ) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults)
+ EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
+ }
+
+ override fun onPermissionsGranted(requestCode: Int, perms: List) {
+ MapsInitializer.updatePrivacyShow(this, true, true)
+ MapsInitializer.updatePrivacyAgree(this, true)
+ }
+
+ override fun onPermissionsDenied(requestCode: Int, perms: List) {
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt
deleted file mode 100644
index 88ac116..0000000
--- a/app/src/main/java/com/casic/br/operationsite/view/PermissionActivity.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.casic.br.operationsite.view
-
-import android.os.Bundle
-import androidx.appcompat.app.AppCompatActivity
-import com.amap.api.maps.MapsInitializer
-import com.casic.br.operationsite.R
-import com.casic.br.operationsite.utils.LocaleConstant
-import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ActivityStackManager
-import pub.devrel.easypermissions.EasyPermissions
-import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-
-class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- ActivityStackManager.addActivity(this)
- if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
- startLoginActivity()
- } else {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
- }
-
- private fun startLoginActivity() {
- //先把导航隐私政策声明,后面导航会用到
- MapsInitializer.updatePrivacyShow(this, true, true)
- MapsInitializer.updatePrivacyAgree(this, true)
- navigatePageTo()
- finish()
- }
-
- override fun onRequestPermissionsResult(
- requestCode: Int, permissions: Array, grantResults: IntArray
- ) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults)
- EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
- }
-
- override fun onPermissionsGranted(requestCode: Int, perms: List) {
- startLoginActivity()
- }
-
- override fun onPermissionsDenied(requestCode: Int, perms: List) {
-
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt b/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
index b05aa5b..d26ce5b 100644
--- a/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
+++ b/app/src/main/java/com/casic/br/operationsite/widgets/LineChartMarkerView.kt
@@ -6,6 +6,7 @@
import android.graphics.Path
import android.widget.TextView
import androidx.core.graphics.drawable.toBitmap
+import androidx.core.graphics.withTranslation
import com.casic.br.operationsite.R
import com.github.mikephil.charting.components.MarkerView
import com.github.mikephil.charting.data.Entry
@@ -61,15 +62,13 @@
return
}
- val saveId = canvas.save()
- canvas.translate(posX, posY)
+ canvas.withTranslation(posX, posY) {
+ canvas.drawBitmap(dotBitmap, -dotBitmap.width / 2f, -dotBitmap.height / 2f, null)
- canvas.drawBitmap(dotBitmap, -dotBitmap.width / 2f, -dotBitmap.height / 2f, null)
+ drawArrow(canvas, posX, posY)
- drawArrow(canvas, posX, posY)
-
- draw(canvas)
- canvas.restoreToCount(saveId)
+ draw(canvas)
+ }
}
private fun drawArrow(canvas: Canvas, posX: Float, posY: Float) {
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 4054610..aebab2b 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -1,9 +1,12 @@
-
+
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index 07b29b5..0000000
--- a/build.gradle
+++ /dev/null
@@ -1,28 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-buildscript {
- ext.kotlin_version = '1.6.10'
- repositories {
- maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
- google()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:4.2.2'
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
-
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
-}
-
-allprojects {
- repositories {
- maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
- //依赖库
- maven { url 'https://jitpack.io' }
- google()
- }
-}
-
-tasks.register('clean', Delete) {
- delete rootProject.buildDir
-}
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
new file mode 100644
index 0000000..b12e2fc
--- /dev/null
+++ b/build.gradle.kts
@@ -0,0 +1,5 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+plugins {
+ id("com.android.application") version "8.1.0" apply false
+ id("org.jetbrains.kotlin.android") version "1.8.0" apply false
+}
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 2fb06da..967d90f 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Fri Jul 08 18:11:47 CST 2022
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
distributionPath=wrapper/dists
-zipStorePath=wrapper/dists
+distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.0-bin.zip
zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/settings.gradle b/settings.gradle
deleted file mode 100644
index baf6b74..0000000
--- a/settings.gradle
+++ /dev/null
@@ -1,2 +0,0 @@
-rootProject.name = "OperationSite"
-include ':app'
diff --git a/settings.gradle.kts b/settings.gradle.kts
new file mode 100644
index 0000000..4d46992
--- /dev/null
+++ b/settings.gradle.kts
@@ -0,0 +1,20 @@
+pluginManagement {
+ repositories {
+ google()
+ mavenCentral()
+ gradlePluginPortal()
+ }
+}
+
+dependencyResolutionManagement {
+ repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
+ repositories {
+ maven { url = uri("https://maven.aliyun.com/repository/public") }
+ maven { url = uri("https://jitpack.io") }
+ mavenCentral()
+ google()
+ }
+}
+
+rootProject.name = "OperationSite"
+include(":app")
\ No newline at end of file