diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 99e23dd..f782953 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -62,6 +62,7 @@ + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 99e23dd..f782953 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -62,6 +62,7 @@ + diff --git a/app/src/main/java/com/casic/detector/view/MainActivity.kt b/app/src/main/java/com/casic/detector/view/MainActivity.kt index 6ddca27..fe3129a 100644 --- a/app/src/main/java/com/casic/detector/view/MainActivity.kt +++ b/app/src/main/java/com/casic/detector/view/MainActivity.kt @@ -1,20 +1,16 @@ package com.casic.detector.view -import android.app.ProgressDialog import android.content.Context import android.content.Intent import android.graphics.BitmapFactory import android.graphics.Color import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.Drawable -import android.net.Uri -import android.os.Build import android.os.Bundle import android.os.PowerManager import android.provider.Settings import android.util.Log import android.view.KeyEvent -import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,9 +18,9 @@ import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* -import com.casic.detector.BuildConfig import com.casic.detector.R import com.casic.detector.bean.LabelBean +import com.casic.detector.bean.TaskBean import com.casic.detector.callback.ILocationListener import com.casic.detector.cluster.ClusterItem import com.casic.detector.cluster.ClusterOverlay @@ -35,7 +31,6 @@ import com.casic.detector.model.TaskModel import com.casic.detector.utils.* import com.casic.detector.vm.TaskViewModel -import com.casic.detector.vm.VersionViewModel import com.casic.detector.widgets.QueryMarkerDialog import com.casic.detector.widgets.SamplePopupWindow import com.google.gson.Gson @@ -64,10 +59,8 @@ private val context: Context = this@MainActivity private var clickTime: Long = 0 private lateinit var aMap: AMap - private lateinit var versionViewModel: VersionViewModel private lateinit var taskViewModel: TaskViewModel private val samplePopupWindow by lazy { SamplePopupWindow(this) } - private val progressDialog by lazy { ProgressDialog(this) } private var labelBeans = ArrayList() private var clusterOverlay: ClusterOverlay? = null private val backDrawables = HashMap() @@ -76,6 +69,7 @@ private var longitude: Double = 0.0 private val gson by lazy { Gson() } private lateinit var wakeLock: PowerManager.WakeLock + private lateinit var taskBean: TaskBean override fun initLayoutView(): Int = R.layout.activity_main @@ -97,36 +91,6 @@ samplePopupWindow.setPopupMenuItem(LocaleConstant.POPUP_TITLES) samplePopupWindow.setBackgroundDrawable(null) - //初始化下载对话框 - progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) - progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) - progressDialog.setCanceledOnTouchOutside(false) - progressDialog.setCancelable(false) - - versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java] - versionViewModel.versionResult.observe(this) { - if (it.version.toInt() > BuildConfig.VERSION_CODE) { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("提示") - .setMessage("有新版本,是否更新?") - .setNegativeButton("稍后再说") - .setPositiveButton("立即下载") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - downloadApk(it.path) - } - - override fun onCancelClick() { - - } - }).build().show() - } else { - "已是最新版本,无需更新".show(this) - } - } - taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] taskViewModel.markerFileResult.observe(this) { if (it.isSuccess) { @@ -192,7 +156,7 @@ when (position) { 0 -> updateLabels() 1 -> downloadTask() - 2 -> versionViewModel.getApplicationVersion() + 2 -> navigatePageTo() 3 -> uploadEvent() 4 -> uploadLabel() } @@ -271,7 +235,7 @@ .setActionItemTitle(arrayList) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - val taskBean = task[position] + taskBean = task[position] SaveKeyValues.putValue(LocaleConstant.TASK_ID, taskBean.taskId) AlertControlDialog.Builder() .setContext(context) @@ -321,18 +285,12 @@ } override fun observeRequestState() { - versionViewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialogHub.show(this, "检查版本中,请稍后") - else -> LoadingDialogHub.dismiss() - } - } - taskViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "提交工单中,请稍后") else -> LoadingDialogHub.dismiss() } + detectRedrawGraphic(taskBean.taskId) } } @@ -644,8 +602,7 @@ LoadingDialogHub.show(this, "标识器补全中,请稍后...") labelBeans.forEach { labelBean -> val imagePaths = gson.fromJson>( - labelBean.imagePath, - object : TypeToken>() {}.type + labelBean.imagePath, object : TypeToken>() {}.type ) taskViewModel.installLabel( @@ -684,58 +641,6 @@ } } - private fun downloadApk(url: String?) { - progressDialog.setMessage("下载新版本中...") - progressDialog.show() - if (url.toString().isBlank()) { - "抱歉,版本下载失败".show(this) - return - } - /** - * http://139.198.18.188:8090/ems/apk/EMSCJTX202011052026(V3.14.0).apk - * */ - val downloadPath = url!!.appendDownloadUrl(FileType.APK) - Log.d(kTag, "downloadApk => $downloadPath") - //开始下载 - downloadPath.downloadFile(createDownloadFileDir().toString(), object : OnDownloadListener { - override fun onDownloadStart(totalBytes: Long) { - progressDialog.max = totalBytes.toInt() - } - - override fun onProgressChanged(currentBytes: Long) { - progressDialog.progress = currentBytes.toInt() - } - - override fun onDownloadEnd(file: File?) { - progressDialog.dismiss() - progressDialog.progress = 0 - //安装APK - installApk(file) - } - }) - } - - private fun installApk(apkPackage: File?) { - if (apkPackage == null) { - "安装文件异常,无法安装".show(this) - return - } - val intent = Intent(Intent.ACTION_VIEW) - val data: Uri - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0 - data = FileProvider.getUriForFile(this, LocaleConstant.APP_AUTHORITY, apkPackage) - intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权 - } else { - data = Uri.fromFile(apkPackage) - } - /** - * android 10 - * content://com.casic.app.smartwell.fileprovider/smartWell/Download/1.0.1.apk - * */ - intent.setDataAndType(data, "application/vnd.android.package-archive") - startActivity(intent) - } - override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { return if (keyCode == KeyEvent.KEYCODE_BACK) { if (System.currentTimeMillis() - clickTime > 2000) { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 99e23dd..f782953 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -62,6 +62,7 @@ + diff --git a/app/src/main/java/com/casic/detector/view/MainActivity.kt b/app/src/main/java/com/casic/detector/view/MainActivity.kt index 6ddca27..fe3129a 100644 --- a/app/src/main/java/com/casic/detector/view/MainActivity.kt +++ b/app/src/main/java/com/casic/detector/view/MainActivity.kt @@ -1,20 +1,16 @@ package com.casic.detector.view -import android.app.ProgressDialog import android.content.Context import android.content.Intent import android.graphics.BitmapFactory import android.graphics.Color import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.Drawable -import android.net.Uri -import android.os.Build import android.os.Bundle import android.os.PowerManager import android.provider.Settings import android.util.Log import android.view.KeyEvent -import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,9 +18,9 @@ import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* -import com.casic.detector.BuildConfig import com.casic.detector.R import com.casic.detector.bean.LabelBean +import com.casic.detector.bean.TaskBean import com.casic.detector.callback.ILocationListener import com.casic.detector.cluster.ClusterItem import com.casic.detector.cluster.ClusterOverlay @@ -35,7 +31,6 @@ import com.casic.detector.model.TaskModel import com.casic.detector.utils.* import com.casic.detector.vm.TaskViewModel -import com.casic.detector.vm.VersionViewModel import com.casic.detector.widgets.QueryMarkerDialog import com.casic.detector.widgets.SamplePopupWindow import com.google.gson.Gson @@ -64,10 +59,8 @@ private val context: Context = this@MainActivity private var clickTime: Long = 0 private lateinit var aMap: AMap - private lateinit var versionViewModel: VersionViewModel private lateinit var taskViewModel: TaskViewModel private val samplePopupWindow by lazy { SamplePopupWindow(this) } - private val progressDialog by lazy { ProgressDialog(this) } private var labelBeans = ArrayList() private var clusterOverlay: ClusterOverlay? = null private val backDrawables = HashMap() @@ -76,6 +69,7 @@ private var longitude: Double = 0.0 private val gson by lazy { Gson() } private lateinit var wakeLock: PowerManager.WakeLock + private lateinit var taskBean: TaskBean override fun initLayoutView(): Int = R.layout.activity_main @@ -97,36 +91,6 @@ samplePopupWindow.setPopupMenuItem(LocaleConstant.POPUP_TITLES) samplePopupWindow.setBackgroundDrawable(null) - //初始化下载对话框 - progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) - progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) - progressDialog.setCanceledOnTouchOutside(false) - progressDialog.setCancelable(false) - - versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java] - versionViewModel.versionResult.observe(this) { - if (it.version.toInt() > BuildConfig.VERSION_CODE) { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("提示") - .setMessage("有新版本,是否更新?") - .setNegativeButton("稍后再说") - .setPositiveButton("立即下载") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - downloadApk(it.path) - } - - override fun onCancelClick() { - - } - }).build().show() - } else { - "已是最新版本,无需更新".show(this) - } - } - taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] taskViewModel.markerFileResult.observe(this) { if (it.isSuccess) { @@ -192,7 +156,7 @@ when (position) { 0 -> updateLabels() 1 -> downloadTask() - 2 -> versionViewModel.getApplicationVersion() + 2 -> navigatePageTo() 3 -> uploadEvent() 4 -> uploadLabel() } @@ -271,7 +235,7 @@ .setActionItemTitle(arrayList) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - val taskBean = task[position] + taskBean = task[position] SaveKeyValues.putValue(LocaleConstant.TASK_ID, taskBean.taskId) AlertControlDialog.Builder() .setContext(context) @@ -321,18 +285,12 @@ } override fun observeRequestState() { - versionViewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialogHub.show(this, "检查版本中,请稍后") - else -> LoadingDialogHub.dismiss() - } - } - taskViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "提交工单中,请稍后") else -> LoadingDialogHub.dismiss() } + detectRedrawGraphic(taskBean.taskId) } } @@ -644,8 +602,7 @@ LoadingDialogHub.show(this, "标识器补全中,请稍后...") labelBeans.forEach { labelBean -> val imagePaths = gson.fromJson>( - labelBean.imagePath, - object : TypeToken>() {}.type + labelBean.imagePath, object : TypeToken>() {}.type ) taskViewModel.installLabel( @@ -684,58 +641,6 @@ } } - private fun downloadApk(url: String?) { - progressDialog.setMessage("下载新版本中...") - progressDialog.show() - if (url.toString().isBlank()) { - "抱歉,版本下载失败".show(this) - return - } - /** - * http://139.198.18.188:8090/ems/apk/EMSCJTX202011052026(V3.14.0).apk - * */ - val downloadPath = url!!.appendDownloadUrl(FileType.APK) - Log.d(kTag, "downloadApk => $downloadPath") - //开始下载 - downloadPath.downloadFile(createDownloadFileDir().toString(), object : OnDownloadListener { - override fun onDownloadStart(totalBytes: Long) { - progressDialog.max = totalBytes.toInt() - } - - override fun onProgressChanged(currentBytes: Long) { - progressDialog.progress = currentBytes.toInt() - } - - override fun onDownloadEnd(file: File?) { - progressDialog.dismiss() - progressDialog.progress = 0 - //安装APK - installApk(file) - } - }) - } - - private fun installApk(apkPackage: File?) { - if (apkPackage == null) { - "安装文件异常,无法安装".show(this) - return - } - val intent = Intent(Intent.ACTION_VIEW) - val data: Uri - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0 - data = FileProvider.getUriForFile(this, LocaleConstant.APP_AUTHORITY, apkPackage) - intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权 - } else { - data = Uri.fromFile(apkPackage) - } - /** - * android 10 - * content://com.casic.app.smartwell.fileprovider/smartWell/Download/1.0.1.apk - * */ - intent.setDataAndType(data, "application/vnd.android.package-archive") - startActivity(intent) - } - override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { return if (keyCode == KeyEvent.KEYCODE_BACK) { if (System.currentTimeMillis() - clickTime > 2000) { diff --git a/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt new file mode 100644 index 0000000..10674da --- /dev/null +++ b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt @@ -0,0 +1,148 @@ +package com.casic.detector.view + +import android.app.ProgressDialog +import android.content.Intent +import android.net.Uri +import android.os.Build +import android.os.Bundle +import android.util.Log +import android.view.View +import androidx.core.content.FileProvider +import androidx.lifecycle.ViewModelProvider +import com.casic.detector.BuildConfig +import com.casic.detector.R +import com.casic.detector.extensions.appendDownloadUrl +import com.casic.detector.extensions.initLayoutImmersionBar +import com.casic.detector.utils.FileType +import com.casic.detector.utils.LoadingDialogHub +import com.casic.detector.utils.LocaleConstant +import com.casic.detector.vm.VersionViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.callback.OnDownloadListener +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.activity_version_control.* +import kotlinx.android.synthetic.main.include_base_title.* +import java.io.File + +class VersionControlActivity : KotlinBaseActivity() { + + private val kTag = "VersionControlActivity" + private val progressDialog by lazy { ProgressDialog(this) } + private lateinit var versionViewModel: VersionViewModel + + override fun initData(savedInstanceState: Bundle?) { + versionView.text = "Version ${BuildConfig.VERSION_NAME}" + + //初始化下载对话框 + progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) + progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) + progressDialog.setCanceledOnTouchOutside(false) + progressDialog.setCancelable(false) + + versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java] + versionViewModel.versionResult.observe(this) { + if (it.version.toInt() > BuildConfig.VERSION_CODE) { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("有新版本,是否更新?") + .setNegativeButton("稍后再说") + .setPositiveButton("立即下载") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + downloadApk(it.path) + } + + override fun onCancelClick() { + + } + }).build().show() + } else { + "已是最新版本,无需更新".show(this) + } + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + + updateLayout.setOnClickListener { + versionViewModel.getApplicationVersion() + } + } + + override fun initLayoutView(): Int = R.layout.activity_version_control + + override fun observeRequestState() { + versionViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.visibility = View.GONE + } + + private fun downloadApk(url: String?) { + progressDialog.setMessage("下载新版本中...") + progressDialog.show() + if (url.toString().isBlank()) { + "抱歉,版本下载失败".show(this) + return + } + /** + * http://139.198.18.188:8090/ems/apk/EMSCJTX202011052026(V3.14.0).apk + * */ + val downloadPath = url!!.appendDownloadUrl(FileType.APK) + Log.d(kTag, "downloadApk => $downloadPath") + //开始下载 + downloadPath.downloadFile(createDownloadFileDir().toString(), object : OnDownloadListener { + override fun onDownloadStart(totalBytes: Long) { + progressDialog.max = totalBytes.toInt() + } + + override fun onProgressChanged(currentBytes: Long) { + progressDialog.progress = currentBytes.toInt() + } + + override fun onDownloadEnd(file: File?) { + progressDialog.dismiss() + progressDialog.progress = 0 + //安装APK + installApk(file) + } + }) + } + + private fun installApk(apkPackage: File?) { + if (apkPackage == null) { + "安装文件异常,无法安装".show(this) + return + } + val intent = Intent(Intent.ACTION_VIEW) + val data: Uri + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0 + data = FileProvider.getUriForFile(this, LocaleConstant.APP_AUTHORITY, apkPackage) + intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权 + } else { + data = Uri.fromFile(apkPackage) + } + /** + * android 10 + * content://com.casic.app.smartwell.fileprovider/smartWell/Download/1.0.1.apk + * */ + intent.setDataAndType(data, "application/vnd.android.package-archive") + startActivity(intent) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 99e23dd..f782953 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -62,6 +62,7 @@ + diff --git a/app/src/main/java/com/casic/detector/view/MainActivity.kt b/app/src/main/java/com/casic/detector/view/MainActivity.kt index 6ddca27..fe3129a 100644 --- a/app/src/main/java/com/casic/detector/view/MainActivity.kt +++ b/app/src/main/java/com/casic/detector/view/MainActivity.kt @@ -1,20 +1,16 @@ package com.casic.detector.view -import android.app.ProgressDialog import android.content.Context import android.content.Intent import android.graphics.BitmapFactory import android.graphics.Color import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.Drawable -import android.net.Uri -import android.os.Build import android.os.Bundle import android.os.PowerManager import android.provider.Settings import android.util.Log import android.view.KeyEvent -import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,9 +18,9 @@ import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* -import com.casic.detector.BuildConfig import com.casic.detector.R import com.casic.detector.bean.LabelBean +import com.casic.detector.bean.TaskBean import com.casic.detector.callback.ILocationListener import com.casic.detector.cluster.ClusterItem import com.casic.detector.cluster.ClusterOverlay @@ -35,7 +31,6 @@ import com.casic.detector.model.TaskModel import com.casic.detector.utils.* import com.casic.detector.vm.TaskViewModel -import com.casic.detector.vm.VersionViewModel import com.casic.detector.widgets.QueryMarkerDialog import com.casic.detector.widgets.SamplePopupWindow import com.google.gson.Gson @@ -64,10 +59,8 @@ private val context: Context = this@MainActivity private var clickTime: Long = 0 private lateinit var aMap: AMap - private lateinit var versionViewModel: VersionViewModel private lateinit var taskViewModel: TaskViewModel private val samplePopupWindow by lazy { SamplePopupWindow(this) } - private val progressDialog by lazy { ProgressDialog(this) } private var labelBeans = ArrayList() private var clusterOverlay: ClusterOverlay? = null private val backDrawables = HashMap() @@ -76,6 +69,7 @@ private var longitude: Double = 0.0 private val gson by lazy { Gson() } private lateinit var wakeLock: PowerManager.WakeLock + private lateinit var taskBean: TaskBean override fun initLayoutView(): Int = R.layout.activity_main @@ -97,36 +91,6 @@ samplePopupWindow.setPopupMenuItem(LocaleConstant.POPUP_TITLES) samplePopupWindow.setBackgroundDrawable(null) - //初始化下载对话框 - progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) - progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) - progressDialog.setCanceledOnTouchOutside(false) - progressDialog.setCancelable(false) - - versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java] - versionViewModel.versionResult.observe(this) { - if (it.version.toInt() > BuildConfig.VERSION_CODE) { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("提示") - .setMessage("有新版本,是否更新?") - .setNegativeButton("稍后再说") - .setPositiveButton("立即下载") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - downloadApk(it.path) - } - - override fun onCancelClick() { - - } - }).build().show() - } else { - "已是最新版本,无需更新".show(this) - } - } - taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] taskViewModel.markerFileResult.observe(this) { if (it.isSuccess) { @@ -192,7 +156,7 @@ when (position) { 0 -> updateLabels() 1 -> downloadTask() - 2 -> versionViewModel.getApplicationVersion() + 2 -> navigatePageTo() 3 -> uploadEvent() 4 -> uploadLabel() } @@ -271,7 +235,7 @@ .setActionItemTitle(arrayList) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - val taskBean = task[position] + taskBean = task[position] SaveKeyValues.putValue(LocaleConstant.TASK_ID, taskBean.taskId) AlertControlDialog.Builder() .setContext(context) @@ -321,18 +285,12 @@ } override fun observeRequestState() { - versionViewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialogHub.show(this, "检查版本中,请稍后") - else -> LoadingDialogHub.dismiss() - } - } - taskViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "提交工单中,请稍后") else -> LoadingDialogHub.dismiss() } + detectRedrawGraphic(taskBean.taskId) } } @@ -644,8 +602,7 @@ LoadingDialogHub.show(this, "标识器补全中,请稍后...") labelBeans.forEach { labelBean -> val imagePaths = gson.fromJson>( - labelBean.imagePath, - object : TypeToken>() {}.type + labelBean.imagePath, object : TypeToken>() {}.type ) taskViewModel.installLabel( @@ -684,58 +641,6 @@ } } - private fun downloadApk(url: String?) { - progressDialog.setMessage("下载新版本中...") - progressDialog.show() - if (url.toString().isBlank()) { - "抱歉,版本下载失败".show(this) - return - } - /** - * http://139.198.18.188:8090/ems/apk/EMSCJTX202011052026(V3.14.0).apk - * */ - val downloadPath = url!!.appendDownloadUrl(FileType.APK) - Log.d(kTag, "downloadApk => $downloadPath") - //开始下载 - downloadPath.downloadFile(createDownloadFileDir().toString(), object : OnDownloadListener { - override fun onDownloadStart(totalBytes: Long) { - progressDialog.max = totalBytes.toInt() - } - - override fun onProgressChanged(currentBytes: Long) { - progressDialog.progress = currentBytes.toInt() - } - - override fun onDownloadEnd(file: File?) { - progressDialog.dismiss() - progressDialog.progress = 0 - //安装APK - installApk(file) - } - }) - } - - private fun installApk(apkPackage: File?) { - if (apkPackage == null) { - "安装文件异常,无法安装".show(this) - return - } - val intent = Intent(Intent.ACTION_VIEW) - val data: Uri - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0 - data = FileProvider.getUriForFile(this, LocaleConstant.APP_AUTHORITY, apkPackage) - intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权 - } else { - data = Uri.fromFile(apkPackage) - } - /** - * android 10 - * content://com.casic.app.smartwell.fileprovider/smartWell/Download/1.0.1.apk - * */ - intent.setDataAndType(data, "application/vnd.android.package-archive") - startActivity(intent) - } - override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { return if (keyCode == KeyEvent.KEYCODE_BACK) { if (System.currentTimeMillis() - clickTime > 2000) { diff --git a/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt new file mode 100644 index 0000000..10674da --- /dev/null +++ b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt @@ -0,0 +1,148 @@ +package com.casic.detector.view + +import android.app.ProgressDialog +import android.content.Intent +import android.net.Uri +import android.os.Build +import android.os.Bundle +import android.util.Log +import android.view.View +import androidx.core.content.FileProvider +import androidx.lifecycle.ViewModelProvider +import com.casic.detector.BuildConfig +import com.casic.detector.R +import com.casic.detector.extensions.appendDownloadUrl +import com.casic.detector.extensions.initLayoutImmersionBar +import com.casic.detector.utils.FileType +import com.casic.detector.utils.LoadingDialogHub +import com.casic.detector.utils.LocaleConstant +import com.casic.detector.vm.VersionViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.callback.OnDownloadListener +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.activity_version_control.* +import kotlinx.android.synthetic.main.include_base_title.* +import java.io.File + +class VersionControlActivity : KotlinBaseActivity() { + + private val kTag = "VersionControlActivity" + private val progressDialog by lazy { ProgressDialog(this) } + private lateinit var versionViewModel: VersionViewModel + + override fun initData(savedInstanceState: Bundle?) { + versionView.text = "Version ${BuildConfig.VERSION_NAME}" + + //初始化下载对话框 + progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) + progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) + progressDialog.setCanceledOnTouchOutside(false) + progressDialog.setCancelable(false) + + versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java] + versionViewModel.versionResult.observe(this) { + if (it.version.toInt() > BuildConfig.VERSION_CODE) { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("有新版本,是否更新?") + .setNegativeButton("稍后再说") + .setPositiveButton("立即下载") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + downloadApk(it.path) + } + + override fun onCancelClick() { + + } + }).build().show() + } else { + "已是最新版本,无需更新".show(this) + } + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + + updateLayout.setOnClickListener { + versionViewModel.getApplicationVersion() + } + } + + override fun initLayoutView(): Int = R.layout.activity_version_control + + override fun observeRequestState() { + versionViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.visibility = View.GONE + } + + private fun downloadApk(url: String?) { + progressDialog.setMessage("下载新版本中...") + progressDialog.show() + if (url.toString().isBlank()) { + "抱歉,版本下载失败".show(this) + return + } + /** + * http://139.198.18.188:8090/ems/apk/EMSCJTX202011052026(V3.14.0).apk + * */ + val downloadPath = url!!.appendDownloadUrl(FileType.APK) + Log.d(kTag, "downloadApk => $downloadPath") + //开始下载 + downloadPath.downloadFile(createDownloadFileDir().toString(), object : OnDownloadListener { + override fun onDownloadStart(totalBytes: Long) { + progressDialog.max = totalBytes.toInt() + } + + override fun onProgressChanged(currentBytes: Long) { + progressDialog.progress = currentBytes.toInt() + } + + override fun onDownloadEnd(file: File?) { + progressDialog.dismiss() + progressDialog.progress = 0 + //安装APK + installApk(file) + } + }) + } + + private fun installApk(apkPackage: File?) { + if (apkPackage == null) { + "安装文件异常,无法安装".show(this) + return + } + val intent = Intent(Intent.ACTION_VIEW) + val data: Uri + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0 + data = FileProvider.getUriForFile(this, LocaleConstant.APP_AUTHORITY, apkPackage) + intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权 + } else { + data = Uri.fromFile(apkPackage) + } + /** + * android 10 + * content://com.casic.app.smartwell.fileprovider/smartWell/Download/1.0.1.apk + * */ + intent.setDataAndType(data, "application/vnd.android.package-archive") + startActivity(intent) + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_version_control.xml b/app/src/main/res/layout/activity_version_control.xml new file mode 100644 index 0000000..95e5da6 --- /dev/null +++ b/app/src/main/res/layout/activity_version_control.xml @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 99e23dd..f782953 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -62,6 +62,7 @@ + diff --git a/app/src/main/java/com/casic/detector/view/MainActivity.kt b/app/src/main/java/com/casic/detector/view/MainActivity.kt index 6ddca27..fe3129a 100644 --- a/app/src/main/java/com/casic/detector/view/MainActivity.kt +++ b/app/src/main/java/com/casic/detector/view/MainActivity.kt @@ -1,20 +1,16 @@ package com.casic.detector.view -import android.app.ProgressDialog import android.content.Context import android.content.Intent import android.graphics.BitmapFactory import android.graphics.Color import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.Drawable -import android.net.Uri -import android.os.Build import android.os.Bundle import android.os.PowerManager import android.provider.Settings import android.util.Log import android.view.KeyEvent -import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -22,9 +18,9 @@ import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* -import com.casic.detector.BuildConfig import com.casic.detector.R import com.casic.detector.bean.LabelBean +import com.casic.detector.bean.TaskBean import com.casic.detector.callback.ILocationListener import com.casic.detector.cluster.ClusterItem import com.casic.detector.cluster.ClusterOverlay @@ -35,7 +31,6 @@ import com.casic.detector.model.TaskModel import com.casic.detector.utils.* import com.casic.detector.vm.TaskViewModel -import com.casic.detector.vm.VersionViewModel import com.casic.detector.widgets.QueryMarkerDialog import com.casic.detector.widgets.SamplePopupWindow import com.google.gson.Gson @@ -64,10 +59,8 @@ private val context: Context = this@MainActivity private var clickTime: Long = 0 private lateinit var aMap: AMap - private lateinit var versionViewModel: VersionViewModel private lateinit var taskViewModel: TaskViewModel private val samplePopupWindow by lazy { SamplePopupWindow(this) } - private val progressDialog by lazy { ProgressDialog(this) } private var labelBeans = ArrayList() private var clusterOverlay: ClusterOverlay? = null private val backDrawables = HashMap() @@ -76,6 +69,7 @@ private var longitude: Double = 0.0 private val gson by lazy { Gson() } private lateinit var wakeLock: PowerManager.WakeLock + private lateinit var taskBean: TaskBean override fun initLayoutView(): Int = R.layout.activity_main @@ -97,36 +91,6 @@ samplePopupWindow.setPopupMenuItem(LocaleConstant.POPUP_TITLES) samplePopupWindow.setBackgroundDrawable(null) - //初始化下载对话框 - progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) - progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) - progressDialog.setCanceledOnTouchOutside(false) - progressDialog.setCancelable(false) - - versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java] - versionViewModel.versionResult.observe(this) { - if (it.version.toInt() > BuildConfig.VERSION_CODE) { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("提示") - .setMessage("有新版本,是否更新?") - .setNegativeButton("稍后再说") - .setPositiveButton("立即下载") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - downloadApk(it.path) - } - - override fun onCancelClick() { - - } - }).build().show() - } else { - "已是最新版本,无需更新".show(this) - } - } - taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] taskViewModel.markerFileResult.observe(this) { if (it.isSuccess) { @@ -192,7 +156,7 @@ when (position) { 0 -> updateLabels() 1 -> downloadTask() - 2 -> versionViewModel.getApplicationVersion() + 2 -> navigatePageTo() 3 -> uploadEvent() 4 -> uploadLabel() } @@ -271,7 +235,7 @@ .setActionItemTitle(arrayList) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - val taskBean = task[position] + taskBean = task[position] SaveKeyValues.putValue(LocaleConstant.TASK_ID, taskBean.taskId) AlertControlDialog.Builder() .setContext(context) @@ -321,18 +285,12 @@ } override fun observeRequestState() { - versionViewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialogHub.show(this, "检查版本中,请稍后") - else -> LoadingDialogHub.dismiss() - } - } - taskViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "提交工单中,请稍后") else -> LoadingDialogHub.dismiss() } + detectRedrawGraphic(taskBean.taskId) } } @@ -644,8 +602,7 @@ LoadingDialogHub.show(this, "标识器补全中,请稍后...") labelBeans.forEach { labelBean -> val imagePaths = gson.fromJson>( - labelBean.imagePath, - object : TypeToken>() {}.type + labelBean.imagePath, object : TypeToken>() {}.type ) taskViewModel.installLabel( @@ -684,58 +641,6 @@ } } - private fun downloadApk(url: String?) { - progressDialog.setMessage("下载新版本中...") - progressDialog.show() - if (url.toString().isBlank()) { - "抱歉,版本下载失败".show(this) - return - } - /** - * http://139.198.18.188:8090/ems/apk/EMSCJTX202011052026(V3.14.0).apk - * */ - val downloadPath = url!!.appendDownloadUrl(FileType.APK) - Log.d(kTag, "downloadApk => $downloadPath") - //开始下载 - downloadPath.downloadFile(createDownloadFileDir().toString(), object : OnDownloadListener { - override fun onDownloadStart(totalBytes: Long) { - progressDialog.max = totalBytes.toInt() - } - - override fun onProgressChanged(currentBytes: Long) { - progressDialog.progress = currentBytes.toInt() - } - - override fun onDownloadEnd(file: File?) { - progressDialog.dismiss() - progressDialog.progress = 0 - //安装APK - installApk(file) - } - }) - } - - private fun installApk(apkPackage: File?) { - if (apkPackage == null) { - "安装文件异常,无法安装".show(this) - return - } - val intent = Intent(Intent.ACTION_VIEW) - val data: Uri - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0 - data = FileProvider.getUriForFile(this, LocaleConstant.APP_AUTHORITY, apkPackage) - intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权 - } else { - data = Uri.fromFile(apkPackage) - } - /** - * android 10 - * content://com.casic.app.smartwell.fileprovider/smartWell/Download/1.0.1.apk - * */ - intent.setDataAndType(data, "application/vnd.android.package-archive") - startActivity(intent) - } - override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { return if (keyCode == KeyEvent.KEYCODE_BACK) { if (System.currentTimeMillis() - clickTime > 2000) { diff --git a/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt new file mode 100644 index 0000000..10674da --- /dev/null +++ b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt @@ -0,0 +1,148 @@ +package com.casic.detector.view + +import android.app.ProgressDialog +import android.content.Intent +import android.net.Uri +import android.os.Build +import android.os.Bundle +import android.util.Log +import android.view.View +import androidx.core.content.FileProvider +import androidx.lifecycle.ViewModelProvider +import com.casic.detector.BuildConfig +import com.casic.detector.R +import com.casic.detector.extensions.appendDownloadUrl +import com.casic.detector.extensions.initLayoutImmersionBar +import com.casic.detector.utils.FileType +import com.casic.detector.utils.LoadingDialogHub +import com.casic.detector.utils.LocaleConstant +import com.casic.detector.vm.VersionViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.callback.OnDownloadListener +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog +import kotlinx.android.synthetic.main.activity_version_control.* +import kotlinx.android.synthetic.main.include_base_title.* +import java.io.File + +class VersionControlActivity : KotlinBaseActivity() { + + private val kTag = "VersionControlActivity" + private val progressDialog by lazy { ProgressDialog(this) } + private lateinit var versionViewModel: VersionViewModel + + override fun initData(savedInstanceState: Bundle?) { + versionView.text = "Version ${BuildConfig.VERSION_NAME}" + + //初始化下载对话框 + progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) + progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) + progressDialog.setCanceledOnTouchOutside(false) + progressDialog.setCancelable(false) + + versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java] + versionViewModel.versionResult.observe(this) { + if (it.version.toInt() > BuildConfig.VERSION_CODE) { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("有新版本,是否更新?") + .setNegativeButton("稍后再说") + .setPositiveButton("立即下载") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + downloadApk(it.path) + } + + override fun onCancelClick() { + + } + }).build().show() + } else { + "已是最新版本,无需更新".show(this) + } + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + + updateLayout.setOnClickListener { + versionViewModel.getApplicationVersion() + } + } + + override fun initLayoutView(): Int = R.layout.activity_version_control + + override fun observeRequestState() { + versionViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.visibility = View.GONE + } + + private fun downloadApk(url: String?) { + progressDialog.setMessage("下载新版本中...") + progressDialog.show() + if (url.toString().isBlank()) { + "抱歉,版本下载失败".show(this) + return + } + /** + * http://139.198.18.188:8090/ems/apk/EMSCJTX202011052026(V3.14.0).apk + * */ + val downloadPath = url!!.appendDownloadUrl(FileType.APK) + Log.d(kTag, "downloadApk => $downloadPath") + //开始下载 + downloadPath.downloadFile(createDownloadFileDir().toString(), object : OnDownloadListener { + override fun onDownloadStart(totalBytes: Long) { + progressDialog.max = totalBytes.toInt() + } + + override fun onProgressChanged(currentBytes: Long) { + progressDialog.progress = currentBytes.toInt() + } + + override fun onDownloadEnd(file: File?) { + progressDialog.dismiss() + progressDialog.progress = 0 + //安装APK + installApk(file) + } + }) + } + + private fun installApk(apkPackage: File?) { + if (apkPackage == null) { + "安装文件异常,无法安装".show(this) + return + } + val intent = Intent(Intent.ACTION_VIEW) + val data: Uri + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0 + data = FileProvider.getUriForFile(this, LocaleConstant.APP_AUTHORITY, apkPackage) + intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权 + } else { + data = Uri.fromFile(apkPackage) + } + /** + * android 10 + * content://com.casic.app.smartwell.fileprovider/smartWell/Download/1.0.1.apk + * */ + intent.setDataAndType(data, "application/vnd.android.package-archive") + startActivity(intent) + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_version_control.xml b/app/src/main/res/layout/activity_version_control.xml new file mode 100644 index 0000000..95e5da6 --- /dev/null +++ b/app/src/main/res/layout/activity_version_control.xml @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 620772b..a9f4ebc 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -24,6 +24,13 @@ @drawable/bg_solid_layout_white_radius_10 + + + + + +