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 @@ - +