diff --git a/app/build.gradle b/app/build.gradle index c311e26..385cd21 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,12 +6,12 @@ apply plugin: 'org.greenrobot.greendao' android { - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.electric.detector" minSdkVersion 22 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" @@ -109,7 +109,7 @@ //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 - implementation 'io.github.lucksiege:pictureselector:v3.0.4' + implementation 'io.github.lucksiege:pictureselector:v3.11.1' //图片压缩 implementation 'top.zibin:Luban:1.1.8' } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index c311e26..385cd21 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,12 +6,12 @@ apply plugin: 'org.greenrobot.greendao' android { - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.electric.detector" minSdkVersion 22 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" @@ -109,7 +109,7 @@ //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 - implementation 'io.github.lucksiege:pictureselector:v3.0.4' + implementation 'io.github.lucksiege:pictureselector:v3.11.1' //图片压缩 implementation 'top.zibin:Luban:1.1.8' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3de7a96..6b80195 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,9 +18,21 @@ - - + + + + + + + + + + + + @@ -100,8 +112,5 @@ - - - \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index c311e26..385cd21 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,12 +6,12 @@ apply plugin: 'org.greenrobot.greendao' android { - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.electric.detector" minSdkVersion 22 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" @@ -109,7 +109,7 @@ //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 - implementation 'io.github.lucksiege:pictureselector:v3.0.4' + implementation 'io.github.lucksiege:pictureselector:v3.11.1' //图片压缩 implementation 'top.zibin:Luban:1.1.8' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3de7a96..6b80195 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,9 +18,21 @@ - - + + + + + + + + + + + + @@ -100,8 +112,5 @@ - - - \ No newline at end of file diff --git a/app/src/main/java/com/casic/electric/detector/utils/GlideLoadEngine.kt b/app/src/main/java/com/casic/electric/detector/utils/GlideLoadEngine.kt new file mode 100644 index 0000000..a894aa9 --- /dev/null +++ b/app/src/main/java/com/casic/electric/detector/utils/GlideLoadEngine.kt @@ -0,0 +1,76 @@ +package com.casic.electric.detector.utils + +import android.content.Context +import android.widget.ImageView +import com.bumptech.glide.Glide +import com.bumptech.glide.load.resource.bitmap.CenterCrop +import com.bumptech.glide.load.resource.bitmap.RoundedCorners +import com.bumptech.glide.request.RequestOptions +import com.casic.electric.detector.R +import com.luck.picture.lib.engine.ImageEngine +import com.luck.picture.lib.utils.ActivityCompatHelper + +class GlideLoadEngine private constructor() : ImageEngine { + companion object { + val instance: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + GlideLoadEngine() + } + } + + override fun loadImage(context: Context, url: String, imageView: ImageView) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return + } + Glide.with(context).load(url).into(imageView) + } + + override fun loadImage( + context: Context, + imageView: ImageView, + url: String, + maxWidth: Int, + maxHeight: Int + ) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return + } + Glide.with(context) + .load(url) + .override(maxWidth, maxHeight) + .into(imageView) + } + + override fun loadAlbumCover(context: Context, url: String, imageView: ImageView) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return + } + Glide.with(context) + .asBitmap() + .load(url) + .override(180, 180) + .sizeMultiplier(0.5f) + .transform(CenterCrop(), RoundedCorners(8)) + .placeholder(R.drawable.ps_image_placeholder) + .error(R.mipmap.load_image_error) + .into(imageView) + } + + override fun pauseRequests(context: Context?) { + context?.let { Glide.with(it).pauseRequests() } + } + + override fun resumeRequests(context: Context?) { + context?.let { Glide.with(it).resumeRequests() } + } + + override fun loadGridImage(context: Context, url: String, imageView: ImageView) { + Glide.with(context) + .load(url) + .apply( + RequestOptions() + .placeholder(R.drawable.ps_image_placeholder) + .error(R.mipmap.load_image_error) + ) + .into(imageView) + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index c311e26..385cd21 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,12 +6,12 @@ apply plugin: 'org.greenrobot.greendao' android { - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.electric.detector" minSdkVersion 22 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" @@ -109,7 +109,7 @@ //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 - implementation 'io.github.lucksiege:pictureselector:v3.0.4' + implementation 'io.github.lucksiege:pictureselector:v3.11.1' //图片压缩 implementation 'top.zibin:Luban:1.1.8' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3de7a96..6b80195 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,9 +18,21 @@ - - + + + + + + + + + + + + @@ -100,8 +112,5 @@ - - - \ No newline at end of file diff --git a/app/src/main/java/com/casic/electric/detector/utils/GlideLoadEngine.kt b/app/src/main/java/com/casic/electric/detector/utils/GlideLoadEngine.kt new file mode 100644 index 0000000..a894aa9 --- /dev/null +++ b/app/src/main/java/com/casic/electric/detector/utils/GlideLoadEngine.kt @@ -0,0 +1,76 @@ +package com.casic.electric.detector.utils + +import android.content.Context +import android.widget.ImageView +import com.bumptech.glide.Glide +import com.bumptech.glide.load.resource.bitmap.CenterCrop +import com.bumptech.glide.load.resource.bitmap.RoundedCorners +import com.bumptech.glide.request.RequestOptions +import com.casic.electric.detector.R +import com.luck.picture.lib.engine.ImageEngine +import com.luck.picture.lib.utils.ActivityCompatHelper + +class GlideLoadEngine private constructor() : ImageEngine { + companion object { + val instance: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + GlideLoadEngine() + } + } + + override fun loadImage(context: Context, url: String, imageView: ImageView) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return + } + Glide.with(context).load(url).into(imageView) + } + + override fun loadImage( + context: Context, + imageView: ImageView, + url: String, + maxWidth: Int, + maxHeight: Int + ) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return + } + Glide.with(context) + .load(url) + .override(maxWidth, maxHeight) + .into(imageView) + } + + override fun loadAlbumCover(context: Context, url: String, imageView: ImageView) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return + } + Glide.with(context) + .asBitmap() + .load(url) + .override(180, 180) + .sizeMultiplier(0.5f) + .transform(CenterCrop(), RoundedCorners(8)) + .placeholder(R.drawable.ps_image_placeholder) + .error(R.mipmap.load_image_error) + .into(imageView) + } + + override fun pauseRequests(context: Context?) { + context?.let { Glide.with(it).pauseRequests() } + } + + override fun resumeRequests(context: Context?) { + context?.let { Glide.with(it).resumeRequests() } + } + + override fun loadGridImage(context: Context, url: String, imageView: ImageView) { + Glide.with(context) + .load(url) + .apply( + RequestOptions() + .placeholder(R.drawable.ps_image_placeholder) + .error(R.mipmap.load_image_error) + ) + .into(imageView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt index 33dd57f..eafe665 100644 --- a/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt @@ -8,9 +8,11 @@ Manifest.permission.READ_PHONE_STATE, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION, + Manifest.permission.CAMERA, + Manifest.permission.READ_MEDIA_IMAGES, + Manifest.permission.MANAGE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.CAMERA + Manifest.permission.WRITE_EXTERNAL_STORAGE ) const val PERMISSIONS_CODE = 999 diff --git a/app/build.gradle b/app/build.gradle index c311e26..385cd21 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,12 +6,12 @@ apply plugin: 'org.greenrobot.greendao' android { - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.electric.detector" minSdkVersion 22 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" @@ -109,7 +109,7 @@ //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 - implementation 'io.github.lucksiege:pictureselector:v3.0.4' + implementation 'io.github.lucksiege:pictureselector:v3.11.1' //图片压缩 implementation 'top.zibin:Luban:1.1.8' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3de7a96..6b80195 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,9 +18,21 @@ - - + + + + + + + + + + + + @@ -100,8 +112,5 @@ - - - \ No newline at end of file diff --git a/app/src/main/java/com/casic/electric/detector/utils/GlideLoadEngine.kt b/app/src/main/java/com/casic/electric/detector/utils/GlideLoadEngine.kt new file mode 100644 index 0000000..a894aa9 --- /dev/null +++ b/app/src/main/java/com/casic/electric/detector/utils/GlideLoadEngine.kt @@ -0,0 +1,76 @@ +package com.casic.electric.detector.utils + +import android.content.Context +import android.widget.ImageView +import com.bumptech.glide.Glide +import com.bumptech.glide.load.resource.bitmap.CenterCrop +import com.bumptech.glide.load.resource.bitmap.RoundedCorners +import com.bumptech.glide.request.RequestOptions +import com.casic.electric.detector.R +import com.luck.picture.lib.engine.ImageEngine +import com.luck.picture.lib.utils.ActivityCompatHelper + +class GlideLoadEngine private constructor() : ImageEngine { + companion object { + val instance: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + GlideLoadEngine() + } + } + + override fun loadImage(context: Context, url: String, imageView: ImageView) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return + } + Glide.with(context).load(url).into(imageView) + } + + override fun loadImage( + context: Context, + imageView: ImageView, + url: String, + maxWidth: Int, + maxHeight: Int + ) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return + } + Glide.with(context) + .load(url) + .override(maxWidth, maxHeight) + .into(imageView) + } + + override fun loadAlbumCover(context: Context, url: String, imageView: ImageView) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return + } + Glide.with(context) + .asBitmap() + .load(url) + .override(180, 180) + .sizeMultiplier(0.5f) + .transform(CenterCrop(), RoundedCorners(8)) + .placeholder(R.drawable.ps_image_placeholder) + .error(R.mipmap.load_image_error) + .into(imageView) + } + + override fun pauseRequests(context: Context?) { + context?.let { Glide.with(it).pauseRequests() } + } + + override fun resumeRequests(context: Context?) { + context?.let { Glide.with(it).resumeRequests() } + } + + override fun loadGridImage(context: Context, url: String, imageView: ImageView) { + Glide.with(context) + .load(url) + .apply( + RequestOptions() + .placeholder(R.drawable.ps_image_placeholder) + .error(R.mipmap.load_image_error) + ) + .into(imageView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt index 33dd57f..eafe665 100644 --- a/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt @@ -8,9 +8,11 @@ Manifest.permission.READ_PHONE_STATE, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION, + Manifest.permission.CAMERA, + Manifest.permission.READ_MEDIA_IMAGES, + Manifest.permission.MANAGE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.CAMERA + Manifest.permission.WRITE_EXTERNAL_STORAGE ) const val PERMISSIONS_CODE = 999 diff --git a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt index c850438..dabec9f 100644 --- a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt +++ b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt @@ -31,19 +31,38 @@ import com.casic.electric.detector.extensions.appendExcelDownloadUrl import com.casic.electric.detector.extensions.drawCircle import com.casic.electric.detector.extensions.initLayoutImmersionBar -import com.casic.electric.detector.utils.* +import com.casic.electric.detector.utils.DataBaseManager +import com.casic.electric.detector.utils.ExcelHub +import com.casic.electric.detector.utils.LoadingDialogHub +import com.casic.electric.detector.utils.LocaleConstant +import com.casic.electric.detector.utils.LocationHub +import com.casic.electric.detector.utils.RouteOnMap import com.casic.electric.detector.vm.TaskViewModel import com.casic.electric.detector.widgets.QueryMarkerDialog import com.casic.electric.detector.widgets.SamplePopupWindow import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog -import kotlinx.android.synthetic.main.activity_main.* +import kotlinx.android.synthetic.main.activity_main.aimButton +import kotlinx.android.synthetic.main.activity_main.currentLocationView +import kotlinx.android.synthetic.main.activity_main.detectionButton +import kotlinx.android.synthetic.main.activity_main.inspectionButton +import kotlinx.android.synthetic.main.activity_main.installButton +import kotlinx.android.synthetic.main.activity_main.mapView +import kotlinx.android.synthetic.main.activity_main.rightImageView +import kotlinx.android.synthetic.main.activity_main.rootView +import kotlinx.android.synthetic.main.activity_main.viewButton import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -271,10 +290,12 @@ } } - //移动地图到所有labelBeans的第一个点 - val center = LatLng(latitudeList.first(), longitudeList.first()) - //移动到指定经纬度 - aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(center, 16f)) + if (latitudeList.isNotEmpty() && longitudeList.isNotEmpty()) { + //移动地图到所有labelBeans的第一个点 + val center = LatLng(latitudeList.first(), longitudeList.first()) + //移动到指定经纬度 + aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(center, 16f)) + } showLabelsOnMap() } diff --git a/app/build.gradle b/app/build.gradle index c311e26..385cd21 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,12 +6,12 @@ apply plugin: 'org.greenrobot.greendao' android { - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.electric.detector" minSdkVersion 22 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" @@ -109,7 +109,7 @@ //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 - implementation 'io.github.lucksiege:pictureselector:v3.0.4' + implementation 'io.github.lucksiege:pictureselector:v3.11.1' //图片压缩 implementation 'top.zibin:Luban:1.1.8' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3de7a96..6b80195 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,9 +18,21 @@ - - + + + + + + + + + + + + @@ -100,8 +112,5 @@ - - - \ No newline at end of file diff --git a/app/src/main/java/com/casic/electric/detector/utils/GlideLoadEngine.kt b/app/src/main/java/com/casic/electric/detector/utils/GlideLoadEngine.kt new file mode 100644 index 0000000..a894aa9 --- /dev/null +++ b/app/src/main/java/com/casic/electric/detector/utils/GlideLoadEngine.kt @@ -0,0 +1,76 @@ +package com.casic.electric.detector.utils + +import android.content.Context +import android.widget.ImageView +import com.bumptech.glide.Glide +import com.bumptech.glide.load.resource.bitmap.CenterCrop +import com.bumptech.glide.load.resource.bitmap.RoundedCorners +import com.bumptech.glide.request.RequestOptions +import com.casic.electric.detector.R +import com.luck.picture.lib.engine.ImageEngine +import com.luck.picture.lib.utils.ActivityCompatHelper + +class GlideLoadEngine private constructor() : ImageEngine { + companion object { + val instance: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + GlideLoadEngine() + } + } + + override fun loadImage(context: Context, url: String, imageView: ImageView) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return + } + Glide.with(context).load(url).into(imageView) + } + + override fun loadImage( + context: Context, + imageView: ImageView, + url: String, + maxWidth: Int, + maxHeight: Int + ) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return + } + Glide.with(context) + .load(url) + .override(maxWidth, maxHeight) + .into(imageView) + } + + override fun loadAlbumCover(context: Context, url: String, imageView: ImageView) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return + } + Glide.with(context) + .asBitmap() + .load(url) + .override(180, 180) + .sizeMultiplier(0.5f) + .transform(CenterCrop(), RoundedCorners(8)) + .placeholder(R.drawable.ps_image_placeholder) + .error(R.mipmap.load_image_error) + .into(imageView) + } + + override fun pauseRequests(context: Context?) { + context?.let { Glide.with(it).pauseRequests() } + } + + override fun resumeRequests(context: Context?) { + context?.let { Glide.with(it).resumeRequests() } + } + + override fun loadGridImage(context: Context, url: String, imageView: ImageView) { + Glide.with(context) + .load(url) + .apply( + RequestOptions() + .placeholder(R.drawable.ps_image_placeholder) + .error(R.mipmap.load_image_error) + ) + .into(imageView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt index 33dd57f..eafe665 100644 --- a/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt @@ -8,9 +8,11 @@ Manifest.permission.READ_PHONE_STATE, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION, + Manifest.permission.CAMERA, + Manifest.permission.READ_MEDIA_IMAGES, + Manifest.permission.MANAGE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.CAMERA + Manifest.permission.WRITE_EXTERNAL_STORAGE ) const val PERMISSIONS_CODE = 999 diff --git a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt index c850438..dabec9f 100644 --- a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt +++ b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt @@ -31,19 +31,38 @@ import com.casic.electric.detector.extensions.appendExcelDownloadUrl import com.casic.electric.detector.extensions.drawCircle import com.casic.electric.detector.extensions.initLayoutImmersionBar -import com.casic.electric.detector.utils.* +import com.casic.electric.detector.utils.DataBaseManager +import com.casic.electric.detector.utils.ExcelHub +import com.casic.electric.detector.utils.LoadingDialogHub +import com.casic.electric.detector.utils.LocaleConstant +import com.casic.electric.detector.utils.LocationHub +import com.casic.electric.detector.utils.RouteOnMap import com.casic.electric.detector.vm.TaskViewModel import com.casic.electric.detector.widgets.QueryMarkerDialog import com.casic.electric.detector.widgets.SamplePopupWindow import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog -import kotlinx.android.synthetic.main.activity_main.* +import kotlinx.android.synthetic.main.activity_main.aimButton +import kotlinx.android.synthetic.main.activity_main.currentLocationView +import kotlinx.android.synthetic.main.activity_main.detectionButton +import kotlinx.android.synthetic.main.activity_main.inspectionButton +import kotlinx.android.synthetic.main.activity_main.installButton +import kotlinx.android.synthetic.main.activity_main.mapView +import kotlinx.android.synthetic.main.activity_main.rightImageView +import kotlinx.android.synthetic.main.activity_main.rootView +import kotlinx.android.synthetic.main.activity_main.viewButton import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -271,10 +290,12 @@ } } - //移动地图到所有labelBeans的第一个点 - val center = LatLng(latitudeList.first(), longitudeList.first()) - //移动到指定经纬度 - aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(center, 16f)) + if (latitudeList.isNotEmpty() && longitudeList.isNotEmpty()) { + //移动地图到所有labelBeans的第一个点 + val center = LatLng(latitudeList.first(), longitudeList.first()) + //移动到指定经纬度 + aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(center, 16f)) + } showLabelsOnMap() } diff --git a/build.gradle b/build.gradle index bf95b75..987ad74 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ google() } dependencies { - classpath 'com.android.tools.build:gradle:3.6.4' + classpath 'com.android.tools.build:gradle:4.2.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0' @@ -26,6 +26,6 @@ } } -task clean(type: Delete) { +tasks.register('clean', Delete) { delete rootProject.buildDir } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index c311e26..385cd21 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,12 +6,12 @@ apply plugin: 'org.greenrobot.greendao' android { - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.electric.detector" minSdkVersion 22 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" @@ -109,7 +109,7 @@ //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 - implementation 'io.github.lucksiege:pictureselector:v3.0.4' + implementation 'io.github.lucksiege:pictureselector:v3.11.1' //图片压缩 implementation 'top.zibin:Luban:1.1.8' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3de7a96..6b80195 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,9 +18,21 @@ - - + + + + + + + + + + + + @@ -100,8 +112,5 @@ - - - \ No newline at end of file diff --git a/app/src/main/java/com/casic/electric/detector/utils/GlideLoadEngine.kt b/app/src/main/java/com/casic/electric/detector/utils/GlideLoadEngine.kt new file mode 100644 index 0000000..a894aa9 --- /dev/null +++ b/app/src/main/java/com/casic/electric/detector/utils/GlideLoadEngine.kt @@ -0,0 +1,76 @@ +package com.casic.electric.detector.utils + +import android.content.Context +import android.widget.ImageView +import com.bumptech.glide.Glide +import com.bumptech.glide.load.resource.bitmap.CenterCrop +import com.bumptech.glide.load.resource.bitmap.RoundedCorners +import com.bumptech.glide.request.RequestOptions +import com.casic.electric.detector.R +import com.luck.picture.lib.engine.ImageEngine +import com.luck.picture.lib.utils.ActivityCompatHelper + +class GlideLoadEngine private constructor() : ImageEngine { + companion object { + val instance: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + GlideLoadEngine() + } + } + + override fun loadImage(context: Context, url: String, imageView: ImageView) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return + } + Glide.with(context).load(url).into(imageView) + } + + override fun loadImage( + context: Context, + imageView: ImageView, + url: String, + maxWidth: Int, + maxHeight: Int + ) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return + } + Glide.with(context) + .load(url) + .override(maxWidth, maxHeight) + .into(imageView) + } + + override fun loadAlbumCover(context: Context, url: String, imageView: ImageView) { + if (!ActivityCompatHelper.assertValidRequest(context)) { + return + } + Glide.with(context) + .asBitmap() + .load(url) + .override(180, 180) + .sizeMultiplier(0.5f) + .transform(CenterCrop(), RoundedCorners(8)) + .placeholder(R.drawable.ps_image_placeholder) + .error(R.mipmap.load_image_error) + .into(imageView) + } + + override fun pauseRequests(context: Context?) { + context?.let { Glide.with(it).pauseRequests() } + } + + override fun resumeRequests(context: Context?) { + context?.let { Glide.with(it).resumeRequests() } + } + + override fun loadGridImage(context: Context, url: String, imageView: ImageView) { + Glide.with(context) + .load(url) + .apply( + RequestOptions() + .placeholder(R.drawable.ps_image_placeholder) + .error(R.mipmap.load_image_error) + ) + .into(imageView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt index 33dd57f..eafe665 100644 --- a/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt @@ -8,9 +8,11 @@ Manifest.permission.READ_PHONE_STATE, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION, + Manifest.permission.CAMERA, + Manifest.permission.READ_MEDIA_IMAGES, + Manifest.permission.MANAGE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.CAMERA + Manifest.permission.WRITE_EXTERNAL_STORAGE ) const val PERMISSIONS_CODE = 999 diff --git a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt index c850438..dabec9f 100644 --- a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt +++ b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt @@ -31,19 +31,38 @@ import com.casic.electric.detector.extensions.appendExcelDownloadUrl import com.casic.electric.detector.extensions.drawCircle import com.casic.electric.detector.extensions.initLayoutImmersionBar -import com.casic.electric.detector.utils.* +import com.casic.electric.detector.utils.DataBaseManager +import com.casic.electric.detector.utils.ExcelHub +import com.casic.electric.detector.utils.LoadingDialogHub +import com.casic.electric.detector.utils.LocaleConstant +import com.casic.electric.detector.utils.LocationHub +import com.casic.electric.detector.utils.RouteOnMap import com.casic.electric.detector.vm.TaskViewModel import com.casic.electric.detector.widgets.QueryMarkerDialog import com.casic.electric.detector.widgets.SamplePopupWindow import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog -import kotlinx.android.synthetic.main.activity_main.* +import kotlinx.android.synthetic.main.activity_main.aimButton +import kotlinx.android.synthetic.main.activity_main.currentLocationView +import kotlinx.android.synthetic.main.activity_main.detectionButton +import kotlinx.android.synthetic.main.activity_main.inspectionButton +import kotlinx.android.synthetic.main.activity_main.installButton +import kotlinx.android.synthetic.main.activity_main.mapView +import kotlinx.android.synthetic.main.activity_main.rightImageView +import kotlinx.android.synthetic.main.activity_main.rootView +import kotlinx.android.synthetic.main.activity_main.viewButton import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -271,10 +290,12 @@ } } - //移动地图到所有labelBeans的第一个点 - val center = LatLng(latitudeList.first(), longitudeList.first()) - //移动到指定经纬度 - aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(center, 16f)) + if (latitudeList.isNotEmpty() && longitudeList.isNotEmpty()) { + //移动地图到所有labelBeans的第一个点 + val center = LatLng(latitudeList.first(), longitudeList.first()) + //移动到指定经纬度 + aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(center, 16f)) + } showLabelsOnMap() } diff --git a/build.gradle b/build.gradle index bf95b75..987ad74 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ google() } dependencies { - classpath 'com.android.tools.build:gradle:3.6.4' + classpath 'com.android.tools.build:gradle:4.2.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0' @@ -26,6 +26,6 @@ } } -task clean(type: Delete) { +tasks.register('clean', Delete) { delete rootProject.buildDir } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e743491..afdd294 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Tue Aug 15 13:45:01 CST 2023 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME