diff --git a/app/build.gradle b/app/build.gradle index f51e0dd..219ce47 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ applicationId "com.casic.detector" minSdkVersion 22 targetSdkVersion 33 - versionCode 5010 - versionName "5.0.1" + versionCode 5020 + versionName "5.0.2" ndk { moduleName "serial_port" @@ -76,7 +76,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.3' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/build.gradle b/app/build.gradle index f51e0dd..219ce47 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ applicationId "com.casic.detector" minSdkVersion 22 targetSdkVersion 33 - versionCode 5010 - versionName "5.0.1" + versionCode 5020 + versionName "5.0.2" ndk { moduleName "serial_port" @@ -76,7 +76,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.3' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt index 6f694dd..397bf90 100644 --- a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt +++ b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt @@ -21,7 +21,7 @@ * @param spacing 上下左右外边距,无需在 [androidx.recyclerview.widget.RecyclerView] 设置边距 * */ class EditableImageAdapter( - private val context: Context, private val imageCountLimit: Int, private val spacing: Float + private val context: Context, private val imageCountLimit: Int, private val spacing: Int ) : RecyclerView.Adapter() { private val layoutInflater by lazy { LayoutInflater.from(context) } diff --git a/app/build.gradle b/app/build.gradle index f51e0dd..219ce47 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ applicationId "com.casic.detector" minSdkVersion 22 targetSdkVersion 33 - versionCode 5010 - versionName "5.0.1" + versionCode 5020 + versionName "5.0.2" ndk { moduleName "serial_port" @@ -76,7 +76,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.3' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt index 6f694dd..397bf90 100644 --- a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt +++ b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt @@ -21,7 +21,7 @@ * @param spacing 上下左右外边距,无需在 [androidx.recyclerview.widget.RecyclerView] 设置边距 * */ class EditableImageAdapter( - private val context: Context, private val imageCountLimit: Int, private val spacing: Float + private val context: Context, private val imageCountLimit: Int, private val spacing: Int ) : RecyclerView.Adapter() { private val layoutInflater by lazy { LayoutInflater.from(context) } diff --git a/app/src/main/java/com/casic/detector/extensions/Context.kt b/app/src/main/java/com/casic/detector/extensions/Context.kt deleted file mode 100644 index 9e9060f..0000000 --- a/app/src/main/java/com/casic/detector/extensions/Context.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.detector.extensions - -import android.content.Context -import android.view.ViewGroup -import com.pengxh.kt.lite.extensions.getStatusBarHeight - -/** - * 设置沉浸式状态栏,兼容Android 11+ - * */ -fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) - rootView.requestLayout() -} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index f51e0dd..219ce47 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ applicationId "com.casic.detector" minSdkVersion 22 targetSdkVersion 33 - versionCode 5010 - versionName "5.0.1" + versionCode 5020 + versionName "5.0.2" ndk { moduleName "serial_port" @@ -76,7 +76,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.3' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt index 6f694dd..397bf90 100644 --- a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt +++ b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt @@ -21,7 +21,7 @@ * @param spacing 上下左右外边距,无需在 [androidx.recyclerview.widget.RecyclerView] 设置边距 * */ class EditableImageAdapter( - private val context: Context, private val imageCountLimit: Int, private val spacing: Float + private val context: Context, private val imageCountLimit: Int, private val spacing: Int ) : RecyclerView.Adapter() { private val layoutInflater by lazy { LayoutInflater.from(context) } diff --git a/app/src/main/java/com/casic/detector/extensions/Context.kt b/app/src/main/java/com/casic/detector/extensions/Context.kt deleted file mode 100644 index 9e9060f..0000000 --- a/app/src/main/java/com/casic/detector/extensions/Context.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.detector.extensions - -import android.content.Context -import android.view.ViewGroup -import com.pengxh.kt.lite.extensions.getStatusBarHeight - -/** - * 设置沉浸式状态栏,兼容Android 11+ - * */ -fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) - rootView.requestLayout() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/Int.kt b/app/src/main/java/com/casic/detector/extensions/Int.kt index d67cac8..10275bb 100644 --- a/app/src/main/java/com/casic/detector/extensions/Int.kt +++ b/app/src/main/java/com/casic/detector/extensions/Int.kt @@ -13,12 +13,4 @@ paint.color = color canvas.drawArc(rectF, 0f, 360f, true, paint) return bitmap -} - -fun Int.appendZero(): String { - return if (this < 10) { - "0$this" - } else { - this.toString() - } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index f51e0dd..219ce47 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ applicationId "com.casic.detector" minSdkVersion 22 targetSdkVersion 33 - versionCode 5010 - versionName "5.0.1" + versionCode 5020 + versionName "5.0.2" ndk { moduleName "serial_port" @@ -76,7 +76,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.3' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt index 6f694dd..397bf90 100644 --- a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt +++ b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt @@ -21,7 +21,7 @@ * @param spacing 上下左右外边距,无需在 [androidx.recyclerview.widget.RecyclerView] 设置边距 * */ class EditableImageAdapter( - private val context: Context, private val imageCountLimit: Int, private val spacing: Float + private val context: Context, private val imageCountLimit: Int, private val spacing: Int ) : RecyclerView.Adapter() { private val layoutInflater by lazy { LayoutInflater.from(context) } diff --git a/app/src/main/java/com/casic/detector/extensions/Context.kt b/app/src/main/java/com/casic/detector/extensions/Context.kt deleted file mode 100644 index 9e9060f..0000000 --- a/app/src/main/java/com/casic/detector/extensions/Context.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.detector.extensions - -import android.content.Context -import android.view.ViewGroup -import com.pengxh.kt.lite.extensions.getStatusBarHeight - -/** - * 设置沉浸式状态栏,兼容Android 11+ - * */ -fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) - rootView.requestLayout() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/Int.kt b/app/src/main/java/com/casic/detector/extensions/Int.kt index d67cac8..10275bb 100644 --- a/app/src/main/java/com/casic/detector/extensions/Int.kt +++ b/app/src/main/java/com/casic/detector/extensions/Int.kt @@ -13,12 +13,4 @@ paint.color = color canvas.drawArc(rectF, 0f, 360f, true, paint) return bitmap -} - -fun Int.appendZero(): String { - return if (this < 10) { - "0$this" - } else { - this.toString() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt new file mode 100644 index 0000000..cfeda1d --- /dev/null +++ b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt @@ -0,0 +1,31 @@ +package com.casic.detector.extensions + +import android.app.Activity +import android.view.ViewGroup +import androidx.annotation.ColorRes +import androidx.fragment.app.Fragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.getStatusBarHeight + +fun ViewGroup.initImmersionBar(activity: Activity, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(activity) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(activity)) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = activity.getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} + +fun ViewGroup.initImmersionBar(fragment: Fragment, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(fragment) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(fragment.requireContext())) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = fragment.requireContext().getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index f51e0dd..219ce47 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ applicationId "com.casic.detector" minSdkVersion 22 targetSdkVersion 33 - versionCode 5010 - versionName "5.0.1" + versionCode 5020 + versionName "5.0.2" ndk { moduleName "serial_port" @@ -76,7 +76,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.3' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt index 6f694dd..397bf90 100644 --- a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt +++ b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt @@ -21,7 +21,7 @@ * @param spacing 上下左右外边距,无需在 [androidx.recyclerview.widget.RecyclerView] 设置边距 * */ class EditableImageAdapter( - private val context: Context, private val imageCountLimit: Int, private val spacing: Float + private val context: Context, private val imageCountLimit: Int, private val spacing: Int ) : RecyclerView.Adapter() { private val layoutInflater by lazy { LayoutInflater.from(context) } diff --git a/app/src/main/java/com/casic/detector/extensions/Context.kt b/app/src/main/java/com/casic/detector/extensions/Context.kt deleted file mode 100644 index 9e9060f..0000000 --- a/app/src/main/java/com/casic/detector/extensions/Context.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.detector.extensions - -import android.content.Context -import android.view.ViewGroup -import com.pengxh.kt.lite.extensions.getStatusBarHeight - -/** - * 设置沉浸式状态栏,兼容Android 11+ - * */ -fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) - rootView.requestLayout() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/Int.kt b/app/src/main/java/com/casic/detector/extensions/Int.kt index d67cac8..10275bb 100644 --- a/app/src/main/java/com/casic/detector/extensions/Int.kt +++ b/app/src/main/java/com/casic/detector/extensions/Int.kt @@ -13,12 +13,4 @@ paint.color = color canvas.drawArc(rectF, 0f, 360f, true, paint) return bitmap -} - -fun Int.appendZero(): String { - return if (this < 10) { - "0$this" - } else { - this.toString() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt new file mode 100644 index 0000000..cfeda1d --- /dev/null +++ b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt @@ -0,0 +1,31 @@ +package com.casic.detector.extensions + +import android.app.Activity +import android.view.ViewGroup +import androidx.annotation.ColorRes +import androidx.fragment.app.Fragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.getStatusBarHeight + +fun ViewGroup.initImmersionBar(activity: Activity, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(activity) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(activity)) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = activity.getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} + +fun ViewGroup.initImmersionBar(fragment: Fragment, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(fragment) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(fragment.requireContext())) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = fragment.requireContext().getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt index 9619b05..c6c8885 100644 --- a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt @@ -13,7 +13,7 @@ ) const val PERMISSIONS_CODE = 999 - const val RADIUS_SIZE = 100f //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 const val AUTO_SAVE = "AUTO_SAVE" const val USER_ACCOUNT = "USER_ACCOUNT" diff --git a/app/build.gradle b/app/build.gradle index f51e0dd..219ce47 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ applicationId "com.casic.detector" minSdkVersion 22 targetSdkVersion 33 - versionCode 5010 - versionName "5.0.1" + versionCode 5020 + versionName "5.0.2" ndk { moduleName "serial_port" @@ -76,7 +76,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.3' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt index 6f694dd..397bf90 100644 --- a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt +++ b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt @@ -21,7 +21,7 @@ * @param spacing 上下左右外边距,无需在 [androidx.recyclerview.widget.RecyclerView] 设置边距 * */ class EditableImageAdapter( - private val context: Context, private val imageCountLimit: Int, private val spacing: Float + private val context: Context, private val imageCountLimit: Int, private val spacing: Int ) : RecyclerView.Adapter() { private val layoutInflater by lazy { LayoutInflater.from(context) } diff --git a/app/src/main/java/com/casic/detector/extensions/Context.kt b/app/src/main/java/com/casic/detector/extensions/Context.kt deleted file mode 100644 index 9e9060f..0000000 --- a/app/src/main/java/com/casic/detector/extensions/Context.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.detector.extensions - -import android.content.Context -import android.view.ViewGroup -import com.pengxh.kt.lite.extensions.getStatusBarHeight - -/** - * 设置沉浸式状态栏,兼容Android 11+ - * */ -fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) - rootView.requestLayout() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/Int.kt b/app/src/main/java/com/casic/detector/extensions/Int.kt index d67cac8..10275bb 100644 --- a/app/src/main/java/com/casic/detector/extensions/Int.kt +++ b/app/src/main/java/com/casic/detector/extensions/Int.kt @@ -13,12 +13,4 @@ paint.color = color canvas.drawArc(rectF, 0f, 360f, true, paint) return bitmap -} - -fun Int.appendZero(): String { - return if (this < 10) { - "0$this" - } else { - this.toString() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt new file mode 100644 index 0000000..cfeda1d --- /dev/null +++ b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt @@ -0,0 +1,31 @@ +package com.casic.detector.extensions + +import android.app.Activity +import android.view.ViewGroup +import androidx.annotation.ColorRes +import androidx.fragment.app.Fragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.getStatusBarHeight + +fun ViewGroup.initImmersionBar(activity: Activity, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(activity) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(activity)) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = activity.getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} + +fun ViewGroup.initImmersionBar(fragment: Fragment, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(fragment) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(fragment.requireContext())) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = fragment.requireContext().getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt index 9619b05..c6c8885 100644 --- a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt @@ -13,7 +13,7 @@ ) const val PERMISSIONS_CODE = 999 - const val RADIUS_SIZE = 100f //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 const val AUTO_SAVE = "AUTO_SAVE" const val USER_ACCOUNT = "USER_ACCOUNT" diff --git a/app/src/main/java/com/casic/detector/utils/LocationHub.kt b/app/src/main/java/com/casic/detector/utils/LocationHub.kt index d1fed79..3b5d46f 100644 --- a/app/src/main/java/com/casic/detector/utils/LocationHub.kt +++ b/app/src/main/java/com/casic/detector/utils/LocationHub.kt @@ -13,14 +13,8 @@ import com.amap.api.services.geocoder.RegeocodeResult import com.casic.detector.callback.IAddressListener import com.casic.detector.callback.ILocationListener -import com.pengxh.kt.lite.base.BaseSingleton -class LocationHub private constructor(context: Context) { - - companion object : BaseSingleton() { - override val creator: (Context) -> LocationHub - get() = ::LocationHub - } +class LocationHub constructor(context: Context) { private val kTag = "LocationHub" private val locationClient by lazy { AMapLocationClient(context) } diff --git a/app/build.gradle b/app/build.gradle index f51e0dd..219ce47 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ applicationId "com.casic.detector" minSdkVersion 22 targetSdkVersion 33 - versionCode 5010 - versionName "5.0.1" + versionCode 5020 + versionName "5.0.2" ndk { moduleName "serial_port" @@ -76,7 +76,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.3' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt index 6f694dd..397bf90 100644 --- a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt +++ b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt @@ -21,7 +21,7 @@ * @param spacing 上下左右外边距,无需在 [androidx.recyclerview.widget.RecyclerView] 设置边距 * */ class EditableImageAdapter( - private val context: Context, private val imageCountLimit: Int, private val spacing: Float + private val context: Context, private val imageCountLimit: Int, private val spacing: Int ) : RecyclerView.Adapter() { private val layoutInflater by lazy { LayoutInflater.from(context) } diff --git a/app/src/main/java/com/casic/detector/extensions/Context.kt b/app/src/main/java/com/casic/detector/extensions/Context.kt deleted file mode 100644 index 9e9060f..0000000 --- a/app/src/main/java/com/casic/detector/extensions/Context.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.detector.extensions - -import android.content.Context -import android.view.ViewGroup -import com.pengxh.kt.lite.extensions.getStatusBarHeight - -/** - * 设置沉浸式状态栏,兼容Android 11+ - * */ -fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) - rootView.requestLayout() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/Int.kt b/app/src/main/java/com/casic/detector/extensions/Int.kt index d67cac8..10275bb 100644 --- a/app/src/main/java/com/casic/detector/extensions/Int.kt +++ b/app/src/main/java/com/casic/detector/extensions/Int.kt @@ -13,12 +13,4 @@ paint.color = color canvas.drawArc(rectF, 0f, 360f, true, paint) return bitmap -} - -fun Int.appendZero(): String { - return if (this < 10) { - "0$this" - } else { - this.toString() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt new file mode 100644 index 0000000..cfeda1d --- /dev/null +++ b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt @@ -0,0 +1,31 @@ +package com.casic.detector.extensions + +import android.app.Activity +import android.view.ViewGroup +import androidx.annotation.ColorRes +import androidx.fragment.app.Fragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.getStatusBarHeight + +fun ViewGroup.initImmersionBar(activity: Activity, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(activity) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(activity)) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = activity.getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} + +fun ViewGroup.initImmersionBar(fragment: Fragment, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(fragment) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(fragment.requireContext())) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = fragment.requireContext().getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt index 9619b05..c6c8885 100644 --- a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt @@ -13,7 +13,7 @@ ) const val PERMISSIONS_CODE = 999 - const val RADIUS_SIZE = 100f //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 const val AUTO_SAVE = "AUTO_SAVE" const val USER_ACCOUNT = "USER_ACCOUNT" diff --git a/app/src/main/java/com/casic/detector/utils/LocationHub.kt b/app/src/main/java/com/casic/detector/utils/LocationHub.kt index d1fed79..3b5d46f 100644 --- a/app/src/main/java/com/casic/detector/utils/LocationHub.kt +++ b/app/src/main/java/com/casic/detector/utils/LocationHub.kt @@ -13,14 +13,8 @@ import com.amap.api.services.geocoder.RegeocodeResult import com.casic.detector.callback.IAddressListener import com.casic.detector.callback.ILocationListener -import com.pengxh.kt.lite.base.BaseSingleton -class LocationHub private constructor(context: Context) { - - companion object : BaseSingleton() { - override val creator: (Context) -> LocationHub - get() = ::LocationHub - } +class LocationHub constructor(context: Context) { private val kTag = "LocationHub" private val locationClient by lazy { AMapLocationClient(context) } diff --git a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt index 44d50e6..f073ceb 100644 --- a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt @@ -1,7 +1,6 @@ package com.casic.detector.view import android.content.Context -import android.graphics.Color import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -12,10 +11,10 @@ import com.bumptech.glide.Glide import com.casic.detector.R import com.casic.detector.databinding.ActivityBigImageBinding +import com.casic.detector.extensions.initImmersionBar import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil class BigImageActivity : KotlinBaseActivity() { @@ -24,7 +23,7 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, Color.BLACK) + binding.rootView.initImmersionBar(this, false, R.color.black) binding.leftBackView.setOnClickListener { finish() } } diff --git a/app/build.gradle b/app/build.gradle index f51e0dd..219ce47 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ applicationId "com.casic.detector" minSdkVersion 22 targetSdkVersion 33 - versionCode 5010 - versionName "5.0.1" + versionCode 5020 + versionName "5.0.2" ndk { moduleName "serial_port" @@ -76,7 +76,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.3' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt index 6f694dd..397bf90 100644 --- a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt +++ b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt @@ -21,7 +21,7 @@ * @param spacing 上下左右外边距,无需在 [androidx.recyclerview.widget.RecyclerView] 设置边距 * */ class EditableImageAdapter( - private val context: Context, private val imageCountLimit: Int, private val spacing: Float + private val context: Context, private val imageCountLimit: Int, private val spacing: Int ) : RecyclerView.Adapter() { private val layoutInflater by lazy { LayoutInflater.from(context) } diff --git a/app/src/main/java/com/casic/detector/extensions/Context.kt b/app/src/main/java/com/casic/detector/extensions/Context.kt deleted file mode 100644 index 9e9060f..0000000 --- a/app/src/main/java/com/casic/detector/extensions/Context.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.detector.extensions - -import android.content.Context -import android.view.ViewGroup -import com.pengxh.kt.lite.extensions.getStatusBarHeight - -/** - * 设置沉浸式状态栏,兼容Android 11+ - * */ -fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) - rootView.requestLayout() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/Int.kt b/app/src/main/java/com/casic/detector/extensions/Int.kt index d67cac8..10275bb 100644 --- a/app/src/main/java/com/casic/detector/extensions/Int.kt +++ b/app/src/main/java/com/casic/detector/extensions/Int.kt @@ -13,12 +13,4 @@ paint.color = color canvas.drawArc(rectF, 0f, 360f, true, paint) return bitmap -} - -fun Int.appendZero(): String { - return if (this < 10) { - "0$this" - } else { - this.toString() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt new file mode 100644 index 0000000..cfeda1d --- /dev/null +++ b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt @@ -0,0 +1,31 @@ +package com.casic.detector.extensions + +import android.app.Activity +import android.view.ViewGroup +import androidx.annotation.ColorRes +import androidx.fragment.app.Fragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.getStatusBarHeight + +fun ViewGroup.initImmersionBar(activity: Activity, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(activity) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(activity)) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = activity.getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} + +fun ViewGroup.initImmersionBar(fragment: Fragment, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(fragment) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(fragment.requireContext())) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = fragment.requireContext().getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt index 9619b05..c6c8885 100644 --- a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt @@ -13,7 +13,7 @@ ) const val PERMISSIONS_CODE = 999 - const val RADIUS_SIZE = 100f //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 const val AUTO_SAVE = "AUTO_SAVE" const val USER_ACCOUNT = "USER_ACCOUNT" diff --git a/app/src/main/java/com/casic/detector/utils/LocationHub.kt b/app/src/main/java/com/casic/detector/utils/LocationHub.kt index d1fed79..3b5d46f 100644 --- a/app/src/main/java/com/casic/detector/utils/LocationHub.kt +++ b/app/src/main/java/com/casic/detector/utils/LocationHub.kt @@ -13,14 +13,8 @@ import com.amap.api.services.geocoder.RegeocodeResult import com.casic.detector.callback.IAddressListener import com.casic.detector.callback.ILocationListener -import com.pengxh.kt.lite.base.BaseSingleton -class LocationHub private constructor(context: Context) { - - companion object : BaseSingleton() { - override val creator: (Context) -> LocationHub - get() = ::LocationHub - } +class LocationHub constructor(context: Context) { private val kTag = "LocationHub" private val locationClient by lazy { AMapLocationClient(context) } diff --git a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt index 44d50e6..f073ceb 100644 --- a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt @@ -1,7 +1,6 @@ package com.casic.detector.view import android.content.Context -import android.graphics.Color import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -12,10 +11,10 @@ import com.bumptech.glide.Glide import com.casic.detector.R import com.casic.detector.databinding.ActivityBigImageBinding +import com.casic.detector.extensions.initImmersionBar import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil class BigImageActivity : KotlinBaseActivity() { @@ -24,7 +23,7 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, Color.BLACK) + binding.rootView.initImmersionBar(this, false, R.color.black) binding.leftBackView.setOnClickListener { finish() } } diff --git a/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt b/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt index fcab886..68d54b2 100644 --- a/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt +++ b/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt @@ -27,15 +27,14 @@ import com.casic.detector.extensions.* import com.casic.detector.utils.* import com.casic.detector.vm.TaskViewModel -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog import java.io.File import java.io.IOException @@ -53,7 +52,7 @@ private lateinit var soundPool: SoundPool private var soundResId = 0 private val gpioManager by lazy { GpioManager() } - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler override fun initViewBinding(): ActivityInstallLabelBinding { @@ -63,7 +62,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN or WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN) - imageAdapter = EditableImageAdapter(this, 3, 3f) + imageAdapter = EditableImageAdapter(this, 3, 3) binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] @@ -448,9 +447,7 @@ binding.titleInclude.titleView.text = "安装新标识器" binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.mainBackground) - .init() - initLayoutImmersionBar(binding.rootView) + binding.rootView.initImmersionBar(this, true, R.color.white) } override fun onDestroy() { diff --git a/app/build.gradle b/app/build.gradle index f51e0dd..219ce47 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ applicationId "com.casic.detector" minSdkVersion 22 targetSdkVersion 33 - versionCode 5010 - versionName "5.0.1" + versionCode 5020 + versionName "5.0.2" ndk { moduleName "serial_port" @@ -76,7 +76,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.3' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt index 6f694dd..397bf90 100644 --- a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt +++ b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt @@ -21,7 +21,7 @@ * @param spacing 上下左右外边距,无需在 [androidx.recyclerview.widget.RecyclerView] 设置边距 * */ class EditableImageAdapter( - private val context: Context, private val imageCountLimit: Int, private val spacing: Float + private val context: Context, private val imageCountLimit: Int, private val spacing: Int ) : RecyclerView.Adapter() { private val layoutInflater by lazy { LayoutInflater.from(context) } diff --git a/app/src/main/java/com/casic/detector/extensions/Context.kt b/app/src/main/java/com/casic/detector/extensions/Context.kt deleted file mode 100644 index 9e9060f..0000000 --- a/app/src/main/java/com/casic/detector/extensions/Context.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.detector.extensions - -import android.content.Context -import android.view.ViewGroup -import com.pengxh.kt.lite.extensions.getStatusBarHeight - -/** - * 设置沉浸式状态栏,兼容Android 11+ - * */ -fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) - rootView.requestLayout() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/Int.kt b/app/src/main/java/com/casic/detector/extensions/Int.kt index d67cac8..10275bb 100644 --- a/app/src/main/java/com/casic/detector/extensions/Int.kt +++ b/app/src/main/java/com/casic/detector/extensions/Int.kt @@ -13,12 +13,4 @@ paint.color = color canvas.drawArc(rectF, 0f, 360f, true, paint) return bitmap -} - -fun Int.appendZero(): String { - return if (this < 10) { - "0$this" - } else { - this.toString() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt new file mode 100644 index 0000000..cfeda1d --- /dev/null +++ b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt @@ -0,0 +1,31 @@ +package com.casic.detector.extensions + +import android.app.Activity +import android.view.ViewGroup +import androidx.annotation.ColorRes +import androidx.fragment.app.Fragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.getStatusBarHeight + +fun ViewGroup.initImmersionBar(activity: Activity, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(activity) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(activity)) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = activity.getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} + +fun ViewGroup.initImmersionBar(fragment: Fragment, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(fragment) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(fragment.requireContext())) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = fragment.requireContext().getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt index 9619b05..c6c8885 100644 --- a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt @@ -13,7 +13,7 @@ ) const val PERMISSIONS_CODE = 999 - const val RADIUS_SIZE = 100f //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 const val AUTO_SAVE = "AUTO_SAVE" const val USER_ACCOUNT = "USER_ACCOUNT" diff --git a/app/src/main/java/com/casic/detector/utils/LocationHub.kt b/app/src/main/java/com/casic/detector/utils/LocationHub.kt index d1fed79..3b5d46f 100644 --- a/app/src/main/java/com/casic/detector/utils/LocationHub.kt +++ b/app/src/main/java/com/casic/detector/utils/LocationHub.kt @@ -13,14 +13,8 @@ import com.amap.api.services.geocoder.RegeocodeResult import com.casic.detector.callback.IAddressListener import com.casic.detector.callback.ILocationListener -import com.pengxh.kt.lite.base.BaseSingleton -class LocationHub private constructor(context: Context) { - - companion object : BaseSingleton() { - override val creator: (Context) -> LocationHub - get() = ::LocationHub - } +class LocationHub constructor(context: Context) { private val kTag = "LocationHub" private val locationClient by lazy { AMapLocationClient(context) } diff --git a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt index 44d50e6..f073ceb 100644 --- a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt @@ -1,7 +1,6 @@ package com.casic.detector.view import android.content.Context -import android.graphics.Color import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -12,10 +11,10 @@ import com.bumptech.glide.Glide import com.casic.detector.R import com.casic.detector.databinding.ActivityBigImageBinding +import com.casic.detector.extensions.initImmersionBar import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil class BigImageActivity : KotlinBaseActivity() { @@ -24,7 +23,7 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, Color.BLACK) + binding.rootView.initImmersionBar(this, false, R.color.black) binding.leftBackView.setOnClickListener { finish() } } diff --git a/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt b/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt index fcab886..68d54b2 100644 --- a/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt +++ b/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt @@ -27,15 +27,14 @@ import com.casic.detector.extensions.* import com.casic.detector.utils.* import com.casic.detector.vm.TaskViewModel -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog import java.io.File import java.io.IOException @@ -53,7 +52,7 @@ private lateinit var soundPool: SoundPool private var soundResId = 0 private val gpioManager by lazy { GpioManager() } - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler override fun initViewBinding(): ActivityInstallLabelBinding { @@ -63,7 +62,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN or WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN) - imageAdapter = EditableImageAdapter(this, 3, 3f) + imageAdapter = EditableImageAdapter(this, 3, 3) binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] @@ -448,9 +447,7 @@ binding.titleInclude.titleView.text = "安装新标识器" binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.mainBackground) - .init() - initLayoutImmersionBar(binding.rootView) + binding.rootView.initImmersionBar(this, true, R.color.white) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/detector/view/LoginActivity.kt b/app/src/main/java/com/casic/detector/view/LoginActivity.kt index f24f691..4b8618a 100644 --- a/app/src/main/java/com/casic/detector/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/detector/view/LoginActivity.kt @@ -1,22 +1,18 @@ package com.casic.detector.view import android.os.Bundle -import android.util.Log import androidx.lifecycle.ViewModelProvider import com.amap.api.navi.NaviSetting import com.casic.detector.databinding.ActivityLoginBinding -import com.casic.detector.extensions.initLayoutImmersionBar import com.casic.detector.utils.GpioManager import com.casic.detector.utils.LoadingDialogHub import com.casic.detector.utils.LocaleConstant import com.casic.detector.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.getScreenHeight -import com.pengxh.kt.lite.extensions.getScreenWidth import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog class LoginActivity : KotlinBaseActivity() { @@ -102,9 +98,6 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(binding.rootView) - - Log.d(kTag, "setupTopBarLayout => [${getScreenWidth()}, ${getScreenHeight()}]") } override fun onResume() { diff --git a/app/build.gradle b/app/build.gradle index f51e0dd..219ce47 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ applicationId "com.casic.detector" minSdkVersion 22 targetSdkVersion 33 - versionCode 5010 - versionName "5.0.1" + versionCode 5020 + versionName "5.0.2" ndk { moduleName "serial_port" @@ -76,7 +76,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.3' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt index 6f694dd..397bf90 100644 --- a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt +++ b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt @@ -21,7 +21,7 @@ * @param spacing 上下左右外边距,无需在 [androidx.recyclerview.widget.RecyclerView] 设置边距 * */ class EditableImageAdapter( - private val context: Context, private val imageCountLimit: Int, private val spacing: Float + private val context: Context, private val imageCountLimit: Int, private val spacing: Int ) : RecyclerView.Adapter() { private val layoutInflater by lazy { LayoutInflater.from(context) } diff --git a/app/src/main/java/com/casic/detector/extensions/Context.kt b/app/src/main/java/com/casic/detector/extensions/Context.kt deleted file mode 100644 index 9e9060f..0000000 --- a/app/src/main/java/com/casic/detector/extensions/Context.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.detector.extensions - -import android.content.Context -import android.view.ViewGroup -import com.pengxh.kt.lite.extensions.getStatusBarHeight - -/** - * 设置沉浸式状态栏,兼容Android 11+ - * */ -fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) - rootView.requestLayout() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/Int.kt b/app/src/main/java/com/casic/detector/extensions/Int.kt index d67cac8..10275bb 100644 --- a/app/src/main/java/com/casic/detector/extensions/Int.kt +++ b/app/src/main/java/com/casic/detector/extensions/Int.kt @@ -13,12 +13,4 @@ paint.color = color canvas.drawArc(rectF, 0f, 360f, true, paint) return bitmap -} - -fun Int.appendZero(): String { - return if (this < 10) { - "0$this" - } else { - this.toString() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt new file mode 100644 index 0000000..cfeda1d --- /dev/null +++ b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt @@ -0,0 +1,31 @@ +package com.casic.detector.extensions + +import android.app.Activity +import android.view.ViewGroup +import androidx.annotation.ColorRes +import androidx.fragment.app.Fragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.getStatusBarHeight + +fun ViewGroup.initImmersionBar(activity: Activity, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(activity) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(activity)) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = activity.getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} + +fun ViewGroup.initImmersionBar(fragment: Fragment, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(fragment) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(fragment.requireContext())) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = fragment.requireContext().getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt index 9619b05..c6c8885 100644 --- a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt @@ -13,7 +13,7 @@ ) const val PERMISSIONS_CODE = 999 - const val RADIUS_SIZE = 100f //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 const val AUTO_SAVE = "AUTO_SAVE" const val USER_ACCOUNT = "USER_ACCOUNT" diff --git a/app/src/main/java/com/casic/detector/utils/LocationHub.kt b/app/src/main/java/com/casic/detector/utils/LocationHub.kt index d1fed79..3b5d46f 100644 --- a/app/src/main/java/com/casic/detector/utils/LocationHub.kt +++ b/app/src/main/java/com/casic/detector/utils/LocationHub.kt @@ -13,14 +13,8 @@ import com.amap.api.services.geocoder.RegeocodeResult import com.casic.detector.callback.IAddressListener import com.casic.detector.callback.ILocationListener -import com.pengxh.kt.lite.base.BaseSingleton -class LocationHub private constructor(context: Context) { - - companion object : BaseSingleton() { - override val creator: (Context) -> LocationHub - get() = ::LocationHub - } +class LocationHub constructor(context: Context) { private val kTag = "LocationHub" private val locationClient by lazy { AMapLocationClient(context) } diff --git a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt index 44d50e6..f073ceb 100644 --- a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt @@ -1,7 +1,6 @@ package com.casic.detector.view import android.content.Context -import android.graphics.Color import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -12,10 +11,10 @@ import com.bumptech.glide.Glide import com.casic.detector.R import com.casic.detector.databinding.ActivityBigImageBinding +import com.casic.detector.extensions.initImmersionBar import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil class BigImageActivity : KotlinBaseActivity() { @@ -24,7 +23,7 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, Color.BLACK) + binding.rootView.initImmersionBar(this, false, R.color.black) binding.leftBackView.setOnClickListener { finish() } } diff --git a/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt b/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt index fcab886..68d54b2 100644 --- a/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt +++ b/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt @@ -27,15 +27,14 @@ import com.casic.detector.extensions.* import com.casic.detector.utils.* import com.casic.detector.vm.TaskViewModel -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog import java.io.File import java.io.IOException @@ -53,7 +52,7 @@ private lateinit var soundPool: SoundPool private var soundResId = 0 private val gpioManager by lazy { GpioManager() } - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler override fun initViewBinding(): ActivityInstallLabelBinding { @@ -63,7 +62,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN or WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN) - imageAdapter = EditableImageAdapter(this, 3, 3f) + imageAdapter = EditableImageAdapter(this, 3, 3) binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] @@ -448,9 +447,7 @@ binding.titleInclude.titleView.text = "安装新标识器" binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.mainBackground) - .init() - initLayoutImmersionBar(binding.rootView) + binding.rootView.initImmersionBar(this, true, R.color.white) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/detector/view/LoginActivity.kt b/app/src/main/java/com/casic/detector/view/LoginActivity.kt index f24f691..4b8618a 100644 --- a/app/src/main/java/com/casic/detector/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/detector/view/LoginActivity.kt @@ -1,22 +1,18 @@ package com.casic.detector.view import android.os.Bundle -import android.util.Log import androidx.lifecycle.ViewModelProvider import com.amap.api.navi.NaviSetting import com.casic.detector.databinding.ActivityLoginBinding -import com.casic.detector.extensions.initLayoutImmersionBar import com.casic.detector.utils.GpioManager import com.casic.detector.utils.LoadingDialogHub import com.casic.detector.utils.LocaleConstant import com.casic.detector.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.getScreenHeight -import com.pengxh.kt.lite.extensions.getScreenWidth import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog class LoginActivity : KotlinBaseActivity() { @@ -102,9 +98,6 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(binding.rootView) - - Log.d(kTag, "setupTopBarLayout => [${getScreenWidth()}, ${getScreenHeight()}]") } override fun onResume() { diff --git a/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt b/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt index c66adba..dcf39b4 100644 --- a/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt +++ b/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt @@ -6,6 +6,7 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.util.Log import android.view.animation.Animation import android.view.animation.RotateAnimation import androidx.lifecycle.ViewModelProvider @@ -15,7 +16,6 @@ import com.casic.detector.bean.TaskBean import com.casic.detector.databinding.ActivitySearchLabelBinding import com.casic.detector.extensions.hexToString -import com.casic.detector.extensions.initLayoutImmersionBar import com.casic.detector.extensions.toHex import com.casic.detector.utils.DataBaseManager import com.casic.detector.utils.GpioManager @@ -27,9 +27,9 @@ 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.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay @@ -47,12 +47,12 @@ private var slowResId = 0 private var fastResId = 0 private val gpioManager by lazy { GpioManager() } - private lateinit var weakReferenceHandler: WeakReferenceHandler + private val weakReferenceHandler by lazy { WeakReferenceHandler(this) } private val detectTimer by lazy { Timer() } private val decimal by lazy { DecimalFormat("0.0") } private var identifierId = "" private val lastDegreeMap by lazy { HashMap() } - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private var isPlaying = false private var isDetectDepth = false private lateinit var taskViewModel: TaskViewModel @@ -63,7 +63,6 @@ gpioManager.setGpioHigh("18") //角度 lastDegreeMap["lastDegree"] = 0f - weakReferenceHandler = WeakReferenceHandler(this) taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] val audioAttributes = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_MEDIA) @@ -302,6 +301,8 @@ } this.identifierId = id + } else { + Log.d(kTag, "handleMessage => $id") } } } @@ -323,7 +324,6 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() - initLayoutImmersionBar(binding.rootView) } override fun onDestroy() { diff --git a/app/build.gradle b/app/build.gradle index f51e0dd..219ce47 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ applicationId "com.casic.detector" minSdkVersion 22 targetSdkVersion 33 - versionCode 5010 - versionName "5.0.1" + versionCode 5020 + versionName "5.0.2" ndk { moduleName "serial_port" @@ -76,7 +76,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.3' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt index 6f694dd..397bf90 100644 --- a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt +++ b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt @@ -21,7 +21,7 @@ * @param spacing 上下左右外边距,无需在 [androidx.recyclerview.widget.RecyclerView] 设置边距 * */ class EditableImageAdapter( - private val context: Context, private val imageCountLimit: Int, private val spacing: Float + private val context: Context, private val imageCountLimit: Int, private val spacing: Int ) : RecyclerView.Adapter() { private val layoutInflater by lazy { LayoutInflater.from(context) } diff --git a/app/src/main/java/com/casic/detector/extensions/Context.kt b/app/src/main/java/com/casic/detector/extensions/Context.kt deleted file mode 100644 index 9e9060f..0000000 --- a/app/src/main/java/com/casic/detector/extensions/Context.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.detector.extensions - -import android.content.Context -import android.view.ViewGroup -import com.pengxh.kt.lite.extensions.getStatusBarHeight - -/** - * 设置沉浸式状态栏,兼容Android 11+ - * */ -fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) - rootView.requestLayout() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/Int.kt b/app/src/main/java/com/casic/detector/extensions/Int.kt index d67cac8..10275bb 100644 --- a/app/src/main/java/com/casic/detector/extensions/Int.kt +++ b/app/src/main/java/com/casic/detector/extensions/Int.kt @@ -13,12 +13,4 @@ paint.color = color canvas.drawArc(rectF, 0f, 360f, true, paint) return bitmap -} - -fun Int.appendZero(): String { - return if (this < 10) { - "0$this" - } else { - this.toString() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt new file mode 100644 index 0000000..cfeda1d --- /dev/null +++ b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt @@ -0,0 +1,31 @@ +package com.casic.detector.extensions + +import android.app.Activity +import android.view.ViewGroup +import androidx.annotation.ColorRes +import androidx.fragment.app.Fragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.getStatusBarHeight + +fun ViewGroup.initImmersionBar(activity: Activity, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(activity) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(activity)) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = activity.getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} + +fun ViewGroup.initImmersionBar(fragment: Fragment, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(fragment) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(fragment.requireContext())) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = fragment.requireContext().getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt index 9619b05..c6c8885 100644 --- a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt @@ -13,7 +13,7 @@ ) const val PERMISSIONS_CODE = 999 - const val RADIUS_SIZE = 100f //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 const val AUTO_SAVE = "AUTO_SAVE" const val USER_ACCOUNT = "USER_ACCOUNT" diff --git a/app/src/main/java/com/casic/detector/utils/LocationHub.kt b/app/src/main/java/com/casic/detector/utils/LocationHub.kt index d1fed79..3b5d46f 100644 --- a/app/src/main/java/com/casic/detector/utils/LocationHub.kt +++ b/app/src/main/java/com/casic/detector/utils/LocationHub.kt @@ -13,14 +13,8 @@ import com.amap.api.services.geocoder.RegeocodeResult import com.casic.detector.callback.IAddressListener import com.casic.detector.callback.ILocationListener -import com.pengxh.kt.lite.base.BaseSingleton -class LocationHub private constructor(context: Context) { - - companion object : BaseSingleton() { - override val creator: (Context) -> LocationHub - get() = ::LocationHub - } +class LocationHub constructor(context: Context) { private val kTag = "LocationHub" private val locationClient by lazy { AMapLocationClient(context) } diff --git a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt index 44d50e6..f073ceb 100644 --- a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt @@ -1,7 +1,6 @@ package com.casic.detector.view import android.content.Context -import android.graphics.Color import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -12,10 +11,10 @@ import com.bumptech.glide.Glide import com.casic.detector.R import com.casic.detector.databinding.ActivityBigImageBinding +import com.casic.detector.extensions.initImmersionBar import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil class BigImageActivity : KotlinBaseActivity() { @@ -24,7 +23,7 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, Color.BLACK) + binding.rootView.initImmersionBar(this, false, R.color.black) binding.leftBackView.setOnClickListener { finish() } } diff --git a/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt b/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt index fcab886..68d54b2 100644 --- a/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt +++ b/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt @@ -27,15 +27,14 @@ import com.casic.detector.extensions.* import com.casic.detector.utils.* import com.casic.detector.vm.TaskViewModel -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog import java.io.File import java.io.IOException @@ -53,7 +52,7 @@ private lateinit var soundPool: SoundPool private var soundResId = 0 private val gpioManager by lazy { GpioManager() } - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler override fun initViewBinding(): ActivityInstallLabelBinding { @@ -63,7 +62,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN or WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN) - imageAdapter = EditableImageAdapter(this, 3, 3f) + imageAdapter = EditableImageAdapter(this, 3, 3) binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] @@ -448,9 +447,7 @@ binding.titleInclude.titleView.text = "安装新标识器" binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.mainBackground) - .init() - initLayoutImmersionBar(binding.rootView) + binding.rootView.initImmersionBar(this, true, R.color.white) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/detector/view/LoginActivity.kt b/app/src/main/java/com/casic/detector/view/LoginActivity.kt index f24f691..4b8618a 100644 --- a/app/src/main/java/com/casic/detector/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/detector/view/LoginActivity.kt @@ -1,22 +1,18 @@ package com.casic.detector.view import android.os.Bundle -import android.util.Log import androidx.lifecycle.ViewModelProvider import com.amap.api.navi.NaviSetting import com.casic.detector.databinding.ActivityLoginBinding -import com.casic.detector.extensions.initLayoutImmersionBar import com.casic.detector.utils.GpioManager import com.casic.detector.utils.LoadingDialogHub import com.casic.detector.utils.LocaleConstant import com.casic.detector.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.getScreenHeight -import com.pengxh.kt.lite.extensions.getScreenWidth import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog class LoginActivity : KotlinBaseActivity() { @@ -102,9 +98,6 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(binding.rootView) - - Log.d(kTag, "setupTopBarLayout => [${getScreenWidth()}, ${getScreenHeight()}]") } override fun onResume() { diff --git a/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt b/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt index c66adba..dcf39b4 100644 --- a/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt +++ b/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt @@ -6,6 +6,7 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.util.Log import android.view.animation.Animation import android.view.animation.RotateAnimation import androidx.lifecycle.ViewModelProvider @@ -15,7 +16,6 @@ import com.casic.detector.bean.TaskBean import com.casic.detector.databinding.ActivitySearchLabelBinding import com.casic.detector.extensions.hexToString -import com.casic.detector.extensions.initLayoutImmersionBar import com.casic.detector.extensions.toHex import com.casic.detector.utils.DataBaseManager import com.casic.detector.utils.GpioManager @@ -27,9 +27,9 @@ 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.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay @@ -47,12 +47,12 @@ private var slowResId = 0 private var fastResId = 0 private val gpioManager by lazy { GpioManager() } - private lateinit var weakReferenceHandler: WeakReferenceHandler + private val weakReferenceHandler by lazy { WeakReferenceHandler(this) } private val detectTimer by lazy { Timer() } private val decimal by lazy { DecimalFormat("0.0") } private var identifierId = "" private val lastDegreeMap by lazy { HashMap() } - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private var isPlaying = false private var isDetectDepth = false private lateinit var taskViewModel: TaskViewModel @@ -63,7 +63,6 @@ gpioManager.setGpioHigh("18") //角度 lastDegreeMap["lastDegree"] = 0f - weakReferenceHandler = WeakReferenceHandler(this) taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] val audioAttributes = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_MEDIA) @@ -302,6 +301,8 @@ } this.identifierId = id + } else { + Log.d(kTag, "handleMessage => $id") } } } @@ -323,7 +324,6 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() - initLayoutImmersionBar(binding.rootView) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt b/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt index 0118b89..41394b0 100644 --- a/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt @@ -25,15 +25,15 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import java.io.File @SuppressLint("SetTextI18n") class UploadEventActivity : KotlinBaseActivity() { private val context: Context = this@UploadEventActivity - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private lateinit var imageAdapter: EditableImageAdapter private val realPaths: ArrayList = ArrayList() //真实图片路径 private lateinit var taskViewModel: TaskViewModel @@ -90,7 +90,7 @@ } }) - imageAdapter = EditableImageAdapter(this, 3, 3f) + imageAdapter = EditableImageAdapter(this, 3, 3) binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter } diff --git a/app/build.gradle b/app/build.gradle index f51e0dd..219ce47 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ applicationId "com.casic.detector" minSdkVersion 22 targetSdkVersion 33 - versionCode 5010 - versionName "5.0.1" + versionCode 5020 + versionName "5.0.2" ndk { moduleName "serial_port" @@ -76,7 +76,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.3' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt index 6f694dd..397bf90 100644 --- a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt +++ b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt @@ -21,7 +21,7 @@ * @param spacing 上下左右外边距,无需在 [androidx.recyclerview.widget.RecyclerView] 设置边距 * */ class EditableImageAdapter( - private val context: Context, private val imageCountLimit: Int, private val spacing: Float + private val context: Context, private val imageCountLimit: Int, private val spacing: Int ) : RecyclerView.Adapter() { private val layoutInflater by lazy { LayoutInflater.from(context) } diff --git a/app/src/main/java/com/casic/detector/extensions/Context.kt b/app/src/main/java/com/casic/detector/extensions/Context.kt deleted file mode 100644 index 9e9060f..0000000 --- a/app/src/main/java/com/casic/detector/extensions/Context.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.detector.extensions - -import android.content.Context -import android.view.ViewGroup -import com.pengxh.kt.lite.extensions.getStatusBarHeight - -/** - * 设置沉浸式状态栏,兼容Android 11+ - * */ -fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) - rootView.requestLayout() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/Int.kt b/app/src/main/java/com/casic/detector/extensions/Int.kt index d67cac8..10275bb 100644 --- a/app/src/main/java/com/casic/detector/extensions/Int.kt +++ b/app/src/main/java/com/casic/detector/extensions/Int.kt @@ -13,12 +13,4 @@ paint.color = color canvas.drawArc(rectF, 0f, 360f, true, paint) return bitmap -} - -fun Int.appendZero(): String { - return if (this < 10) { - "0$this" - } else { - this.toString() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt new file mode 100644 index 0000000..cfeda1d --- /dev/null +++ b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt @@ -0,0 +1,31 @@ +package com.casic.detector.extensions + +import android.app.Activity +import android.view.ViewGroup +import androidx.annotation.ColorRes +import androidx.fragment.app.Fragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.getStatusBarHeight + +fun ViewGroup.initImmersionBar(activity: Activity, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(activity) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(activity)) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = activity.getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} + +fun ViewGroup.initImmersionBar(fragment: Fragment, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(fragment) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(fragment.requireContext())) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = fragment.requireContext().getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt index 9619b05..c6c8885 100644 --- a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt @@ -13,7 +13,7 @@ ) const val PERMISSIONS_CODE = 999 - const val RADIUS_SIZE = 100f //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 const val AUTO_SAVE = "AUTO_SAVE" const val USER_ACCOUNT = "USER_ACCOUNT" diff --git a/app/src/main/java/com/casic/detector/utils/LocationHub.kt b/app/src/main/java/com/casic/detector/utils/LocationHub.kt index d1fed79..3b5d46f 100644 --- a/app/src/main/java/com/casic/detector/utils/LocationHub.kt +++ b/app/src/main/java/com/casic/detector/utils/LocationHub.kt @@ -13,14 +13,8 @@ import com.amap.api.services.geocoder.RegeocodeResult import com.casic.detector.callback.IAddressListener import com.casic.detector.callback.ILocationListener -import com.pengxh.kt.lite.base.BaseSingleton -class LocationHub private constructor(context: Context) { - - companion object : BaseSingleton() { - override val creator: (Context) -> LocationHub - get() = ::LocationHub - } +class LocationHub constructor(context: Context) { private val kTag = "LocationHub" private val locationClient by lazy { AMapLocationClient(context) } diff --git a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt index 44d50e6..f073ceb 100644 --- a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt @@ -1,7 +1,6 @@ package com.casic.detector.view import android.content.Context -import android.graphics.Color import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -12,10 +11,10 @@ import com.bumptech.glide.Glide import com.casic.detector.R import com.casic.detector.databinding.ActivityBigImageBinding +import com.casic.detector.extensions.initImmersionBar import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil class BigImageActivity : KotlinBaseActivity() { @@ -24,7 +23,7 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, Color.BLACK) + binding.rootView.initImmersionBar(this, false, R.color.black) binding.leftBackView.setOnClickListener { finish() } } diff --git a/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt b/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt index fcab886..68d54b2 100644 --- a/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt +++ b/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt @@ -27,15 +27,14 @@ import com.casic.detector.extensions.* import com.casic.detector.utils.* import com.casic.detector.vm.TaskViewModel -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog import java.io.File import java.io.IOException @@ -53,7 +52,7 @@ private lateinit var soundPool: SoundPool private var soundResId = 0 private val gpioManager by lazy { GpioManager() } - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler override fun initViewBinding(): ActivityInstallLabelBinding { @@ -63,7 +62,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN or WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN) - imageAdapter = EditableImageAdapter(this, 3, 3f) + imageAdapter = EditableImageAdapter(this, 3, 3) binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] @@ -448,9 +447,7 @@ binding.titleInclude.titleView.text = "安装新标识器" binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.mainBackground) - .init() - initLayoutImmersionBar(binding.rootView) + binding.rootView.initImmersionBar(this, true, R.color.white) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/detector/view/LoginActivity.kt b/app/src/main/java/com/casic/detector/view/LoginActivity.kt index f24f691..4b8618a 100644 --- a/app/src/main/java/com/casic/detector/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/detector/view/LoginActivity.kt @@ -1,22 +1,18 @@ package com.casic.detector.view import android.os.Bundle -import android.util.Log import androidx.lifecycle.ViewModelProvider import com.amap.api.navi.NaviSetting import com.casic.detector.databinding.ActivityLoginBinding -import com.casic.detector.extensions.initLayoutImmersionBar import com.casic.detector.utils.GpioManager import com.casic.detector.utils.LoadingDialogHub import com.casic.detector.utils.LocaleConstant import com.casic.detector.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.getScreenHeight -import com.pengxh.kt.lite.extensions.getScreenWidth import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog class LoginActivity : KotlinBaseActivity() { @@ -102,9 +98,6 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(binding.rootView) - - Log.d(kTag, "setupTopBarLayout => [${getScreenWidth()}, ${getScreenHeight()}]") } override fun onResume() { diff --git a/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt b/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt index c66adba..dcf39b4 100644 --- a/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt +++ b/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt @@ -6,6 +6,7 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.util.Log import android.view.animation.Animation import android.view.animation.RotateAnimation import androidx.lifecycle.ViewModelProvider @@ -15,7 +16,6 @@ import com.casic.detector.bean.TaskBean import com.casic.detector.databinding.ActivitySearchLabelBinding import com.casic.detector.extensions.hexToString -import com.casic.detector.extensions.initLayoutImmersionBar import com.casic.detector.extensions.toHex import com.casic.detector.utils.DataBaseManager import com.casic.detector.utils.GpioManager @@ -27,9 +27,9 @@ 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.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay @@ -47,12 +47,12 @@ private var slowResId = 0 private var fastResId = 0 private val gpioManager by lazy { GpioManager() } - private lateinit var weakReferenceHandler: WeakReferenceHandler + private val weakReferenceHandler by lazy { WeakReferenceHandler(this) } private val detectTimer by lazy { Timer() } private val decimal by lazy { DecimalFormat("0.0") } private var identifierId = "" private val lastDegreeMap by lazy { HashMap() } - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private var isPlaying = false private var isDetectDepth = false private lateinit var taskViewModel: TaskViewModel @@ -63,7 +63,6 @@ gpioManager.setGpioHigh("18") //角度 lastDegreeMap["lastDegree"] = 0f - weakReferenceHandler = WeakReferenceHandler(this) taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] val audioAttributes = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_MEDIA) @@ -302,6 +301,8 @@ } this.identifierId = id + } else { + Log.d(kTag, "handleMessage => $id") } } } @@ -323,7 +324,6 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() - initLayoutImmersionBar(binding.rootView) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt b/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt index 0118b89..41394b0 100644 --- a/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt @@ -25,15 +25,15 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import java.io.File @SuppressLint("SetTextI18n") class UploadEventActivity : KotlinBaseActivity() { private val context: Context = this@UploadEventActivity - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private lateinit var imageAdapter: EditableImageAdapter private val realPaths: ArrayList = ArrayList() //真实图片路径 private lateinit var taskViewModel: TaskViewModel @@ -90,7 +90,7 @@ } }) - imageAdapter = EditableImageAdapter(this, 3, 3f) + imageAdapter = EditableImageAdapter(this, 3, 3) binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter } diff --git a/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt index 37c915c..464b921 100644 --- a/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt +++ b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt @@ -13,18 +13,16 @@ import com.casic.detector.R import com.casic.detector.databinding.ActivityVersionControlBinding import com.casic.detector.extensions.appendDownloadUrl -import com.casic.detector.extensions.initLayoutImmersionBar +import com.casic.detector.extensions.initImmersionBar import com.casic.detector.utils.FileType import com.casic.detector.utils.LoadingDialogHub import com.casic.detector.utils.LocaleConstant import com.casic.detector.vm.VersionViewModel -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.createDownloadFileDir -import com.pengxh.kt.lite.extensions.downloadFile import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.utils.FileDownloadManager +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import java.io.File @@ -42,6 +40,7 @@ progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) progressDialog.setCanceledOnTouchOutside(false) progressDialog.setCancelable(false) + progressDialog.max = 0 versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java] versionViewModel.versionResult.observe(this) { @@ -90,8 +89,7 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(binding.rootView) + binding.rootView.initImmersionBar(this, true, R.color.white) binding.titleInclude.titleView.visibility = View.GONE } @@ -108,22 +106,28 @@ val downloadPath = url!!.appendDownloadUrl(FileType.APK) Log.d(kTag, "downloadApk => $downloadPath") //开始下载 - downloadPath.downloadFile(createDownloadFileDir().toString(), object : OnDownloadListener { - override fun onDownloadStart(totalBytes: Long) { - progressDialog.max = totalBytes.toInt() - } + FileDownloadManager.Builder() + .setDownloadFileSource(downloadPath) + .setFileSuffix("apk") + .setFileSaveDirectory(createDownloadFileDir()) + .setOnFileDownloadListener(object : FileDownloadManager.OnFileDownloadListener { + override fun onDownloadEnd(file: File) { + progressDialog.dismiss() + progressDialog.progress = 0 + //安装APK + installApk(file) + } - override fun onProgressChanged(currentBytes: Long) { - progressDialog.progress = currentBytes.toInt() - } + override fun onFailure(throwable: Throwable) { - override fun onDownloadEnd(file: File?) { - progressDialog.dismiss() - progressDialog.progress = 0 - //安装APK - installApk(file) - } - }) + } + + override fun onProgressChanged(progress: Int) { + progressDialog.progress = progress + } + }) + .build() + .start() } private fun installApk(apkPackage: File?) { diff --git a/app/build.gradle b/app/build.gradle index f51e0dd..219ce47 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ applicationId "com.casic.detector" minSdkVersion 22 targetSdkVersion 33 - versionCode 5010 - versionName "5.0.1" + versionCode 5020 + versionName "5.0.2" ndk { moduleName "serial_port" @@ -76,7 +76,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.3' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt index 6f694dd..397bf90 100644 --- a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt +++ b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt @@ -21,7 +21,7 @@ * @param spacing 上下左右外边距,无需在 [androidx.recyclerview.widget.RecyclerView] 设置边距 * */ class EditableImageAdapter( - private val context: Context, private val imageCountLimit: Int, private val spacing: Float + private val context: Context, private val imageCountLimit: Int, private val spacing: Int ) : RecyclerView.Adapter() { private val layoutInflater by lazy { LayoutInflater.from(context) } diff --git a/app/src/main/java/com/casic/detector/extensions/Context.kt b/app/src/main/java/com/casic/detector/extensions/Context.kt deleted file mode 100644 index 9e9060f..0000000 --- a/app/src/main/java/com/casic/detector/extensions/Context.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.detector.extensions - -import android.content.Context -import android.view.ViewGroup -import com.pengxh.kt.lite.extensions.getStatusBarHeight - -/** - * 设置沉浸式状态栏,兼容Android 11+ - * */ -fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) - rootView.requestLayout() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/Int.kt b/app/src/main/java/com/casic/detector/extensions/Int.kt index d67cac8..10275bb 100644 --- a/app/src/main/java/com/casic/detector/extensions/Int.kt +++ b/app/src/main/java/com/casic/detector/extensions/Int.kt @@ -13,12 +13,4 @@ paint.color = color canvas.drawArc(rectF, 0f, 360f, true, paint) return bitmap -} - -fun Int.appendZero(): String { - return if (this < 10) { - "0$this" - } else { - this.toString() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt new file mode 100644 index 0000000..cfeda1d --- /dev/null +++ b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt @@ -0,0 +1,31 @@ +package com.casic.detector.extensions + +import android.app.Activity +import android.view.ViewGroup +import androidx.annotation.ColorRes +import androidx.fragment.app.Fragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.getStatusBarHeight + +fun ViewGroup.initImmersionBar(activity: Activity, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(activity) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(activity)) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = activity.getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} + +fun ViewGroup.initImmersionBar(fragment: Fragment, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(fragment) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(fragment.requireContext())) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = fragment.requireContext().getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt index 9619b05..c6c8885 100644 --- a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt @@ -13,7 +13,7 @@ ) const val PERMISSIONS_CODE = 999 - const val RADIUS_SIZE = 100f //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 const val AUTO_SAVE = "AUTO_SAVE" const val USER_ACCOUNT = "USER_ACCOUNT" diff --git a/app/src/main/java/com/casic/detector/utils/LocationHub.kt b/app/src/main/java/com/casic/detector/utils/LocationHub.kt index d1fed79..3b5d46f 100644 --- a/app/src/main/java/com/casic/detector/utils/LocationHub.kt +++ b/app/src/main/java/com/casic/detector/utils/LocationHub.kt @@ -13,14 +13,8 @@ import com.amap.api.services.geocoder.RegeocodeResult import com.casic.detector.callback.IAddressListener import com.casic.detector.callback.ILocationListener -import com.pengxh.kt.lite.base.BaseSingleton -class LocationHub private constructor(context: Context) { - - companion object : BaseSingleton() { - override val creator: (Context) -> LocationHub - get() = ::LocationHub - } +class LocationHub constructor(context: Context) { private val kTag = "LocationHub" private val locationClient by lazy { AMapLocationClient(context) } diff --git a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt index 44d50e6..f073ceb 100644 --- a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt @@ -1,7 +1,6 @@ package com.casic.detector.view import android.content.Context -import android.graphics.Color import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -12,10 +11,10 @@ import com.bumptech.glide.Glide import com.casic.detector.R import com.casic.detector.databinding.ActivityBigImageBinding +import com.casic.detector.extensions.initImmersionBar import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil class BigImageActivity : KotlinBaseActivity() { @@ -24,7 +23,7 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, Color.BLACK) + binding.rootView.initImmersionBar(this, false, R.color.black) binding.leftBackView.setOnClickListener { finish() } } diff --git a/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt b/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt index fcab886..68d54b2 100644 --- a/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt +++ b/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt @@ -27,15 +27,14 @@ import com.casic.detector.extensions.* import com.casic.detector.utils.* import com.casic.detector.vm.TaskViewModel -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog import java.io.File import java.io.IOException @@ -53,7 +52,7 @@ private lateinit var soundPool: SoundPool private var soundResId = 0 private val gpioManager by lazy { GpioManager() } - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler override fun initViewBinding(): ActivityInstallLabelBinding { @@ -63,7 +62,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN or WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN) - imageAdapter = EditableImageAdapter(this, 3, 3f) + imageAdapter = EditableImageAdapter(this, 3, 3) binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] @@ -448,9 +447,7 @@ binding.titleInclude.titleView.text = "安装新标识器" binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.mainBackground) - .init() - initLayoutImmersionBar(binding.rootView) + binding.rootView.initImmersionBar(this, true, R.color.white) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/detector/view/LoginActivity.kt b/app/src/main/java/com/casic/detector/view/LoginActivity.kt index f24f691..4b8618a 100644 --- a/app/src/main/java/com/casic/detector/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/detector/view/LoginActivity.kt @@ -1,22 +1,18 @@ package com.casic.detector.view import android.os.Bundle -import android.util.Log import androidx.lifecycle.ViewModelProvider import com.amap.api.navi.NaviSetting import com.casic.detector.databinding.ActivityLoginBinding -import com.casic.detector.extensions.initLayoutImmersionBar import com.casic.detector.utils.GpioManager import com.casic.detector.utils.LoadingDialogHub import com.casic.detector.utils.LocaleConstant import com.casic.detector.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.getScreenHeight -import com.pengxh.kt.lite.extensions.getScreenWidth import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog class LoginActivity : KotlinBaseActivity() { @@ -102,9 +98,6 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(binding.rootView) - - Log.d(kTag, "setupTopBarLayout => [${getScreenWidth()}, ${getScreenHeight()}]") } override fun onResume() { diff --git a/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt b/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt index c66adba..dcf39b4 100644 --- a/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt +++ b/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt @@ -6,6 +6,7 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.util.Log import android.view.animation.Animation import android.view.animation.RotateAnimation import androidx.lifecycle.ViewModelProvider @@ -15,7 +16,6 @@ import com.casic.detector.bean.TaskBean import com.casic.detector.databinding.ActivitySearchLabelBinding import com.casic.detector.extensions.hexToString -import com.casic.detector.extensions.initLayoutImmersionBar import com.casic.detector.extensions.toHex import com.casic.detector.utils.DataBaseManager import com.casic.detector.utils.GpioManager @@ -27,9 +27,9 @@ 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.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay @@ -47,12 +47,12 @@ private var slowResId = 0 private var fastResId = 0 private val gpioManager by lazy { GpioManager() } - private lateinit var weakReferenceHandler: WeakReferenceHandler + private val weakReferenceHandler by lazy { WeakReferenceHandler(this) } private val detectTimer by lazy { Timer() } private val decimal by lazy { DecimalFormat("0.0") } private var identifierId = "" private val lastDegreeMap by lazy { HashMap() } - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private var isPlaying = false private var isDetectDepth = false private lateinit var taskViewModel: TaskViewModel @@ -63,7 +63,6 @@ gpioManager.setGpioHigh("18") //角度 lastDegreeMap["lastDegree"] = 0f - weakReferenceHandler = WeakReferenceHandler(this) taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] val audioAttributes = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_MEDIA) @@ -302,6 +301,8 @@ } this.identifierId = id + } else { + Log.d(kTag, "handleMessage => $id") } } } @@ -323,7 +324,6 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() - initLayoutImmersionBar(binding.rootView) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt b/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt index 0118b89..41394b0 100644 --- a/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt @@ -25,15 +25,15 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import java.io.File @SuppressLint("SetTextI18n") class UploadEventActivity : KotlinBaseActivity() { private val context: Context = this@UploadEventActivity - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private lateinit var imageAdapter: EditableImageAdapter private val realPaths: ArrayList = ArrayList() //真实图片路径 private lateinit var taskViewModel: TaskViewModel @@ -90,7 +90,7 @@ } }) - imageAdapter = EditableImageAdapter(this, 3, 3f) + imageAdapter = EditableImageAdapter(this, 3, 3) binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter } diff --git a/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt index 37c915c..464b921 100644 --- a/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt +++ b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt @@ -13,18 +13,16 @@ import com.casic.detector.R import com.casic.detector.databinding.ActivityVersionControlBinding import com.casic.detector.extensions.appendDownloadUrl -import com.casic.detector.extensions.initLayoutImmersionBar +import com.casic.detector.extensions.initImmersionBar import com.casic.detector.utils.FileType import com.casic.detector.utils.LoadingDialogHub import com.casic.detector.utils.LocaleConstant import com.casic.detector.vm.VersionViewModel -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.createDownloadFileDir -import com.pengxh.kt.lite.extensions.downloadFile import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.utils.FileDownloadManager +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import java.io.File @@ -42,6 +40,7 @@ progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) progressDialog.setCanceledOnTouchOutside(false) progressDialog.setCancelable(false) + progressDialog.max = 0 versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java] versionViewModel.versionResult.observe(this) { @@ -90,8 +89,7 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(binding.rootView) + binding.rootView.initImmersionBar(this, true, R.color.white) binding.titleInclude.titleView.visibility = View.GONE } @@ -108,22 +106,28 @@ val downloadPath = url!!.appendDownloadUrl(FileType.APK) Log.d(kTag, "downloadApk => $downloadPath") //开始下载 - downloadPath.downloadFile(createDownloadFileDir().toString(), object : OnDownloadListener { - override fun onDownloadStart(totalBytes: Long) { - progressDialog.max = totalBytes.toInt() - } + FileDownloadManager.Builder() + .setDownloadFileSource(downloadPath) + .setFileSuffix("apk") + .setFileSaveDirectory(createDownloadFileDir()) + .setOnFileDownloadListener(object : FileDownloadManager.OnFileDownloadListener { + override fun onDownloadEnd(file: File) { + progressDialog.dismiss() + progressDialog.progress = 0 + //安装APK + installApk(file) + } - override fun onProgressChanged(currentBytes: Long) { - progressDialog.progress = currentBytes.toInt() - } + override fun onFailure(throwable: Throwable) { - override fun onDownloadEnd(file: File?) { - progressDialog.dismiss() - progressDialog.progress = 0 - //安装APK - installApk(file) - } - }) + } + + override fun onProgressChanged(progress: Int) { + progressDialog.progress = progress + } + }) + .build() + .start() } private fun installApk(apkPackage: File?) { diff --git a/app/src/main/java/com/casic/detector/vm/TaskViewModel.kt b/app/src/main/java/com/casic/detector/vm/TaskViewModel.kt index 3d39936..ee7e5b1 100644 --- a/app/src/main/java/com/casic/detector/vm/TaskViewModel.kt +++ b/app/src/main/java/com/casic/detector/vm/TaskViewModel.kt @@ -12,11 +12,11 @@ import com.casic.detector.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.base.BaseViewModel import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState class TaskViewModel : BaseViewModel() { private val gson by lazy { Gson() } diff --git a/app/build.gradle b/app/build.gradle index f51e0dd..219ce47 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ applicationId "com.casic.detector" minSdkVersion 22 targetSdkVersion 33 - versionCode 5010 - versionName "5.0.1" + versionCode 5020 + versionName "5.0.2" ndk { moduleName "serial_port" @@ -76,7 +76,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.3' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt index 6f694dd..397bf90 100644 --- a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt +++ b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt @@ -21,7 +21,7 @@ * @param spacing 上下左右外边距,无需在 [androidx.recyclerview.widget.RecyclerView] 设置边距 * */ class EditableImageAdapter( - private val context: Context, private val imageCountLimit: Int, private val spacing: Float + private val context: Context, private val imageCountLimit: Int, private val spacing: Int ) : RecyclerView.Adapter() { private val layoutInflater by lazy { LayoutInflater.from(context) } diff --git a/app/src/main/java/com/casic/detector/extensions/Context.kt b/app/src/main/java/com/casic/detector/extensions/Context.kt deleted file mode 100644 index 9e9060f..0000000 --- a/app/src/main/java/com/casic/detector/extensions/Context.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.detector.extensions - -import android.content.Context -import android.view.ViewGroup -import com.pengxh.kt.lite.extensions.getStatusBarHeight - -/** - * 设置沉浸式状态栏,兼容Android 11+ - * */ -fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) - rootView.requestLayout() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/Int.kt b/app/src/main/java/com/casic/detector/extensions/Int.kt index d67cac8..10275bb 100644 --- a/app/src/main/java/com/casic/detector/extensions/Int.kt +++ b/app/src/main/java/com/casic/detector/extensions/Int.kt @@ -13,12 +13,4 @@ paint.color = color canvas.drawArc(rectF, 0f, 360f, true, paint) return bitmap -} - -fun Int.appendZero(): String { - return if (this < 10) { - "0$this" - } else { - this.toString() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt new file mode 100644 index 0000000..cfeda1d --- /dev/null +++ b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt @@ -0,0 +1,31 @@ +package com.casic.detector.extensions + +import android.app.Activity +import android.view.ViewGroup +import androidx.annotation.ColorRes +import androidx.fragment.app.Fragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.getStatusBarHeight + +fun ViewGroup.initImmersionBar(activity: Activity, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(activity) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(activity)) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = activity.getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} + +fun ViewGroup.initImmersionBar(fragment: Fragment, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(fragment) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(fragment.requireContext())) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = fragment.requireContext().getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt index 9619b05..c6c8885 100644 --- a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt @@ -13,7 +13,7 @@ ) const val PERMISSIONS_CODE = 999 - const val RADIUS_SIZE = 100f //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 const val AUTO_SAVE = "AUTO_SAVE" const val USER_ACCOUNT = "USER_ACCOUNT" diff --git a/app/src/main/java/com/casic/detector/utils/LocationHub.kt b/app/src/main/java/com/casic/detector/utils/LocationHub.kt index d1fed79..3b5d46f 100644 --- a/app/src/main/java/com/casic/detector/utils/LocationHub.kt +++ b/app/src/main/java/com/casic/detector/utils/LocationHub.kt @@ -13,14 +13,8 @@ import com.amap.api.services.geocoder.RegeocodeResult import com.casic.detector.callback.IAddressListener import com.casic.detector.callback.ILocationListener -import com.pengxh.kt.lite.base.BaseSingleton -class LocationHub private constructor(context: Context) { - - companion object : BaseSingleton() { - override val creator: (Context) -> LocationHub - get() = ::LocationHub - } +class LocationHub constructor(context: Context) { private val kTag = "LocationHub" private val locationClient by lazy { AMapLocationClient(context) } diff --git a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt index 44d50e6..f073ceb 100644 --- a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt @@ -1,7 +1,6 @@ package com.casic.detector.view import android.content.Context -import android.graphics.Color import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -12,10 +11,10 @@ import com.bumptech.glide.Glide import com.casic.detector.R import com.casic.detector.databinding.ActivityBigImageBinding +import com.casic.detector.extensions.initImmersionBar import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil class BigImageActivity : KotlinBaseActivity() { @@ -24,7 +23,7 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, Color.BLACK) + binding.rootView.initImmersionBar(this, false, R.color.black) binding.leftBackView.setOnClickListener { finish() } } diff --git a/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt b/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt index fcab886..68d54b2 100644 --- a/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt +++ b/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt @@ -27,15 +27,14 @@ import com.casic.detector.extensions.* import com.casic.detector.utils.* import com.casic.detector.vm.TaskViewModel -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog import java.io.File import java.io.IOException @@ -53,7 +52,7 @@ private lateinit var soundPool: SoundPool private var soundResId = 0 private val gpioManager by lazy { GpioManager() } - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler override fun initViewBinding(): ActivityInstallLabelBinding { @@ -63,7 +62,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN or WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN) - imageAdapter = EditableImageAdapter(this, 3, 3f) + imageAdapter = EditableImageAdapter(this, 3, 3) binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] @@ -448,9 +447,7 @@ binding.titleInclude.titleView.text = "安装新标识器" binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.mainBackground) - .init() - initLayoutImmersionBar(binding.rootView) + binding.rootView.initImmersionBar(this, true, R.color.white) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/detector/view/LoginActivity.kt b/app/src/main/java/com/casic/detector/view/LoginActivity.kt index f24f691..4b8618a 100644 --- a/app/src/main/java/com/casic/detector/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/detector/view/LoginActivity.kt @@ -1,22 +1,18 @@ package com.casic.detector.view import android.os.Bundle -import android.util.Log import androidx.lifecycle.ViewModelProvider import com.amap.api.navi.NaviSetting import com.casic.detector.databinding.ActivityLoginBinding -import com.casic.detector.extensions.initLayoutImmersionBar import com.casic.detector.utils.GpioManager import com.casic.detector.utils.LoadingDialogHub import com.casic.detector.utils.LocaleConstant import com.casic.detector.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.getScreenHeight -import com.pengxh.kt.lite.extensions.getScreenWidth import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog class LoginActivity : KotlinBaseActivity() { @@ -102,9 +98,6 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(binding.rootView) - - Log.d(kTag, "setupTopBarLayout => [${getScreenWidth()}, ${getScreenHeight()}]") } override fun onResume() { diff --git a/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt b/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt index c66adba..dcf39b4 100644 --- a/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt +++ b/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt @@ -6,6 +6,7 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.util.Log import android.view.animation.Animation import android.view.animation.RotateAnimation import androidx.lifecycle.ViewModelProvider @@ -15,7 +16,6 @@ import com.casic.detector.bean.TaskBean import com.casic.detector.databinding.ActivitySearchLabelBinding import com.casic.detector.extensions.hexToString -import com.casic.detector.extensions.initLayoutImmersionBar import com.casic.detector.extensions.toHex import com.casic.detector.utils.DataBaseManager import com.casic.detector.utils.GpioManager @@ -27,9 +27,9 @@ 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.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay @@ -47,12 +47,12 @@ private var slowResId = 0 private var fastResId = 0 private val gpioManager by lazy { GpioManager() } - private lateinit var weakReferenceHandler: WeakReferenceHandler + private val weakReferenceHandler by lazy { WeakReferenceHandler(this) } private val detectTimer by lazy { Timer() } private val decimal by lazy { DecimalFormat("0.0") } private var identifierId = "" private val lastDegreeMap by lazy { HashMap() } - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private var isPlaying = false private var isDetectDepth = false private lateinit var taskViewModel: TaskViewModel @@ -63,7 +63,6 @@ gpioManager.setGpioHigh("18") //角度 lastDegreeMap["lastDegree"] = 0f - weakReferenceHandler = WeakReferenceHandler(this) taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] val audioAttributes = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_MEDIA) @@ -302,6 +301,8 @@ } this.identifierId = id + } else { + Log.d(kTag, "handleMessage => $id") } } } @@ -323,7 +324,6 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() - initLayoutImmersionBar(binding.rootView) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt b/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt index 0118b89..41394b0 100644 --- a/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt @@ -25,15 +25,15 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import java.io.File @SuppressLint("SetTextI18n") class UploadEventActivity : KotlinBaseActivity() { private val context: Context = this@UploadEventActivity - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private lateinit var imageAdapter: EditableImageAdapter private val realPaths: ArrayList = ArrayList() //真实图片路径 private lateinit var taskViewModel: TaskViewModel @@ -90,7 +90,7 @@ } }) - imageAdapter = EditableImageAdapter(this, 3, 3f) + imageAdapter = EditableImageAdapter(this, 3, 3) binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter } diff --git a/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt index 37c915c..464b921 100644 --- a/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt +++ b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt @@ -13,18 +13,16 @@ import com.casic.detector.R import com.casic.detector.databinding.ActivityVersionControlBinding import com.casic.detector.extensions.appendDownloadUrl -import com.casic.detector.extensions.initLayoutImmersionBar +import com.casic.detector.extensions.initImmersionBar import com.casic.detector.utils.FileType import com.casic.detector.utils.LoadingDialogHub import com.casic.detector.utils.LocaleConstant import com.casic.detector.vm.VersionViewModel -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.createDownloadFileDir -import com.pengxh.kt.lite.extensions.downloadFile import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.utils.FileDownloadManager +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import java.io.File @@ -42,6 +40,7 @@ progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) progressDialog.setCanceledOnTouchOutside(false) progressDialog.setCancelable(false) + progressDialog.max = 0 versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java] versionViewModel.versionResult.observe(this) { @@ -90,8 +89,7 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(binding.rootView) + binding.rootView.initImmersionBar(this, true, R.color.white) binding.titleInclude.titleView.visibility = View.GONE } @@ -108,22 +106,28 @@ val downloadPath = url!!.appendDownloadUrl(FileType.APK) Log.d(kTag, "downloadApk => $downloadPath") //开始下载 - downloadPath.downloadFile(createDownloadFileDir().toString(), object : OnDownloadListener { - override fun onDownloadStart(totalBytes: Long) { - progressDialog.max = totalBytes.toInt() - } + FileDownloadManager.Builder() + .setDownloadFileSource(downloadPath) + .setFileSuffix("apk") + .setFileSaveDirectory(createDownloadFileDir()) + .setOnFileDownloadListener(object : FileDownloadManager.OnFileDownloadListener { + override fun onDownloadEnd(file: File) { + progressDialog.dismiss() + progressDialog.progress = 0 + //安装APK + installApk(file) + } - override fun onProgressChanged(currentBytes: Long) { - progressDialog.progress = currentBytes.toInt() - } + override fun onFailure(throwable: Throwable) { - override fun onDownloadEnd(file: File?) { - progressDialog.dismiss() - progressDialog.progress = 0 - //安装APK - installApk(file) - } - }) + } + + override fun onProgressChanged(progress: Int) { + progressDialog.progress = progress + } + }) + .build() + .start() } private fun installApk(apkPackage: File?) { diff --git a/app/src/main/java/com/casic/detector/vm/TaskViewModel.kt b/app/src/main/java/com/casic/detector/vm/TaskViewModel.kt index 3d39936..ee7e5b1 100644 --- a/app/src/main/java/com/casic/detector/vm/TaskViewModel.kt +++ b/app/src/main/java/com/casic/detector/vm/TaskViewModel.kt @@ -12,11 +12,11 @@ import com.casic.detector.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.base.BaseViewModel import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState class TaskViewModel : BaseViewModel() { private val gson by lazy { Gson() } diff --git a/app/src/main/java/com/casic/detector/vm/UserViewModel.kt b/app/src/main/java/com/casic/detector/vm/UserViewModel.kt index b21d6b2..f593aa8 100644 --- a/app/src/main/java/com/casic/detector/vm/UserViewModel.kt +++ b/app/src/main/java/com/casic/detector/vm/UserViewModel.kt @@ -8,11 +8,11 @@ import com.casic.detector.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.base.BaseViewModel import com.pengxh.kt.lite.extensions.isNetworkConnected import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.utils.LoadState /** * 用户相关 VM diff --git a/app/build.gradle b/app/build.gradle index f51e0dd..219ce47 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ applicationId "com.casic.detector" minSdkVersion 22 targetSdkVersion 33 - versionCode 5010 - versionName "5.0.1" + versionCode 5020 + versionName "5.0.2" ndk { moduleName "serial_port" @@ -76,7 +76,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.3' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt index 6f694dd..397bf90 100644 --- a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt +++ b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt @@ -21,7 +21,7 @@ * @param spacing 上下左右外边距,无需在 [androidx.recyclerview.widget.RecyclerView] 设置边距 * */ class EditableImageAdapter( - private val context: Context, private val imageCountLimit: Int, private val spacing: Float + private val context: Context, private val imageCountLimit: Int, private val spacing: Int ) : RecyclerView.Adapter() { private val layoutInflater by lazy { LayoutInflater.from(context) } diff --git a/app/src/main/java/com/casic/detector/extensions/Context.kt b/app/src/main/java/com/casic/detector/extensions/Context.kt deleted file mode 100644 index 9e9060f..0000000 --- a/app/src/main/java/com/casic/detector/extensions/Context.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.detector.extensions - -import android.content.Context -import android.view.ViewGroup -import com.pengxh.kt.lite.extensions.getStatusBarHeight - -/** - * 设置沉浸式状态栏,兼容Android 11+ - * */ -fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) - rootView.requestLayout() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/Int.kt b/app/src/main/java/com/casic/detector/extensions/Int.kt index d67cac8..10275bb 100644 --- a/app/src/main/java/com/casic/detector/extensions/Int.kt +++ b/app/src/main/java/com/casic/detector/extensions/Int.kt @@ -13,12 +13,4 @@ paint.color = color canvas.drawArc(rectF, 0f, 360f, true, paint) return bitmap -} - -fun Int.appendZero(): String { - return if (this < 10) { - "0$this" - } else { - this.toString() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt new file mode 100644 index 0000000..cfeda1d --- /dev/null +++ b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt @@ -0,0 +1,31 @@ +package com.casic.detector.extensions + +import android.app.Activity +import android.view.ViewGroup +import androidx.annotation.ColorRes +import androidx.fragment.app.Fragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.getStatusBarHeight + +fun ViewGroup.initImmersionBar(activity: Activity, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(activity) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(activity)) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = activity.getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} + +fun ViewGroup.initImmersionBar(fragment: Fragment, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(fragment) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(fragment.requireContext())) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = fragment.requireContext().getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt index 9619b05..c6c8885 100644 --- a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt @@ -13,7 +13,7 @@ ) const val PERMISSIONS_CODE = 999 - const val RADIUS_SIZE = 100f //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 const val AUTO_SAVE = "AUTO_SAVE" const val USER_ACCOUNT = "USER_ACCOUNT" diff --git a/app/src/main/java/com/casic/detector/utils/LocationHub.kt b/app/src/main/java/com/casic/detector/utils/LocationHub.kt index d1fed79..3b5d46f 100644 --- a/app/src/main/java/com/casic/detector/utils/LocationHub.kt +++ b/app/src/main/java/com/casic/detector/utils/LocationHub.kt @@ -13,14 +13,8 @@ import com.amap.api.services.geocoder.RegeocodeResult import com.casic.detector.callback.IAddressListener import com.casic.detector.callback.ILocationListener -import com.pengxh.kt.lite.base.BaseSingleton -class LocationHub private constructor(context: Context) { - - companion object : BaseSingleton() { - override val creator: (Context) -> LocationHub - get() = ::LocationHub - } +class LocationHub constructor(context: Context) { private val kTag = "LocationHub" private val locationClient by lazy { AMapLocationClient(context) } diff --git a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt index 44d50e6..f073ceb 100644 --- a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt @@ -1,7 +1,6 @@ package com.casic.detector.view import android.content.Context -import android.graphics.Color import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -12,10 +11,10 @@ import com.bumptech.glide.Glide import com.casic.detector.R import com.casic.detector.databinding.ActivityBigImageBinding +import com.casic.detector.extensions.initImmersionBar import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil class BigImageActivity : KotlinBaseActivity() { @@ -24,7 +23,7 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, Color.BLACK) + binding.rootView.initImmersionBar(this, false, R.color.black) binding.leftBackView.setOnClickListener { finish() } } diff --git a/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt b/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt index fcab886..68d54b2 100644 --- a/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt +++ b/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt @@ -27,15 +27,14 @@ import com.casic.detector.extensions.* import com.casic.detector.utils.* import com.casic.detector.vm.TaskViewModel -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog import java.io.File import java.io.IOException @@ -53,7 +52,7 @@ private lateinit var soundPool: SoundPool private var soundResId = 0 private val gpioManager by lazy { GpioManager() } - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler override fun initViewBinding(): ActivityInstallLabelBinding { @@ -63,7 +62,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN or WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN) - imageAdapter = EditableImageAdapter(this, 3, 3f) + imageAdapter = EditableImageAdapter(this, 3, 3) binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] @@ -448,9 +447,7 @@ binding.titleInclude.titleView.text = "安装新标识器" binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.mainBackground) - .init() - initLayoutImmersionBar(binding.rootView) + binding.rootView.initImmersionBar(this, true, R.color.white) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/detector/view/LoginActivity.kt b/app/src/main/java/com/casic/detector/view/LoginActivity.kt index f24f691..4b8618a 100644 --- a/app/src/main/java/com/casic/detector/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/detector/view/LoginActivity.kt @@ -1,22 +1,18 @@ package com.casic.detector.view import android.os.Bundle -import android.util.Log import androidx.lifecycle.ViewModelProvider import com.amap.api.navi.NaviSetting import com.casic.detector.databinding.ActivityLoginBinding -import com.casic.detector.extensions.initLayoutImmersionBar import com.casic.detector.utils.GpioManager import com.casic.detector.utils.LoadingDialogHub import com.casic.detector.utils.LocaleConstant import com.casic.detector.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.getScreenHeight -import com.pengxh.kt.lite.extensions.getScreenWidth import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog class LoginActivity : KotlinBaseActivity() { @@ -102,9 +98,6 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(binding.rootView) - - Log.d(kTag, "setupTopBarLayout => [${getScreenWidth()}, ${getScreenHeight()}]") } override fun onResume() { diff --git a/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt b/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt index c66adba..dcf39b4 100644 --- a/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt +++ b/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt @@ -6,6 +6,7 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.util.Log import android.view.animation.Animation import android.view.animation.RotateAnimation import androidx.lifecycle.ViewModelProvider @@ -15,7 +16,6 @@ import com.casic.detector.bean.TaskBean import com.casic.detector.databinding.ActivitySearchLabelBinding import com.casic.detector.extensions.hexToString -import com.casic.detector.extensions.initLayoutImmersionBar import com.casic.detector.extensions.toHex import com.casic.detector.utils.DataBaseManager import com.casic.detector.utils.GpioManager @@ -27,9 +27,9 @@ 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.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay @@ -47,12 +47,12 @@ private var slowResId = 0 private var fastResId = 0 private val gpioManager by lazy { GpioManager() } - private lateinit var weakReferenceHandler: WeakReferenceHandler + private val weakReferenceHandler by lazy { WeakReferenceHandler(this) } private val detectTimer by lazy { Timer() } private val decimal by lazy { DecimalFormat("0.0") } private var identifierId = "" private val lastDegreeMap by lazy { HashMap() } - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private var isPlaying = false private var isDetectDepth = false private lateinit var taskViewModel: TaskViewModel @@ -63,7 +63,6 @@ gpioManager.setGpioHigh("18") //角度 lastDegreeMap["lastDegree"] = 0f - weakReferenceHandler = WeakReferenceHandler(this) taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] val audioAttributes = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_MEDIA) @@ -302,6 +301,8 @@ } this.identifierId = id + } else { + Log.d(kTag, "handleMessage => $id") } } } @@ -323,7 +324,6 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() - initLayoutImmersionBar(binding.rootView) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt b/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt index 0118b89..41394b0 100644 --- a/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt @@ -25,15 +25,15 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import java.io.File @SuppressLint("SetTextI18n") class UploadEventActivity : KotlinBaseActivity() { private val context: Context = this@UploadEventActivity - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private lateinit var imageAdapter: EditableImageAdapter private val realPaths: ArrayList = ArrayList() //真实图片路径 private lateinit var taskViewModel: TaskViewModel @@ -90,7 +90,7 @@ } }) - imageAdapter = EditableImageAdapter(this, 3, 3f) + imageAdapter = EditableImageAdapter(this, 3, 3) binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter } diff --git a/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt index 37c915c..464b921 100644 --- a/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt +++ b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt @@ -13,18 +13,16 @@ import com.casic.detector.R import com.casic.detector.databinding.ActivityVersionControlBinding import com.casic.detector.extensions.appendDownloadUrl -import com.casic.detector.extensions.initLayoutImmersionBar +import com.casic.detector.extensions.initImmersionBar import com.casic.detector.utils.FileType import com.casic.detector.utils.LoadingDialogHub import com.casic.detector.utils.LocaleConstant import com.casic.detector.vm.VersionViewModel -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.createDownloadFileDir -import com.pengxh.kt.lite.extensions.downloadFile import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.utils.FileDownloadManager +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import java.io.File @@ -42,6 +40,7 @@ progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) progressDialog.setCanceledOnTouchOutside(false) progressDialog.setCancelable(false) + progressDialog.max = 0 versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java] versionViewModel.versionResult.observe(this) { @@ -90,8 +89,7 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(binding.rootView) + binding.rootView.initImmersionBar(this, true, R.color.white) binding.titleInclude.titleView.visibility = View.GONE } @@ -108,22 +106,28 @@ val downloadPath = url!!.appendDownloadUrl(FileType.APK) Log.d(kTag, "downloadApk => $downloadPath") //开始下载 - downloadPath.downloadFile(createDownloadFileDir().toString(), object : OnDownloadListener { - override fun onDownloadStart(totalBytes: Long) { - progressDialog.max = totalBytes.toInt() - } + FileDownloadManager.Builder() + .setDownloadFileSource(downloadPath) + .setFileSuffix("apk") + .setFileSaveDirectory(createDownloadFileDir()) + .setOnFileDownloadListener(object : FileDownloadManager.OnFileDownloadListener { + override fun onDownloadEnd(file: File) { + progressDialog.dismiss() + progressDialog.progress = 0 + //安装APK + installApk(file) + } - override fun onProgressChanged(currentBytes: Long) { - progressDialog.progress = currentBytes.toInt() - } + override fun onFailure(throwable: Throwable) { - override fun onDownloadEnd(file: File?) { - progressDialog.dismiss() - progressDialog.progress = 0 - //安装APK - installApk(file) - } - }) + } + + override fun onProgressChanged(progress: Int) { + progressDialog.progress = progress + } + }) + .build() + .start() } private fun installApk(apkPackage: File?) { diff --git a/app/src/main/java/com/casic/detector/vm/TaskViewModel.kt b/app/src/main/java/com/casic/detector/vm/TaskViewModel.kt index 3d39936..ee7e5b1 100644 --- a/app/src/main/java/com/casic/detector/vm/TaskViewModel.kt +++ b/app/src/main/java/com/casic/detector/vm/TaskViewModel.kt @@ -12,11 +12,11 @@ import com.casic.detector.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.base.BaseViewModel import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState class TaskViewModel : BaseViewModel() { private val gson by lazy { Gson() } diff --git a/app/src/main/java/com/casic/detector/vm/UserViewModel.kt b/app/src/main/java/com/casic/detector/vm/UserViewModel.kt index b21d6b2..f593aa8 100644 --- a/app/src/main/java/com/casic/detector/vm/UserViewModel.kt +++ b/app/src/main/java/com/casic/detector/vm/UserViewModel.kt @@ -8,11 +8,11 @@ import com.casic.detector.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.base.BaseViewModel import com.pengxh.kt.lite.extensions.isNetworkConnected import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.utils.LoadState /** * 用户相关 VM diff --git a/app/src/main/java/com/casic/detector/vm/VersionViewModel.kt b/app/src/main/java/com/casic/detector/vm/VersionViewModel.kt index a51d159..4096ebe 100644 --- a/app/src/main/java/com/casic/detector/vm/VersionViewModel.kt +++ b/app/src/main/java/com/casic/detector/vm/VersionViewModel.kt @@ -7,10 +7,10 @@ import com.casic.detector.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.base.BaseViewModel import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.utils.LoadState class VersionViewModel : BaseViewModel() { private val gson by lazy { Gson() } diff --git a/app/build.gradle b/app/build.gradle index f51e0dd..219ce47 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ applicationId "com.casic.detector" minSdkVersion 22 targetSdkVersion 33 - versionCode 5010 - versionName "5.0.1" + versionCode 5020 + versionName "5.0.2" ndk { moduleName "serial_port" @@ -76,7 +76,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5.3' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt index 6f694dd..397bf90 100644 --- a/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt +++ b/app/src/main/java/com/casic/detector/adapter/EditableImageAdapter.kt @@ -21,7 +21,7 @@ * @param spacing 上下左右外边距,无需在 [androidx.recyclerview.widget.RecyclerView] 设置边距 * */ class EditableImageAdapter( - private val context: Context, private val imageCountLimit: Int, private val spacing: Float + private val context: Context, private val imageCountLimit: Int, private val spacing: Int ) : RecyclerView.Adapter() { private val layoutInflater by lazy { LayoutInflater.from(context) } diff --git a/app/src/main/java/com/casic/detector/extensions/Context.kt b/app/src/main/java/com/casic/detector/extensions/Context.kt deleted file mode 100644 index 9e9060f..0000000 --- a/app/src/main/java/com/casic/detector/extensions/Context.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.detector.extensions - -import android.content.Context -import android.view.ViewGroup -import com.pengxh.kt.lite.extensions.getStatusBarHeight - -/** - * 设置沉浸式状态栏,兼容Android 11+ - * */ -fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) - rootView.requestLayout() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/Int.kt b/app/src/main/java/com/casic/detector/extensions/Int.kt index d67cac8..10275bb 100644 --- a/app/src/main/java/com/casic/detector/extensions/Int.kt +++ b/app/src/main/java/com/casic/detector/extensions/Int.kt @@ -13,12 +13,4 @@ paint.color = color canvas.drawArc(rectF, 0f, 360f, true, paint) return bitmap -} - -fun Int.appendZero(): String { - return if (this < 10) { - "0$this" - } else { - this.toString() - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt new file mode 100644 index 0000000..cfeda1d --- /dev/null +++ b/app/src/main/java/com/casic/detector/extensions/ViewGroup.kt @@ -0,0 +1,31 @@ +package com.casic.detector.extensions + +import android.app.Activity +import android.view.ViewGroup +import androidx.annotation.ColorRes +import androidx.fragment.app.Fragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.getStatusBarHeight + +fun ViewGroup.initImmersionBar(activity: Activity, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(activity) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(activity)) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = activity.getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} + +fun ViewGroup.initImmersionBar(fragment: Fragment, isDarkFont: Boolean, @ColorRes color: Int) { + ImmersionBar.with(fragment) + .statusBarDarkFont(isDarkFont) + .statusBarColorInt(color.convertColor(fragment.requireContext())) + .init() + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = fragment.requireContext().getStatusBarHeight() + this.setPadding(0, statusBarHeight, 0, 0) + this.requestLayout() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt index 9619b05..c6c8885 100644 --- a/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/detector/utils/LocaleConstant.kt @@ -13,7 +13,7 @@ ) const val PERMISSIONS_CODE = 999 - const val RADIUS_SIZE = 100f //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 const val AUTO_SAVE = "AUTO_SAVE" const val USER_ACCOUNT = "USER_ACCOUNT" diff --git a/app/src/main/java/com/casic/detector/utils/LocationHub.kt b/app/src/main/java/com/casic/detector/utils/LocationHub.kt index d1fed79..3b5d46f 100644 --- a/app/src/main/java/com/casic/detector/utils/LocationHub.kt +++ b/app/src/main/java/com/casic/detector/utils/LocationHub.kt @@ -13,14 +13,8 @@ import com.amap.api.services.geocoder.RegeocodeResult import com.casic.detector.callback.IAddressListener import com.casic.detector.callback.ILocationListener -import com.pengxh.kt.lite.base.BaseSingleton -class LocationHub private constructor(context: Context) { - - companion object : BaseSingleton() { - override val creator: (Context) -> LocationHub - get() = ::LocationHub - } +class LocationHub constructor(context: Context) { private val kTag = "LocationHub" private val locationClient by lazy { AMapLocationClient(context) } diff --git a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt index 44d50e6..f073ceb 100644 --- a/app/src/main/java/com/casic/detector/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/detector/view/BigImageActivity.kt @@ -1,7 +1,6 @@ package com.casic.detector.view import android.content.Context -import android.graphics.Color import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -12,10 +11,10 @@ import com.bumptech.glide.Glide import com.casic.detector.R import com.casic.detector.databinding.ActivityBigImageBinding +import com.casic.detector.extensions.initImmersionBar import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil class BigImageActivity : KotlinBaseActivity() { @@ -24,7 +23,7 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, Color.BLACK) + binding.rootView.initImmersionBar(this, false, R.color.black) binding.leftBackView.setOnClickListener { finish() } } diff --git a/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt b/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt index fcab886..68d54b2 100644 --- a/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt +++ b/app/src/main/java/com/casic/detector/view/InstallLabelActivity.kt @@ -27,15 +27,14 @@ import com.casic.detector.extensions.* import com.casic.detector.utils.* import com.casic.detector.vm.TaskViewModel -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog import java.io.File import java.io.IOException @@ -53,7 +52,7 @@ private lateinit var soundPool: SoundPool private var soundResId = 0 private val gpioManager by lazy { GpioManager() } - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler override fun initViewBinding(): ActivityInstallLabelBinding { @@ -63,7 +62,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN or WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN) - imageAdapter = EditableImageAdapter(this, 3, 3f) + imageAdapter = EditableImageAdapter(this, 3, 3) binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] @@ -448,9 +447,7 @@ binding.titleInclude.titleView.text = "安装新标识器" binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.mainBackground) - .init() - initLayoutImmersionBar(binding.rootView) + binding.rootView.initImmersionBar(this, true, R.color.white) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/detector/view/LoginActivity.kt b/app/src/main/java/com/casic/detector/view/LoginActivity.kt index f24f691..4b8618a 100644 --- a/app/src/main/java/com/casic/detector/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/detector/view/LoginActivity.kt @@ -1,22 +1,18 @@ package com.casic.detector.view import android.os.Bundle -import android.util.Log import androidx.lifecycle.ViewModelProvider import com.amap.api.navi.NaviSetting import com.casic.detector.databinding.ActivityLoginBinding -import com.casic.detector.extensions.initLayoutImmersionBar import com.casic.detector.utils.GpioManager import com.casic.detector.utils.LoadingDialogHub import com.casic.detector.utils.LocaleConstant import com.casic.detector.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.getScreenHeight -import com.pengxh.kt.lite.extensions.getScreenWidth import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog class LoginActivity : KotlinBaseActivity() { @@ -102,9 +98,6 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(binding.rootView) - - Log.d(kTag, "setupTopBarLayout => [${getScreenWidth()}, ${getScreenHeight()}]") } override fun onResume() { diff --git a/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt b/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt index c66adba..dcf39b4 100644 --- a/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt +++ b/app/src/main/java/com/casic/detector/view/SearchLabelActivity.kt @@ -6,6 +6,7 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.util.Log import android.view.animation.Animation import android.view.animation.RotateAnimation import androidx.lifecycle.ViewModelProvider @@ -15,7 +16,6 @@ import com.casic.detector.bean.TaskBean import com.casic.detector.databinding.ActivitySearchLabelBinding import com.casic.detector.extensions.hexToString -import com.casic.detector.extensions.initLayoutImmersionBar import com.casic.detector.extensions.toHex import com.casic.detector.utils.DataBaseManager import com.casic.detector.utils.GpioManager @@ -27,9 +27,9 @@ 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.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler -import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay @@ -47,12 +47,12 @@ private var slowResId = 0 private var fastResId = 0 private val gpioManager by lazy { GpioManager() } - private lateinit var weakReferenceHandler: WeakReferenceHandler + private val weakReferenceHandler by lazy { WeakReferenceHandler(this) } private val detectTimer by lazy { Timer() } private val decimal by lazy { DecimalFormat("0.0") } private var identifierId = "" private val lastDegreeMap by lazy { HashMap() } - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private var isPlaying = false private var isDetectDepth = false private lateinit var taskViewModel: TaskViewModel @@ -63,7 +63,6 @@ gpioManager.setGpioHigh("18") //角度 lastDegreeMap["lastDegree"] = 0f - weakReferenceHandler = WeakReferenceHandler(this) taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] val audioAttributes = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_MEDIA) @@ -302,6 +301,8 @@ } this.identifierId = id + } else { + Log.d(kTag, "handleMessage => $id") } } } @@ -323,7 +324,6 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() - initLayoutImmersionBar(binding.rootView) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt b/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt index 0118b89..41394b0 100644 --- a/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt @@ -25,15 +25,15 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import java.io.File @SuppressLint("SetTextI18n") class UploadEventActivity : KotlinBaseActivity() { private val context: Context = this@UploadEventActivity - private val locationHub by lazy { LocationHub.obtainInstance(this) } + private val locationHub by lazy { LocationHub(this) } private lateinit var imageAdapter: EditableImageAdapter private val realPaths: ArrayList = ArrayList() //真实图片路径 private lateinit var taskViewModel: TaskViewModel @@ -90,7 +90,7 @@ } }) - imageAdapter = EditableImageAdapter(this, 3, 3f) + imageAdapter = EditableImageAdapter(this, 3, 3) binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter } diff --git a/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt index 37c915c..464b921 100644 --- a/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt +++ b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt @@ -13,18 +13,16 @@ import com.casic.detector.R import com.casic.detector.databinding.ActivityVersionControlBinding import com.casic.detector.extensions.appendDownloadUrl -import com.casic.detector.extensions.initLayoutImmersionBar +import com.casic.detector.extensions.initImmersionBar import com.casic.detector.utils.FileType import com.casic.detector.utils.LoadingDialogHub import com.casic.detector.utils.LocaleConstant import com.casic.detector.vm.VersionViewModel -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.createDownloadFileDir -import com.pengxh.kt.lite.extensions.downloadFile import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.utils.FileDownloadManager +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import java.io.File @@ -42,6 +40,7 @@ progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) progressDialog.setCanceledOnTouchOutside(false) progressDialog.setCancelable(false) + progressDialog.max = 0 versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java] versionViewModel.versionResult.observe(this) { @@ -90,8 +89,7 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(binding.rootView) + binding.rootView.initImmersionBar(this, true, R.color.white) binding.titleInclude.titleView.visibility = View.GONE } @@ -108,22 +106,28 @@ val downloadPath = url!!.appendDownloadUrl(FileType.APK) Log.d(kTag, "downloadApk => $downloadPath") //开始下载 - downloadPath.downloadFile(createDownloadFileDir().toString(), object : OnDownloadListener { - override fun onDownloadStart(totalBytes: Long) { - progressDialog.max = totalBytes.toInt() - } + FileDownloadManager.Builder() + .setDownloadFileSource(downloadPath) + .setFileSuffix("apk") + .setFileSaveDirectory(createDownloadFileDir()) + .setOnFileDownloadListener(object : FileDownloadManager.OnFileDownloadListener { + override fun onDownloadEnd(file: File) { + progressDialog.dismiss() + progressDialog.progress = 0 + //安装APK + installApk(file) + } - override fun onProgressChanged(currentBytes: Long) { - progressDialog.progress = currentBytes.toInt() - } + override fun onFailure(throwable: Throwable) { - override fun onDownloadEnd(file: File?) { - progressDialog.dismiss() - progressDialog.progress = 0 - //安装APK - installApk(file) - } - }) + } + + override fun onProgressChanged(progress: Int) { + progressDialog.progress = progress + } + }) + .build() + .start() } private fun installApk(apkPackage: File?) { diff --git a/app/src/main/java/com/casic/detector/vm/TaskViewModel.kt b/app/src/main/java/com/casic/detector/vm/TaskViewModel.kt index 3d39936..ee7e5b1 100644 --- a/app/src/main/java/com/casic/detector/vm/TaskViewModel.kt +++ b/app/src/main/java/com/casic/detector/vm/TaskViewModel.kt @@ -12,11 +12,11 @@ import com.casic.detector.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.base.BaseViewModel import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState class TaskViewModel : BaseViewModel() { private val gson by lazy { Gson() } diff --git a/app/src/main/java/com/casic/detector/vm/UserViewModel.kt b/app/src/main/java/com/casic/detector/vm/UserViewModel.kt index b21d6b2..f593aa8 100644 --- a/app/src/main/java/com/casic/detector/vm/UserViewModel.kt +++ b/app/src/main/java/com/casic/detector/vm/UserViewModel.kt @@ -8,11 +8,11 @@ import com.casic.detector.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.base.BaseViewModel import com.pengxh.kt.lite.extensions.isNetworkConnected import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.utils.LoadState /** * 用户相关 VM diff --git a/app/src/main/java/com/casic/detector/vm/VersionViewModel.kt b/app/src/main/java/com/casic/detector/vm/VersionViewModel.kt index a51d159..4096ebe 100644 --- a/app/src/main/java/com/casic/detector/vm/VersionViewModel.kt +++ b/app/src/main/java/com/casic/detector/vm/VersionViewModel.kt @@ -7,10 +7,10 @@ import com.casic.detector.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.base.BaseViewModel import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.utils.LoadState class VersionViewModel : BaseViewModel() { private val gson by lazy { Gson() } diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml index 9d060f4..228c2c4 100644 --- a/app/src/main/res/layout/activity_big_image.xml +++ b/app/src/main/res/layout/activity_big_image.xml @@ -1,5 +1,6 @@