diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index c129271..d3ae12b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -4,8 +4,8 @@ import android.graphics.Color import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager import com.casic.birmm.inspect.view.BigImageActivity @@ -22,11 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_new_event.* -import java.util.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton +import kotlinx.android.synthetic.main.single_activity_new_event.addImageView +import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView +import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.single_activity_new_event.rootView +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -183,7 +189,10 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } } \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index c129271..d3ae12b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -4,8 +4,8 @@ import android.graphics.Color import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager import com.casic.birmm.inspect.view.BigImageActivity @@ -22,11 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_new_event.* -import java.util.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton +import kotlinx.android.synthetic.main.single_activity_new_event.addImageView +import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView +import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.single_activity_new_event.rootView +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -183,7 +189,10 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 32aad52..508d610 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_event_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.activity_event_detail.dataView +import kotlinx.android.synthetic.main.activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.activity_event_detail.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class EventDetailActivity : KotlinBaseActivity() { @@ -25,8 +29,11 @@ override fun initLayoutView(): Int = R.layout.activity_event_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index c129271..d3ae12b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -4,8 +4,8 @@ import android.graphics.Color import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager import com.casic.birmm.inspect.view.BigImageActivity @@ -22,11 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_new_event.* -import java.util.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton +import kotlinx.android.synthetic.main.single_activity_new_event.addImageView +import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView +import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.single_activity_new_event.rootView +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -183,7 +189,10 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 32aad52..508d610 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_event_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.activity_event_detail.dataView +import kotlinx.android.synthetic.main.activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.activity_event_detail.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class EventDetailActivity : KotlinBaseActivity() { @@ -25,8 +29,11 @@ override fun initLayoutView(): Int = R.layout.activity_event_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index c086607..056f442 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -3,21 +3,25 @@ import android.os.Bundle import android.view.View import android.webkit.WebViewClient -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_help_center.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_help_center.answerView +import kotlinx.android.synthetic.main.activity_help_center.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class HelpCenterActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index c129271..d3ae12b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -4,8 +4,8 @@ import android.graphics.Color import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager import com.casic.birmm.inspect.view.BigImageActivity @@ -22,11 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_new_event.* -import java.util.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton +import kotlinx.android.synthetic.main.single_activity_new_event.addImageView +import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView +import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.single_activity_new_event.rootView +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -183,7 +189,10 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 32aad52..508d610 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_event_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.activity_event_detail.dataView +import kotlinx.android.synthetic.main.activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.activity_event_detail.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class EventDetailActivity : KotlinBaseActivity() { @@ -25,8 +29,11 @@ override fun initLayoutView(): Int = R.layout.activity_event_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index c086607..056f442 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -3,21 +3,25 @@ import android.os.Bundle import android.view.View import android.webkit.WebViewClient -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_help_center.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_help_center.answerView +import kotlinx.android.synthetic.main.activity_help_center.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class HelpCenterActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index d35baef..ac97920 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -15,10 +15,11 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView +import kotlinx.android.synthetic.main.activity_inspection_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class InspectionEventActivity : KotlinBaseActivity() { @@ -27,8 +28,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index c129271..d3ae12b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -4,8 +4,8 @@ import android.graphics.Color import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager import com.casic.birmm.inspect.view.BigImageActivity @@ -22,11 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_new_event.* -import java.util.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton +import kotlinx.android.synthetic.main.single_activity_new_event.addImageView +import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView +import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.single_activity_new_event.rootView +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -183,7 +189,10 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 32aad52..508d610 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_event_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.activity_event_detail.dataView +import kotlinx.android.synthetic.main.activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.activity_event_detail.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class EventDetailActivity : KotlinBaseActivity() { @@ -25,8 +29,11 @@ override fun initLayoutView(): Int = R.layout.activity_event_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index c086607..056f442 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -3,21 +3,25 @@ import android.os.Bundle import android.view.View import android.webkit.WebViewClient -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_help_center.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_help_center.answerView +import kotlinx.android.synthetic.main.activity_help_center.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class HelpCenterActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index d35baef..ac97920 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -15,10 +15,11 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView +import kotlinx.android.synthetic.main.activity_inspection_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class InspectionEventActivity : KotlinBaseActivity() { @@ -27,8 +28,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 14d25d2..5ff3383 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -1,36 +1,33 @@ package com.casic.birmm.inspect.view -import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener -import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.activity_inspection_route.endTimeView import kotlinx.android.synthetic.main.activity_inspection_route.eventButton import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.startTimeView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.activity_inspection_route.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -42,9 +39,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } @@ -69,19 +68,7 @@ startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime - LatLng(detailData.startLat, detailData.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(detailData.endLat, detailData.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) + //TODO 未完 //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -94,28 +81,8 @@ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian) //设置终点 addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian) - //瞄点画线 - val routeJson = detailData.routes!! - if (routeJson.isEmpty()) { - return@observe - } - //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - val type = object : TypeToken>() {}.type - val routeModels = gson.fromJson>(routeJson, type) - //画线 - val latLngPoints: ArrayList = ArrayList() - routeModels.forEach { routeModel -> - latLngPoints.add(LatLng(routeModel.latitude, routeModel.longitude)) - } - aMap.addPolyline( - PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED) - ) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) + //TODO 未完 } } diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index c129271..d3ae12b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -4,8 +4,8 @@ import android.graphics.Color import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager import com.casic.birmm.inspect.view.BigImageActivity @@ -22,11 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_new_event.* -import java.util.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton +import kotlinx.android.synthetic.main.single_activity_new_event.addImageView +import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView +import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.single_activity_new_event.rootView +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -183,7 +189,10 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 32aad52..508d610 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_event_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.activity_event_detail.dataView +import kotlinx.android.synthetic.main.activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.activity_event_detail.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class EventDetailActivity : KotlinBaseActivity() { @@ -25,8 +29,11 @@ override fun initLayoutView(): Int = R.layout.activity_event_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index c086607..056f442 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -3,21 +3,25 @@ import android.os.Bundle import android.view.View import android.webkit.WebViewClient -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_help_center.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_help_center.answerView +import kotlinx.android.synthetic.main.activity_help_center.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class HelpCenterActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index d35baef..ac97920 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -15,10 +15,11 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView +import kotlinx.android.synthetic.main.activity_inspection_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class InspectionEventActivity : KotlinBaseActivity() { @@ -27,8 +28,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 14d25d2..5ff3383 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -1,36 +1,33 @@ package com.casic.birmm.inspect.view -import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener -import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.activity_inspection_route.endTimeView import kotlinx.android.synthetic.main.activity_inspection_route.eventButton import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.startTimeView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.activity_inspection_route.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -42,9 +39,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } @@ -69,19 +68,7 @@ startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime - LatLng(detailData.startLat, detailData.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(detailData.endLat, detailData.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) + //TODO 未完 //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -94,28 +81,8 @@ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian) //设置终点 addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian) - //瞄点画线 - val routeJson = detailData.routes!! - if (routeJson.isEmpty()) { - return@observe - } - //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - val type = object : TypeToken>() {}.type - val routeModels = gson.fromJson>(routeJson, type) - //画线 - val latLngPoints: ArrayList = ArrayList() - routeModels.forEach { routeModel -> - latLngPoints.add(LatLng(routeModel.latitude, routeModel.longitude)) - } - aMap.addPolyline( - PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED) - ) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) + //TODO 未完 } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 91f7fe6..e558c92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -7,12 +7,12 @@ import android.os.Handler import android.util.Log import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -33,15 +33,21 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil 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.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_new_event.addEventButton +import kotlinx.android.synthetic.main.activity_new_event.addImageView +import kotlinx.android.synthetic.main.activity_new_event.createTimeView +import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.activity_new_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -import java.util.* +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -66,8 +72,11 @@ override fun initLayoutView(): Int = R.layout.activity_new_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } override fun observeRequestState() { @@ -76,6 +85,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "图片上传中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } @@ -86,6 +96,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "保存中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index c129271..d3ae12b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -4,8 +4,8 @@ import android.graphics.Color import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager import com.casic.birmm.inspect.view.BigImageActivity @@ -22,11 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_new_event.* -import java.util.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton +import kotlinx.android.synthetic.main.single_activity_new_event.addImageView +import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView +import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.single_activity_new_event.rootView +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -183,7 +189,10 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 32aad52..508d610 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_event_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.activity_event_detail.dataView +import kotlinx.android.synthetic.main.activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.activity_event_detail.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class EventDetailActivity : KotlinBaseActivity() { @@ -25,8 +29,11 @@ override fun initLayoutView(): Int = R.layout.activity_event_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index c086607..056f442 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -3,21 +3,25 @@ import android.os.Bundle import android.view.View import android.webkit.WebViewClient -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_help_center.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_help_center.answerView +import kotlinx.android.synthetic.main.activity_help_center.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class HelpCenterActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index d35baef..ac97920 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -15,10 +15,11 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView +import kotlinx.android.synthetic.main.activity_inspection_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class InspectionEventActivity : KotlinBaseActivity() { @@ -27,8 +28,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 14d25d2..5ff3383 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -1,36 +1,33 @@ package com.casic.birmm.inspect.view -import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener -import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.activity_inspection_route.endTimeView import kotlinx.android.synthetic.main.activity_inspection_route.eventButton import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.startTimeView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.activity_inspection_route.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -42,9 +39,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } @@ -69,19 +68,7 @@ startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime - LatLng(detailData.startLat, detailData.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(detailData.endLat, detailData.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) + //TODO 未完 //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -94,28 +81,8 @@ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian) //设置终点 addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian) - //瞄点画线 - val routeJson = detailData.routes!! - if (routeJson.isEmpty()) { - return@observe - } - //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - val type = object : TypeToken>() {}.type - val routeModels = gson.fromJson>(routeJson, type) - //画线 - val latLngPoints: ArrayList = ArrayList() - routeModels.forEach { routeModel -> - latLngPoints.add(LatLng(routeModel.latitude, routeModel.longitude)) - } - aMap.addPolyline( - PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED) - ) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) + //TODO 未完 } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 91f7fe6..e558c92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -7,12 +7,12 @@ import android.os.Handler import android.util.Log import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -33,15 +33,21 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil 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.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_new_event.addEventButton +import kotlinx.android.synthetic.main.activity_new_event.addImageView +import kotlinx.android.synthetic.main.activity_new_event.createTimeView +import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.activity_new_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -import java.util.* +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -66,8 +72,11 @@ override fun initLayoutView(): Int = R.layout.activity_new_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } override fun observeRequestState() { @@ -76,6 +85,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "图片上传中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } @@ -86,6 +96,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "保存中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index c99a8bf..0fe65f9 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -2,15 +2,20 @@ import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_user_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView +import kotlinx.android.synthetic.main.activity_user_detail.rootView +import kotlinx.android.synthetic.main.activity_user_detail.userDeptView +import kotlinx.android.synthetic.main.activity_user_detail.userNameView +import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView +import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class UserDetailActivity : KotlinBaseActivity() { @@ -19,8 +24,11 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index c129271..d3ae12b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -4,8 +4,8 @@ import android.graphics.Color import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager import com.casic.birmm.inspect.view.BigImageActivity @@ -22,11 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_new_event.* -import java.util.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton +import kotlinx.android.synthetic.main.single_activity_new_event.addImageView +import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView +import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.single_activity_new_event.rootView +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -183,7 +189,10 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 32aad52..508d610 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_event_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.activity_event_detail.dataView +import kotlinx.android.synthetic.main.activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.activity_event_detail.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class EventDetailActivity : KotlinBaseActivity() { @@ -25,8 +29,11 @@ override fun initLayoutView(): Int = R.layout.activity_event_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index c086607..056f442 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -3,21 +3,25 @@ import android.os.Bundle import android.view.View import android.webkit.WebViewClient -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_help_center.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_help_center.answerView +import kotlinx.android.synthetic.main.activity_help_center.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class HelpCenterActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index d35baef..ac97920 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -15,10 +15,11 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView +import kotlinx.android.synthetic.main.activity_inspection_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class InspectionEventActivity : KotlinBaseActivity() { @@ -27,8 +28,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 14d25d2..5ff3383 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -1,36 +1,33 @@ package com.casic.birmm.inspect.view -import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener -import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.activity_inspection_route.endTimeView import kotlinx.android.synthetic.main.activity_inspection_route.eventButton import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.startTimeView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.activity_inspection_route.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -42,9 +39,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } @@ -69,19 +68,7 @@ startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime - LatLng(detailData.startLat, detailData.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(detailData.endLat, detailData.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) + //TODO 未完 //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -94,28 +81,8 @@ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian) //设置终点 addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian) - //瞄点画线 - val routeJson = detailData.routes!! - if (routeJson.isEmpty()) { - return@observe - } - //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - val type = object : TypeToken>() {}.type - val routeModels = gson.fromJson>(routeJson, type) - //画线 - val latLngPoints: ArrayList = ArrayList() - routeModels.forEach { routeModel -> - latLngPoints.add(LatLng(routeModel.latitude, routeModel.longitude)) - } - aMap.addPolyline( - PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED) - ) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) + //TODO 未完 } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 91f7fe6..e558c92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -7,12 +7,12 @@ import android.os.Handler import android.util.Log import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -33,15 +33,21 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil 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.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_new_event.addEventButton +import kotlinx.android.synthetic.main.activity_new_event.addImageView +import kotlinx.android.synthetic.main.activity_new_event.createTimeView +import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.activity_new_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -import java.util.* +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -66,8 +72,11 @@ override fun initLayoutView(): Int = R.layout.activity_new_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } override fun observeRequestState() { @@ -76,6 +85,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "图片上传中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } @@ -86,6 +96,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "保存中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index c99a8bf..0fe65f9 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -2,15 +2,20 @@ import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_user_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView +import kotlinx.android.synthetic.main.activity_user_detail.rootView +import kotlinx.android.synthetic.main.activity_user_detail.userDeptView +import kotlinx.android.synthetic.main.activity_user_detail.userNameView +import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView +import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class UserDetailActivity : KotlinBaseActivity() { @@ -19,8 +24,11 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index de185ad..71dbcec 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -1,5 +1,6 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index c129271..d3ae12b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -4,8 +4,8 @@ import android.graphics.Color import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager import com.casic.birmm.inspect.view.BigImageActivity @@ -22,11 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_new_event.* -import java.util.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton +import kotlinx.android.synthetic.main.single_activity_new_event.addImageView +import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView +import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.single_activity_new_event.rootView +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -183,7 +189,10 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 32aad52..508d610 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_event_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.activity_event_detail.dataView +import kotlinx.android.synthetic.main.activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.activity_event_detail.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class EventDetailActivity : KotlinBaseActivity() { @@ -25,8 +29,11 @@ override fun initLayoutView(): Int = R.layout.activity_event_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index c086607..056f442 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -3,21 +3,25 @@ import android.os.Bundle import android.view.View import android.webkit.WebViewClient -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_help_center.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_help_center.answerView +import kotlinx.android.synthetic.main.activity_help_center.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class HelpCenterActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index d35baef..ac97920 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -15,10 +15,11 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView +import kotlinx.android.synthetic.main.activity_inspection_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class InspectionEventActivity : KotlinBaseActivity() { @@ -27,8 +28,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 14d25d2..5ff3383 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -1,36 +1,33 @@ package com.casic.birmm.inspect.view -import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener -import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.activity_inspection_route.endTimeView import kotlinx.android.synthetic.main.activity_inspection_route.eventButton import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.startTimeView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.activity_inspection_route.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -42,9 +39,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } @@ -69,19 +68,7 @@ startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime - LatLng(detailData.startLat, detailData.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(detailData.endLat, detailData.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) + //TODO 未完 //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -94,28 +81,8 @@ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian) //设置终点 addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian) - //瞄点画线 - val routeJson = detailData.routes!! - if (routeJson.isEmpty()) { - return@observe - } - //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - val type = object : TypeToken>() {}.type - val routeModels = gson.fromJson>(routeJson, type) - //画线 - val latLngPoints: ArrayList = ArrayList() - routeModels.forEach { routeModel -> - latLngPoints.add(LatLng(routeModel.latitude, routeModel.longitude)) - } - aMap.addPolyline( - PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED) - ) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) + //TODO 未完 } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 91f7fe6..e558c92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -7,12 +7,12 @@ import android.os.Handler import android.util.Log import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -33,15 +33,21 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil 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.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_new_event.addEventButton +import kotlinx.android.synthetic.main.activity_new_event.addImageView +import kotlinx.android.synthetic.main.activity_new_event.createTimeView +import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.activity_new_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -import java.util.* +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -66,8 +72,11 @@ override fun initLayoutView(): Int = R.layout.activity_new_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } override fun observeRequestState() { @@ -76,6 +85,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "图片上传中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } @@ -86,6 +96,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "保存中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index c99a8bf..0fe65f9 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -2,15 +2,20 @@ import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_user_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView +import kotlinx.android.synthetic.main.activity_user_detail.rootView +import kotlinx.android.synthetic.main.activity_user_detail.userDeptView +import kotlinx.android.synthetic.main.activity_user_detail.userNameView +import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView +import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class UserDetailActivity : KotlinBaseActivity() { @@ -19,8 +24,11 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index de185ad..71dbcec 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -1,5 +1,6 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index c129271..d3ae12b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -4,8 +4,8 @@ import android.graphics.Color import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager import com.casic.birmm.inspect.view.BigImageActivity @@ -22,11 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_new_event.* -import java.util.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton +import kotlinx.android.synthetic.main.single_activity_new_event.addImageView +import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView +import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.single_activity_new_event.rootView +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -183,7 +189,10 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 32aad52..508d610 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_event_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.activity_event_detail.dataView +import kotlinx.android.synthetic.main.activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.activity_event_detail.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class EventDetailActivity : KotlinBaseActivity() { @@ -25,8 +29,11 @@ override fun initLayoutView(): Int = R.layout.activity_event_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index c086607..056f442 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -3,21 +3,25 @@ import android.os.Bundle import android.view.View import android.webkit.WebViewClient -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_help_center.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_help_center.answerView +import kotlinx.android.synthetic.main.activity_help_center.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class HelpCenterActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index d35baef..ac97920 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -15,10 +15,11 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView +import kotlinx.android.synthetic.main.activity_inspection_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class InspectionEventActivity : KotlinBaseActivity() { @@ -27,8 +28,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 14d25d2..5ff3383 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -1,36 +1,33 @@ package com.casic.birmm.inspect.view -import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener -import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.activity_inspection_route.endTimeView import kotlinx.android.synthetic.main.activity_inspection_route.eventButton import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.startTimeView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.activity_inspection_route.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -42,9 +39,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } @@ -69,19 +68,7 @@ startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime - LatLng(detailData.startLat, detailData.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(detailData.endLat, detailData.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) + //TODO 未完 //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -94,28 +81,8 @@ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian) //设置终点 addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian) - //瞄点画线 - val routeJson = detailData.routes!! - if (routeJson.isEmpty()) { - return@observe - } - //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - val type = object : TypeToken>() {}.type - val routeModels = gson.fromJson>(routeJson, type) - //画线 - val latLngPoints: ArrayList = ArrayList() - routeModels.forEach { routeModel -> - latLngPoints.add(LatLng(routeModel.latitude, routeModel.longitude)) - } - aMap.addPolyline( - PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED) - ) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) + //TODO 未完 } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 91f7fe6..e558c92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -7,12 +7,12 @@ import android.os.Handler import android.util.Log import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -33,15 +33,21 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil 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.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_new_event.addEventButton +import kotlinx.android.synthetic.main.activity_new_event.addImageView +import kotlinx.android.synthetic.main.activity_new_event.createTimeView +import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.activity_new_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -import java.util.* +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -66,8 +72,11 @@ override fun initLayoutView(): Int = R.layout.activity_new_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } override fun observeRequestState() { @@ -76,6 +85,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "图片上传中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } @@ -86,6 +96,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "保存中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index c99a8bf..0fe65f9 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -2,15 +2,20 @@ import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_user_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView +import kotlinx.android.synthetic.main.activity_user_detail.rootView +import kotlinx.android.synthetic.main.activity_user_detail.userDeptView +import kotlinx.android.synthetic.main.activity_user_detail.userNameView +import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView +import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class UserDetailActivity : KotlinBaseActivity() { @@ -19,8 +24,11 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index de185ad..71dbcec 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -1,5 +1,6 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index c129271..d3ae12b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -4,8 +4,8 @@ import android.graphics.Color import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager import com.casic.birmm.inspect.view.BigImageActivity @@ -22,11 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_new_event.* -import java.util.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton +import kotlinx.android.synthetic.main.single_activity_new_event.addImageView +import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView +import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.single_activity_new_event.rootView +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -183,7 +189,10 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 32aad52..508d610 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_event_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.activity_event_detail.dataView +import kotlinx.android.synthetic.main.activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.activity_event_detail.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class EventDetailActivity : KotlinBaseActivity() { @@ -25,8 +29,11 @@ override fun initLayoutView(): Int = R.layout.activity_event_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index c086607..056f442 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -3,21 +3,25 @@ import android.os.Bundle import android.view.View import android.webkit.WebViewClient -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_help_center.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_help_center.answerView +import kotlinx.android.synthetic.main.activity_help_center.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class HelpCenterActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index d35baef..ac97920 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -15,10 +15,11 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView +import kotlinx.android.synthetic.main.activity_inspection_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class InspectionEventActivity : KotlinBaseActivity() { @@ -27,8 +28,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 14d25d2..5ff3383 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -1,36 +1,33 @@ package com.casic.birmm.inspect.view -import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener -import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.activity_inspection_route.endTimeView import kotlinx.android.synthetic.main.activity_inspection_route.eventButton import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.startTimeView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.activity_inspection_route.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -42,9 +39,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } @@ -69,19 +68,7 @@ startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime - LatLng(detailData.startLat, detailData.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(detailData.endLat, detailData.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) + //TODO 未完 //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -94,28 +81,8 @@ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian) //设置终点 addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian) - //瞄点画线 - val routeJson = detailData.routes!! - if (routeJson.isEmpty()) { - return@observe - } - //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - val type = object : TypeToken>() {}.type - val routeModels = gson.fromJson>(routeJson, type) - //画线 - val latLngPoints: ArrayList = ArrayList() - routeModels.forEach { routeModel -> - latLngPoints.add(LatLng(routeModel.latitude, routeModel.longitude)) - } - aMap.addPolyline( - PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED) - ) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) + //TODO 未完 } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 91f7fe6..e558c92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -7,12 +7,12 @@ import android.os.Handler import android.util.Log import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -33,15 +33,21 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil 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.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_new_event.addEventButton +import kotlinx.android.synthetic.main.activity_new_event.addImageView +import kotlinx.android.synthetic.main.activity_new_event.createTimeView +import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.activity_new_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -import java.util.* +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -66,8 +72,11 @@ override fun initLayoutView(): Int = R.layout.activity_new_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } override fun observeRequestState() { @@ -76,6 +85,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "图片上传中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } @@ -86,6 +96,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "保存中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index c99a8bf..0fe65f9 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -2,15 +2,20 @@ import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_user_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView +import kotlinx.android.synthetic.main.activity_user_detail.rootView +import kotlinx.android.synthetic.main.activity_user_detail.userDeptView +import kotlinx.android.synthetic.main.activity_user_detail.userNameView +import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView +import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class UserDetailActivity : KotlinBaseActivity() { @@ -19,8 +24,11 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index de185ad..71dbcec 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -1,5 +1,6 @@ @@ -18,69 +19,167 @@ - - - - - - - + android:orientation="vertical" + android:padding="@dimen/dp_5"> + android:paddingHorizontal="@dimen/dp_7" + android:singleLine="true" + android:textColor="@color/black" + android:textSize="@dimen/sp_16" /> + android:orientation="horizontal"> - + + + + + + + + + + + + + + + + android:orientation="vertical"> - + + + + + + + + + + + + + + + + android:layout_gravity="bottom" + android:layout_marginStart="@dimen/dp_5" + android:background="@drawable/bg_solid_layout_gray_radius_5" + android:gravity="center_horizontal" + android:orientation="vertical" + android:padding="@dimen/dp_5"> + + + + + + + + + + diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index c129271..d3ae12b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -4,8 +4,8 @@ import android.graphics.Color import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager import com.casic.birmm.inspect.view.BigImageActivity @@ -22,11 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_new_event.* -import java.util.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton +import kotlinx.android.synthetic.main.single_activity_new_event.addImageView +import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView +import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.single_activity_new_event.rootView +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -183,7 +189,10 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 32aad52..508d610 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_event_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.activity_event_detail.dataView +import kotlinx.android.synthetic.main.activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.activity_event_detail.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class EventDetailActivity : KotlinBaseActivity() { @@ -25,8 +29,11 @@ override fun initLayoutView(): Int = R.layout.activity_event_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index c086607..056f442 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -3,21 +3,25 @@ import android.os.Bundle import android.view.View import android.webkit.WebViewClient -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_help_center.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_help_center.answerView +import kotlinx.android.synthetic.main.activity_help_center.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class HelpCenterActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index d35baef..ac97920 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -15,10 +15,11 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView +import kotlinx.android.synthetic.main.activity_inspection_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class InspectionEventActivity : KotlinBaseActivity() { @@ -27,8 +28,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 14d25d2..5ff3383 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -1,36 +1,33 @@ package com.casic.birmm.inspect.view -import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener -import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.activity_inspection_route.endTimeView import kotlinx.android.synthetic.main.activity_inspection_route.eventButton import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.startTimeView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.activity_inspection_route.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -42,9 +39,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } @@ -69,19 +68,7 @@ startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime - LatLng(detailData.startLat, detailData.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(detailData.endLat, detailData.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) + //TODO 未完 //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -94,28 +81,8 @@ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian) //设置终点 addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian) - //瞄点画线 - val routeJson = detailData.routes!! - if (routeJson.isEmpty()) { - return@observe - } - //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - val type = object : TypeToken>() {}.type - val routeModels = gson.fromJson>(routeJson, type) - //画线 - val latLngPoints: ArrayList = ArrayList() - routeModels.forEach { routeModel -> - latLngPoints.add(LatLng(routeModel.latitude, routeModel.longitude)) - } - aMap.addPolyline( - PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED) - ) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) + //TODO 未完 } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 91f7fe6..e558c92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -7,12 +7,12 @@ import android.os.Handler import android.util.Log import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -33,15 +33,21 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil 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.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_new_event.addEventButton +import kotlinx.android.synthetic.main.activity_new_event.addImageView +import kotlinx.android.synthetic.main.activity_new_event.createTimeView +import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.activity_new_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -import java.util.* +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -66,8 +72,11 @@ override fun initLayoutView(): Int = R.layout.activity_new_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } override fun observeRequestState() { @@ -76,6 +85,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "图片上传中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } @@ -86,6 +96,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "保存中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index c99a8bf..0fe65f9 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -2,15 +2,20 @@ import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_user_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView +import kotlinx.android.synthetic.main.activity_user_detail.rootView +import kotlinx.android.synthetic.main.activity_user_detail.userDeptView +import kotlinx.android.synthetic.main.activity_user_detail.userNameView +import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView +import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class UserDetailActivity : KotlinBaseActivity() { @@ -19,8 +24,11 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index de185ad..71dbcec 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -1,5 +1,6 @@ @@ -18,69 +19,167 @@ - - - - - - - + android:orientation="vertical" + android:padding="@dimen/dp_5"> + android:paddingHorizontal="@dimen/dp_7" + android:singleLine="true" + android:textColor="@color/black" + android:textSize="@dimen/sp_16" /> + android:orientation="horizontal"> - + + + + + + + + + + + + + + + + android:orientation="vertical"> - + + + + + + + + + + + + + + + + android:layout_gravity="bottom" + android:layout_marginStart="@dimen/dp_5" + android:background="@drawable/bg_solid_layout_gray_radius_5" + android:gravity="center_horizontal" + android:orientation="vertical" + android:padding="@dimen/dp_5"> + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_new_event.xml b/app/src/main/res/layout/activity_new_event.xml index ddade29..31e7ca6 100644 --- a/app/src/main/res/layout/activity_new_event.xml +++ b/app/src/main/res/layout/activity_new_event.xml @@ -1,6 +1,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index c129271..d3ae12b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -4,8 +4,8 @@ import android.graphics.Color import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager import com.casic.birmm.inspect.view.BigImageActivity @@ -22,11 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_new_event.* -import java.util.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton +import kotlinx.android.synthetic.main.single_activity_new_event.addImageView +import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView +import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.single_activity_new_event.rootView +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -183,7 +189,10 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 32aad52..508d610 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_event_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.activity_event_detail.dataView +import kotlinx.android.synthetic.main.activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.activity_event_detail.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class EventDetailActivity : KotlinBaseActivity() { @@ -25,8 +29,11 @@ override fun initLayoutView(): Int = R.layout.activity_event_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index c086607..056f442 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -3,21 +3,25 @@ import android.os.Bundle import android.view.View import android.webkit.WebViewClient -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_help_center.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_help_center.answerView +import kotlinx.android.synthetic.main.activity_help_center.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class HelpCenterActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index d35baef..ac97920 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -15,10 +15,11 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView +import kotlinx.android.synthetic.main.activity_inspection_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class InspectionEventActivity : KotlinBaseActivity() { @@ -27,8 +28,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 14d25d2..5ff3383 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -1,36 +1,33 @@ package com.casic.birmm.inspect.view -import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener -import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.activity_inspection_route.endTimeView import kotlinx.android.synthetic.main.activity_inspection_route.eventButton import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.startTimeView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.activity_inspection_route.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -42,9 +39,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } @@ -69,19 +68,7 @@ startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime - LatLng(detailData.startLat, detailData.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(detailData.endLat, detailData.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) + //TODO 未完 //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -94,28 +81,8 @@ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian) //设置终点 addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian) - //瞄点画线 - val routeJson = detailData.routes!! - if (routeJson.isEmpty()) { - return@observe - } - //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - val type = object : TypeToken>() {}.type - val routeModels = gson.fromJson>(routeJson, type) - //画线 - val latLngPoints: ArrayList = ArrayList() - routeModels.forEach { routeModel -> - latLngPoints.add(LatLng(routeModel.latitude, routeModel.longitude)) - } - aMap.addPolyline( - PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED) - ) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) + //TODO 未完 } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 91f7fe6..e558c92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -7,12 +7,12 @@ import android.os.Handler import android.util.Log import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -33,15 +33,21 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil 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.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_new_event.addEventButton +import kotlinx.android.synthetic.main.activity_new_event.addImageView +import kotlinx.android.synthetic.main.activity_new_event.createTimeView +import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.activity_new_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -import java.util.* +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -66,8 +72,11 @@ override fun initLayoutView(): Int = R.layout.activity_new_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } override fun observeRequestState() { @@ -76,6 +85,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "图片上传中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } @@ -86,6 +96,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "保存中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index c99a8bf..0fe65f9 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -2,15 +2,20 @@ import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_user_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView +import kotlinx.android.synthetic.main.activity_user_detail.rootView +import kotlinx.android.synthetic.main.activity_user_detail.userDeptView +import kotlinx.android.synthetic.main.activity_user_detail.userNameView +import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView +import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class UserDetailActivity : KotlinBaseActivity() { @@ -19,8 +24,11 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index de185ad..71dbcec 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -1,5 +1,6 @@ @@ -18,69 +19,167 @@ - - - - - - - + android:orientation="vertical" + android:padding="@dimen/dp_5"> + android:paddingHorizontal="@dimen/dp_7" + android:singleLine="true" + android:textColor="@color/black" + android:textSize="@dimen/sp_16" /> + android:orientation="horizontal"> - + + + + + + + + + + + + + + + + android:orientation="vertical"> - + + + + + + + + + + + + + + + + android:layout_gravity="bottom" + android:layout_marginStart="@dimen/dp_5" + android:background="@drawable/bg_solid_layout_gray_radius_5" + android:gravity="center_horizontal" + android:orientation="vertical" + android:padding="@dimen/dp_5"> + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_new_event.xml b/app/src/main/res/layout/activity_new_event.xml index ddade29..31e7ca6 100644 --- a/app/src/main/res/layout/activity_new_event.xml +++ b/app/src/main/res/layout/activity_new_event.xml @@ -1,6 +1,7 @@ - + - + - + - + - + - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index c129271..d3ae12b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -4,8 +4,8 @@ import android.graphics.Color import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager import com.casic.birmm.inspect.view.BigImageActivity @@ -22,11 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_new_event.* -import java.util.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton +import kotlinx.android.synthetic.main.single_activity_new_event.addImageView +import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView +import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.single_activity_new_event.rootView +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -183,7 +189,10 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 32aad52..508d610 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_event_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.activity_event_detail.dataView +import kotlinx.android.synthetic.main.activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.activity_event_detail.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class EventDetailActivity : KotlinBaseActivity() { @@ -25,8 +29,11 @@ override fun initLayoutView(): Int = R.layout.activity_event_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index c086607..056f442 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -3,21 +3,25 @@ import android.os.Bundle import android.view.View import android.webkit.WebViewClient -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_help_center.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_help_center.answerView +import kotlinx.android.synthetic.main.activity_help_center.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class HelpCenterActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index d35baef..ac97920 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -15,10 +15,11 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView +import kotlinx.android.synthetic.main.activity_inspection_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class InspectionEventActivity : KotlinBaseActivity() { @@ -27,8 +28,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 14d25d2..5ff3383 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -1,36 +1,33 @@ package com.casic.birmm.inspect.view -import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener -import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.activity_inspection_route.endTimeView import kotlinx.android.synthetic.main.activity_inspection_route.eventButton import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.startTimeView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.activity_inspection_route.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -42,9 +39,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } @@ -69,19 +68,7 @@ startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime - LatLng(detailData.startLat, detailData.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(detailData.endLat, detailData.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) + //TODO 未完 //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -94,28 +81,8 @@ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian) //设置终点 addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian) - //瞄点画线 - val routeJson = detailData.routes!! - if (routeJson.isEmpty()) { - return@observe - } - //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - val type = object : TypeToken>() {}.type - val routeModels = gson.fromJson>(routeJson, type) - //画线 - val latLngPoints: ArrayList = ArrayList() - routeModels.forEach { routeModel -> - latLngPoints.add(LatLng(routeModel.latitude, routeModel.longitude)) - } - aMap.addPolyline( - PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED) - ) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) + //TODO 未完 } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 91f7fe6..e558c92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -7,12 +7,12 @@ import android.os.Handler import android.util.Log import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -33,15 +33,21 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil 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.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_new_event.addEventButton +import kotlinx.android.synthetic.main.activity_new_event.addImageView +import kotlinx.android.synthetic.main.activity_new_event.createTimeView +import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.activity_new_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -import java.util.* +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -66,8 +72,11 @@ override fun initLayoutView(): Int = R.layout.activity_new_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } override fun observeRequestState() { @@ -76,6 +85,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "图片上传中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } @@ -86,6 +96,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "保存中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index c99a8bf..0fe65f9 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -2,15 +2,20 @@ import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_user_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView +import kotlinx.android.synthetic.main.activity_user_detail.rootView +import kotlinx.android.synthetic.main.activity_user_detail.userDeptView +import kotlinx.android.synthetic.main.activity_user_detail.userNameView +import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView +import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class UserDetailActivity : KotlinBaseActivity() { @@ -19,8 +24,11 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index de185ad..71dbcec 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -1,5 +1,6 @@ @@ -18,69 +19,167 @@ - - - - - - - + android:orientation="vertical" + android:padding="@dimen/dp_5"> + android:paddingHorizontal="@dimen/dp_7" + android:singleLine="true" + android:textColor="@color/black" + android:textSize="@dimen/sp_16" /> + android:orientation="horizontal"> - + + + + + + + + + + + + + + + + android:orientation="vertical"> - + + + + + + + + + + + + + + + + android:layout_gravity="bottom" + android:layout_marginStart="@dimen/dp_5" + android:background="@drawable/bg_solid_layout_gray_radius_5" + android:gravity="center_horizontal" + android:orientation="vertical" + android:padding="@dimen/dp_5"> + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_new_event.xml b/app/src/main/res/layout/activity_new_event.xml index ddade29..31e7ca6 100644 --- a/app/src/main/res/layout/activity_new_event.xml +++ b/app/src/main/res/layout/activity_new_event.xml @@ -1,6 +1,7 @@ - + - + - + - + - + - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index c129271..d3ae12b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -4,8 +4,8 @@ import android.graphics.Color import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager import com.casic.birmm.inspect.view.BigImageActivity @@ -22,11 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_new_event.* -import java.util.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton +import kotlinx.android.synthetic.main.single_activity_new_event.addImageView +import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView +import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.single_activity_new_event.rootView +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -183,7 +189,10 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 32aad52..508d610 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_event_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.activity_event_detail.dataView +import kotlinx.android.synthetic.main.activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.activity_event_detail.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class EventDetailActivity : KotlinBaseActivity() { @@ -25,8 +29,11 @@ override fun initLayoutView(): Int = R.layout.activity_event_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index c086607..056f442 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -3,21 +3,25 @@ import android.os.Bundle import android.view.View import android.webkit.WebViewClient -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_help_center.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_help_center.answerView +import kotlinx.android.synthetic.main.activity_help_center.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class HelpCenterActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index d35baef..ac97920 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -15,10 +15,11 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView +import kotlinx.android.synthetic.main.activity_inspection_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class InspectionEventActivity : KotlinBaseActivity() { @@ -27,8 +28,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 14d25d2..5ff3383 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -1,36 +1,33 @@ package com.casic.birmm.inspect.view -import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener -import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.activity_inspection_route.endTimeView import kotlinx.android.synthetic.main.activity_inspection_route.eventButton import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.startTimeView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.activity_inspection_route.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -42,9 +39,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } @@ -69,19 +68,7 @@ startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime - LatLng(detailData.startLat, detailData.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(detailData.endLat, detailData.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) + //TODO 未完 //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -94,28 +81,8 @@ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian) //设置终点 addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian) - //瞄点画线 - val routeJson = detailData.routes!! - if (routeJson.isEmpty()) { - return@observe - } - //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - val type = object : TypeToken>() {}.type - val routeModels = gson.fromJson>(routeJson, type) - //画线 - val latLngPoints: ArrayList = ArrayList() - routeModels.forEach { routeModel -> - latLngPoints.add(LatLng(routeModel.latitude, routeModel.longitude)) - } - aMap.addPolyline( - PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED) - ) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) + //TODO 未完 } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 91f7fe6..e558c92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -7,12 +7,12 @@ import android.os.Handler import android.util.Log import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -33,15 +33,21 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil 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.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_new_event.addEventButton +import kotlinx.android.synthetic.main.activity_new_event.addImageView +import kotlinx.android.synthetic.main.activity_new_event.createTimeView +import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.activity_new_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -import java.util.* +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -66,8 +72,11 @@ override fun initLayoutView(): Int = R.layout.activity_new_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } override fun observeRequestState() { @@ -76,6 +85,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "图片上传中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } @@ -86,6 +96,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "保存中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index c99a8bf..0fe65f9 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -2,15 +2,20 @@ import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_user_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView +import kotlinx.android.synthetic.main.activity_user_detail.rootView +import kotlinx.android.synthetic.main.activity_user_detail.userDeptView +import kotlinx.android.synthetic.main.activity_user_detail.userNameView +import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView +import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class UserDetailActivity : KotlinBaseActivity() { @@ -19,8 +24,11 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index de185ad..71dbcec 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -1,5 +1,6 @@ @@ -18,69 +19,167 @@ - - - - - - - + android:orientation="vertical" + android:padding="@dimen/dp_5"> + android:paddingHorizontal="@dimen/dp_7" + android:singleLine="true" + android:textColor="@color/black" + android:textSize="@dimen/sp_16" /> + android:orientation="horizontal"> - + + + + + + + + + + + + + + + + android:orientation="vertical"> - + + + + + + + + + + + + + + + + android:layout_gravity="bottom" + android:layout_marginStart="@dimen/dp_5" + android:background="@drawable/bg_solid_layout_gray_radius_5" + android:gravity="center_horizontal" + android:orientation="vertical" + android:padding="@dimen/dp_5"> + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_new_event.xml b/app/src/main/res/layout/activity_new_event.xml index ddade29..31e7ca6 100644 --- a/app/src/main/res/layout/activity_new_event.xml +++ b/app/src/main/res/layout/activity_new_event.xml @@ -1,6 +1,7 @@ - + - + - + - + - + - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index c129271..d3ae12b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -4,8 +4,8 @@ import android.graphics.Color import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager import com.casic.birmm.inspect.view.BigImageActivity @@ -22,11 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_new_event.* -import java.util.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton +import kotlinx.android.synthetic.main.single_activity_new_event.addImageView +import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView +import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.single_activity_new_event.rootView +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -183,7 +189,10 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 32aad52..508d610 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_event_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.activity_event_detail.dataView +import kotlinx.android.synthetic.main.activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.activity_event_detail.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class EventDetailActivity : KotlinBaseActivity() { @@ -25,8 +29,11 @@ override fun initLayoutView(): Int = R.layout.activity_event_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index c086607..056f442 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -3,21 +3,25 @@ import android.os.Bundle import android.view.View import android.webkit.WebViewClient -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_help_center.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_help_center.answerView +import kotlinx.android.synthetic.main.activity_help_center.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class HelpCenterActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index d35baef..ac97920 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -15,10 +15,11 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView +import kotlinx.android.synthetic.main.activity_inspection_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class InspectionEventActivity : KotlinBaseActivity() { @@ -27,8 +28,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 14d25d2..5ff3383 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -1,36 +1,33 @@ package com.casic.birmm.inspect.view -import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener -import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.activity_inspection_route.endTimeView import kotlinx.android.synthetic.main.activity_inspection_route.eventButton import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.startTimeView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.activity_inspection_route.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -42,9 +39,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } @@ -69,19 +68,7 @@ startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime - LatLng(detailData.startLat, detailData.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(detailData.endLat, detailData.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) + //TODO 未完 //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -94,28 +81,8 @@ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian) //设置终点 addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian) - //瞄点画线 - val routeJson = detailData.routes!! - if (routeJson.isEmpty()) { - return@observe - } - //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - val type = object : TypeToken>() {}.type - val routeModels = gson.fromJson>(routeJson, type) - //画线 - val latLngPoints: ArrayList = ArrayList() - routeModels.forEach { routeModel -> - latLngPoints.add(LatLng(routeModel.latitude, routeModel.longitude)) - } - aMap.addPolyline( - PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED) - ) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) + //TODO 未完 } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 91f7fe6..e558c92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -7,12 +7,12 @@ import android.os.Handler import android.util.Log import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -33,15 +33,21 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil 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.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_new_event.addEventButton +import kotlinx.android.synthetic.main.activity_new_event.addImageView +import kotlinx.android.synthetic.main.activity_new_event.createTimeView +import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.activity_new_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -import java.util.* +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -66,8 +72,11 @@ override fun initLayoutView(): Int = R.layout.activity_new_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } override fun observeRequestState() { @@ -76,6 +85,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "图片上传中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } @@ -86,6 +96,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "保存中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index c99a8bf..0fe65f9 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -2,15 +2,20 @@ import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_user_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView +import kotlinx.android.synthetic.main.activity_user_detail.rootView +import kotlinx.android.synthetic.main.activity_user_detail.userDeptView +import kotlinx.android.synthetic.main.activity_user_detail.userNameView +import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView +import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class UserDetailActivity : KotlinBaseActivity() { @@ -19,8 +24,11 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index de185ad..71dbcec 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -1,5 +1,6 @@ @@ -18,69 +19,167 @@ - - - - - - - + android:orientation="vertical" + android:padding="@dimen/dp_5"> + android:paddingHorizontal="@dimen/dp_7" + android:singleLine="true" + android:textColor="@color/black" + android:textSize="@dimen/sp_16" /> + android:orientation="horizontal"> - + + + + + + + + + + + + + + + + android:orientation="vertical"> - + + + + + + + + + + + + + + + + android:layout_gravity="bottom" + android:layout_marginStart="@dimen/dp_5" + android:background="@drawable/bg_solid_layout_gray_radius_5" + android:gravity="center_horizontal" + android:orientation="vertical" + android:padding="@dimen/dp_5"> + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_new_event.xml b/app/src/main/res/layout/activity_new_event.xml index ddade29..31e7ca6 100644 --- a/app/src/main/res/layout/activity_new_event.xml +++ b/app/src/main/res/layout/activity_new_event.xml @@ -1,6 +1,7 @@ - + - + - + - + - + diff --git a/.idea/misc.xml b/.idea/misc.xml index ac873f3..df5853a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index c129271..d3ae12b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -4,8 +4,8 @@ import android.graphics.Color import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager import com.casic.birmm.inspect.view.BigImageActivity @@ -22,11 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_new_event.* -import java.util.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton +import kotlinx.android.synthetic.main.single_activity_new_event.addImageView +import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView +import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.single_activity_new_event.rootView +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -183,7 +189,10 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 32aad52..508d610 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_event_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.activity_event_detail.dataView +import kotlinx.android.synthetic.main.activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.activity_event_detail.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class EventDetailActivity : KotlinBaseActivity() { @@ -25,8 +29,11 @@ override fun initLayoutView(): Int = R.layout.activity_event_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index c086607..056f442 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -3,21 +3,25 @@ import android.os.Bundle import android.view.View import android.webkit.WebViewClient -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_help_center.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_help_center.answerView +import kotlinx.android.synthetic.main.activity_help_center.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class HelpCenterActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index d35baef..ac97920 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -15,10 +15,11 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView +import kotlinx.android.synthetic.main.activity_inspection_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class InspectionEventActivity : KotlinBaseActivity() { @@ -27,8 +28,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 14d25d2..5ff3383 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -1,36 +1,33 @@ package com.casic.birmm.inspect.view -import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener -import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.activity_inspection_route.endTimeView import kotlinx.android.synthetic.main.activity_inspection_route.eventButton import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.startTimeView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.activity_inspection_route.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -42,9 +39,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } @@ -69,19 +68,7 @@ startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime - LatLng(detailData.startLat, detailData.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(detailData.endLat, detailData.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) + //TODO 未完 //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -94,28 +81,8 @@ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian) //设置终点 addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian) - //瞄点画线 - val routeJson = detailData.routes!! - if (routeJson.isEmpty()) { - return@observe - } - //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - val type = object : TypeToken>() {}.type - val routeModels = gson.fromJson>(routeJson, type) - //画线 - val latLngPoints: ArrayList = ArrayList() - routeModels.forEach { routeModel -> - latLngPoints.add(LatLng(routeModel.latitude, routeModel.longitude)) - } - aMap.addPolyline( - PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED) - ) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) + //TODO 未完 } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 91f7fe6..e558c92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -7,12 +7,12 @@ import android.os.Handler import android.util.Log import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -33,15 +33,21 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil 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.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_new_event.addEventButton +import kotlinx.android.synthetic.main.activity_new_event.addImageView +import kotlinx.android.synthetic.main.activity_new_event.createTimeView +import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.activity_new_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -import java.util.* +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -66,8 +72,11 @@ override fun initLayoutView(): Int = R.layout.activity_new_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } override fun observeRequestState() { @@ -76,6 +85,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "图片上传中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } @@ -86,6 +96,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "保存中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index c99a8bf..0fe65f9 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -2,15 +2,20 @@ import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_user_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView +import kotlinx.android.synthetic.main.activity_user_detail.rootView +import kotlinx.android.synthetic.main.activity_user_detail.userDeptView +import kotlinx.android.synthetic.main.activity_user_detail.userNameView +import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView +import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class UserDetailActivity : KotlinBaseActivity() { @@ -19,8 +24,11 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index de185ad..71dbcec 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -1,5 +1,6 @@ @@ -18,69 +19,167 @@ - - - - - - - + android:orientation="vertical" + android:padding="@dimen/dp_5"> + android:paddingHorizontal="@dimen/dp_7" + android:singleLine="true" + android:textColor="@color/black" + android:textSize="@dimen/sp_16" /> + android:orientation="horizontal"> - + + + + + + + + + + + + + + + + android:orientation="vertical"> - + + + + + + + + + + + + + + + + android:layout_gravity="bottom" + android:layout_marginStart="@dimen/dp_5" + android:background="@drawable/bg_solid_layout_gray_radius_5" + android:gravity="center_horizontal" + android:orientation="vertical" + android:padding="@dimen/dp_5"> + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_new_event.xml b/app/src/main/res/layout/activity_new_event.xml index ddade29..31e7ca6 100644 --- a/app/src/main/res/layout/activity_new_event.xml +++ b/app/src/main/res/layout/activity_new_event.xml @@ -1,6 +1,7 @@ - + - + - + - + - + diff --git a/app/src/main/res/layout/single_activity_new_event.xml b/app/src/main/res/layout/single_activity_new_event.xml index ddade29..31e7ca6 100644 --- a/app/src/main/res/layout/single_activity_new_event.xml +++ b/app/src/main/res/layout/single_activity_new_event.xml @@ -1,6 +1,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index c129271..d3ae12b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -4,8 +4,8 @@ import android.graphics.Color import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager import com.casic.birmm.inspect.view.BigImageActivity @@ -22,11 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_new_event.* -import java.util.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton +import kotlinx.android.synthetic.main.single_activity_new_event.addImageView +import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView +import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.single_activity_new_event.rootView +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -183,7 +189,10 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 32aad52..508d610 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_event_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.activity_event_detail.dataView +import kotlinx.android.synthetic.main.activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.activity_event_detail.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class EventDetailActivity : KotlinBaseActivity() { @@ -25,8 +29,11 @@ override fun initLayoutView(): Int = R.layout.activity_event_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index c086607..056f442 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -3,21 +3,25 @@ import android.os.Bundle import android.view.View import android.webkit.WebViewClient -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_help_center.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_help_center.answerView +import kotlinx.android.synthetic.main.activity_help_center.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class HelpCenterActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index d35baef..ac97920 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -15,10 +15,11 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView +import kotlinx.android.synthetic.main.activity_inspection_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class InspectionEventActivity : KotlinBaseActivity() { @@ -27,8 +28,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 14d25d2..5ff3383 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -1,36 +1,33 @@ package com.casic.birmm.inspect.view -import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener -import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.activity_inspection_route.endTimeView import kotlinx.android.synthetic.main.activity_inspection_route.eventButton import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.startTimeView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.activity_inspection_route.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -42,9 +39,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } @@ -69,19 +68,7 @@ startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime - LatLng(detailData.startLat, detailData.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(detailData.endLat, detailData.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) + //TODO 未完 //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -94,28 +81,8 @@ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian) //设置终点 addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian) - //瞄点画线 - val routeJson = detailData.routes!! - if (routeJson.isEmpty()) { - return@observe - } - //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - val type = object : TypeToken>() {}.type - val routeModels = gson.fromJson>(routeJson, type) - //画线 - val latLngPoints: ArrayList = ArrayList() - routeModels.forEach { routeModel -> - latLngPoints.add(LatLng(routeModel.latitude, routeModel.longitude)) - } - aMap.addPolyline( - PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED) - ) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) + //TODO 未完 } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 91f7fe6..e558c92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -7,12 +7,12 @@ import android.os.Handler import android.util.Log import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -33,15 +33,21 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil 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.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_new_event.addEventButton +import kotlinx.android.synthetic.main.activity_new_event.addImageView +import kotlinx.android.synthetic.main.activity_new_event.createTimeView +import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.activity_new_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -import java.util.* +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -66,8 +72,11 @@ override fun initLayoutView(): Int = R.layout.activity_new_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } override fun observeRequestState() { @@ -76,6 +85,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "图片上传中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } @@ -86,6 +96,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "保存中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index c99a8bf..0fe65f9 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -2,15 +2,20 @@ import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_user_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView +import kotlinx.android.synthetic.main.activity_user_detail.rootView +import kotlinx.android.synthetic.main.activity_user_detail.userDeptView +import kotlinx.android.synthetic.main.activity_user_detail.userNameView +import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView +import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class UserDetailActivity : KotlinBaseActivity() { @@ -19,8 +24,11 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index de185ad..71dbcec 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -1,5 +1,6 @@ @@ -18,69 +19,167 @@ - - - - - - - + android:orientation="vertical" + android:padding="@dimen/dp_5"> + android:paddingHorizontal="@dimen/dp_7" + android:singleLine="true" + android:textColor="@color/black" + android:textSize="@dimen/sp_16" /> + android:orientation="horizontal"> - + + + + + + + + + + + + + + + + android:orientation="vertical"> - + + + + + + + + + + + + + + + + android:layout_gravity="bottom" + android:layout_marginStart="@dimen/dp_5" + android:background="@drawable/bg_solid_layout_gray_radius_5" + android:gravity="center_horizontal" + android:orientation="vertical" + android:padding="@dimen/dp_5"> + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_new_event.xml b/app/src/main/res/layout/activity_new_event.xml index ddade29..31e7ca6 100644 --- a/app/src/main/res/layout/activity_new_event.xml +++ b/app/src/main/res/layout/activity_new_event.xml @@ -1,6 +1,7 @@ - + - + - + - + - + diff --git a/app/src/main/res/layout/single_activity_new_event.xml b/app/src/main/res/layout/single_activity_new_event.xml index ddade29..31e7ca6 100644 --- a/app/src/main/res/layout/single_activity_new_event.xml +++ b/app/src/main/res/layout/single_activity_new_event.xml @@ -1,6 +1,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 2c08ed5..7806868 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,12 +15,12 @@ } } - compileSdkVersion 31 + compileSdkVersion 33 defaultConfig { applicationId "com.casic.birmm.inspect" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1002 versionName "1.0.0.2" } @@ -50,12 +50,13 @@ coroutines 'enable' } } + viewBinding { enabled true } - applicationVariants.all { variant -> - variant.outputs.all { + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "ZXB_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -63,7 +64,7 @@ greendao { schemaVersion 1//数据库版本号 targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 - daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + daoPackage "${defaultConfig.applicationId}.greendao"//设置DaoMaster、DaoSession、Dao包名 } } @@ -94,11 +95,12 @@ implementation 'io.github.lucksiege:pictureselector:v3.0.4' //官方Json解析库 implementation 'com.google.code.gson:gson:2.10.1' + def vm_version = '2.5.1' //Kotlin协程 - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}" //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //返回值转换器 implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' @@ -119,6 +121,4 @@ implementation 'com.amap.api:3dmap:latest.integration' //高德地图搜索 implementation 'com.amap.api:search:8.1.0' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index 2baee94..2f1ffd6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,12 +1,10 @@ package com.casic.birmm.inspect.base import android.app.Application -import android.content.Context import android.database.sqlite.SQLiteDatabase import com.casic.birmm.inspect.greendao.DaoMaster import com.casic.birmm.inspect.greendao.DaoSession import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -35,10 +33,4 @@ fun getDaoSession(): DaoSession { return daoSession } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt b/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt deleted file mode 100644 index 5eff146..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/callback/DateSelectedCallback.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.casic.birmm.inspect.callback - -interface DateSelectedCallback { - fun onDateSelected(date: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt new file mode 100644 index 0000000..127871f --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Context.kt @@ -0,0 +1,13 @@ +package com.casic.birmm.inspect.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/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index f3cb04f..b3b749c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 177f684..aa98396 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -37,7 +37,11 @@ import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.utils.ble.BLEManager @@ -49,10 +53,23 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.* -import java.util.* +import kotlinx.android.synthetic.main.fragment_map_inspect.addInspectionButton +import kotlinx.android.synthetic.main.fragment_map_inspect.bluetoothButton +import kotlinx.android.synthetic.main.fragment_map_inspect.currentValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.deviceStatusView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectNameView +import kotlinx.android.synthetic.main.fragment_map_inspect.inspectTimeView +import kotlinx.android.synthetic.main.fragment_map_inspect.mapView +import kotlinx.android.synthetic.main.fragment_map_inspect.maxValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.newEventButton +import kotlinx.android.synthetic.main.fragment_map_inspect.refreshButton +import kotlinx.android.synthetic.main.fragment_map_inspect.settingsValueView +import kotlinx.android.synthetic.main.fragment_map_inspect.statusBarView +import kotlinx.android.synthetic.main.fragment_map_inspect.stopInspectButton +import java.util.LinkedList +import java.util.UUID -@SuppressLint("MissingPermission") +@SuppressLint("MissingPermission", "SetTextI18n") class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" @@ -169,6 +186,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } + is LoadState.Success -> { //断开连接 if (curConnectState) { @@ -193,6 +211,7 @@ LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) } + else -> LoadingDialogHub.dismiss() } } @@ -201,7 +220,8 @@ override fun initEvent() { addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -348,11 +368,13 @@ bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -371,6 +393,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -389,18 +412,22 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { @@ -415,6 +442,7 @@ "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 5506ced..d1bbecd 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -32,6 +32,7 @@ import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager @@ -39,8 +40,19 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.fragment_user_settings.* +import kotlinx.android.synthetic.main.fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAccountLayout +import kotlinx.android.synthetic.main.fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.fragment_user_settings.userNameView +import kotlinx.android.synthetic.main.fragment_user_settings.userPhoneView +import kotlinx.android.synthetic.main.fragment_user_settings.userUnitView +import kotlinx.android.synthetic.main.fragment_user_settings.warningSwitch import java.io.File class SettingPageFragment : KotlinBaseFragment() { @@ -54,7 +66,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index 4dfb2d7..221ebf8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,6 +12,7 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + /** * DAO for table "ROUTE_LOCAL_BEAN". */ diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt deleted file mode 100644 index 69aff35..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.casic.birmm.inspect.model - -//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6881da..1d1016c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -7,8 +7,10 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_query_data_log.* +import com.pengxh.kt.lite.extensions.getStatusBarHeight +import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager class DataLogPageFragment : KotlinBaseFragment() { @@ -38,7 +40,7 @@ override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.setBackgroundColor(Color.WHITE) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index f15e87e..d96b1bb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -15,13 +15,21 @@ import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.android.synthetic.main.single_fragment_user_settings.* +import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch class SettingPageFragment : KotlinBaseFragment() { @@ -29,7 +37,7 @@ override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) + val statusBarHeight = requireContext().getStatusBarHeight() val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight statusBarView.requestLayout() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4341296..78db4ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.view.BigImageActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.single_activity_event_detail.dataView +import kotlinx.android.synthetic.main.single_activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.single_activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView class EventDetailActivity : KotlinBaseActivity() { @@ -72,8 +76,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index 6c2879e..6848548 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.single.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter @@ -13,9 +13,10 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_event.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_event_detail.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_event.eventRecyclerView class InspectionEventActivity : KotlinBaseActivity() { @@ -77,8 +78,11 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index e1fe3a2..48fc32d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,22 +2,33 @@ import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.distanceView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.eventButton +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.mapView +import kotlinx.android.synthetic.main.single_activity_inspection_route.rootView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startLocationView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -82,9 +93,11 @@ override fun initLayoutView(): Int = R.layout.single_activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index c129271..d3ae12b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -4,8 +4,8 @@ import android.graphics.Color import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.utils.DataBaseManager import com.casic.birmm.inspect.view.BigImageActivity @@ -22,11 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_new_event.* -import java.util.* +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_new_event.addEventButton +import kotlinx.android.synthetic.main.single_activity_new_event.addImageView +import kotlinx.android.synthetic.main.single_activity_new_event.createTimeView +import kotlinx.android.synthetic.main.single_activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.single_activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.single_activity_new_event.rootView +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -183,7 +189,10 @@ } override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 32aad52..508d610 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.EventListModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,9 +13,13 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_event_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_event_detail.createTimeView +import kotlinx.android.synthetic.main.activity_event_detail.dataView +import kotlinx.android.synthetic.main.activity_event_detail.descriptionView +import kotlinx.android.synthetic.main.activity_event_detail.imageGridView +import kotlinx.android.synthetic.main.activity_event_detail.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class EventDetailActivity : KotlinBaseActivity() { @@ -25,8 +29,11 @@ override fun initLayoutView(): Int = R.layout.activity_event_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件详情" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index c086607..056f442 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -3,21 +3,25 @@ import android.os.Bundle import android.view.View import android.webkit.WebViewClient -import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_help_center.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_help_center.answerView +import kotlinx.android.synthetic.main.activity_help_center.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class HelpCenterActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index d35baef..ac97920 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.model.InspectEventModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel @@ -15,10 +15,11 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_inspection_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_inspection_event.eventRecyclerView +import kotlinx.android.synthetic.main.activity_inspection_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class InspectionEventActivity : KotlinBaseActivity() { @@ -27,8 +28,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "事件清单" } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index 14d25d2..5ff3383 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -1,36 +1,33 @@ package com.casic.birmm.inspect.view -import android.graphics.Color import android.os.Bundle -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener -import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper -import kotlinx.android.synthetic.main.activity_inspection_route.endTimeView import kotlinx.android.synthetic.main.activity_inspection_route.eventButton import kotlinx.android.synthetic.main.activity_inspection_route.mapView -import kotlinx.android.synthetic.main.activity_inspection_route.startTimeView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.single_activity_inspection_route.* +import kotlinx.android.synthetic.main.activity_inspection_route.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView +import kotlinx.android.synthetic.main.single_activity_inspection_route.endTimeView +import kotlinx.android.synthetic.main.single_activity_inspection_route.inspectMsgView +import kotlinx.android.synthetic.main.single_activity_inspection_route.startTimeView class InspectionRouteActivity : KotlinBaseActivity() { @@ -42,9 +39,11 @@ override fun initLayoutView(): Int = R.layout.activity_inspection_route override fun setupTopBarLayout() { - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "巡检记录" } @@ -69,19 +68,7 @@ startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime - LatLng(detailData.startLat, detailData.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(detailData.endLat, detailData.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) + //TODO 未完 //移动到巡检起始经纬度 val cameraPosition = CameraPosition( @@ -94,28 +81,8 @@ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian) //设置终点 addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian) - //瞄点画线 - val routeJson = detailData.routes!! - if (routeJson.isEmpty()) { - return@observe - } - //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - val type = object : TypeToken>() {}.type - val routeModels = gson.fromJson>(routeJson, type) - //画线 - val latLngPoints: ArrayList = ArrayList() - routeModels.forEach { routeModel -> - latLngPoints.add(LatLng(routeModel.latitude, routeModel.longitude)) - } - aMap.addPolyline( - PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED) - ) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) + //TODO 未完 } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 91f7fe6..e558c92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -7,12 +7,12 @@ import android.os.Handler import android.util.Log import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnImageCompressListener import com.casic.birmm.inspect.extensions.combineImagePath import com.casic.birmm.inspect.extensions.compressImage +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.extensions.reformat import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub @@ -33,15 +33,21 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.Constant -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil 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.BottomActionSheet -import kotlinx.android.synthetic.main.activity_new_event.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_new_event.addEventButton +import kotlinx.android.synthetic.main.activity_new_event.addImageView +import kotlinx.android.synthetic.main.activity_new_event.createTimeView +import kotlinx.android.synthetic.main.activity_new_event.eventEditTextView +import kotlinx.android.synthetic.main.activity_new_event.inspectCardView +import kotlinx.android.synthetic.main.activity_new_event.inspectNumberView +import kotlinx.android.synthetic.main.activity_new_event.rootView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -import java.util.* +import java.util.UUID class NewEventActivity : KotlinBaseActivity() { @@ -66,8 +72,11 @@ override fun initLayoutView(): Int = R.layout.activity_new_event override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) } override fun observeRequestState() { @@ -76,6 +85,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "图片上传中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } @@ -86,6 +96,7 @@ is LoadState.Loading -> { LoadingDialogHub.show(this, "保存中,请稍后...") } + else -> LoadingDialogHub.dismiss() } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index c99a8bf..0fe65f9 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -2,15 +2,20 @@ import android.os.Bundle import android.view.View -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.extensions.initLayoutImmersionBar import com.casic.birmm.inspect.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_user_detail.* -import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.activity_user_detail.ipAddressView +import kotlinx.android.synthetic.main.activity_user_detail.rootView +import kotlinx.android.synthetic.main.activity_user_detail.userDeptView +import kotlinx.android.synthetic.main.activity_user_detail.userNameView +import kotlinx.android.synthetic.main.activity_user_detail.userPhoneView +import kotlinx.android.synthetic.main.activity_user_detail.userRealNameView +import kotlinx.android.synthetic.main.include_base_title.leftBackView +import kotlinx.android.synthetic.main.include_base_title.titleView class UserDetailActivity : KotlinBaseActivity() { @@ -19,8 +24,11 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmersionBar.with(this) + .statusBarDarkFont(false) + .statusBarColor(R.color.themeColor) + .init() + initLayoutImmersionBar(rootView) titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index de185ad..71dbcec 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -1,5 +1,6 @@ @@ -18,69 +19,167 @@ - - - - - - - + android:orientation="vertical" + android:padding="@dimen/dp_5"> + android:paddingHorizontal="@dimen/dp_7" + android:singleLine="true" + android:textColor="@color/black" + android:textSize="@dimen/sp_16" /> + android:orientation="horizontal"> - + + + + + + + + + + + + + + + + android:orientation="vertical"> - + + + + + + + + + + + + + + + + android:layout_gravity="bottom" + android:layout_marginStart="@dimen/dp_5" + android:background="@drawable/bg_solid_layout_gray_radius_5" + android:gravity="center_horizontal" + android:orientation="vertical" + android:padding="@dimen/dp_5"> + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_new_event.xml b/app/src/main/res/layout/activity_new_event.xml index ddade29..31e7ca6 100644 --- a/app/src/main/res/layout/activity_new_event.xml +++ b/app/src/main/res/layout/activity_new_event.xml @@ -1,6 +1,7 @@ - + - + - + - + - + diff --git a/app/src/main/res/layout/single_activity_new_event.xml b/app/src/main/res/layout/single_activity_new_event.xml index ddade29..31e7ca6 100644 --- a/app/src/main/res/layout/single_activity_new_event.xml +++ b/app/src/main/res/layout/single_activity_new_event.xml @@ -1,6 +1,7 @@