diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 4280e7e..86bbd96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -33,6 +29,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,14 +41,14 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -60,7 +57,6 @@ private val kTag = "HomePageFragment" private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var vibrator: Vibrator private lateinit var aMap: AMap private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 @@ -70,18 +66,18 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -93,8 +89,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -137,17 +133,13 @@ //设置按钮状态 if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -157,8 +149,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -168,8 +160,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -181,7 +173,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -205,9 +197,13 @@ } } + override fun observeRequestState() { + + } + private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -228,8 +224,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -246,10 +242,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -276,11 +272,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -293,12 +289,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -324,8 +320,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -334,9 +329,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -357,7 +350,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -366,25 +359,23 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { //断开连接 if (curConnectState) { BLEManager.disConnectDevice() } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() @@ -433,26 +424,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -473,9 +458,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -550,13 +533,11 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpen = SaveKeyValues.getValue( - LocaleConstant.SINGLE_OPEN_WARNING, false - ) as Boolean + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 @@ -608,35 +589,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 4280e7e..86bbd96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -33,6 +29,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,14 +41,14 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -60,7 +57,6 @@ private val kTag = "HomePageFragment" private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var vibrator: Vibrator private lateinit var aMap: AMap private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 @@ -70,18 +66,18 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -93,8 +89,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -137,17 +133,13 @@ //设置按钮状态 if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -157,8 +149,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -168,8 +160,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -181,7 +173,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -205,9 +197,13 @@ } } + override fun observeRequestState() { + + } + private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -228,8 +224,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -246,10 +242,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -276,11 +272,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -293,12 +289,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -324,8 +320,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -334,9 +329,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -357,7 +350,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -366,25 +359,23 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { //断开连接 if (curConnectState) { BLEManager.disConnectDevice() } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() @@ -433,26 +424,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -473,9 +458,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -550,13 +533,11 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpen = SaveKeyValues.getValue( - LocaleConstant.SINGLE_OPEN_WARNING, false - ) as Boolean + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 @@ -608,35 +589,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 531cdad..8064acf 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -86,7 +87,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 4280e7e..86bbd96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -33,6 +29,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,14 +41,14 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -60,7 +57,6 @@ private val kTag = "HomePageFragment" private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var vibrator: Vibrator private lateinit var aMap: AMap private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 @@ -70,18 +66,18 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -93,8 +89,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -137,17 +133,13 @@ //设置按钮状态 if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -157,8 +149,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -168,8 +160,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -181,7 +173,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -205,9 +197,13 @@ } } + override fun observeRequestState() { + + } + private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -228,8 +224,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -246,10 +242,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -276,11 +272,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -293,12 +289,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -324,8 +320,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -334,9 +329,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -357,7 +350,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -366,25 +359,23 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { //断开连接 if (curConnectState) { BLEManager.disConnectDevice() } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() @@ -433,26 +424,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -473,9 +458,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -550,13 +533,11 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpen = SaveKeyValues.getValue( - LocaleConstant.SINGLE_OPEN_WARNING, false - ) as Boolean + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 @@ -608,35 +589,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 531cdad..8064acf 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -86,7 +87,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 1c61d14..2bc6465 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -103,7 +104,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 4280e7e..86bbd96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -33,6 +29,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,14 +41,14 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -60,7 +57,6 @@ private val kTag = "HomePageFragment" private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var vibrator: Vibrator private lateinit var aMap: AMap private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 @@ -70,18 +66,18 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -93,8 +89,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -137,17 +133,13 @@ //设置按钮状态 if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -157,8 +149,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -168,8 +160,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -181,7 +173,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -205,9 +197,13 @@ } } + override fun observeRequestState() { + + } + private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -228,8 +224,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -246,10 +242,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -276,11 +272,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -293,12 +289,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -324,8 +320,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -334,9 +329,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -357,7 +350,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -366,25 +359,23 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { //断开连接 if (curConnectState) { BLEManager.disConnectDevice() } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() @@ -433,26 +424,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -473,9 +458,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -550,13 +533,11 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpen = SaveKeyValues.getValue( - LocaleConstant.SINGLE_OPEN_WARNING, false - ) as Boolean + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 @@ -608,35 +589,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 531cdad..8064acf 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -86,7 +87,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 1c61d14..2bc6465 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -103,7 +104,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index c001e9b..f15e87e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -3,6 +3,7 @@ import android.content.Context import android.content.Intent import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import com.bumptech.glide.Glide @@ -26,7 +27,7 @@ private lateinit var vibrator: Vibrator - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) val params = statusBarView.layoutParams as LinearLayout.LayoutParams diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 4280e7e..86bbd96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -33,6 +29,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,14 +41,14 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -60,7 +57,6 @@ private val kTag = "HomePageFragment" private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var vibrator: Vibrator private lateinit var aMap: AMap private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 @@ -70,18 +66,18 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -93,8 +89,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -137,17 +133,13 @@ //设置按钮状态 if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -157,8 +149,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -168,8 +160,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -181,7 +173,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -205,9 +197,13 @@ } } + override fun observeRequestState() { + + } + private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -228,8 +224,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -246,10 +242,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -276,11 +272,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -293,12 +289,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -324,8 +320,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -334,9 +329,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -357,7 +350,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -366,25 +359,23 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { //断开连接 if (curConnectState) { BLEManager.disConnectDevice() } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() @@ -433,26 +424,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -473,9 +458,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -550,13 +533,11 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpen = SaveKeyValues.getValue( - LocaleConstant.SINGLE_OPEN_WARNING, false - ) as Boolean + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 @@ -608,35 +589,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 531cdad..8064acf 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -86,7 +87,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 1c61d14..2bc6465 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -103,7 +104,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index c001e9b..f15e87e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -3,6 +3,7 @@ import android.content.Context import android.content.Intent import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import com.bumptech.glide.Glide @@ -26,7 +27,7 @@ private lateinit var vibrator: Vibrator - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) val params = statusBarView.layoutParams as LinearLayout.LayoutParams diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4970ddf..4341296 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -20,7 +21,7 @@ private val gson by lazy { Gson() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 4280e7e..86bbd96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -33,6 +29,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,14 +41,14 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -60,7 +57,6 @@ private val kTag = "HomePageFragment" private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var vibrator: Vibrator private lateinit var aMap: AMap private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 @@ -70,18 +66,18 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -93,8 +89,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -137,17 +133,13 @@ //设置按钮状态 if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -157,8 +149,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -168,8 +160,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -181,7 +173,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -205,9 +197,13 @@ } } + override fun observeRequestState() { + + } + private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -228,8 +224,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -246,10 +242,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -276,11 +272,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -293,12 +289,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -324,8 +320,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -334,9 +329,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -357,7 +350,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -366,25 +359,23 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { //断开连接 if (curConnectState) { BLEManager.disConnectDevice() } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() @@ -433,26 +424,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -473,9 +458,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -550,13 +533,11 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpen = SaveKeyValues.getValue( - LocaleConstant.SINGLE_OPEN_WARNING, false - ) as Boolean + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 @@ -608,35 +589,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 531cdad..8064acf 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -86,7 +87,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 1c61d14..2bc6465 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -103,7 +104,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index c001e9b..f15e87e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -3,6 +3,7 @@ import android.content.Context import android.content.Intent import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import com.bumptech.glide.Glide @@ -26,7 +27,7 @@ private lateinit var vibrator: Vibrator - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) val params = statusBarView.layoutParams as LinearLayout.LayoutParams diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4970ddf..4341296 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -20,7 +21,7 @@ private val gson by lazy { Gson() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index dea353f..6c2879e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -18,7 +19,7 @@ class InspectionEventActivity : KotlinBaseActivity() { - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 4280e7e..86bbd96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -33,6 +29,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,14 +41,14 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -60,7 +57,6 @@ private val kTag = "HomePageFragment" private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var vibrator: Vibrator private lateinit var aMap: AMap private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 @@ -70,18 +66,18 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -93,8 +89,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -137,17 +133,13 @@ //设置按钮状态 if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -157,8 +149,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -168,8 +160,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -181,7 +173,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -205,9 +197,13 @@ } } + override fun observeRequestState() { + + } + private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -228,8 +224,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -246,10 +242,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -276,11 +272,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -293,12 +289,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -324,8 +320,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -334,9 +329,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -357,7 +350,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -366,25 +359,23 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { //断开连接 if (curConnectState) { BLEManager.disConnectDevice() } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() @@ -433,26 +424,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -473,9 +458,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -550,13 +533,11 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpen = SaveKeyValues.getValue( - LocaleConstant.SINGLE_OPEN_WARNING, false - ) as Boolean + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 @@ -608,35 +589,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 531cdad..8064acf 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -86,7 +87,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 1c61d14..2bc6465 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -103,7 +104,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index c001e9b..f15e87e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -3,6 +3,7 @@ import android.content.Context import android.content.Intent import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import com.bumptech.glide.Glide @@ -26,7 +27,7 @@ private lateinit var vibrator: Vibrator - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) val params = statusBarView.layoutParams as LinearLayout.LayoutParams diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4970ddf..4341296 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -20,7 +21,7 @@ private val gson by lazy { Gson() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index dea353f..6c2879e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -18,7 +19,7 @@ class InspectionEventActivity : KotlinBaseActivity() { - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 912eb4f..e1fe3a2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Color import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -11,6 +10,7 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -19,40 +19,24 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.single_activity_inspection_route.* -class InspectionRouteActivity : AppCompatActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap + private lateinit var inspectionId: String - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.single_activity_inspection_route) + override fun initData(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() - titleView.text = "巡检记录" + inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //根据id查询详情 + val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - val inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - initMap(savedInstanceState, inspectionId) - - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { - navigatePageTo(inspectionId) - } - } - - private fun initMap(savedInstanceState: Bundle?, inspectionId: String) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - //根据id查询详情 - val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - inspectMsgView.text = detailData.inspectionTitle startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime @@ -88,6 +72,26 @@ ) } + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + eventButton.setOnClickListener { + navigatePageTo(inspectionId) + } + } + + override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + + override fun setupTopBarLayout() { + QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 + ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "巡检记录" + } + + override fun observeRequestState() { + + } + private fun addMarker(point: LatLng, res: Int) { val markerOption = MarkerOptions() markerOption.position(point) diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 4280e7e..86bbd96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -33,6 +29,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,14 +41,14 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -60,7 +57,6 @@ private val kTag = "HomePageFragment" private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var vibrator: Vibrator private lateinit var aMap: AMap private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 @@ -70,18 +66,18 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -93,8 +89,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -137,17 +133,13 @@ //设置按钮状态 if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -157,8 +149,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -168,8 +160,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -181,7 +173,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -205,9 +197,13 @@ } } + override fun observeRequestState() { + + } + private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -228,8 +224,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -246,10 +242,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -276,11 +272,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -293,12 +289,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -324,8 +320,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -334,9 +329,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -357,7 +350,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -366,25 +359,23 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { //断开连接 if (curConnectState) { BLEManager.disConnectDevice() } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() @@ -433,26 +424,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -473,9 +458,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -550,13 +533,11 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpen = SaveKeyValues.getValue( - LocaleConstant.SINGLE_OPEN_WARNING, false - ) as Boolean + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 @@ -608,35 +589,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 531cdad..8064acf 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -86,7 +87,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 1c61d14..2bc6465 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -103,7 +104,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index c001e9b..f15e87e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -3,6 +3,7 @@ import android.content.Context import android.content.Intent import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import com.bumptech.glide.Glide @@ -26,7 +27,7 @@ private lateinit var vibrator: Vibrator - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) val params = statusBarView.layoutParams as LinearLayout.LayoutParams diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4970ddf..4341296 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -20,7 +21,7 @@ private val gson by lazy { Gson() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index dea353f..6c2879e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -18,7 +19,7 @@ class InspectionEventActivity : KotlinBaseActivity() { - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 912eb4f..e1fe3a2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Color import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -11,6 +10,7 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -19,40 +19,24 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.single_activity_inspection_route.* -class InspectionRouteActivity : AppCompatActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap + private lateinit var inspectionId: String - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.single_activity_inspection_route) + override fun initData(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() - titleView.text = "巡检记录" + inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //根据id查询详情 + val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - val inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - initMap(savedInstanceState, inspectionId) - - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { - navigatePageTo(inspectionId) - } - } - - private fun initMap(savedInstanceState: Bundle?, inspectionId: String) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - //根据id查询详情 - val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - inspectMsgView.text = detailData.inspectionTitle startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime @@ -88,6 +72,26 @@ ) } + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + eventButton.setOnClickListener { + navigatePageTo(inspectionId) + } + } + + override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + + override fun setupTopBarLayout() { + QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 + ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "巡检记录" + } + + override fun observeRequestState() { + + } + private fun addMarker(point: LatLng, res: Int) { val markerOption = MarkerOptions() markerOption.position(point) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index bd1a521..8c3f0a7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -27,7 +28,7 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 4280e7e..86bbd96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -33,6 +29,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,14 +41,14 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -60,7 +57,6 @@ private val kTag = "HomePageFragment" private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var vibrator: Vibrator private lateinit var aMap: AMap private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 @@ -70,18 +66,18 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -93,8 +89,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -137,17 +133,13 @@ //设置按钮状态 if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -157,8 +149,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -168,8 +160,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -181,7 +173,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -205,9 +197,13 @@ } } + override fun observeRequestState() { + + } + private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -228,8 +224,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -246,10 +242,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -276,11 +272,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -293,12 +289,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -324,8 +320,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -334,9 +329,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -357,7 +350,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -366,25 +359,23 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { //断开连接 if (curConnectState) { BLEManager.disConnectDevice() } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() @@ -433,26 +424,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -473,9 +458,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -550,13 +533,11 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpen = SaveKeyValues.getValue( - LocaleConstant.SINGLE_OPEN_WARNING, false - ) as Boolean + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 @@ -608,35 +589,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 531cdad..8064acf 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -86,7 +87,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 1c61d14..2bc6465 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -103,7 +104,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index c001e9b..f15e87e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -3,6 +3,7 @@ import android.content.Context import android.content.Intent import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import com.bumptech.glide.Glide @@ -26,7 +27,7 @@ private lateinit var vibrator: Vibrator - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) val params = statusBarView.layoutParams as LinearLayout.LayoutParams diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4970ddf..4341296 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -20,7 +21,7 @@ private val gson by lazy { Gson() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index dea353f..6c2879e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -18,7 +19,7 @@ class InspectionEventActivity : KotlinBaseActivity() { - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 912eb4f..e1fe3a2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Color import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -11,6 +10,7 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -19,40 +19,24 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.single_activity_inspection_route.* -class InspectionRouteActivity : AppCompatActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap + private lateinit var inspectionId: String - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.single_activity_inspection_route) + override fun initData(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() - titleView.text = "巡检记录" + inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //根据id查询详情 + val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - val inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - initMap(savedInstanceState, inspectionId) - - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { - navigatePageTo(inspectionId) - } - } - - private fun initMap(savedInstanceState: Bundle?, inspectionId: String) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - //根据id查询详情 - val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - inspectMsgView.text = detailData.inspectionTitle startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime @@ -88,6 +72,26 @@ ) } + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + eventButton.setOnClickListener { + navigatePageTo(inspectionId) + } + } + + override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + + override fun setupTopBarLayout() { + QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 + ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "巡检记录" + } + + override fun observeRequestState() { + + } + private fun addMarker(point: LatLng, res: Int) { val markerOption = MarkerOptions() markerOption.position(point) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index bd1a521..8c3f0a7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -27,7 +28,7 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index 7e4f7e7..c129271 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.View import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R @@ -42,7 +43,7 @@ private var data = 0.0//泄露默认值 - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 4280e7e..86bbd96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -33,6 +29,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,14 +41,14 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -60,7 +57,6 @@ private val kTag = "HomePageFragment" private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var vibrator: Vibrator private lateinit var aMap: AMap private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 @@ -70,18 +66,18 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -93,8 +89,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -137,17 +133,13 @@ //设置按钮状态 if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -157,8 +149,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -168,8 +160,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -181,7 +173,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -205,9 +197,13 @@ } } + override fun observeRequestState() { + + } + private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -228,8 +224,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -246,10 +242,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -276,11 +272,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -293,12 +289,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -324,8 +320,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -334,9 +329,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -357,7 +350,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -366,25 +359,23 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { //断开连接 if (curConnectState) { BLEManager.disConnectDevice() } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() @@ -433,26 +424,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -473,9 +458,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -550,13 +533,11 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpen = SaveKeyValues.getValue( - LocaleConstant.SINGLE_OPEN_WARNING, false - ) as Boolean + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 @@ -608,35 +589,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 531cdad..8064acf 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -86,7 +87,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 1c61d14..2bc6465 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -103,7 +104,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index c001e9b..f15e87e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -3,6 +3,7 @@ import android.content.Context import android.content.Intent import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import com.bumptech.glide.Glide @@ -26,7 +27,7 @@ private lateinit var vibrator: Vibrator - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) val params = statusBarView.layoutParams as LinearLayout.LayoutParams diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4970ddf..4341296 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -20,7 +21,7 @@ private val gson by lazy { Gson() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index dea353f..6c2879e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -18,7 +19,7 @@ class InspectionEventActivity : KotlinBaseActivity() { - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 912eb4f..e1fe3a2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Color import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -11,6 +10,7 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -19,40 +19,24 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.single_activity_inspection_route.* -class InspectionRouteActivity : AppCompatActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap + private lateinit var inspectionId: String - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.single_activity_inspection_route) + override fun initData(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() - titleView.text = "巡检记录" + inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //根据id查询详情 + val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - val inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - initMap(savedInstanceState, inspectionId) - - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { - navigatePageTo(inspectionId) - } - } - - private fun initMap(savedInstanceState: Bundle?, inspectionId: String) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - //根据id查询详情 - val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - inspectMsgView.text = detailData.inspectionTitle startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime @@ -88,6 +72,26 @@ ) } + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + eventButton.setOnClickListener { + navigatePageTo(inspectionId) + } + } + + override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + + override fun setupTopBarLayout() { + QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 + ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "巡检记录" + } + + override fun observeRequestState() { + + } + private fun addMarker(point: LatLng, res: Int) { val markerOption = MarkerOptions() markerOption.position(point) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index bd1a521..8c3f0a7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -27,7 +28,7 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index 7e4f7e7..c129271 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.View import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R @@ -42,7 +43,7 @@ private var data = 0.0//泄露默认值 - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 6054986..488e38f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -25,7 +26,7 @@ leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { } diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 4280e7e..86bbd96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -33,6 +29,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,14 +41,14 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -60,7 +57,6 @@ private val kTag = "HomePageFragment" private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var vibrator: Vibrator private lateinit var aMap: AMap private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 @@ -70,18 +66,18 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -93,8 +89,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -137,17 +133,13 @@ //设置按钮状态 if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -157,8 +149,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -168,8 +160,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -181,7 +173,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -205,9 +197,13 @@ } } + override fun observeRequestState() { + + } + private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -228,8 +224,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -246,10 +242,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -276,11 +272,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -293,12 +289,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -324,8 +320,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -334,9 +329,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -357,7 +350,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -366,25 +359,23 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { //断开连接 if (curConnectState) { BLEManager.disConnectDevice() } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() @@ -433,26 +424,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -473,9 +458,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -550,13 +533,11 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpen = SaveKeyValues.getValue( - LocaleConstant.SINGLE_OPEN_WARNING, false - ) as Boolean + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 @@ -608,35 +589,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 531cdad..8064acf 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -86,7 +87,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 1c61d14..2bc6465 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -103,7 +104,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index c001e9b..f15e87e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -3,6 +3,7 @@ import android.content.Context import android.content.Intent import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import com.bumptech.glide.Glide @@ -26,7 +27,7 @@ private lateinit var vibrator: Vibrator - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) val params = statusBarView.layoutParams as LinearLayout.LayoutParams diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4970ddf..4341296 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -20,7 +21,7 @@ private val gson by lazy { Gson() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index dea353f..6c2879e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -18,7 +19,7 @@ class InspectionEventActivity : KotlinBaseActivity() { - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 912eb4f..e1fe3a2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Color import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -11,6 +10,7 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -19,40 +19,24 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.single_activity_inspection_route.* -class InspectionRouteActivity : AppCompatActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap + private lateinit var inspectionId: String - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.single_activity_inspection_route) + override fun initData(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() - titleView.text = "巡检记录" + inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //根据id查询详情 + val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - val inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - initMap(savedInstanceState, inspectionId) - - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { - navigatePageTo(inspectionId) - } - } - - private fun initMap(savedInstanceState: Bundle?, inspectionId: String) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - //根据id查询详情 - val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - inspectMsgView.text = detailData.inspectionTitle startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime @@ -88,6 +72,26 @@ ) } + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + eventButton.setOnClickListener { + navigatePageTo(inspectionId) + } + } + + override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + + override fun setupTopBarLayout() { + QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 + ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "巡检记录" + } + + override fun observeRequestState() { + + } + private fun addMarker(point: LatLng, res: Int) { val markerOption = MarkerOptions() markerOption.position(point) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index bd1a521..8c3f0a7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -27,7 +28,7 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index 7e4f7e7..c129271 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.View import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R @@ -42,7 +43,7 @@ private var data = 0.0//泄露默认值 - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 6054986..488e38f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -25,7 +26,7 @@ leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 5dd7f86..32aad52 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath @@ -33,7 +34,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 4280e7e..86bbd96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -33,6 +29,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,14 +41,14 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -60,7 +57,6 @@ private val kTag = "HomePageFragment" private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var vibrator: Vibrator private lateinit var aMap: AMap private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 @@ -70,18 +66,18 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -93,8 +89,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -137,17 +133,13 @@ //设置按钮状态 if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -157,8 +149,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -168,8 +160,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -181,7 +173,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -205,9 +197,13 @@ } } + override fun observeRequestState() { + + } + private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -228,8 +224,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -246,10 +242,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -276,11 +272,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -293,12 +289,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -324,8 +320,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -334,9 +329,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -357,7 +350,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -366,25 +359,23 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { //断开连接 if (curConnectState) { BLEManager.disConnectDevice() } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() @@ -433,26 +424,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -473,9 +458,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -550,13 +533,11 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpen = SaveKeyValues.getValue( - LocaleConstant.SINGLE_OPEN_WARNING, false - ) as Boolean + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 @@ -608,35 +589,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 531cdad..8064acf 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -86,7 +87,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 1c61d14..2bc6465 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -103,7 +104,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index c001e9b..f15e87e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -3,6 +3,7 @@ import android.content.Context import android.content.Intent import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import com.bumptech.glide.Glide @@ -26,7 +27,7 @@ private lateinit var vibrator: Vibrator - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) val params = statusBarView.layoutParams as LinearLayout.LayoutParams diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4970ddf..4341296 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -20,7 +21,7 @@ private val gson by lazy { Gson() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index dea353f..6c2879e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -18,7 +19,7 @@ class InspectionEventActivity : KotlinBaseActivity() { - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 912eb4f..e1fe3a2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Color import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -11,6 +10,7 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -19,40 +19,24 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.single_activity_inspection_route.* -class InspectionRouteActivity : AppCompatActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap + private lateinit var inspectionId: String - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.single_activity_inspection_route) + override fun initData(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() - titleView.text = "巡检记录" + inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //根据id查询详情 + val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - val inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - initMap(savedInstanceState, inspectionId) - - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { - navigatePageTo(inspectionId) - } - } - - private fun initMap(savedInstanceState: Bundle?, inspectionId: String) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - //根据id查询详情 - val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - inspectMsgView.text = detailData.inspectionTitle startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime @@ -88,6 +72,26 @@ ) } + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + eventButton.setOnClickListener { + navigatePageTo(inspectionId) + } + } + + override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + + override fun setupTopBarLayout() { + QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 + ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "巡检记录" + } + + override fun observeRequestState() { + + } + private fun addMarker(point: LatLng, res: Int) { val markerOption = MarkerOptions() markerOption.position(point) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index bd1a521..8c3f0a7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -27,7 +28,7 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index 7e4f7e7..c129271 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.View import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R @@ -42,7 +43,7 @@ private var data = 0.0//泄露默认值 - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 6054986..488e38f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -25,7 +26,7 @@ leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 5dd7f86..32aad52 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath @@ -33,7 +34,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index b943b82..c086607 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import android.view.View import android.webkit.WebViewClient import androidx.core.content.ContextCompat @@ -23,7 +24,7 @@ leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { answerView.loadUrl("file:///android_asset/HelpCenterH5.html") answerView.settings.defaultTextEncodingName = "utf-8" answerView.webViewClient = WebViewClient() diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 4280e7e..86bbd96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -33,6 +29,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,14 +41,14 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -60,7 +57,6 @@ private val kTag = "HomePageFragment" private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var vibrator: Vibrator private lateinit var aMap: AMap private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 @@ -70,18 +66,18 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -93,8 +89,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -137,17 +133,13 @@ //设置按钮状态 if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -157,8 +149,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -168,8 +160,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -181,7 +173,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -205,9 +197,13 @@ } } + override fun observeRequestState() { + + } + private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -228,8 +224,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -246,10 +242,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -276,11 +272,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -293,12 +289,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -324,8 +320,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -334,9 +329,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -357,7 +350,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -366,25 +359,23 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { //断开连接 if (curConnectState) { BLEManager.disConnectDevice() } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() @@ -433,26 +424,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -473,9 +458,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -550,13 +533,11 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpen = SaveKeyValues.getValue( - LocaleConstant.SINGLE_OPEN_WARNING, false - ) as Boolean + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 @@ -608,35 +589,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 531cdad..8064acf 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -86,7 +87,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 1c61d14..2bc6465 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -103,7 +104,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index c001e9b..f15e87e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -3,6 +3,7 @@ import android.content.Context import android.content.Intent import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import com.bumptech.glide.Glide @@ -26,7 +27,7 @@ private lateinit var vibrator: Vibrator - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) val params = statusBarView.layoutParams as LinearLayout.LayoutParams diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4970ddf..4341296 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -20,7 +21,7 @@ private val gson by lazy { Gson() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index dea353f..6c2879e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -18,7 +19,7 @@ class InspectionEventActivity : KotlinBaseActivity() { - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 912eb4f..e1fe3a2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Color import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -11,6 +10,7 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -19,40 +19,24 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.single_activity_inspection_route.* -class InspectionRouteActivity : AppCompatActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap + private lateinit var inspectionId: String - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.single_activity_inspection_route) + override fun initData(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() - titleView.text = "巡检记录" + inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //根据id查询详情 + val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - val inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - initMap(savedInstanceState, inspectionId) - - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { - navigatePageTo(inspectionId) - } - } - - private fun initMap(savedInstanceState: Bundle?, inspectionId: String) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - //根据id查询详情 - val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - inspectMsgView.text = detailData.inspectionTitle startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime @@ -88,6 +72,26 @@ ) } + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + eventButton.setOnClickListener { + navigatePageTo(inspectionId) + } + } + + override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + + override fun setupTopBarLayout() { + QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 + ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "巡检记录" + } + + override fun observeRequestState() { + + } + private fun addMarker(point: LatLng, res: Int) { val markerOption = MarkerOptions() markerOption.position(point) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index bd1a521..8c3f0a7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -27,7 +28,7 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index 7e4f7e7..c129271 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.View import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R @@ -42,7 +43,7 @@ private var data = 0.0//泄露默认值 - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 6054986..488e38f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -25,7 +26,7 @@ leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 5dd7f86..32aad52 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath @@ -33,7 +34,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index b943b82..c086607 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import android.view.View import android.webkit.WebViewClient import androidx.core.content.ContextCompat @@ -23,7 +24,7 @@ leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { answerView.loadUrl("file:///android_asset/HelpCenterH5.html") answerView.settings.defaultTextEncodingName = "utf-8" answerView.webViewClient = WebViewClient() diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index 4700b47..d35baef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -31,7 +32,7 @@ titleView.text = "事件清单" } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 4280e7e..86bbd96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -33,6 +29,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,14 +41,14 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -60,7 +57,6 @@ private val kTag = "HomePageFragment" private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var vibrator: Vibrator private lateinit var aMap: AMap private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 @@ -70,18 +66,18 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -93,8 +89,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -137,17 +133,13 @@ //设置按钮状态 if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -157,8 +149,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -168,8 +160,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -181,7 +173,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -205,9 +197,13 @@ } } + override fun observeRequestState() { + + } + private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -228,8 +224,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -246,10 +242,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -276,11 +272,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -293,12 +289,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -324,8 +320,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -334,9 +329,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -357,7 +350,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -366,25 +359,23 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { //断开连接 if (curConnectState) { BLEManager.disConnectDevice() } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() @@ -433,26 +424,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -473,9 +458,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -550,13 +533,11 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpen = SaveKeyValues.getValue( - LocaleConstant.SINGLE_OPEN_WARNING, false - ) as Boolean + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 @@ -608,35 +589,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 531cdad..8064acf 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -86,7 +87,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 1c61d14..2bc6465 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -103,7 +104,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index c001e9b..f15e87e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -3,6 +3,7 @@ import android.content.Context import android.content.Intent import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import com.bumptech.glide.Glide @@ -26,7 +27,7 @@ private lateinit var vibrator: Vibrator - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) val params = statusBarView.layoutParams as LinearLayout.LayoutParams diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4970ddf..4341296 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -20,7 +21,7 @@ private val gson by lazy { Gson() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index dea353f..6c2879e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -18,7 +19,7 @@ class InspectionEventActivity : KotlinBaseActivity() { - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 912eb4f..e1fe3a2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Color import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -11,6 +10,7 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -19,40 +19,24 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.single_activity_inspection_route.* -class InspectionRouteActivity : AppCompatActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap + private lateinit var inspectionId: String - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.single_activity_inspection_route) + override fun initData(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() - titleView.text = "巡检记录" + inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //根据id查询详情 + val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - val inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - initMap(savedInstanceState, inspectionId) - - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { - navigatePageTo(inspectionId) - } - } - - private fun initMap(savedInstanceState: Bundle?, inspectionId: String) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - //根据id查询详情 - val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - inspectMsgView.text = detailData.inspectionTitle startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime @@ -88,6 +72,26 @@ ) } + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + eventButton.setOnClickListener { + navigatePageTo(inspectionId) + } + } + + override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + + override fun setupTopBarLayout() { + QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 + ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "巡检记录" + } + + override fun observeRequestState() { + + } + private fun addMarker(point: LatLng, res: Int) { val markerOption = MarkerOptions() markerOption.position(point) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index bd1a521..8c3f0a7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -27,7 +28,7 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index 7e4f7e7..c129271 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.View import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R @@ -42,7 +43,7 @@ private var data = 0.0//泄露默认值 - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 6054986..488e38f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -25,7 +26,7 @@ leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 5dd7f86..32aad52 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath @@ -33,7 +34,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index b943b82..c086607 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import android.view.View import android.webkit.WebViewClient import androidx.core.content.ContextCompat @@ -23,7 +24,7 @@ leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { answerView.loadUrl("file:///android_asset/HelpCenterH5.html") answerView.settings.defaultTextEncodingName = "utf-8" answerView.webViewClient = WebViewClient() diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index 4700b47..d35baef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -31,7 +32,7 @@ titleView.text = "事件清单" } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index c882675..14d25d2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -2,9 +2,7 @@ import android.graphics.Color import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat -import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -20,6 +18,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.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -33,32 +32,28 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.single_activity_inspection_route.* -class InspectionRouteActivity : AppCompatActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap + private lateinit var id: String + private lateinit var viewModel: InspectionViewModel - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_inspection_route) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun setupTopBarLayout() { QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "巡检记录" - - val id = intent.getStringExtra(Constant.INTENT_PARAM)!! - - initMap(savedInstanceState, id) - - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { - navigatePageTo(id) - } } - private fun initMap(savedInstanceState: Bundle?, id: String) { + override fun initData(savedInstanceState: Bundle?) { + PageNavigationManager.addActivity(this) + + viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + id = intent.getStringExtra(Constant.INTENT_PARAM)!! + mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -66,15 +61,8 @@ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 //根据id查询详情 - val viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - viewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") - else -> LoadingDialogHub.dismiss() - } - } viewModel.getInspectDetail(id) - viewModel.inspectDetail.observe(this, Observer { + viewModel.inspectDetail.observe(this) { val detailData = it.data!! inspectMsgView.text = detailData.name @@ -109,7 +97,7 @@ //瞄点画线 val routeJson = detailData.routes!! if (routeJson.isEmpty()) { - return@Observer + return@observe } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] val type = object : TypeToken>() {}.type @@ -128,7 +116,23 @@ distanceView.text = distance } }) - }) + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + eventButton.setOnClickListener { + navigatePageTo(id) + } + } + + override fun observeRequestState() { + viewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } } private fun addMarker(point: LatLng, res: Int) { diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 4280e7e..86bbd96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -33,6 +29,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,14 +41,14 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -60,7 +57,6 @@ private val kTag = "HomePageFragment" private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var vibrator: Vibrator private lateinit var aMap: AMap private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 @@ -70,18 +66,18 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -93,8 +89,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -137,17 +133,13 @@ //设置按钮状态 if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -157,8 +149,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -168,8 +160,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -181,7 +173,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -205,9 +197,13 @@ } } + override fun observeRequestState() { + + } + private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -228,8 +224,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -246,10 +242,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -276,11 +272,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -293,12 +289,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -324,8 +320,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -334,9 +329,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -357,7 +350,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -366,25 +359,23 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { //断开连接 if (curConnectState) { BLEManager.disConnectDevice() } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() @@ -433,26 +424,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -473,9 +458,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -550,13 +533,11 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpen = SaveKeyValues.getValue( - LocaleConstant.SINGLE_OPEN_WARNING, false - ) as Boolean + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 @@ -608,35 +589,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 531cdad..8064acf 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -86,7 +87,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 1c61d14..2bc6465 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -103,7 +104,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index c001e9b..f15e87e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -3,6 +3,7 @@ import android.content.Context import android.content.Intent import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import com.bumptech.glide.Glide @@ -26,7 +27,7 @@ private lateinit var vibrator: Vibrator - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) val params = statusBarView.layoutParams as LinearLayout.LayoutParams diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4970ddf..4341296 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -20,7 +21,7 @@ private val gson by lazy { Gson() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index dea353f..6c2879e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -18,7 +19,7 @@ class InspectionEventActivity : KotlinBaseActivity() { - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 912eb4f..e1fe3a2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Color import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -11,6 +10,7 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -19,40 +19,24 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.single_activity_inspection_route.* -class InspectionRouteActivity : AppCompatActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap + private lateinit var inspectionId: String - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.single_activity_inspection_route) + override fun initData(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() - titleView.text = "巡检记录" + inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //根据id查询详情 + val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - val inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - initMap(savedInstanceState, inspectionId) - - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { - navigatePageTo(inspectionId) - } - } - - private fun initMap(savedInstanceState: Bundle?, inspectionId: String) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - //根据id查询详情 - val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - inspectMsgView.text = detailData.inspectionTitle startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime @@ -88,6 +72,26 @@ ) } + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + eventButton.setOnClickListener { + navigatePageTo(inspectionId) + } + } + + override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + + override fun setupTopBarLayout() { + QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 + ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "巡检记录" + } + + override fun observeRequestState() { + + } + private fun addMarker(point: LatLng, res: Int) { val markerOption = MarkerOptions() markerOption.position(point) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index bd1a521..8c3f0a7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -27,7 +28,7 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index 7e4f7e7..c129271 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.View import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R @@ -42,7 +43,7 @@ private var data = 0.0//泄露默认值 - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 6054986..488e38f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -25,7 +26,7 @@ leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 5dd7f86..32aad52 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath @@ -33,7 +34,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index b943b82..c086607 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import android.view.View import android.webkit.WebViewClient import androidx.core.content.ContextCompat @@ -23,7 +24,7 @@ leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { answerView.loadUrl("file:///android_asset/HelpCenterH5.html") answerView.settings.defaultTextEncodingName = "utf-8" answerView.webViewClient = WebViewClient() diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index 4700b47..d35baef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -31,7 +32,7 @@ titleView.text = "事件清单" } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index c882675..14d25d2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -2,9 +2,7 @@ import android.graphics.Color import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat -import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -20,6 +18,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.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -33,32 +32,28 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.single_activity_inspection_route.* -class InspectionRouteActivity : AppCompatActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap + private lateinit var id: String + private lateinit var viewModel: InspectionViewModel - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_inspection_route) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun setupTopBarLayout() { QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "巡检记录" - - val id = intent.getStringExtra(Constant.INTENT_PARAM)!! - - initMap(savedInstanceState, id) - - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { - navigatePageTo(id) - } } - private fun initMap(savedInstanceState: Bundle?, id: String) { + override fun initData(savedInstanceState: Bundle?) { + PageNavigationManager.addActivity(this) + + viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + id = intent.getStringExtra(Constant.INTENT_PARAM)!! + mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -66,15 +61,8 @@ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 //根据id查询详情 - val viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - viewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") - else -> LoadingDialogHub.dismiss() - } - } viewModel.getInspectDetail(id) - viewModel.inspectDetail.observe(this, Observer { + viewModel.inspectDetail.observe(this) { val detailData = it.data!! inspectMsgView.text = detailData.name @@ -109,7 +97,7 @@ //瞄点画线 val routeJson = detailData.routes!! if (routeJson.isEmpty()) { - return@Observer + return@observe } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] val type = object : TypeToken>() {}.type @@ -128,7 +116,23 @@ distanceView.text = distance } }) - }) + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + eventButton.setOnClickListener { + navigatePageTo(id) + } + } + + override fun observeRequestState() { + viewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } } private fun addMarker(point: LatLng, res: Int) { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index cac1d23..78c3b03 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.view import android.os.Build +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R @@ -33,7 +34,7 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 4280e7e..86bbd96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -33,6 +29,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,14 +41,14 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -60,7 +57,6 @@ private val kTag = "HomePageFragment" private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var vibrator: Vibrator private lateinit var aMap: AMap private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 @@ -70,18 +66,18 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -93,8 +89,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -137,17 +133,13 @@ //设置按钮状态 if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -157,8 +149,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -168,8 +160,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -181,7 +173,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -205,9 +197,13 @@ } } + override fun observeRequestState() { + + } + private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -228,8 +224,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -246,10 +242,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -276,11 +272,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -293,12 +289,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -324,8 +320,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -334,9 +329,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -357,7 +350,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -366,25 +359,23 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { //断开连接 if (curConnectState) { BLEManager.disConnectDevice() } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() @@ -433,26 +424,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -473,9 +458,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -550,13 +533,11 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpen = SaveKeyValues.getValue( - LocaleConstant.SINGLE_OPEN_WARNING, false - ) as Boolean + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 @@ -608,35 +589,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 531cdad..8064acf 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -86,7 +87,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 1c61d14..2bc6465 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -103,7 +104,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index c001e9b..f15e87e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -3,6 +3,7 @@ import android.content.Context import android.content.Intent import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import com.bumptech.glide.Glide @@ -26,7 +27,7 @@ private lateinit var vibrator: Vibrator - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) val params = statusBarView.layoutParams as LinearLayout.LayoutParams diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4970ddf..4341296 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -20,7 +21,7 @@ private val gson by lazy { Gson() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index dea353f..6c2879e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -18,7 +19,7 @@ class InspectionEventActivity : KotlinBaseActivity() { - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 912eb4f..e1fe3a2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Color import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -11,6 +10,7 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -19,40 +19,24 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.single_activity_inspection_route.* -class InspectionRouteActivity : AppCompatActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap + private lateinit var inspectionId: String - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.single_activity_inspection_route) + override fun initData(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() - titleView.text = "巡检记录" + inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //根据id查询详情 + val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - val inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - initMap(savedInstanceState, inspectionId) - - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { - navigatePageTo(inspectionId) - } - } - - private fun initMap(savedInstanceState: Bundle?, inspectionId: String) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - //根据id查询详情 - val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - inspectMsgView.text = detailData.inspectionTitle startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime @@ -88,6 +72,26 @@ ) } + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + eventButton.setOnClickListener { + navigatePageTo(inspectionId) + } + } + + override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + + override fun setupTopBarLayout() { + QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 + ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "巡检记录" + } + + override fun observeRequestState() { + + } + private fun addMarker(point: LatLng, res: Int) { val markerOption = MarkerOptions() markerOption.position(point) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index bd1a521..8c3f0a7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -27,7 +28,7 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index 7e4f7e7..c129271 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.View import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R @@ -42,7 +43,7 @@ private var data = 0.0//泄露默认值 - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 6054986..488e38f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -25,7 +26,7 @@ leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 5dd7f86..32aad52 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath @@ -33,7 +34,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index b943b82..c086607 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import android.view.View import android.webkit.WebViewClient import androidx.core.content.ContextCompat @@ -23,7 +24,7 @@ leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { answerView.loadUrl("file:///android_asset/HelpCenterH5.html") answerView.settings.defaultTextEncodingName = "utf-8" answerView.webViewClient = WebViewClient() diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index 4700b47..d35baef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -31,7 +32,7 @@ titleView.text = "事件清单" } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index c882675..14d25d2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -2,9 +2,7 @@ import android.graphics.Color import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat -import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -20,6 +18,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.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -33,32 +32,28 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.single_activity_inspection_route.* -class InspectionRouteActivity : AppCompatActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap + private lateinit var id: String + private lateinit var viewModel: InspectionViewModel - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_inspection_route) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun setupTopBarLayout() { QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "巡检记录" - - val id = intent.getStringExtra(Constant.INTENT_PARAM)!! - - initMap(savedInstanceState, id) - - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { - navigatePageTo(id) - } } - private fun initMap(savedInstanceState: Bundle?, id: String) { + override fun initData(savedInstanceState: Bundle?) { + PageNavigationManager.addActivity(this) + + viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + id = intent.getStringExtra(Constant.INTENT_PARAM)!! + mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -66,15 +61,8 @@ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 //根据id查询详情 - val viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - viewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") - else -> LoadingDialogHub.dismiss() - } - } viewModel.getInspectDetail(id) - viewModel.inspectDetail.observe(this, Observer { + viewModel.inspectDetail.observe(this) { val detailData = it.data!! inspectMsgView.text = detailData.name @@ -109,7 +97,7 @@ //瞄点画线 val routeJson = detailData.routes!! if (routeJson.isEmpty()) { - return@Observer + return@observe } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] val type = object : TypeToken>() {}.type @@ -128,7 +116,23 @@ distanceView.text = distance } }) - }) + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + eventButton.setOnClickListener { + navigatePageTo(id) + } + } + + override fun observeRequestState() { + viewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } } private fun addMarker(point: LatLng, res: Int) { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index cac1d23..78c3b03 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.view import android.os.Build +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R @@ -33,7 +34,7 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index e2531b9..8cd4362 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -27,7 +28,7 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 4280e7e..86bbd96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -33,6 +29,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,14 +41,14 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -60,7 +57,6 @@ private val kTag = "HomePageFragment" private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var vibrator: Vibrator private lateinit var aMap: AMap private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 @@ -70,18 +66,18 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -93,8 +89,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -137,17 +133,13 @@ //设置按钮状态 if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -157,8 +149,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -168,8 +160,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -181,7 +173,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -205,9 +197,13 @@ } } + override fun observeRequestState() { + + } + private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -228,8 +224,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -246,10 +242,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -276,11 +272,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -293,12 +289,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -324,8 +320,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -334,9 +329,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -357,7 +350,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -366,25 +359,23 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { //断开连接 if (curConnectState) { BLEManager.disConnectDevice() } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() @@ -433,26 +424,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -473,9 +458,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -550,13 +533,11 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpen = SaveKeyValues.getValue( - LocaleConstant.SINGLE_OPEN_WARNING, false - ) as Boolean + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 @@ -608,35 +589,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 531cdad..8064acf 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -86,7 +87,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 1c61d14..2bc6465 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -103,7 +104,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index c001e9b..f15e87e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -3,6 +3,7 @@ import android.content.Context import android.content.Intent import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import com.bumptech.glide.Glide @@ -26,7 +27,7 @@ private lateinit var vibrator: Vibrator - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) val params = statusBarView.layoutParams as LinearLayout.LayoutParams diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4970ddf..4341296 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -20,7 +21,7 @@ private val gson by lazy { Gson() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index dea353f..6c2879e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -18,7 +19,7 @@ class InspectionEventActivity : KotlinBaseActivity() { - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 912eb4f..e1fe3a2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Color import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -11,6 +10,7 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -19,40 +19,24 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.single_activity_inspection_route.* -class InspectionRouteActivity : AppCompatActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap + private lateinit var inspectionId: String - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.single_activity_inspection_route) + override fun initData(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() - titleView.text = "巡检记录" + inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //根据id查询详情 + val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - val inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - initMap(savedInstanceState, inspectionId) - - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { - navigatePageTo(inspectionId) - } - } - - private fun initMap(savedInstanceState: Bundle?, inspectionId: String) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - //根据id查询详情 - val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - inspectMsgView.text = detailData.inspectionTitle startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime @@ -88,6 +72,26 @@ ) } + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + eventButton.setOnClickListener { + navigatePageTo(inspectionId) + } + } + + override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + + override fun setupTopBarLayout() { + QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 + ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "巡检记录" + } + + override fun observeRequestState() { + + } + private fun addMarker(point: LatLng, res: Int) { val markerOption = MarkerOptions() markerOption.position(point) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index bd1a521..8c3f0a7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -27,7 +28,7 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index 7e4f7e7..c129271 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.View import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R @@ -42,7 +43,7 @@ private var data = 0.0//泄露默认值 - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 6054986..488e38f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -25,7 +26,7 @@ leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 5dd7f86..32aad52 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath @@ -33,7 +34,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index b943b82..c086607 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import android.view.View import android.webkit.WebViewClient import androidx.core.content.ContextCompat @@ -23,7 +24,7 @@ leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { answerView.loadUrl("file:///android_asset/HelpCenterH5.html") answerView.settings.defaultTextEncodingName = "utf-8" answerView.webViewClient = WebViewClient() diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index 4700b47..d35baef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -31,7 +32,7 @@ titleView.text = "事件清单" } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index c882675..14d25d2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -2,9 +2,7 @@ import android.graphics.Color import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat -import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -20,6 +18,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.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -33,32 +32,28 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.single_activity_inspection_route.* -class InspectionRouteActivity : AppCompatActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap + private lateinit var id: String + private lateinit var viewModel: InspectionViewModel - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_inspection_route) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun setupTopBarLayout() { QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "巡检记录" - - val id = intent.getStringExtra(Constant.INTENT_PARAM)!! - - initMap(savedInstanceState, id) - - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { - navigatePageTo(id) - } } - private fun initMap(savedInstanceState: Bundle?, id: String) { + override fun initData(savedInstanceState: Bundle?) { + PageNavigationManager.addActivity(this) + + viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + id = intent.getStringExtra(Constant.INTENT_PARAM)!! + mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -66,15 +61,8 @@ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 //根据id查询详情 - val viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - viewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") - else -> LoadingDialogHub.dismiss() - } - } viewModel.getInspectDetail(id) - viewModel.inspectDetail.observe(this, Observer { + viewModel.inspectDetail.observe(this) { val detailData = it.data!! inspectMsgView.text = detailData.name @@ -109,7 +97,7 @@ //瞄点画线 val routeJson = detailData.routes!! if (routeJson.isEmpty()) { - return@Observer + return@observe } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] val type = object : TypeToken>() {}.type @@ -128,7 +116,23 @@ distanceView.text = distance } }) - }) + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + eventButton.setOnClickListener { + navigatePageTo(id) + } + } + + override fun observeRequestState() { + viewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } } private fun addMarker(point: LatLng, res: Int) { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index cac1d23..78c3b03 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.view import android.os.Build +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R @@ -33,7 +34,7 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index e2531b9..8cd4362 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -27,7 +28,7 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 2593394..91f7fe6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.util.Log @@ -90,7 +91,7 @@ } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 4280e7e..86bbd96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -33,6 +29,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,14 +41,14 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -60,7 +57,6 @@ private val kTag = "HomePageFragment" private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var vibrator: Vibrator private lateinit var aMap: AMap private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 @@ -70,18 +66,18 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -93,8 +89,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -137,17 +133,13 @@ //设置按钮状态 if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -157,8 +149,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -168,8 +160,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -181,7 +173,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -205,9 +197,13 @@ } } + override fun observeRequestState() { + + } + private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -228,8 +224,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -246,10 +242,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -276,11 +272,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -293,12 +289,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -324,8 +320,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -334,9 +329,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -357,7 +350,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -366,25 +359,23 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { //断开连接 if (curConnectState) { BLEManager.disConnectDevice() } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() @@ -433,26 +424,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -473,9 +458,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -550,13 +533,11 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpen = SaveKeyValues.getValue( - LocaleConstant.SINGLE_OPEN_WARNING, false - ) as Boolean + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 @@ -608,35 +589,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 531cdad..8064acf 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -86,7 +87,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 1c61d14..2bc6465 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -103,7 +104,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index c001e9b..f15e87e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -3,6 +3,7 @@ import android.content.Context import android.content.Intent import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import com.bumptech.glide.Glide @@ -26,7 +27,7 @@ private lateinit var vibrator: Vibrator - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) val params = statusBarView.layoutParams as LinearLayout.LayoutParams diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4970ddf..4341296 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -20,7 +21,7 @@ private val gson by lazy { Gson() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index dea353f..6c2879e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -18,7 +19,7 @@ class InspectionEventActivity : KotlinBaseActivity() { - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 912eb4f..e1fe3a2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Color import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -11,6 +10,7 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -19,40 +19,24 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.single_activity_inspection_route.* -class InspectionRouteActivity : AppCompatActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap + private lateinit var inspectionId: String - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.single_activity_inspection_route) + override fun initData(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() - titleView.text = "巡检记录" + inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //根据id查询详情 + val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - val inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - initMap(savedInstanceState, inspectionId) - - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { - navigatePageTo(inspectionId) - } - } - - private fun initMap(savedInstanceState: Bundle?, inspectionId: String) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - //根据id查询详情 - val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - inspectMsgView.text = detailData.inspectionTitle startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime @@ -88,6 +72,26 @@ ) } + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + eventButton.setOnClickListener { + navigatePageTo(inspectionId) + } + } + + override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + + override fun setupTopBarLayout() { + QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 + ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "巡检记录" + } + + override fun observeRequestState() { + + } + private fun addMarker(point: LatLng, res: Int) { val markerOption = MarkerOptions() markerOption.position(point) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index bd1a521..8c3f0a7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -27,7 +28,7 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index 7e4f7e7..c129271 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.View import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R @@ -42,7 +43,7 @@ private var data = 0.0//泄露默认值 - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 6054986..488e38f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -25,7 +26,7 @@ leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 5dd7f86..32aad52 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath @@ -33,7 +34,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index b943b82..c086607 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import android.view.View import android.webkit.WebViewClient import androidx.core.content.ContextCompat @@ -23,7 +24,7 @@ leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { answerView.loadUrl("file:///android_asset/HelpCenterH5.html") answerView.settings.defaultTextEncodingName = "utf-8" answerView.webViewClient = WebViewClient() diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index 4700b47..d35baef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -31,7 +32,7 @@ titleView.text = "事件清单" } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index c882675..14d25d2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -2,9 +2,7 @@ import android.graphics.Color import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat -import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -20,6 +18,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.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -33,32 +32,28 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.single_activity_inspection_route.* -class InspectionRouteActivity : AppCompatActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap + private lateinit var id: String + private lateinit var viewModel: InspectionViewModel - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_inspection_route) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun setupTopBarLayout() { QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "巡检记录" - - val id = intent.getStringExtra(Constant.INTENT_PARAM)!! - - initMap(savedInstanceState, id) - - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { - navigatePageTo(id) - } } - private fun initMap(savedInstanceState: Bundle?, id: String) { + override fun initData(savedInstanceState: Bundle?) { + PageNavigationManager.addActivity(this) + + viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + id = intent.getStringExtra(Constant.INTENT_PARAM)!! + mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -66,15 +61,8 @@ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 //根据id查询详情 - val viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - viewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") - else -> LoadingDialogHub.dismiss() - } - } viewModel.getInspectDetail(id) - viewModel.inspectDetail.observe(this, Observer { + viewModel.inspectDetail.observe(this) { val detailData = it.data!! inspectMsgView.text = detailData.name @@ -109,7 +97,7 @@ //瞄点画线 val routeJson = detailData.routes!! if (routeJson.isEmpty()) { - return@Observer + return@observe } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] val type = object : TypeToken>() {}.type @@ -128,7 +116,23 @@ distanceView.text = distance } }) - }) + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + eventButton.setOnClickListener { + navigatePageTo(id) + } + } + + override fun observeRequestState() { + viewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } } private fun addMarker(point: LatLng, res: Int) { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index cac1d23..78c3b03 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.view import android.os.Build +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R @@ -33,7 +34,7 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index e2531b9..8cd4362 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -27,7 +28,7 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 2593394..91f7fe6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.util.Log @@ -90,7 +91,7 @@ } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt index 0507ade..9e1dc34 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import android.os.CountDownTimer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.utils.LocaleConstant @@ -23,7 +24,7 @@ } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS diff --git a/app/build.gradle b/app/build.gradle index 2bdfa0a..2c08ed5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,8 +21,8 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1001 - versionName "1.0.0.1" + versionCode 1002 + versionName "1.0.0.2" } buildTypes { @@ -74,7 +74,7 @@ dependencies { //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt index 92c1f59..f3cb04f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 6c12783..177f684 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -40,6 +36,7 @@ import com.casic.birmm.inspect.vm.EventViewModel import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,17 +49,16 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.fragment_map_inspect.* import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "HomePageFragment" private val gson by lazy { Gson() } private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var userData: UserInfoModel.DataModel private lateinit var vibrator: Vibrator private lateinit var eventViewModel: EventViewModel @@ -76,67 +72,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator - eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] - eventViewModel.addEventResult.observe(viewLifecycleOwner) { - if (it.code == 200) { - isGeneratingTask = false - alarmCount = 0 - "保存成功".show(requireContext()) - } - } + weakReferenceHandler = WeakReferenceHandler(this) - inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - inspectionViewModel.loadState.observe(viewLifecycleOwner) { - when (it) { - is LoadState.Loading -> { - LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") - } - is LoadState.Success -> { - //断开连接 - if (curConnectState) { - BLEManager.disConnectDevice() - } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - - //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - - //清除缓存 - blueToothBeans.clear() - latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) - - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) - } - else -> LoadingDialogHub.dismiss() - } - } - + //User val userModelJson = SaveKeyValues.getValue(LocaleConstant.USER_OBJECT, "") as String userData = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! - weakReferenceHandler = WeakReferenceHandler(this) + //按钮默认状态 + if (newInspectionModel == null) { + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + } + //BLE if (BLEManager.initBLE(requireContext())) { if (!BLEManager.isBluetoothEnable()) { BLEManager.openBluetooth(false) @@ -145,8 +106,22 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + //VM + eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] + inspectionViewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + + //Observer + eventViewModel.addEventResult.observe(this) { + if (it.code == 200) { + isGeneratingTask = false + alarmCount = 0 + "保存成功".show(requireContext()) + } + } + + //Map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -186,20 +161,45 @@ } } }) - - //设置按钮状态 - if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true - } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun observeRequestState() { + inspectionViewModel.loadState.observe(viewLifecycleOwner) { + when (it) { + is LoadState.Loading -> { + LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") + } + is LoadState.Success -> { + //断开连接 + if (curConnectState) { + BLEManager.disConnectDevice() + } + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + + //按钮状态 + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true + + //清除缓存 + blueToothBeans.clear() + latLngs.clear() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + + LoadingDialogHub.dismiss() + "巡检记录保存成功".show(requireContext()) + } + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -209,8 +209,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -220,8 +220,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -233,7 +233,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -259,7 +259,7 @@ private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -280,8 +280,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -298,10 +298,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -328,11 +328,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -345,12 +345,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -376,8 +376,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -386,9 +385,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -409,7 +406,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -418,9 +415,7 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } return true @@ -461,26 +456,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -501,9 +490,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -572,20 +559,20 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 SoundPoolHelper.playSound(requireContext(), R.raw.alarm) vibrator.vibrate(1000) - val isAutoRecord = - SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - if (isAutoRecord) { + val isRecord = SaveKeyValues.getValue( + LocaleConstant.SINGLE_AUTO_RECORD, false + ) as Boolean + if (isRecord) { //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { @@ -625,35 +612,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt index d134e0b..8d50e4a 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -36,7 +37,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index 235ce84..f914288 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.fragment +import android.os.Bundle import android.os.Handler import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -34,7 +35,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt index 4078afe..5506ced 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/SettingPageFragment.kt @@ -4,6 +4,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider @@ -59,7 +60,7 @@ statusBarView.requestLayout() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) { diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt index a6498c8..a6881da 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/DataLogPageFragment.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.single.fragment import android.graphics.Color +import android.os.Bundle import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R @@ -19,7 +20,7 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 topTabLayout.setupWithViewPager(viewPager) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 4280e7e..86bbd96 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -11,11 +11,7 @@ import android.os.Message import android.os.Vibrator import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup import android.widget.LinearLayout -import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap @@ -33,6 +29,7 @@ import com.casic.birmm.inspect.model.NewInspectionModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* +import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,14 +41,14 @@ import com.pengxh.kt.lite.widget.dialog.AlertInputDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet -import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : Fragment(), Handler.Callback { +class HomePageFragment : KotlinBaseFragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -60,7 +57,6 @@ private val kTag = "HomePageFragment" private val blueToothBeans: MutableList = ArrayList()//搜索展示列表 private val latLngs = LinkedList() - private lateinit var homeView: View private lateinit var vibrator: Vibrator private lateinit var aMap: AMap private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 @@ -70,18 +66,18 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) + override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun setupTopBarLayout() { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + val params = statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - homeView.statusBarView.requestLayout() + statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + statusBarView.requestLayout() + } + override fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -93,8 +89,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + mapView.onCreate(savedInstanceState) + aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -137,17 +133,13 @@ //设置按钮状态 if (newInspectionModel == null) { - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true } - - initEvent() - - return homeView } - private fun initEvent() { - homeView.addInspectionButton.setOnClickListener { + override fun initEvent() { + addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : @@ -157,8 +149,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - homeView.inspectNameView.text = value - homeView.inspectTimeView.text = startTime + inspectNameView.text = value + inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -168,8 +160,8 @@ ) //按钮状态 - homeView.stopInspectButton.isEnabled = true - homeView.addInspectionButton.isEnabled = false + stopInspectButton.isEnabled = true + addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -181,7 +173,7 @@ //地图左边三个按钮事件 menuButtonEvent() - homeView.newEventButton.setOnClickListener { + newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -205,9 +197,13 @@ } } + override fun observeRequestState() { + + } + private fun menuButtonEvent() { //结束巡检 - homeView.stopInspectButton.setOnClickListener { + stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -228,8 +224,8 @@ //蓝牙按钮 if (isBluetoothOn) { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - homeView.bluetoothButton.setOnClickListener { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -246,10 +242,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -276,11 +272,11 @@ } } } else { - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - homeView.refreshButton.setOnClickListener { + refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -293,12 +289,12 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } LocaleConstant.DISCOVERY_DEVICE -> { @@ -324,8 +320,7 @@ if (blueToothBeans.size == 0) { "无可用设备,请确认设备是否已经开启".show(requireContext()) } else { - val sheetBuilder = - QMUIBottomSheet.BottomListSheetBuilder(requireContext()) + val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(requireContext()) sheetBuilder.setTitle("请选择要连接的设备") blueToothBeans.forEach { sheetBuilder.addItem(it.bluetoothDevice.name) @@ -334,9 +329,7 @@ .setOnSheetItemClickListener { dialog, _, position, _ -> dialog.dismiss() //连接点击的设备 - startConnectDevice( - blueToothBeans[position].bluetoothDevice - ) + startConnectDevice(blueToothBeans[position].bluetoothDevice) }.build().show() } } @@ -357,7 +350,7 @@ if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { @@ -366,25 +359,23 @@ "甲烷数据格式异常".show(requireContext()) } } - LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败-> ${msg.obj as String}" - ) + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { //断开连接 if (curConnectState) { BLEManager.disConnectDevice() } - homeView.deviceStatusView.text = "设备编号:未连接" - homeView.inspectNameView.text = "" - homeView.inspectTimeView.text = "" - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + inspectNameView.text = "" + inspectTimeView.text = "" + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" //按钮状态 - homeView.stopInspectButton.isEnabled = false - homeView.addInspectionButton.isEnabled = true + stopInspectButton.isEnabled = false + addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() @@ -433,26 +424,20 @@ } - override fun onDisConnectSuccess( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onDisConnectSuccess(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.DISCONNECT_SUCCESS message.obj = status weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoverySucceed( - bluetoothGatt: BluetoothGatt?, status: Int - ) { + override fun onServiceDiscoverySucceed(bluetoothGatt: BluetoothGatt?, status: Int) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_SUCCESS weakReferenceHandler.sendMessage(message) } - override fun onServiceDiscoveryFailed( - bluetoothGatt: BluetoothGatt?, msg: String? - ) { + override fun onServiceDiscoveryFailed(bluetoothGatt: BluetoothGatt?, msg: String?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.CONNECT_FAILURE weakReferenceHandler.sendMessage(message) @@ -473,9 +458,7 @@ weakReferenceHandler.sendMessage(message) } - override fun onWriteSuccess( - bluetoothGatt: BluetoothGatt?, msg: ByteArray? - ) { + override fun onWriteSuccess(bluetoothGatt: BluetoothGatt?, msg: ByteArray?) { val message = weakReferenceHandler.obtainMessage() message.what = LocaleConstant.SEND_SUCCESS message.obj = msg @@ -550,13 +533,11 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() + currentValueView.text = dataModel.potency.toString() + settingsValueView.text = dataModel.alarmValue.toString() + maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 - val isOpen = SaveKeyValues.getValue( - LocaleConstant.SINGLE_OPEN_WARNING, false - ) as Boolean + val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { if (dataModel.potency >= dataModel.alarmValue) { //当前值大于设置值,需要报警 @@ -608,35 +589,35 @@ override fun onResume() { super.onResume() - homeView.mapView.onResume() + mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String if (code == "") { - homeView.deviceStatusView.text = "设备编号: 未连接" + deviceStatusView.text = "设备编号: 未连接" } else { - homeView.deviceStatusView.text = "设备编号: $code" + deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - homeView.inspectNameView.text = newInspectionModel!!.name - homeView.inspectTimeView.text = newInspectionModel!!.startTime + inspectNameView.text = newInspectionModel!!.name + inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - homeView.mapView.onPause() + mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + mapView.onDestroy() LocationHub.get.stopLocation() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt index 531cdad..8064acf 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryEventFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -86,7 +87,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt index 1c61d14..2bc6465 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/QueryInspectionFragment.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.fragment +import android.os.Bundle import android.os.Handler import android.os.Message import androidx.lifecycle.lifecycleScope @@ -103,7 +104,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) } diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt index c001e9b..f15e87e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/SettingPageFragment.kt @@ -3,6 +3,7 @@ import android.content.Context import android.content.Intent import android.net.Uri +import android.os.Bundle import android.os.Vibrator import android.widget.LinearLayout import com.bumptech.glide.Glide @@ -26,7 +27,7 @@ private lateinit var vibrator: Vibrator - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(requireContext()) val params = statusBarView.layoutParams as LinearLayout.LayoutParams diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt index 4970ddf..4341296 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -20,7 +21,7 @@ private val gson by lazy { Gson() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt index dea353f..6c2879e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.TaskEventLocalBean @@ -18,7 +19,7 @@ class InspectionEventActivity : KotlinBaseActivity() { - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.get.queryEventByInspection(id) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt index 912eb4f..e1fe3a2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/InspectionRouteActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Color import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -11,6 +10,7 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -19,40 +19,24 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.single_activity_inspection_route.* -class InspectionRouteActivity : AppCompatActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private lateinit var aMap: AMap + private lateinit var inspectionId: String - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.single_activity_inspection_route) + override fun initData(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() - titleView.text = "巡检记录" + inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! + //根据id查询详情 + val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - val inspectionId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - initMap(savedInstanceState, inspectionId) - - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { - navigatePageTo(inspectionId) - } - } - - private fun initMap(savedInstanceState: Bundle?, inspectionId: String) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 - //根据id查询详情 - val detailData = DataBaseManager.get.queryInspectDetailById(inspectionId) - inspectMsgView.text = detailData.inspectionTitle startTimeView.text = detailData.startTime endTimeView.text = detailData.endTime @@ -88,6 +72,26 @@ ) } + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + eventButton.setOnClickListener { + navigatePageTo(inspectionId) + } + } + + override fun initLayoutView(): Int = R.layout.single_activity_inspection_route + + override fun setupTopBarLayout() { + QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 + ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "巡检记录" + } + + override fun observeRequestState() { + + } + private fun addMarker(point: LatLng, res: Int) { val markerOption = MarkerOptions() markerOption.position(point) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index bd1a521..8c3f0a7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.single.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -27,7 +28,7 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt index 7e4f7e7..c129271 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/NewEventActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.View import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R @@ -42,7 +43,7 @@ private var data = 0.0//泄露默认值 - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! isWarning = args[0].toString() == "0" inspectionId = args[1] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt index 6054986..488e38f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -25,7 +26,7 @@ leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt index 5dd7f86..32aad52 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import androidx.core.content.ContextCompat import com.casic.birmm.inspect.R import com.casic.birmm.inspect.extensions.combineImagePath @@ -33,7 +34,7 @@ } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val args = intent.getStringExtra(Constant.INTENT_PARAM)!! val model = gson.fromJson( args, object : TypeToken() {}.type diff --git a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt index b943b82..c086607 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/HelpCenterActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import android.view.View import android.webkit.WebViewClient import androidx.core.content.ContextCompat @@ -23,7 +24,7 @@ leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { answerView.loadUrl("file:///android_asset/HelpCenterH5.html") answerView.settings.defaultTextEncodingName = "utf-8" answerView.webViewClient = WebViewClient() diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt index 4700b47..d35baef 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionEventActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.birmm.inspect.R @@ -31,7 +32,7 @@ titleView.text = "事件清单" } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index c882675..14d25d2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -2,9 +2,7 @@ import android.graphics.Color import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat -import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -20,6 +18,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.extensions.navigatePageTo import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -33,32 +32,28 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.single_activity_inspection_route.* -class InspectionRouteActivity : AppCompatActivity() { +class InspectionRouteActivity : KotlinBaseActivity() { private val gson by lazy { Gson() } private lateinit var aMap: AMap + private lateinit var id: String + private lateinit var viewModel: InspectionViewModel - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_inspection_route) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_inspection_route + override fun setupTopBarLayout() { QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.themeColor)) ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "巡检记录" - - val id = intent.getStringExtra(Constant.INTENT_PARAM)!! - - initMap(savedInstanceState, id) - - leftBackView.setOnClickListener { this.finish() } - eventButton.setOnClickListener { - navigatePageTo(id) - } } - private fun initMap(savedInstanceState: Bundle?, id: String) { + override fun initData(savedInstanceState: Bundle?) { + PageNavigationManager.addActivity(this) + + viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] + id = intent.getStringExtra(Constant.INTENT_PARAM)!! + mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -66,15 +61,8 @@ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 //根据id查询详情 - val viewModel = ViewModelProvider(this)[InspectionViewModel::class.java] - viewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") - else -> LoadingDialogHub.dismiss() - } - } viewModel.getInspectDetail(id) - viewModel.inspectDetail.observe(this, Observer { + viewModel.inspectDetail.observe(this) { val detailData = it.data!! inspectMsgView.text = detailData.name @@ -109,7 +97,7 @@ //瞄点画线 val routeJson = detailData.routes!! if (routeJson.isEmpty()) { - return@Observer + return@observe } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] val type = object : TypeToken>() {}.type @@ -128,7 +116,23 @@ distanceView.text = distance } }) - }) + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + eventButton.setOnClickListener { + navigatePageTo(id) + } + } + + override fun observeRequestState() { + viewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } } private fun addMarker(point: LatLng, res: Int) { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt index cac1d23..78c3b03 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/LoginActivity.kt @@ -1,6 +1,7 @@ package com.casic.birmm.inspect.view import android.os.Build +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.birmm.inspect.R @@ -33,7 +34,7 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { //低端机改用Glide加载图片 Glide.with(this).load(R.mipmap.ic_login_bg).into(backgroundView) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index e2531b9..8cd4362 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -27,7 +28,7 @@ fragmentPages.add(SettingPageFragment()) } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { MapsInitializer.updatePrivacyShow(this, true, true) MapsInitializer.updatePrivacyAgree(this, true) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index 2593394..91f7fe6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.util.Log @@ -90,7 +91,7 @@ } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt index 0507ade..9e1dc34 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/PermissionActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import android.os.CountDownTimer import com.casic.birmm.inspect.R import com.casic.birmm.inspect.utils.LocaleConstant @@ -23,7 +24,7 @@ } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS diff --git a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt index 92ea1f6..c99a8bf 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/UserDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.view +import android.os.Bundle import android.view.View import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider @@ -26,7 +27,7 @@ leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.getUserInfo() userViewModel.userInfo.observe(this) {