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 579b4e3..570dbc5 100644 --- a/app/src/main/java/com/casic/detector/view/MainActivity.kt +++ b/app/src/main/java/com/casic/detector/view/MainActivity.kt @@ -14,7 +14,6 @@ import android.provider.Settings import android.util.Log import android.view.KeyEvent -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation @@ -41,6 +40,7 @@ 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.callback.OnDownloadListener import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues @@ -57,13 +57,12 @@ import java.io.File -class MainActivity : AppCompatActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private val context: Context = this@MainActivity private var clickTime: Long = 0 private lateinit var aMap: AMap - private lateinit var locationStyle: MyLocationStyle private lateinit var versionViewModel: VersionViewModel private lateinit var taskViewModel: TaskViewModel private val samplePopupWindow by lazy { SamplePopupWindow(this) } @@ -77,10 +76,14 @@ private val gson by lazy { Gson() } private lateinit var wakeLock: PowerManager.WakeLock - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) + override fun initLayoutView(): Int = R.layout.activity_main + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(rootView) + } + + override fun initData(savedInstanceState: Bundle?) { val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager wakeLock = powerManager.run { newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, this@MainActivity.localClassName).apply { @@ -88,67 +91,8 @@ } } - setupTopBarLayout() initMapConfig(savedInstanceState) - initData() - observeRequestState() - initEvent() - } - private fun initMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map - - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.isMyLocationButtonEnabled = true - uiSettings.isScaleControlsEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - //显示定位小蓝点 - locationStyle = MyLocationStyle() - locationStyle.interval(2000) - locationStyle.radiusFillColor(Color.argb(0, 0, 0, 0)) - locationStyle.strokeColor(Color.argb(0, 0, 0, 0)) - locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER)//定位、但不会移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。 - aMap.myLocationStyle = locationStyle//设置定位蓝点的Style - aMap.isMyLocationEnabled = true//设置是否显示定位小蓝点 - aMap.setOnMyLocationChangeListener { - longitude = it.longitude - latitude = it.latitude - //经纬度逆编码 - LocationHub.antiCodingLocation(context, it) { address -> - currentLocationView.text = address - } - } - - //首次移动到定位点 - LocationHub.getCurrentLocation(this, object : ILocationListener { - override fun onAMapLocationGet(location: AMapLocation?) { - if (location != null) { - aMap.moveCamera( - CameraUpdateFactory.newLatLngZoom( - LatLng(location.latitude, location.longitude), 15f - ) - ) - } else { - "当前位置信号差,无法移动地图到定位点".show(context) - } - } - }) - - aMap.setOnMapLongClickListener { - //协程异步显示默认数据 - CoroutineScope(Dispatchers.Main).launch { - labelBeans = withContext(Dispatchers.IO) { - DataBaseManager.get.loadTaskLabels() as ArrayList - } - showLabelsOnMap() - } - } - } - - private fun initData() { samplePopupWindow.setPopupMenuItem(LocaleConstant.POPUP_TITLES) samplePopupWindow.setBackgroundDrawable(null) @@ -236,6 +180,192 @@ } } + override fun initEvent() { + rightImageView.setOnClickListener { + val x = rightImageView.width - samplePopupWindow.width - 1f.dp2px(this) + samplePopupWindow.showAsDropDown(rightImageView, x, 1f.dp2px(this)) + } + + samplePopupWindow.setOnPopupWindowClickListener(object : + SamplePopupWindow.OnPopupWindowClickListener { + override fun onPopupItemClicked(position: Int) { + when (position) { + 0 -> updateTaskData() + 1 -> downloadTask() + 2 -> versionViewModel.getApplicationVersion() + 3 -> uploadEvent() + 4 -> uploadLabel() + } + } + }) + + //安装。上传,然后存入本地库 + installButton.setOnClickListener { + navigatePageTo() + } + + //查看 + viewButton.setOnClickListener { + QueryMarkerDialog.Builder() + .setContext(context) + .setTitle("查看标识器") + .setSpinnerArray(LocaleConstant.SPINNER_ARRAY) + .setHintMessage("请输入查询条件") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + QueryMarkerDialog.OnDialogButtonClickListener { + override fun onConfirmClick(selectedItem: String, value: String) { + //查询数据库 + CoroutineScope(Dispatchers.Main).launch { + labelBeans = withContext(Dispatchers.IO) { + DataBaseManager.get.loadLabelByCondition( + selectedItem, value + ) as ArrayList + } + showLabelsOnMap() + } + } + + override fun onCancelClick() { + + } + }).build().show() + } + + //巡检 + inspectionButton.setOnClickListener { + val task = DataBaseManager.get.queryDistinctTask() + if (task.isNotEmpty()) { + val arrayList = ArrayList() + task.forEachIndexed { index, taskBean -> + arrayList.add("任务${index + 1}:${taskBean.taskId},${taskBean.desc}") + } + + BottomActionSheet.Builder() + .setContext(this) + .setItemTextColor(Color.BLUE) + .setActionItemTitle(arrayList) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + val taskBean = task[position] + SaveKeyValues.putValue(LocaleConstant.TASK_ID, taskBean.taskId) + AlertControlDialog.Builder() + .setContext(context) + .setTitle("提示") + .setMessage("请选择操作方式") + .setPositiveButton("执行工单") + .setNegativeButton("提交工单") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + detectRedrawGraphic(taskBean.taskId) + aMap.moveCamera( + CameraUpdateFactory.newLatLngZoom( + LatLng( + taskBean.lat.toDouble(), taskBean.lng.toDouble() + ), 15f + ) + ) + uploadTask(taskBean.taskId, "1") + } + + override fun onCancelClick() { + uploadTask(taskBean.taskId, "2") + } + }).build().show() + } + }).build().show() + } else { + AlertMessageDialog.Builder() + .setContext(this) + .setTitle("温馨提示") + .setMessage("现有任务已完成,请点击右上角菜单按钮下载新工单!") + .setPositiveButton("知道了") + .setOnDialogButtonClickListener(object : + AlertMessageDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + + } + }).build().show() + } + } + + //探测 + detectionButton.setOnClickListener { + navigatePageTo() + } + } + + 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() + } + } + } + + private fun initMapConfig(savedInstanceState: Bundle?) { + mapView.onCreate(savedInstanceState) + aMap = mapView.map + + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.isMyLocationButtonEnabled = true + uiSettings.isScaleControlsEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 + //显示定位小蓝点 + val locationStyle = MyLocationStyle() + locationStyle.interval(2000) + locationStyle.radiusFillColor(Color.argb(0, 0, 0, 0)) + locationStyle.strokeColor(Color.argb(0, 0, 0, 0)) + locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER)//定位、但不会移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。 + aMap.myLocationStyle = locationStyle//设置定位蓝点的Style + aMap.isMyLocationEnabled = true//设置是否显示定位小蓝点 + aMap.setOnMyLocationChangeListener { + longitude = it.longitude + latitude = it.latitude + //经纬度逆编码 + LocationHub.antiCodingLocation(context, it) { address -> + currentLocationView.text = address + } + } + + //首次移动到定位点 + LocationHub.getCurrentLocation(this, object : ILocationListener { + override fun onAMapLocationGet(location: AMapLocation?) { + if (location != null) { + aMap.moveCamera( + CameraUpdateFactory.newLatLngZoom( + LatLng(location.latitude, location.longitude), 15f + ) + ) + } else { + "当前位置信号差,无法移动地图到定位点".show(context) + } + } + }) + + aMap.setOnMapLongClickListener { + //协程异步显示默认数据 + CoroutineScope(Dispatchers.Main).launch { + labelBeans = withContext(Dispatchers.IO) { + DataBaseManager.get.loadTaskLabels() as ArrayList + } + showLabelsOnMap() + } + } + } + private fun saveTaskInformation(it: TaskModel) { val userName = SaveKeyValues.getValue(LocaleConstant.USER_NAME, "") as String if (it.message.size > 0) { @@ -361,123 +491,6 @@ } } - private fun initEvent() { - rightImageView.setOnClickListener { - val x = rightImageView.width - samplePopupWindow.width - 1f.dp2px(this) - samplePopupWindow.showAsDropDown(rightImageView, x, 1f.dp2px(this)) - } - - samplePopupWindow.setOnPopupWindowClickListener(object : - SamplePopupWindow.OnPopupWindowClickListener { - override fun onPopupItemClicked(position: Int) { - when (position) { - 0 -> updateTaskData() - 1 -> downloadTask() - 2 -> versionViewModel.getApplicationVersion() - 3 -> uploadEvent() - 4 -> uploadLabel() - } - } - }) - - //安装。上传,然后存入本地库 - installButton.setOnClickListener { - navigatePageTo() - } - - //查看 - viewButton.setOnClickListener { - QueryMarkerDialog.Builder() - .setContext(context) - .setTitle("查看标识器") - .setSpinnerArray(LocaleConstant.SPINNER_ARRAY) - .setHintMessage("请输入查询条件") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - QueryMarkerDialog.OnDialogButtonClickListener { - override fun onConfirmClick(selectedItem: String, value: String) { - //查询数据库 - CoroutineScope(Dispatchers.Main).launch { - labelBeans = withContext(Dispatchers.IO) { - DataBaseManager.get.loadLabelByCondition( - selectedItem, value - ) as ArrayList - } - showLabelsOnMap() - } - } - - override fun onCancelClick() { - - } - }).build().show() - } - - //巡检 - inspectionButton.setOnClickListener { - val task = DataBaseManager.get.queryDistinctTask() - if (task.isNotEmpty()) { - val arrayList = ArrayList() - task.forEachIndexed { index, taskBean -> - arrayList.add("任务${index + 1}:${taskBean.taskId},${taskBean.desc}") - } - - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) - .setActionItemTitle(arrayList) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - val taskBean = task[position] - SaveKeyValues.putValue(LocaleConstant.TASK_ID, taskBean.taskId) - AlertControlDialog.Builder() - .setContext(context) - .setTitle("提示") - .setMessage("请选择操作方式") - .setPositiveButton("执行工单") - .setNegativeButton("提交工单") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - detectRedrawGraphic(taskBean.taskId) - aMap.moveCamera( - CameraUpdateFactory.newLatLngZoom( - LatLng( - taskBean.lat.toDouble(), taskBean.lng.toDouble() - ), 15f - ) - ) - uploadTask(taskBean.taskId, "1") - } - - override fun onCancelClick() { - uploadTask(taskBean.taskId, "2") - } - }).build().show() - } - }).build().show() - } else { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("温馨提示") - .setMessage("现有任务已完成,请点击右上角菜单按钮下载新工单!") - .setPositiveButton("知道了") - .setOnDialogButtonClickListener(object : - AlertMessageDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - - } - }).build().show() - } - } - - //探测 - detectionButton.setOnClickListener { - navigatePageTo() - } - } - private fun detectRedrawGraphic(taskId: String) { val tasks = DataBaseManager.get.queryTaskById(taskId) if (tasks.isNotEmpty()) { @@ -638,22 +651,6 @@ } } - private 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() - } - } - } - private fun downloadApk(url: String?) { progressDialog.setMessage("下载新版本中...") progressDialog.show() @@ -706,11 +703,6 @@ startActivity(intent) } - private fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() - initLayoutImmersionBar(rootView) - } - override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { return if (keyCode == KeyEvent.KEYCODE_BACK) { if (System.currentTimeMillis() - clickTime > 2000) { @@ -748,7 +740,7 @@ } override fun onDestroy() { - wakeLock?.release() + wakeLock.release() super.onDestroy() mapView.onDestroy() } 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 579b4e3..570dbc5 100644 --- a/app/src/main/java/com/casic/detector/view/MainActivity.kt +++ b/app/src/main/java/com/casic/detector/view/MainActivity.kt @@ -14,7 +14,6 @@ import android.provider.Settings import android.util.Log import android.view.KeyEvent -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation @@ -41,6 +40,7 @@ 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.callback.OnDownloadListener import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues @@ -57,13 +57,12 @@ import java.io.File -class MainActivity : AppCompatActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private val context: Context = this@MainActivity private var clickTime: Long = 0 private lateinit var aMap: AMap - private lateinit var locationStyle: MyLocationStyle private lateinit var versionViewModel: VersionViewModel private lateinit var taskViewModel: TaskViewModel private val samplePopupWindow by lazy { SamplePopupWindow(this) } @@ -77,10 +76,14 @@ private val gson by lazy { Gson() } private lateinit var wakeLock: PowerManager.WakeLock - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) + override fun initLayoutView(): Int = R.layout.activity_main + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(rootView) + } + + override fun initData(savedInstanceState: Bundle?) { val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager wakeLock = powerManager.run { newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, this@MainActivity.localClassName).apply { @@ -88,67 +91,8 @@ } } - setupTopBarLayout() initMapConfig(savedInstanceState) - initData() - observeRequestState() - initEvent() - } - private fun initMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map - - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.isMyLocationButtonEnabled = true - uiSettings.isScaleControlsEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - //显示定位小蓝点 - locationStyle = MyLocationStyle() - locationStyle.interval(2000) - locationStyle.radiusFillColor(Color.argb(0, 0, 0, 0)) - locationStyle.strokeColor(Color.argb(0, 0, 0, 0)) - locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER)//定位、但不会移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。 - aMap.myLocationStyle = locationStyle//设置定位蓝点的Style - aMap.isMyLocationEnabled = true//设置是否显示定位小蓝点 - aMap.setOnMyLocationChangeListener { - longitude = it.longitude - latitude = it.latitude - //经纬度逆编码 - LocationHub.antiCodingLocation(context, it) { address -> - currentLocationView.text = address - } - } - - //首次移动到定位点 - LocationHub.getCurrentLocation(this, object : ILocationListener { - override fun onAMapLocationGet(location: AMapLocation?) { - if (location != null) { - aMap.moveCamera( - CameraUpdateFactory.newLatLngZoom( - LatLng(location.latitude, location.longitude), 15f - ) - ) - } else { - "当前位置信号差,无法移动地图到定位点".show(context) - } - } - }) - - aMap.setOnMapLongClickListener { - //协程异步显示默认数据 - CoroutineScope(Dispatchers.Main).launch { - labelBeans = withContext(Dispatchers.IO) { - DataBaseManager.get.loadTaskLabels() as ArrayList - } - showLabelsOnMap() - } - } - } - - private fun initData() { samplePopupWindow.setPopupMenuItem(LocaleConstant.POPUP_TITLES) samplePopupWindow.setBackgroundDrawable(null) @@ -236,6 +180,192 @@ } } + override fun initEvent() { + rightImageView.setOnClickListener { + val x = rightImageView.width - samplePopupWindow.width - 1f.dp2px(this) + samplePopupWindow.showAsDropDown(rightImageView, x, 1f.dp2px(this)) + } + + samplePopupWindow.setOnPopupWindowClickListener(object : + SamplePopupWindow.OnPopupWindowClickListener { + override fun onPopupItemClicked(position: Int) { + when (position) { + 0 -> updateTaskData() + 1 -> downloadTask() + 2 -> versionViewModel.getApplicationVersion() + 3 -> uploadEvent() + 4 -> uploadLabel() + } + } + }) + + //安装。上传,然后存入本地库 + installButton.setOnClickListener { + navigatePageTo() + } + + //查看 + viewButton.setOnClickListener { + QueryMarkerDialog.Builder() + .setContext(context) + .setTitle("查看标识器") + .setSpinnerArray(LocaleConstant.SPINNER_ARRAY) + .setHintMessage("请输入查询条件") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + QueryMarkerDialog.OnDialogButtonClickListener { + override fun onConfirmClick(selectedItem: String, value: String) { + //查询数据库 + CoroutineScope(Dispatchers.Main).launch { + labelBeans = withContext(Dispatchers.IO) { + DataBaseManager.get.loadLabelByCondition( + selectedItem, value + ) as ArrayList + } + showLabelsOnMap() + } + } + + override fun onCancelClick() { + + } + }).build().show() + } + + //巡检 + inspectionButton.setOnClickListener { + val task = DataBaseManager.get.queryDistinctTask() + if (task.isNotEmpty()) { + val arrayList = ArrayList() + task.forEachIndexed { index, taskBean -> + arrayList.add("任务${index + 1}:${taskBean.taskId},${taskBean.desc}") + } + + BottomActionSheet.Builder() + .setContext(this) + .setItemTextColor(Color.BLUE) + .setActionItemTitle(arrayList) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + val taskBean = task[position] + SaveKeyValues.putValue(LocaleConstant.TASK_ID, taskBean.taskId) + AlertControlDialog.Builder() + .setContext(context) + .setTitle("提示") + .setMessage("请选择操作方式") + .setPositiveButton("执行工单") + .setNegativeButton("提交工单") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + detectRedrawGraphic(taskBean.taskId) + aMap.moveCamera( + CameraUpdateFactory.newLatLngZoom( + LatLng( + taskBean.lat.toDouble(), taskBean.lng.toDouble() + ), 15f + ) + ) + uploadTask(taskBean.taskId, "1") + } + + override fun onCancelClick() { + uploadTask(taskBean.taskId, "2") + } + }).build().show() + } + }).build().show() + } else { + AlertMessageDialog.Builder() + .setContext(this) + .setTitle("温馨提示") + .setMessage("现有任务已完成,请点击右上角菜单按钮下载新工单!") + .setPositiveButton("知道了") + .setOnDialogButtonClickListener(object : + AlertMessageDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + + } + }).build().show() + } + } + + //探测 + detectionButton.setOnClickListener { + navigatePageTo() + } + } + + 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() + } + } + } + + private fun initMapConfig(savedInstanceState: Bundle?) { + mapView.onCreate(savedInstanceState) + aMap = mapView.map + + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.isMyLocationButtonEnabled = true + uiSettings.isScaleControlsEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 + //显示定位小蓝点 + val locationStyle = MyLocationStyle() + locationStyle.interval(2000) + locationStyle.radiusFillColor(Color.argb(0, 0, 0, 0)) + locationStyle.strokeColor(Color.argb(0, 0, 0, 0)) + locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER)//定位、但不会移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。 + aMap.myLocationStyle = locationStyle//设置定位蓝点的Style + aMap.isMyLocationEnabled = true//设置是否显示定位小蓝点 + aMap.setOnMyLocationChangeListener { + longitude = it.longitude + latitude = it.latitude + //经纬度逆编码 + LocationHub.antiCodingLocation(context, it) { address -> + currentLocationView.text = address + } + } + + //首次移动到定位点 + LocationHub.getCurrentLocation(this, object : ILocationListener { + override fun onAMapLocationGet(location: AMapLocation?) { + if (location != null) { + aMap.moveCamera( + CameraUpdateFactory.newLatLngZoom( + LatLng(location.latitude, location.longitude), 15f + ) + ) + } else { + "当前位置信号差,无法移动地图到定位点".show(context) + } + } + }) + + aMap.setOnMapLongClickListener { + //协程异步显示默认数据 + CoroutineScope(Dispatchers.Main).launch { + labelBeans = withContext(Dispatchers.IO) { + DataBaseManager.get.loadTaskLabels() as ArrayList + } + showLabelsOnMap() + } + } + } + private fun saveTaskInformation(it: TaskModel) { val userName = SaveKeyValues.getValue(LocaleConstant.USER_NAME, "") as String if (it.message.size > 0) { @@ -361,123 +491,6 @@ } } - private fun initEvent() { - rightImageView.setOnClickListener { - val x = rightImageView.width - samplePopupWindow.width - 1f.dp2px(this) - samplePopupWindow.showAsDropDown(rightImageView, x, 1f.dp2px(this)) - } - - samplePopupWindow.setOnPopupWindowClickListener(object : - SamplePopupWindow.OnPopupWindowClickListener { - override fun onPopupItemClicked(position: Int) { - when (position) { - 0 -> updateTaskData() - 1 -> downloadTask() - 2 -> versionViewModel.getApplicationVersion() - 3 -> uploadEvent() - 4 -> uploadLabel() - } - } - }) - - //安装。上传,然后存入本地库 - installButton.setOnClickListener { - navigatePageTo() - } - - //查看 - viewButton.setOnClickListener { - QueryMarkerDialog.Builder() - .setContext(context) - .setTitle("查看标识器") - .setSpinnerArray(LocaleConstant.SPINNER_ARRAY) - .setHintMessage("请输入查询条件") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - QueryMarkerDialog.OnDialogButtonClickListener { - override fun onConfirmClick(selectedItem: String, value: String) { - //查询数据库 - CoroutineScope(Dispatchers.Main).launch { - labelBeans = withContext(Dispatchers.IO) { - DataBaseManager.get.loadLabelByCondition( - selectedItem, value - ) as ArrayList - } - showLabelsOnMap() - } - } - - override fun onCancelClick() { - - } - }).build().show() - } - - //巡检 - inspectionButton.setOnClickListener { - val task = DataBaseManager.get.queryDistinctTask() - if (task.isNotEmpty()) { - val arrayList = ArrayList() - task.forEachIndexed { index, taskBean -> - arrayList.add("任务${index + 1}:${taskBean.taskId},${taskBean.desc}") - } - - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) - .setActionItemTitle(arrayList) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - val taskBean = task[position] - SaveKeyValues.putValue(LocaleConstant.TASK_ID, taskBean.taskId) - AlertControlDialog.Builder() - .setContext(context) - .setTitle("提示") - .setMessage("请选择操作方式") - .setPositiveButton("执行工单") - .setNegativeButton("提交工单") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - detectRedrawGraphic(taskBean.taskId) - aMap.moveCamera( - CameraUpdateFactory.newLatLngZoom( - LatLng( - taskBean.lat.toDouble(), taskBean.lng.toDouble() - ), 15f - ) - ) - uploadTask(taskBean.taskId, "1") - } - - override fun onCancelClick() { - uploadTask(taskBean.taskId, "2") - } - }).build().show() - } - }).build().show() - } else { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("温馨提示") - .setMessage("现有任务已完成,请点击右上角菜单按钮下载新工单!") - .setPositiveButton("知道了") - .setOnDialogButtonClickListener(object : - AlertMessageDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - - } - }).build().show() - } - } - - //探测 - detectionButton.setOnClickListener { - navigatePageTo() - } - } - private fun detectRedrawGraphic(taskId: String) { val tasks = DataBaseManager.get.queryTaskById(taskId) if (tasks.isNotEmpty()) { @@ -638,22 +651,6 @@ } } - private 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() - } - } - } - private fun downloadApk(url: String?) { progressDialog.setMessage("下载新版本中...") progressDialog.show() @@ -706,11 +703,6 @@ startActivity(intent) } - private fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() - initLayoutImmersionBar(rootView) - } - override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { return if (keyCode == KeyEvent.KEYCODE_BACK) { if (System.currentTimeMillis() - clickTime > 2000) { @@ -748,7 +740,7 @@ } override fun onDestroy() { - wakeLock?.release() + wakeLock.release() super.onDestroy() mapView.onDestroy() } diff --git a/app/src/main/java/com/casic/detector/view/NewObjectDetailActivity.kt b/app/src/main/java/com/casic/detector/view/NewObjectDetailActivity.kt index 7b98c27..83605be 100644 --- a/app/src/main/java/com/casic/detector/view/NewObjectDetailActivity.kt +++ b/app/src/main/java/com/casic/detector/view/NewObjectDetailActivity.kt @@ -4,20 +4,27 @@ import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.view.Gravity -import androidx.appcompat.app.AppCompatActivity import com.casic.detector.R +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.getScreenHeight import com.pengxh.kt.lite.extensions.getScreenWidth import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_object_detail.* -class NewObjectDetailActivity : AppCompatActivity() { +class NewObjectDetailActivity : KotlinBaseActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_new_object_detail) + override fun initLayoutView(): Int = R.layout.activity_new_object_detail + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initData(savedInstanceState: Bundle?) { window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) window.decorView.setBackgroundColor(Color.TRANSPARENT) window.setGravity(Gravity.CENTER) @@ -28,7 +35,9 @@ val identifierId = intent.getStringExtra(Constant.INTENT_PARAM)!! identifierIdView.text = identifierId + } + override fun initEvent() { closeView.setOnClickListener { finish() } showImageView.setOnClickListener { finish() 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 579b4e3..570dbc5 100644 --- a/app/src/main/java/com/casic/detector/view/MainActivity.kt +++ b/app/src/main/java/com/casic/detector/view/MainActivity.kt @@ -14,7 +14,6 @@ import android.provider.Settings import android.util.Log import android.view.KeyEvent -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation @@ -41,6 +40,7 @@ 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.callback.OnDownloadListener import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues @@ -57,13 +57,12 @@ import java.io.File -class MainActivity : AppCompatActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private val context: Context = this@MainActivity private var clickTime: Long = 0 private lateinit var aMap: AMap - private lateinit var locationStyle: MyLocationStyle private lateinit var versionViewModel: VersionViewModel private lateinit var taskViewModel: TaskViewModel private val samplePopupWindow by lazy { SamplePopupWindow(this) } @@ -77,10 +76,14 @@ private val gson by lazy { Gson() } private lateinit var wakeLock: PowerManager.WakeLock - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) + override fun initLayoutView(): Int = R.layout.activity_main + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(rootView) + } + + override fun initData(savedInstanceState: Bundle?) { val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager wakeLock = powerManager.run { newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, this@MainActivity.localClassName).apply { @@ -88,67 +91,8 @@ } } - setupTopBarLayout() initMapConfig(savedInstanceState) - initData() - observeRequestState() - initEvent() - } - private fun initMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map - - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.isMyLocationButtonEnabled = true - uiSettings.isScaleControlsEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - //显示定位小蓝点 - locationStyle = MyLocationStyle() - locationStyle.interval(2000) - locationStyle.radiusFillColor(Color.argb(0, 0, 0, 0)) - locationStyle.strokeColor(Color.argb(0, 0, 0, 0)) - locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER)//定位、但不会移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。 - aMap.myLocationStyle = locationStyle//设置定位蓝点的Style - aMap.isMyLocationEnabled = true//设置是否显示定位小蓝点 - aMap.setOnMyLocationChangeListener { - longitude = it.longitude - latitude = it.latitude - //经纬度逆编码 - LocationHub.antiCodingLocation(context, it) { address -> - currentLocationView.text = address - } - } - - //首次移动到定位点 - LocationHub.getCurrentLocation(this, object : ILocationListener { - override fun onAMapLocationGet(location: AMapLocation?) { - if (location != null) { - aMap.moveCamera( - CameraUpdateFactory.newLatLngZoom( - LatLng(location.latitude, location.longitude), 15f - ) - ) - } else { - "当前位置信号差,无法移动地图到定位点".show(context) - } - } - }) - - aMap.setOnMapLongClickListener { - //协程异步显示默认数据 - CoroutineScope(Dispatchers.Main).launch { - labelBeans = withContext(Dispatchers.IO) { - DataBaseManager.get.loadTaskLabels() as ArrayList - } - showLabelsOnMap() - } - } - } - - private fun initData() { samplePopupWindow.setPopupMenuItem(LocaleConstant.POPUP_TITLES) samplePopupWindow.setBackgroundDrawable(null) @@ -236,6 +180,192 @@ } } + override fun initEvent() { + rightImageView.setOnClickListener { + val x = rightImageView.width - samplePopupWindow.width - 1f.dp2px(this) + samplePopupWindow.showAsDropDown(rightImageView, x, 1f.dp2px(this)) + } + + samplePopupWindow.setOnPopupWindowClickListener(object : + SamplePopupWindow.OnPopupWindowClickListener { + override fun onPopupItemClicked(position: Int) { + when (position) { + 0 -> updateTaskData() + 1 -> downloadTask() + 2 -> versionViewModel.getApplicationVersion() + 3 -> uploadEvent() + 4 -> uploadLabel() + } + } + }) + + //安装。上传,然后存入本地库 + installButton.setOnClickListener { + navigatePageTo() + } + + //查看 + viewButton.setOnClickListener { + QueryMarkerDialog.Builder() + .setContext(context) + .setTitle("查看标识器") + .setSpinnerArray(LocaleConstant.SPINNER_ARRAY) + .setHintMessage("请输入查询条件") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + QueryMarkerDialog.OnDialogButtonClickListener { + override fun onConfirmClick(selectedItem: String, value: String) { + //查询数据库 + CoroutineScope(Dispatchers.Main).launch { + labelBeans = withContext(Dispatchers.IO) { + DataBaseManager.get.loadLabelByCondition( + selectedItem, value + ) as ArrayList + } + showLabelsOnMap() + } + } + + override fun onCancelClick() { + + } + }).build().show() + } + + //巡检 + inspectionButton.setOnClickListener { + val task = DataBaseManager.get.queryDistinctTask() + if (task.isNotEmpty()) { + val arrayList = ArrayList() + task.forEachIndexed { index, taskBean -> + arrayList.add("任务${index + 1}:${taskBean.taskId},${taskBean.desc}") + } + + BottomActionSheet.Builder() + .setContext(this) + .setItemTextColor(Color.BLUE) + .setActionItemTitle(arrayList) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + val taskBean = task[position] + SaveKeyValues.putValue(LocaleConstant.TASK_ID, taskBean.taskId) + AlertControlDialog.Builder() + .setContext(context) + .setTitle("提示") + .setMessage("请选择操作方式") + .setPositiveButton("执行工单") + .setNegativeButton("提交工单") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + detectRedrawGraphic(taskBean.taskId) + aMap.moveCamera( + CameraUpdateFactory.newLatLngZoom( + LatLng( + taskBean.lat.toDouble(), taskBean.lng.toDouble() + ), 15f + ) + ) + uploadTask(taskBean.taskId, "1") + } + + override fun onCancelClick() { + uploadTask(taskBean.taskId, "2") + } + }).build().show() + } + }).build().show() + } else { + AlertMessageDialog.Builder() + .setContext(this) + .setTitle("温馨提示") + .setMessage("现有任务已完成,请点击右上角菜单按钮下载新工单!") + .setPositiveButton("知道了") + .setOnDialogButtonClickListener(object : + AlertMessageDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + + } + }).build().show() + } + } + + //探测 + detectionButton.setOnClickListener { + navigatePageTo() + } + } + + 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() + } + } + } + + private fun initMapConfig(savedInstanceState: Bundle?) { + mapView.onCreate(savedInstanceState) + aMap = mapView.map + + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.isMyLocationButtonEnabled = true + uiSettings.isScaleControlsEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 + //显示定位小蓝点 + val locationStyle = MyLocationStyle() + locationStyle.interval(2000) + locationStyle.radiusFillColor(Color.argb(0, 0, 0, 0)) + locationStyle.strokeColor(Color.argb(0, 0, 0, 0)) + locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER)//定位、但不会移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。 + aMap.myLocationStyle = locationStyle//设置定位蓝点的Style + aMap.isMyLocationEnabled = true//设置是否显示定位小蓝点 + aMap.setOnMyLocationChangeListener { + longitude = it.longitude + latitude = it.latitude + //经纬度逆编码 + LocationHub.antiCodingLocation(context, it) { address -> + currentLocationView.text = address + } + } + + //首次移动到定位点 + LocationHub.getCurrentLocation(this, object : ILocationListener { + override fun onAMapLocationGet(location: AMapLocation?) { + if (location != null) { + aMap.moveCamera( + CameraUpdateFactory.newLatLngZoom( + LatLng(location.latitude, location.longitude), 15f + ) + ) + } else { + "当前位置信号差,无法移动地图到定位点".show(context) + } + } + }) + + aMap.setOnMapLongClickListener { + //协程异步显示默认数据 + CoroutineScope(Dispatchers.Main).launch { + labelBeans = withContext(Dispatchers.IO) { + DataBaseManager.get.loadTaskLabels() as ArrayList + } + showLabelsOnMap() + } + } + } + private fun saveTaskInformation(it: TaskModel) { val userName = SaveKeyValues.getValue(LocaleConstant.USER_NAME, "") as String if (it.message.size > 0) { @@ -361,123 +491,6 @@ } } - private fun initEvent() { - rightImageView.setOnClickListener { - val x = rightImageView.width - samplePopupWindow.width - 1f.dp2px(this) - samplePopupWindow.showAsDropDown(rightImageView, x, 1f.dp2px(this)) - } - - samplePopupWindow.setOnPopupWindowClickListener(object : - SamplePopupWindow.OnPopupWindowClickListener { - override fun onPopupItemClicked(position: Int) { - when (position) { - 0 -> updateTaskData() - 1 -> downloadTask() - 2 -> versionViewModel.getApplicationVersion() - 3 -> uploadEvent() - 4 -> uploadLabel() - } - } - }) - - //安装。上传,然后存入本地库 - installButton.setOnClickListener { - navigatePageTo() - } - - //查看 - viewButton.setOnClickListener { - QueryMarkerDialog.Builder() - .setContext(context) - .setTitle("查看标识器") - .setSpinnerArray(LocaleConstant.SPINNER_ARRAY) - .setHintMessage("请输入查询条件") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - QueryMarkerDialog.OnDialogButtonClickListener { - override fun onConfirmClick(selectedItem: String, value: String) { - //查询数据库 - CoroutineScope(Dispatchers.Main).launch { - labelBeans = withContext(Dispatchers.IO) { - DataBaseManager.get.loadLabelByCondition( - selectedItem, value - ) as ArrayList - } - showLabelsOnMap() - } - } - - override fun onCancelClick() { - - } - }).build().show() - } - - //巡检 - inspectionButton.setOnClickListener { - val task = DataBaseManager.get.queryDistinctTask() - if (task.isNotEmpty()) { - val arrayList = ArrayList() - task.forEachIndexed { index, taskBean -> - arrayList.add("任务${index + 1}:${taskBean.taskId},${taskBean.desc}") - } - - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) - .setActionItemTitle(arrayList) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - val taskBean = task[position] - SaveKeyValues.putValue(LocaleConstant.TASK_ID, taskBean.taskId) - AlertControlDialog.Builder() - .setContext(context) - .setTitle("提示") - .setMessage("请选择操作方式") - .setPositiveButton("执行工单") - .setNegativeButton("提交工单") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - detectRedrawGraphic(taskBean.taskId) - aMap.moveCamera( - CameraUpdateFactory.newLatLngZoom( - LatLng( - taskBean.lat.toDouble(), taskBean.lng.toDouble() - ), 15f - ) - ) - uploadTask(taskBean.taskId, "1") - } - - override fun onCancelClick() { - uploadTask(taskBean.taskId, "2") - } - }).build().show() - } - }).build().show() - } else { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("温馨提示") - .setMessage("现有任务已完成,请点击右上角菜单按钮下载新工单!") - .setPositiveButton("知道了") - .setOnDialogButtonClickListener(object : - AlertMessageDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - - } - }).build().show() - } - } - - //探测 - detectionButton.setOnClickListener { - navigatePageTo() - } - } - private fun detectRedrawGraphic(taskId: String) { val tasks = DataBaseManager.get.queryTaskById(taskId) if (tasks.isNotEmpty()) { @@ -638,22 +651,6 @@ } } - private 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() - } - } - } - private fun downloadApk(url: String?) { progressDialog.setMessage("下载新版本中...") progressDialog.show() @@ -706,11 +703,6 @@ startActivity(intent) } - private fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() - initLayoutImmersionBar(rootView) - } - override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { return if (keyCode == KeyEvent.KEYCODE_BACK) { if (System.currentTimeMillis() - clickTime > 2000) { @@ -748,7 +740,7 @@ } override fun onDestroy() { - wakeLock?.release() + wakeLock.release() super.onDestroy() mapView.onDestroy() } diff --git a/app/src/main/java/com/casic/detector/view/NewObjectDetailActivity.kt b/app/src/main/java/com/casic/detector/view/NewObjectDetailActivity.kt index 7b98c27..83605be 100644 --- a/app/src/main/java/com/casic/detector/view/NewObjectDetailActivity.kt +++ b/app/src/main/java/com/casic/detector/view/NewObjectDetailActivity.kt @@ -4,20 +4,27 @@ import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.view.Gravity -import androidx.appcompat.app.AppCompatActivity import com.casic.detector.R +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.getScreenHeight import com.pengxh.kt.lite.extensions.getScreenWidth import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_object_detail.* -class NewObjectDetailActivity : AppCompatActivity() { +class NewObjectDetailActivity : KotlinBaseActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_new_object_detail) + override fun initLayoutView(): Int = R.layout.activity_new_object_detail + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initData(savedInstanceState: Bundle?) { window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) window.decorView.setBackgroundColor(Color.TRANSPARENT) window.setGravity(Gravity.CENTER) @@ -28,7 +35,9 @@ val identifierId = intent.getStringExtra(Constant.INTENT_PARAM)!! identifierIdView.text = identifierId + } + override fun initEvent() { closeView.setOnClickListener { finish() } showImageView.setOnClickListener { finish() diff --git a/app/src/main/java/com/casic/detector/view/ObjectDetailActivity.kt b/app/src/main/java/com/casic/detector/view/ObjectDetailActivity.kt index 4bd08f9..f9f58bb 100644 --- a/app/src/main/java/com/casic/detector/view/ObjectDetailActivity.kt +++ b/app/src/main/java/com/casic/detector/view/ObjectDetailActivity.kt @@ -4,9 +4,7 @@ import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.os.Bundle -import android.util.Log import android.view.Gravity -import androidx.appcompat.app.AppCompatActivity import com.casic.detector.R import com.casic.detector.bean.LabelBean import com.casic.detector.extensions.appendDownloadUrl @@ -14,20 +12,32 @@ import com.casic.detector.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.getScreenHeight +import com.pengxh.kt.lite.extensions.getScreenWidth +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_object_detail.* -class ObjectDetailActivity : AppCompatActivity() { +class ObjectDetailActivity : KotlinBaseActivity() { private val kTag = "ObjectDetailActivity" private val context: Context = this@ObjectDetailActivity private val gson by lazy { Gson() } + private lateinit var labelBean: LabelBean - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_object_detail) + override fun initLayoutView(): Int = R.layout.activity_object_detail + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initData(savedInstanceState: Bundle?) { window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) window.decorView.setBackgroundColor(Color.TRANSPARENT) window.setGravity(Gravity.CENTER) @@ -38,9 +48,7 @@ val objectJson = intent.getStringExtra(Constant.INTENT_PARAM)!! try { - val labelBean = gson.fromJson( - objectJson, object : TypeToken() {}.type - ) + labelBean = gson.fromJson(objectJson, object : TypeToken() {}.type) objectTypeView.text = LocaleConstant.POINT_TYPE_ARRAY[labelBean.objectType.toInt() - 1] pipelineTypeView.text = labelBean.pipelineType @@ -59,37 +67,38 @@ personView.text = labelBean.person installTimeView.text = labelBean.installTime remarkView.text = labelBean.remark - - closeView.setOnClickListener { finish() } - - showImageView.setOnClickListener { - //查数据库 - if (labelBean.imagePath.isNullOrEmpty()) { - "此标识器无图片".show(context) - } else { - val realPaths: ArrayList = ArrayList() //真实图片路径 - - /** - * /images/markers/202307/0008818922_EVENT_20230704_160349_0_1.jpg,/images/markers/202307/0008818922_EVENT_20230704_160406_0_2.jpg - * */ - val imagePath = labelBean.imagePath - if (imagePath.contains(",")) { - val list = imagePath.split(",") - list.forEach { path -> - val url = path.appendDownloadUrl(FileType.IMAGE) - realPaths.add(url) - } - } else { - //只有一张图片 - val url = imagePath.appendDownloadUrl(FileType.IMAGE) - realPaths.add(url) - } - Log.d(kTag, "onCreate => ${realPaths.toJson()}") - navigatePageTo(0, realPaths) - } - } } catch (e: NumberFormatException) { e.printStackTrace() } } + + override fun initEvent() { + closeView.setOnClickListener { finish() } + + showImageView.setOnClickListener { + //查数据库 + if (labelBean.imagePath.isNullOrEmpty()) { + "此标识器无图片".show(context) + } else { + val realPaths: ArrayList = ArrayList() //真实图片路径 + + /** + * /images/markers/202307/0008818922_EVENT_20230704_160349_0_1.jpg,/images/markers/202307/0008818922_EVENT_20230704_160406_0_2.jpg + * */ + val imagePath = labelBean.imagePath + if (imagePath.contains(",")) { + val list = imagePath.split(",") + list.forEach { path -> + val url = path.appendDownloadUrl(FileType.IMAGE) + realPaths.add(url) + } + } else { + //只有一张图片 + val url = imagePath.appendDownloadUrl(FileType.IMAGE) + realPaths.add(url) + } + navigatePageTo(0, realPaths) + } + } + } } \ No newline at end of file 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 579b4e3..570dbc5 100644 --- a/app/src/main/java/com/casic/detector/view/MainActivity.kt +++ b/app/src/main/java/com/casic/detector/view/MainActivity.kt @@ -14,7 +14,6 @@ import android.provider.Settings import android.util.Log import android.view.KeyEvent -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation @@ -41,6 +40,7 @@ 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.callback.OnDownloadListener import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues @@ -57,13 +57,12 @@ import java.io.File -class MainActivity : AppCompatActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private val context: Context = this@MainActivity private var clickTime: Long = 0 private lateinit var aMap: AMap - private lateinit var locationStyle: MyLocationStyle private lateinit var versionViewModel: VersionViewModel private lateinit var taskViewModel: TaskViewModel private val samplePopupWindow by lazy { SamplePopupWindow(this) } @@ -77,10 +76,14 @@ private val gson by lazy { Gson() } private lateinit var wakeLock: PowerManager.WakeLock - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) + override fun initLayoutView(): Int = R.layout.activity_main + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() + initLayoutImmersionBar(rootView) + } + + override fun initData(savedInstanceState: Bundle?) { val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager wakeLock = powerManager.run { newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, this@MainActivity.localClassName).apply { @@ -88,67 +91,8 @@ } } - setupTopBarLayout() initMapConfig(savedInstanceState) - initData() - observeRequestState() - initEvent() - } - private fun initMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map - - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.isMyLocationButtonEnabled = true - uiSettings.isScaleControlsEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - //显示定位小蓝点 - locationStyle = MyLocationStyle() - locationStyle.interval(2000) - locationStyle.radiusFillColor(Color.argb(0, 0, 0, 0)) - locationStyle.strokeColor(Color.argb(0, 0, 0, 0)) - locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER)//定位、但不会移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。 - aMap.myLocationStyle = locationStyle//设置定位蓝点的Style - aMap.isMyLocationEnabled = true//设置是否显示定位小蓝点 - aMap.setOnMyLocationChangeListener { - longitude = it.longitude - latitude = it.latitude - //经纬度逆编码 - LocationHub.antiCodingLocation(context, it) { address -> - currentLocationView.text = address - } - } - - //首次移动到定位点 - LocationHub.getCurrentLocation(this, object : ILocationListener { - override fun onAMapLocationGet(location: AMapLocation?) { - if (location != null) { - aMap.moveCamera( - CameraUpdateFactory.newLatLngZoom( - LatLng(location.latitude, location.longitude), 15f - ) - ) - } else { - "当前位置信号差,无法移动地图到定位点".show(context) - } - } - }) - - aMap.setOnMapLongClickListener { - //协程异步显示默认数据 - CoroutineScope(Dispatchers.Main).launch { - labelBeans = withContext(Dispatchers.IO) { - DataBaseManager.get.loadTaskLabels() as ArrayList - } - showLabelsOnMap() - } - } - } - - private fun initData() { samplePopupWindow.setPopupMenuItem(LocaleConstant.POPUP_TITLES) samplePopupWindow.setBackgroundDrawable(null) @@ -236,6 +180,192 @@ } } + override fun initEvent() { + rightImageView.setOnClickListener { + val x = rightImageView.width - samplePopupWindow.width - 1f.dp2px(this) + samplePopupWindow.showAsDropDown(rightImageView, x, 1f.dp2px(this)) + } + + samplePopupWindow.setOnPopupWindowClickListener(object : + SamplePopupWindow.OnPopupWindowClickListener { + override fun onPopupItemClicked(position: Int) { + when (position) { + 0 -> updateTaskData() + 1 -> downloadTask() + 2 -> versionViewModel.getApplicationVersion() + 3 -> uploadEvent() + 4 -> uploadLabel() + } + } + }) + + //安装。上传,然后存入本地库 + installButton.setOnClickListener { + navigatePageTo() + } + + //查看 + viewButton.setOnClickListener { + QueryMarkerDialog.Builder() + .setContext(context) + .setTitle("查看标识器") + .setSpinnerArray(LocaleConstant.SPINNER_ARRAY) + .setHintMessage("请输入查询条件") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + QueryMarkerDialog.OnDialogButtonClickListener { + override fun onConfirmClick(selectedItem: String, value: String) { + //查询数据库 + CoroutineScope(Dispatchers.Main).launch { + labelBeans = withContext(Dispatchers.IO) { + DataBaseManager.get.loadLabelByCondition( + selectedItem, value + ) as ArrayList + } + showLabelsOnMap() + } + } + + override fun onCancelClick() { + + } + }).build().show() + } + + //巡检 + inspectionButton.setOnClickListener { + val task = DataBaseManager.get.queryDistinctTask() + if (task.isNotEmpty()) { + val arrayList = ArrayList() + task.forEachIndexed { index, taskBean -> + arrayList.add("任务${index + 1}:${taskBean.taskId},${taskBean.desc}") + } + + BottomActionSheet.Builder() + .setContext(this) + .setItemTextColor(Color.BLUE) + .setActionItemTitle(arrayList) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + val taskBean = task[position] + SaveKeyValues.putValue(LocaleConstant.TASK_ID, taskBean.taskId) + AlertControlDialog.Builder() + .setContext(context) + .setTitle("提示") + .setMessage("请选择操作方式") + .setPositiveButton("执行工单") + .setNegativeButton("提交工单") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + detectRedrawGraphic(taskBean.taskId) + aMap.moveCamera( + CameraUpdateFactory.newLatLngZoom( + LatLng( + taskBean.lat.toDouble(), taskBean.lng.toDouble() + ), 15f + ) + ) + uploadTask(taskBean.taskId, "1") + } + + override fun onCancelClick() { + uploadTask(taskBean.taskId, "2") + } + }).build().show() + } + }).build().show() + } else { + AlertMessageDialog.Builder() + .setContext(this) + .setTitle("温馨提示") + .setMessage("现有任务已完成,请点击右上角菜单按钮下载新工单!") + .setPositiveButton("知道了") + .setOnDialogButtonClickListener(object : + AlertMessageDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + + } + }).build().show() + } + } + + //探测 + detectionButton.setOnClickListener { + navigatePageTo() + } + } + + 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() + } + } + } + + private fun initMapConfig(savedInstanceState: Bundle?) { + mapView.onCreate(savedInstanceState) + aMap = mapView.map + + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.isMyLocationButtonEnabled = true + uiSettings.isScaleControlsEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 + //显示定位小蓝点 + val locationStyle = MyLocationStyle() + locationStyle.interval(2000) + locationStyle.radiusFillColor(Color.argb(0, 0, 0, 0)) + locationStyle.strokeColor(Color.argb(0, 0, 0, 0)) + locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER)//定位、但不会移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。 + aMap.myLocationStyle = locationStyle//设置定位蓝点的Style + aMap.isMyLocationEnabled = true//设置是否显示定位小蓝点 + aMap.setOnMyLocationChangeListener { + longitude = it.longitude + latitude = it.latitude + //经纬度逆编码 + LocationHub.antiCodingLocation(context, it) { address -> + currentLocationView.text = address + } + } + + //首次移动到定位点 + LocationHub.getCurrentLocation(this, object : ILocationListener { + override fun onAMapLocationGet(location: AMapLocation?) { + if (location != null) { + aMap.moveCamera( + CameraUpdateFactory.newLatLngZoom( + LatLng(location.latitude, location.longitude), 15f + ) + ) + } else { + "当前位置信号差,无法移动地图到定位点".show(context) + } + } + }) + + aMap.setOnMapLongClickListener { + //协程异步显示默认数据 + CoroutineScope(Dispatchers.Main).launch { + labelBeans = withContext(Dispatchers.IO) { + DataBaseManager.get.loadTaskLabels() as ArrayList + } + showLabelsOnMap() + } + } + } + private fun saveTaskInformation(it: TaskModel) { val userName = SaveKeyValues.getValue(LocaleConstant.USER_NAME, "") as String if (it.message.size > 0) { @@ -361,123 +491,6 @@ } } - private fun initEvent() { - rightImageView.setOnClickListener { - val x = rightImageView.width - samplePopupWindow.width - 1f.dp2px(this) - samplePopupWindow.showAsDropDown(rightImageView, x, 1f.dp2px(this)) - } - - samplePopupWindow.setOnPopupWindowClickListener(object : - SamplePopupWindow.OnPopupWindowClickListener { - override fun onPopupItemClicked(position: Int) { - when (position) { - 0 -> updateTaskData() - 1 -> downloadTask() - 2 -> versionViewModel.getApplicationVersion() - 3 -> uploadEvent() - 4 -> uploadLabel() - } - } - }) - - //安装。上传,然后存入本地库 - installButton.setOnClickListener { - navigatePageTo() - } - - //查看 - viewButton.setOnClickListener { - QueryMarkerDialog.Builder() - .setContext(context) - .setTitle("查看标识器") - .setSpinnerArray(LocaleConstant.SPINNER_ARRAY) - .setHintMessage("请输入查询条件") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - QueryMarkerDialog.OnDialogButtonClickListener { - override fun onConfirmClick(selectedItem: String, value: String) { - //查询数据库 - CoroutineScope(Dispatchers.Main).launch { - labelBeans = withContext(Dispatchers.IO) { - DataBaseManager.get.loadLabelByCondition( - selectedItem, value - ) as ArrayList - } - showLabelsOnMap() - } - } - - override fun onCancelClick() { - - } - }).build().show() - } - - //巡检 - inspectionButton.setOnClickListener { - val task = DataBaseManager.get.queryDistinctTask() - if (task.isNotEmpty()) { - val arrayList = ArrayList() - task.forEachIndexed { index, taskBean -> - arrayList.add("任务${index + 1}:${taskBean.taskId},${taskBean.desc}") - } - - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) - .setActionItemTitle(arrayList) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - val taskBean = task[position] - SaveKeyValues.putValue(LocaleConstant.TASK_ID, taskBean.taskId) - AlertControlDialog.Builder() - .setContext(context) - .setTitle("提示") - .setMessage("请选择操作方式") - .setPositiveButton("执行工单") - .setNegativeButton("提交工单") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - detectRedrawGraphic(taskBean.taskId) - aMap.moveCamera( - CameraUpdateFactory.newLatLngZoom( - LatLng( - taskBean.lat.toDouble(), taskBean.lng.toDouble() - ), 15f - ) - ) - uploadTask(taskBean.taskId, "1") - } - - override fun onCancelClick() { - uploadTask(taskBean.taskId, "2") - } - }).build().show() - } - }).build().show() - } else { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("温馨提示") - .setMessage("现有任务已完成,请点击右上角菜单按钮下载新工单!") - .setPositiveButton("知道了") - .setOnDialogButtonClickListener(object : - AlertMessageDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - - } - }).build().show() - } - } - - //探测 - detectionButton.setOnClickListener { - navigatePageTo() - } - } - private fun detectRedrawGraphic(taskId: String) { val tasks = DataBaseManager.get.queryTaskById(taskId) if (tasks.isNotEmpty()) { @@ -638,22 +651,6 @@ } } - private 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() - } - } - } - private fun downloadApk(url: String?) { progressDialog.setMessage("下载新版本中...") progressDialog.show() @@ -706,11 +703,6 @@ startActivity(intent) } - private fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.themeColor).init() - initLayoutImmersionBar(rootView) - } - override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { return if (keyCode == KeyEvent.KEYCODE_BACK) { if (System.currentTimeMillis() - clickTime > 2000) { @@ -748,7 +740,7 @@ } override fun onDestroy() { - wakeLock?.release() + wakeLock.release() super.onDestroy() mapView.onDestroy() } diff --git a/app/src/main/java/com/casic/detector/view/NewObjectDetailActivity.kt b/app/src/main/java/com/casic/detector/view/NewObjectDetailActivity.kt index 7b98c27..83605be 100644 --- a/app/src/main/java/com/casic/detector/view/NewObjectDetailActivity.kt +++ b/app/src/main/java/com/casic/detector/view/NewObjectDetailActivity.kt @@ -4,20 +4,27 @@ import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.view.Gravity -import androidx.appcompat.app.AppCompatActivity import com.casic.detector.R +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.getScreenHeight import com.pengxh.kt.lite.extensions.getScreenWidth import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_object_detail.* -class NewObjectDetailActivity : AppCompatActivity() { +class NewObjectDetailActivity : KotlinBaseActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_new_object_detail) + override fun initLayoutView(): Int = R.layout.activity_new_object_detail + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initData(savedInstanceState: Bundle?) { window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) window.decorView.setBackgroundColor(Color.TRANSPARENT) window.setGravity(Gravity.CENTER) @@ -28,7 +35,9 @@ val identifierId = intent.getStringExtra(Constant.INTENT_PARAM)!! identifierIdView.text = identifierId + } + override fun initEvent() { closeView.setOnClickListener { finish() } showImageView.setOnClickListener { finish() diff --git a/app/src/main/java/com/casic/detector/view/ObjectDetailActivity.kt b/app/src/main/java/com/casic/detector/view/ObjectDetailActivity.kt index 4bd08f9..f9f58bb 100644 --- a/app/src/main/java/com/casic/detector/view/ObjectDetailActivity.kt +++ b/app/src/main/java/com/casic/detector/view/ObjectDetailActivity.kt @@ -4,9 +4,7 @@ import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.os.Bundle -import android.util.Log import android.view.Gravity -import androidx.appcompat.app.AppCompatActivity import com.casic.detector.R import com.casic.detector.bean.LabelBean import com.casic.detector.extensions.appendDownloadUrl @@ -14,20 +12,32 @@ import com.casic.detector.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.getScreenHeight +import com.pengxh.kt.lite.extensions.getScreenWidth +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_object_detail.* -class ObjectDetailActivity : AppCompatActivity() { +class ObjectDetailActivity : KotlinBaseActivity() { private val kTag = "ObjectDetailActivity" private val context: Context = this@ObjectDetailActivity private val gson by lazy { Gson() } + private lateinit var labelBean: LabelBean - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_object_detail) + override fun initLayoutView(): Int = R.layout.activity_object_detail + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initData(savedInstanceState: Bundle?) { window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) window.decorView.setBackgroundColor(Color.TRANSPARENT) window.setGravity(Gravity.CENTER) @@ -38,9 +48,7 @@ val objectJson = intent.getStringExtra(Constant.INTENT_PARAM)!! try { - val labelBean = gson.fromJson( - objectJson, object : TypeToken() {}.type - ) + labelBean = gson.fromJson(objectJson, object : TypeToken() {}.type) objectTypeView.text = LocaleConstant.POINT_TYPE_ARRAY[labelBean.objectType.toInt() - 1] pipelineTypeView.text = labelBean.pipelineType @@ -59,37 +67,38 @@ personView.text = labelBean.person installTimeView.text = labelBean.installTime remarkView.text = labelBean.remark - - closeView.setOnClickListener { finish() } - - showImageView.setOnClickListener { - //查数据库 - if (labelBean.imagePath.isNullOrEmpty()) { - "此标识器无图片".show(context) - } else { - val realPaths: ArrayList = ArrayList() //真实图片路径 - - /** - * /images/markers/202307/0008818922_EVENT_20230704_160349_0_1.jpg,/images/markers/202307/0008818922_EVENT_20230704_160406_0_2.jpg - * */ - val imagePath = labelBean.imagePath - if (imagePath.contains(",")) { - val list = imagePath.split(",") - list.forEach { path -> - val url = path.appendDownloadUrl(FileType.IMAGE) - realPaths.add(url) - } - } else { - //只有一张图片 - val url = imagePath.appendDownloadUrl(FileType.IMAGE) - realPaths.add(url) - } - Log.d(kTag, "onCreate => ${realPaths.toJson()}") - navigatePageTo(0, realPaths) - } - } } catch (e: NumberFormatException) { e.printStackTrace() } } + + override fun initEvent() { + closeView.setOnClickListener { finish() } + + showImageView.setOnClickListener { + //查数据库 + if (labelBean.imagePath.isNullOrEmpty()) { + "此标识器无图片".show(context) + } else { + val realPaths: ArrayList = ArrayList() //真实图片路径 + + /** + * /images/markers/202307/0008818922_EVENT_20230704_160349_0_1.jpg,/images/markers/202307/0008818922_EVENT_20230704_160406_0_2.jpg + * */ + val imagePath = labelBean.imagePath + if (imagePath.contains(",")) { + val list = imagePath.split(",") + list.forEach { path -> + val url = path.appendDownloadUrl(FileType.IMAGE) + realPaths.add(url) + } + } else { + //只有一张图片 + val url = imagePath.appendDownloadUrl(FileType.IMAGE) + realPaths.add(url) + } + navigatePageTo(0, realPaths) + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt b/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt index 19f7f9b..96b7225 100644 --- a/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/detector/view/UploadEventActivity.kt @@ -7,7 +7,6 @@ import android.os.Bundle import android.view.Gravity import android.view.View -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.casic.detector.R @@ -24,6 +23,7 @@ import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -32,17 +32,35 @@ import java.io.File @SuppressLint("SetTextI18n") -class UploadEventActivity : AppCompatActivity() { +class UploadEventActivity : KotlinBaseActivity() { private val context: Context = this@UploadEventActivity private lateinit var imageAdapter: EditableImageAdapter private val realPaths: ArrayList = ArrayList() //真实图片路径 private lateinit var taskViewModel: TaskViewModel + private lateinit var taskId: String - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_upload_event) + override fun initLayoutView(): Int = R.layout.activity_upload_event + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + taskViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "事件上报中,请稍后...") + LoadState.Success -> { + LoadingDialogHub.dismiss() + "事件上报成功!".show(this) + finish() + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initData(savedInstanceState: Bundle?) { window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) window.decorView.setBackgroundColor(Color.TRANSPARENT) window.setGravity(Gravity.CENTER) @@ -51,8 +69,9 @@ params.height = ((getScreenHeight() * 0.8).toInt()) window.attributes = params - val taskId = SaveKeyValues.getValue(LocaleConstant.TASK_ID, "") as String + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] + taskId = SaveKeyValues.getValue(LocaleConstant.TASK_ID, "") as String val userName = SaveKeyValues.getValue(LocaleConstant.USER_NAME, "") as String userNameView.text = userName @@ -71,6 +90,9 @@ imageAdapter = EditableImageAdapter(this, 3, 3f) addImageRecyclerView.adapter = imageAdapter + } + + override fun initEvent() { imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { takePicture() @@ -91,18 +113,6 @@ cancelButton.setOnClickListener { finish() } - taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] - taskViewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialogHub.show(this, "事件上报中,请稍后...") - LoadState.Success -> { - LoadingDialogHub.dismiss() - "事件上报成功!".show(this) - finish() - } - else -> LoadingDialogHub.dismiss() - } - } uploadEventButton.setOnClickListener { if (eventDescriptionView.text.isNullOrBlank()) { "请输入事件描述!".show(this)