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 b60eafe..e2b347b 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 @@ -92,9 +92,9 @@ eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] eventViewModel.addEventResult.observe(viewLifecycleOwner) { if (it.code == 200) { - "保存成功".show(requireContext()) isGeneratingTask = false alarmCount = 0 + "保存成功".show(requireContext()) } } @@ -105,11 +105,26 @@ LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } is LoadState.Success -> { - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) + //断开连接 + 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() } @@ -153,7 +168,6 @@ val longitude = aMapLocation.longitude.toString() val latitude = aMapLocation.latitude.toString() - Log.d(kTag, "startInspection => [${longitude},${latitude}]") val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) //移动到指定经纬度 @@ -184,6 +198,12 @@ } }) + //设置按钮状态 + if (newInspectionModel == null) { + homeView.stopInspectButton.isEnabled = false + homeView.addInspectionButton.isEnabled = true + } + initEvent() return homeView @@ -209,6 +229,10 @@ 0.0, 0.0, 0.0, 0.0, ArrayList(), userData.name!! ) + + //按钮状态 + homeView.stopInspectButton.isEnabled = true + homeView.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -270,13 +294,28 @@ homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) homeView.bluetoothButton.setOnClickListener { if (curConnectState) { - //断开连接 - BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" - "设备已断开连接".show(requireContext()) + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定断开设备吗?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + //断开连接 + BLEManager.disConnectDevice() + homeView.currentValueView.text = "--" + homeView.settingsValueView.text = "--" + homeView.maxValueView.text = "--" + homeView.deviceStatusView.text = "设备编号:未连接" + "设备已断开连接".show(requireContext()) + } + }).build().show() } else { //搜索蓝牙 if (BLEManager.isDiscovery()) {//当前正在搜索设备... @@ -371,14 +410,27 @@ } LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( - kTag, "发送成功->sendSuccessBuffer: ${(msg.obj as ByteArray).toList()}" + kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) LocaleConstant.SEND_FAILURE -> Log.d( - kTag, "发送失败->sendFailBuffer: ${(msg.obj as ByteArray).toList()}" + kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) - LocaleConstant.RECEIVE_SUCCESS -> parseMethaneData(msg.obj as ByteArray) + LocaleConstant.RECEIVE_SUCCESS -> { + val bytes = msg.obj as ByteArray + 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()}" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + } else if (bytes.size == 14) { + handleMethaneData(bytes) + } else { + "甲烷数据格式异常".show(requireContext()) + } + } LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败->receiveString: ${msg.obj as String}" + kTag, "接收失败-> ${msg.obj as String}" ) LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } @@ -524,43 +576,32 @@ * [-86, 0, 0, 0, 0, 0, 0, 100, 0, 0, 4, 33, 13, 10] * * */ - private fun parseMethaneData(bytes: ByteArray) { - if ((bytes[0].toInt() and 0xFF) == 51 && bytes.size >= 14) { - //解析deviceCode - //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) - } else if (bytes.size == 14) { - val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() - //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { - 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) { - //如果连续超过10个报警,自动生成报警事件 - alarmCount++ - if (alarmCount >= 10) { - generateAlarmTask(dataModel.maxPotency) - } + 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() + //判断是否需要报警 + val isOpenWarning = + SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpenWarning) { + 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) { + //如果连续超过10个报警,自动生成报警事件 + alarmCount++ + if (alarmCount >= 10) { + generateAlarmTask(dataModel.maxPotency) } - } else { - //当测量值小于设置值,报警还未结束,需要停止响铃 - SoundPoolHelper.playSound(requireContext(), 0) } } else { - Log.d(kTag, "报警开关未打开,不处理") + //当测量值小于设置值,报警还未结束,需要停止响铃 + SoundPoolHelper.playSound(requireContext(), 0) } - } else { - Log.d(kTag, "未知返回值,无法解析") } } @@ -591,6 +632,19 @@ override fun onResume() { super.onResume() homeView.mapView.onResume() + val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String + if (code == "") { + homeView.deviceStatusView.text = "设备编号: 未连接" + } else { + homeView.deviceStatusView.text = "设备编号: $code" + } + + //设置标题和时间 + if (newInspectionModel == null) { + return + } + homeView.inspectNameView.text = newInspectionModel!!.name + homeView.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { 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 b60eafe..e2b347b 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 @@ -92,9 +92,9 @@ eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] eventViewModel.addEventResult.observe(viewLifecycleOwner) { if (it.code == 200) { - "保存成功".show(requireContext()) isGeneratingTask = false alarmCount = 0 + "保存成功".show(requireContext()) } } @@ -105,11 +105,26 @@ LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } is LoadState.Success -> { - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) + //断开连接 + 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() } @@ -153,7 +168,6 @@ val longitude = aMapLocation.longitude.toString() val latitude = aMapLocation.latitude.toString() - Log.d(kTag, "startInspection => [${longitude},${latitude}]") val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) //移动到指定经纬度 @@ -184,6 +198,12 @@ } }) + //设置按钮状态 + if (newInspectionModel == null) { + homeView.stopInspectButton.isEnabled = false + homeView.addInspectionButton.isEnabled = true + } + initEvent() return homeView @@ -209,6 +229,10 @@ 0.0, 0.0, 0.0, 0.0, ArrayList(), userData.name!! ) + + //按钮状态 + homeView.stopInspectButton.isEnabled = true + homeView.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -270,13 +294,28 @@ homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) homeView.bluetoothButton.setOnClickListener { if (curConnectState) { - //断开连接 - BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" - "设备已断开连接".show(requireContext()) + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定断开设备吗?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + //断开连接 + BLEManager.disConnectDevice() + homeView.currentValueView.text = "--" + homeView.settingsValueView.text = "--" + homeView.maxValueView.text = "--" + homeView.deviceStatusView.text = "设备编号:未连接" + "设备已断开连接".show(requireContext()) + } + }).build().show() } else { //搜索蓝牙 if (BLEManager.isDiscovery()) {//当前正在搜索设备... @@ -371,14 +410,27 @@ } LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( - kTag, "发送成功->sendSuccessBuffer: ${(msg.obj as ByteArray).toList()}" + kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) LocaleConstant.SEND_FAILURE -> Log.d( - kTag, "发送失败->sendFailBuffer: ${(msg.obj as ByteArray).toList()}" + kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) - LocaleConstant.RECEIVE_SUCCESS -> parseMethaneData(msg.obj as ByteArray) + LocaleConstant.RECEIVE_SUCCESS -> { + val bytes = msg.obj as ByteArray + 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()}" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + } else if (bytes.size == 14) { + handleMethaneData(bytes) + } else { + "甲烷数据格式异常".show(requireContext()) + } + } LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败->receiveString: ${msg.obj as String}" + kTag, "接收失败-> ${msg.obj as String}" ) LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } @@ -524,43 +576,32 @@ * [-86, 0, 0, 0, 0, 0, 0, 100, 0, 0, 4, 33, 13, 10] * * */ - private fun parseMethaneData(bytes: ByteArray) { - if ((bytes[0].toInt() and 0xFF) == 51 && bytes.size >= 14) { - //解析deviceCode - //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) - } else if (bytes.size == 14) { - val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() - //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { - 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) { - //如果连续超过10个报警,自动生成报警事件 - alarmCount++ - if (alarmCount >= 10) { - generateAlarmTask(dataModel.maxPotency) - } + 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() + //判断是否需要报警 + val isOpenWarning = + SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpenWarning) { + 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) { + //如果连续超过10个报警,自动生成报警事件 + alarmCount++ + if (alarmCount >= 10) { + generateAlarmTask(dataModel.maxPotency) } - } else { - //当测量值小于设置值,报警还未结束,需要停止响铃 - SoundPoolHelper.playSound(requireContext(), 0) } } else { - Log.d(kTag, "报警开关未打开,不处理") + //当测量值小于设置值,报警还未结束,需要停止响铃 + SoundPoolHelper.playSound(requireContext(), 0) } - } else { - Log.d(kTag, "未知返回值,无法解析") } } @@ -591,6 +632,19 @@ override fun onResume() { super.onResume() homeView.mapView.onResume() + val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String + if (code == "") { + homeView.deviceStatusView.text = "设备编号: 未连接" + } else { + homeView.deviceStatusView.text = "设备编号: $code" + } + + //设置标题和时间 + if (newInspectionModel == null) { + return + } + homeView.inspectNameView.text = newInspectionModel!!.name + homeView.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { 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 2f81ffa..0e0d177 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 @@ -33,7 +33,6 @@ import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* -import com.google.gson.Gson import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,7 +51,6 @@ class HomePageFragment : Fragment(), 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 @@ -114,7 +112,6 @@ val longitude = aMapLocation.longitude.toString() val latitude = aMapLocation.latitude.toString() - Log.d(kTag, "startInspection => [${longitude},${latitude}]") val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) //移动到指定经纬度 @@ -145,6 +142,12 @@ } }) + //设置按钮状态 + if (newInspectionModel == null) { + homeView.stopInspectButton.isEnabled = false + homeView.addInspectionButton.isEnabled = true + } + initEvent() return homeView @@ -170,6 +173,10 @@ 0.0, 0.0, 0.0, 0.0, ArrayList(), "超级管理员" ) + + //按钮状态 + homeView.stopInspectButton.isEnabled = true + homeView.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -231,13 +238,28 @@ homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) homeView.bluetoothButton.setOnClickListener { if (curConnectState) { - //断开连接 - BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" - "设备已断开连接".show(requireContext()) + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定断开设备吗?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + //断开连接 + BLEManager.disConnectDevice() + homeView.currentValueView.text = "--" + homeView.settingsValueView.text = "--" + homeView.maxValueView.text = "--" + homeView.deviceStatusView.text = "设备编号:未连接" + "设备已断开连接".show(requireContext()) + } + }).build().show() } else { //搜索蓝牙 if (BLEManager.isDiscovery()) {//当前正在搜索设备... @@ -332,14 +354,27 @@ } LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( - kTag, "发送成功->sendSuccessBuffer: ${(msg.obj as ByteArray).toList()}" + kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) LocaleConstant.SEND_FAILURE -> Log.d( - kTag, "发送失败->sendFailBuffer: ${(msg.obj as ByteArray).toList()}" + kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) - LocaleConstant.RECEIVE_SUCCESS -> parseMethaneData(msg.obj as ByteArray) + LocaleConstant.RECEIVE_SUCCESS -> { + val bytes = msg.obj as ByteArray + 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()}" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + } else if (bytes.size == 14) { + handleMethaneData(bytes) + } else { + "甲烷数据格式异常".show(requireContext()) + } + } LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败->receiveString: ${msg.obj as String}" + kTag, "接收失败-> ${msg.obj as String}" ) LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } @@ -475,11 +510,26 @@ routes = newInspectionModel!!.routes, object : OnDataAddListener { override fun onAddSuccess() { - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) + //断开连接 + 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()) } } ) @@ -488,49 +538,38 @@ /** * 解析甲烷数据 * 1、设备编号 - * [51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10, -86, 1, 32, -39, -105, 1] + * [51, 51, 50, 48, 50, 50, 48, 49, 48, 48, 49, 50, 13, 10, -86, 0, 0, 0, 0, 0] * * 2、甲烷浓度(长度:14字节) * [-86, 0, 0, 0, 0, 0, 0, 100, 0, 0, 4, 33, 13, 10] * * */ - private fun parseMethaneData(bytes: ByteArray) { - if ((bytes[0].toInt() and 0xFF) == 51 && bytes.size >= 14) { - //解析deviceCode - //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) - } else if (bytes.size == 14) { - val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() - //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { - 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) { - //如果连续超过10个报警,自动生成报警事件 - alarmCount++ - if (alarmCount >= 10) { - generateAlarmTask(dataModel.maxPotency) - } + 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() + //判断是否需要报警 + val isOpenWarning = + SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpenWarning) { + 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) { + //如果连续超过10个报警,自动生成报警事件 + alarmCount++ + if (alarmCount >= 10) { + generateAlarmTask(dataModel.maxPotency) } - } else { - //当测量值小于设置值,报警还未结束,需要停止响铃 - SoundPoolHelper.playSound(requireContext(), 0) } } else { - Log.d(kTag, "报警开关未打开,不处理") + //当测量值小于设置值,报警还未结束,需要停止响铃 + SoundPoolHelper.playSound(requireContext(), 0) } - } else { - Log.d(kTag, "未知返回值,无法解析") } } @@ -553,9 +592,9 @@ images = "", description = "自动报警记录" ) - "保存成功".show(requireContext()) isGeneratingTask = false alarmCount = 0 + "保存成功".show(requireContext()) } /***以下是地图生命周期管理************************************************************************/ @@ -563,6 +602,19 @@ override fun onResume() { super.onResume() homeView.mapView.onResume() + val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String + if (code == "") { + homeView.deviceStatusView.text = "设备编号: 未连接" + } else { + homeView.deviceStatusView.text = "设备编号: $code" + } + + //设置标题和时间 + if (newInspectionModel == null) { + return + } + homeView.inspectNameView.text = newInspectionModel!!.name + homeView.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { 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 b60eafe..e2b347b 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 @@ -92,9 +92,9 @@ eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] eventViewModel.addEventResult.observe(viewLifecycleOwner) { if (it.code == 200) { - "保存成功".show(requireContext()) isGeneratingTask = false alarmCount = 0 + "保存成功".show(requireContext()) } } @@ -105,11 +105,26 @@ LoadingDialogHub.show(requireActivity(), "保存中,请稍后...") } is LoadState.Success -> { - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) + //断开连接 + 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() } @@ -153,7 +168,6 @@ val longitude = aMapLocation.longitude.toString() val latitude = aMapLocation.latitude.toString() - Log.d(kTag, "startInspection => [${longitude},${latitude}]") val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) //移动到指定经纬度 @@ -184,6 +198,12 @@ } }) + //设置按钮状态 + if (newInspectionModel == null) { + homeView.stopInspectButton.isEnabled = false + homeView.addInspectionButton.isEnabled = true + } + initEvent() return homeView @@ -209,6 +229,10 @@ 0.0, 0.0, 0.0, 0.0, ArrayList(), userData.name!! ) + + //按钮状态 + homeView.stopInspectButton.isEnabled = true + homeView.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -270,13 +294,28 @@ homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) homeView.bluetoothButton.setOnClickListener { if (curConnectState) { - //断开连接 - BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" - "设备已断开连接".show(requireContext()) + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定断开设备吗?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + //断开连接 + BLEManager.disConnectDevice() + homeView.currentValueView.text = "--" + homeView.settingsValueView.text = "--" + homeView.maxValueView.text = "--" + homeView.deviceStatusView.text = "设备编号:未连接" + "设备已断开连接".show(requireContext()) + } + }).build().show() } else { //搜索蓝牙 if (BLEManager.isDiscovery()) {//当前正在搜索设备... @@ -371,14 +410,27 @@ } LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( - kTag, "发送成功->sendSuccessBuffer: ${(msg.obj as ByteArray).toList()}" + kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) LocaleConstant.SEND_FAILURE -> Log.d( - kTag, "发送失败->sendFailBuffer: ${(msg.obj as ByteArray).toList()}" + kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) - LocaleConstant.RECEIVE_SUCCESS -> parseMethaneData(msg.obj as ByteArray) + LocaleConstant.RECEIVE_SUCCESS -> { + val bytes = msg.obj as ByteArray + 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()}" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + } else if (bytes.size == 14) { + handleMethaneData(bytes) + } else { + "甲烷数据格式异常".show(requireContext()) + } + } LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败->receiveString: ${msg.obj as String}" + kTag, "接收失败-> ${msg.obj as String}" ) LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } @@ -524,43 +576,32 @@ * [-86, 0, 0, 0, 0, 0, 0, 100, 0, 0, 4, 33, 13, 10] * * */ - private fun parseMethaneData(bytes: ByteArray) { - if ((bytes[0].toInt() and 0xFF) == 51 && bytes.size >= 14) { - //解析deviceCode - //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) - } else if (bytes.size == 14) { - val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() - //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { - 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) { - //如果连续超过10个报警,自动生成报警事件 - alarmCount++ - if (alarmCount >= 10) { - generateAlarmTask(dataModel.maxPotency) - } + 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() + //判断是否需要报警 + val isOpenWarning = + SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpenWarning) { + 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) { + //如果连续超过10个报警,自动生成报警事件 + alarmCount++ + if (alarmCount >= 10) { + generateAlarmTask(dataModel.maxPotency) } - } else { - //当测量值小于设置值,报警还未结束,需要停止响铃 - SoundPoolHelper.playSound(requireContext(), 0) } } else { - Log.d(kTag, "报警开关未打开,不处理") + //当测量值小于设置值,报警还未结束,需要停止响铃 + SoundPoolHelper.playSound(requireContext(), 0) } - } else { - Log.d(kTag, "未知返回值,无法解析") } } @@ -591,6 +632,19 @@ override fun onResume() { super.onResume() homeView.mapView.onResume() + val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String + if (code == "") { + homeView.deviceStatusView.text = "设备编号: 未连接" + } else { + homeView.deviceStatusView.text = "设备编号: $code" + } + + //设置标题和时间 + if (newInspectionModel == null) { + return + } + homeView.inspectNameView.text = newInspectionModel!!.name + homeView.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { 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 2f81ffa..0e0d177 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 @@ -33,7 +33,6 @@ import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* -import com.google.gson.Gson import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -52,7 +51,6 @@ class HomePageFragment : Fragment(), 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 @@ -114,7 +112,6 @@ val longitude = aMapLocation.longitude.toString() val latitude = aMapLocation.latitude.toString() - Log.d(kTag, "startInspection => [${longitude},${latitude}]") val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) //移动到指定经纬度 @@ -145,6 +142,12 @@ } }) + //设置按钮状态 + if (newInspectionModel == null) { + homeView.stopInspectButton.isEnabled = false + homeView.addInspectionButton.isEnabled = true + } + initEvent() return homeView @@ -170,6 +173,10 @@ 0.0, 0.0, 0.0, 0.0, ArrayList(), "超级管理员" ) + + //按钮状态 + homeView.stopInspectButton.isEnabled = true + homeView.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -231,13 +238,28 @@ homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) homeView.bluetoothButton.setOnClickListener { if (curConnectState) { - //断开连接 - BLEManager.disConnectDevice() - homeView.currentValueView.text = "--" - homeView.settingsValueView.text = "--" - homeView.maxValueView.text = "--" - homeView.deviceStatusView.text = "设备编号:未连接" - "设备已断开连接".show(requireContext()) + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("确定断开设备吗?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + //断开连接 + BLEManager.disConnectDevice() + homeView.currentValueView.text = "--" + homeView.settingsValueView.text = "--" + homeView.maxValueView.text = "--" + homeView.deviceStatusView.text = "设备编号:未连接" + "设备已断开连接".show(requireContext()) + } + }).build().show() } else { //搜索蓝牙 if (BLEManager.isDiscovery()) {//当前正在搜索设备... @@ -332,14 +354,27 @@ } LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( - kTag, "发送成功->sendSuccessBuffer: ${(msg.obj as ByteArray).toList()}" + kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) LocaleConstant.SEND_FAILURE -> Log.d( - kTag, "发送失败->sendFailBuffer: ${(msg.obj as ByteArray).toList()}" + kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) - LocaleConstant.RECEIVE_SUCCESS -> parseMethaneData(msg.obj as ByteArray) + LocaleConstant.RECEIVE_SUCCESS -> { + val bytes = msg.obj as ByteArray + 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()}" + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) + BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) + } else if (bytes.size == 14) { + handleMethaneData(bytes) + } else { + "甲烷数据格式异常".show(requireContext()) + } + } LocaleConstant.RECEIVE_FAILURE -> Log.d( - kTag, "接收失败->receiveString: ${msg.obj as String}" + kTag, "接收失败-> ${msg.obj as String}" ) LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false } @@ -475,11 +510,26 @@ routes = newInspectionModel!!.routes, object : OnDataAddListener { override fun onAddSuccess() { - LoadingDialogHub.dismiss() - "巡检记录保存成功".show(requireContext()) + //断开连接 + 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()) } } ) @@ -488,49 +538,38 @@ /** * 解析甲烷数据 * 1、设备编号 - * [51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10, -86, 1, 32, -39, -105, 1] + * [51, 51, 50, 48, 50, 50, 48, 49, 48, 48, 49, 50, 13, 10, -86, 0, 0, 0, 0, 0] * * 2、甲烷浓度(长度:14字节) * [-86, 0, 0, 0, 0, 0, 0, 100, 0, 0, 4, 33, 13, 10] * * */ - private fun parseMethaneData(bytes: ByteArray) { - if ((bytes[0].toInt() and 0xFF) == 51 && bytes.size >= 14) { - //解析deviceCode - //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) - } else if (bytes.size == 14) { - val dataModel = bytes.toDataModel() - homeView.currentValueView.text = dataModel.potency.toString() - homeView.settingsValueView.text = dataModel.alarmValue.toString() - homeView.maxValueView.text = dataModel.maxPotency.toString() - //判断是否需要报警 - val isOpenWarning = - SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - if (isOpenWarning) { - 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) { - //如果连续超过10个报警,自动生成报警事件 - alarmCount++ - if (alarmCount >= 10) { - generateAlarmTask(dataModel.maxPotency) - } + 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() + //判断是否需要报警 + val isOpenWarning = + SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean + if (isOpenWarning) { + 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) { + //如果连续超过10个报警,自动生成报警事件 + alarmCount++ + if (alarmCount >= 10) { + generateAlarmTask(dataModel.maxPotency) } - } else { - //当测量值小于设置值,报警还未结束,需要停止响铃 - SoundPoolHelper.playSound(requireContext(), 0) } } else { - Log.d(kTag, "报警开关未打开,不处理") + //当测量值小于设置值,报警还未结束,需要停止响铃 + SoundPoolHelper.playSound(requireContext(), 0) } - } else { - Log.d(kTag, "未知返回值,无法解析") } } @@ -553,9 +592,9 @@ images = "", description = "自动报警记录" ) - "保存成功".show(requireContext()) isGeneratingTask = false alarmCount = 0 + "保存成功".show(requireContext()) } /***以下是地图生命周期管理************************************************************************/ @@ -563,6 +602,19 @@ override fun onResume() { super.onResume() homeView.mapView.onResume() + val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String + if (code == "") { + homeView.deviceStatusView.text = "设备编号: 未连接" + } else { + homeView.deviceStatusView.text = "设备编号: $code" + } + + //设置标题和时间 + if (newInspectionModel == null) { + return + } + homeView.inspectNameView.text = newInspectionModel!!.name + homeView.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/LocaleConstant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/LocaleConstant.kt index 79b6d74..f966731 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/LocaleConstant.kt @@ -61,6 +61,7 @@ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" + const val DEVICE_CODE = "deviceCode" const val USER_OBJECT = "userObject" const val OPEN_WARNING = "isOpenWarning" const val AUTO_RECORD = "isRecordLog"