diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt index 6a3ed5c..9caba1b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt @@ -19,7 +19,7 @@ for (index in 1..12) { builder.append(this[index].toInt().toChar()) } - return builder.toString() + return builder.toString().replace("\r", "") } //蓝牙数据解析 diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt index 6a3ed5c..9caba1b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt @@ -19,7 +19,7 @@ for (index in 1..12) { builder.append(this[index].toInt().toChar()) } - return builder.toString() + return builder.toString().replace("\r", "") } //蓝牙数据解析 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 1d1016c..d4a2a74 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 @@ -2,17 +2,19 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager +import kotlinx.android.synthetic.main.single_fragment_query_data_log.view.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.view.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.view.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : Fragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,28 +24,28 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + val v = inflater.inflate(R.layout.single_fragment_query_data_log, container, false) + + setupTopBarLayout(v) + + v.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + v.topTabLayout.setupWithViewPager(v.viewPager) + + return v } - override fun initEvent() { - - } - - override fun initLayoutView(): Int = R.layout.single_fragment_query_data_log - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { + fun setupTopBarLayout(view: View) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = view.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + view.statusBarView.setBackgroundColor(Color.WHITE) + view.statusBarView.requestLayout() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt index 6a3ed5c..9caba1b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt @@ -19,7 +19,7 @@ for (index in 1..12) { builder.append(this[index].toInt().toChar()) } - return builder.toString() + return builder.toString().replace("\r", "") } //蓝牙数据解析 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 1d1016c..d4a2a74 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 @@ -2,17 +2,19 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager +import kotlinx.android.synthetic.main.single_fragment_query_data_log.view.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.view.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.view.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : Fragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,28 +24,28 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + val v = inflater.inflate(R.layout.single_fragment_query_data_log, container, false) + + setupTopBarLayout(v) + + v.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + v.topTabLayout.setupWithViewPager(v.viewPager) + + return v } - override fun initEvent() { - - } - - override fun initLayoutView(): Int = R.layout.single_fragment_query_data_log - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { + fun setupTopBarLayout(view: View) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = view.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + view.statusBarView.setBackgroundColor(Color.WHITE) + view.statusBarView.requestLayout() } } \ No newline at end of file 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 86bbd96..8113c49 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,7 +11,11 @@ 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 @@ -29,7 +33,6 @@ 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 @@ -41,14 +44,26 @@ 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.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.addInspectionButton +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.bluetoothButton +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.currentValueView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.deviceStatusView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.inspectNameView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.inspectTimeView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.mapView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.maxValueView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.newEventButton +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.refreshButton +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.settingsValueView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.statusBarView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.stopInspectButton import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : Fragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -57,6 +72,7 @@ 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//新建巡检数据结构模型 @@ -66,18 +82,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + setupTopBarLayout() + + initData(savedInstanceState) + + initEvent() + + return homeView } - override fun initData(savedInstanceState: Bundle?) { + fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = requireContext().getStatusBarHeight() + val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + homeView.statusBarView.requestLayout() + } + + fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -89,8 +119,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - mapView.onCreate(savedInstanceState) - aMap = mapView.map + homeView.mapView.onCreate(savedInstanceState) + aMap = homeView.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -133,15 +163,16 @@ //设置按钮状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + homeView.stopInspectButton.isEnabled = false + homeView.addInspectionButton.isEnabled = true } } - override fun initEvent() { - addInspectionButton.setOnClickListener { + fun initEvent() { + homeView.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -149,8 +180,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + homeView.inspectNameView.text = value + homeView.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -160,8 +191,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + homeView.stopInspectButton.isEnabled = true + homeView.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -173,7 +204,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + homeView.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -197,13 +228,9 @@ } } - override fun observeRequestState() { - - } - private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + homeView.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -224,8 +251,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + homeView.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -242,10 +269,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + homeView.currentValueView.text = "--" + homeView.settingsValueView.text = "--" + homeView.maxValueView.text = "--" + homeView.deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -272,11 +299,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + homeView.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -289,14 +316,16 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -315,6 +344,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -333,32 +363,37 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) +// BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { handleMethaneData(bytes) } else { "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { @@ -366,21 +401,21 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + homeView.deviceStatusView.text = "设备编号:未连接" + homeView.inspectNameView.text = "" + homeView.inspectTimeView.text = "" + homeView.currentValueView.text = "--" + homeView.settingsValueView.text = "--" + homeView.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + homeView.stopInspectButton.isEnabled = false + homeView.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, "") LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -533,9 +568,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + homeView.currentValueView.text = dataModel.potency.toString() + homeView.settingsValueView.text = dataModel.alarmValue.toString() + homeView.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -589,35 +624,40 @@ override fun onResume() { super.onResume() - mapView.onResume() + homeView.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String - if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + if (code.isEmpty()) { + homeView.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + homeView.deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + homeView.inspectNameView.text = newInspectionModel!!.name + homeView.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + homeView.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + homeView.mapView.onSaveInstanceState(outState) + } + + override fun onDestroyView() { + super.onDestroyView() + LocationHub.get.stopLocation() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() - LocationHub.get.stopLocation() + homeView.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt index 6a3ed5c..9caba1b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt @@ -19,7 +19,7 @@ for (index in 1..12) { builder.append(this[index].toInt().toChar()) } - return builder.toString() + return builder.toString().replace("\r", "") } //蓝牙数据解析 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 1d1016c..d4a2a74 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 @@ -2,17 +2,19 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager +import kotlinx.android.synthetic.main.single_fragment_query_data_log.view.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.view.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.view.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : Fragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,28 +24,28 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + val v = inflater.inflate(R.layout.single_fragment_query_data_log, container, false) + + setupTopBarLayout(v) + + v.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + v.topTabLayout.setupWithViewPager(v.viewPager) + + return v } - override fun initEvent() { - - } - - override fun initLayoutView(): Int = R.layout.single_fragment_query_data_log - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { + fun setupTopBarLayout(view: View) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = view.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + view.statusBarView.setBackgroundColor(Color.WHITE) + view.statusBarView.requestLayout() } } \ No newline at end of file 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 86bbd96..8113c49 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,7 +11,11 @@ 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 @@ -29,7 +33,6 @@ 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 @@ -41,14 +44,26 @@ 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.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.addInspectionButton +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.bluetoothButton +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.currentValueView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.deviceStatusView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.inspectNameView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.inspectTimeView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.mapView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.maxValueView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.newEventButton +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.refreshButton +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.settingsValueView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.statusBarView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.stopInspectButton import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : Fragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -57,6 +72,7 @@ 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//新建巡检数据结构模型 @@ -66,18 +82,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + setupTopBarLayout() + + initData(savedInstanceState) + + initEvent() + + return homeView } - override fun initData(savedInstanceState: Bundle?) { + fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = requireContext().getStatusBarHeight() + val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + homeView.statusBarView.requestLayout() + } + + fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -89,8 +119,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - mapView.onCreate(savedInstanceState) - aMap = mapView.map + homeView.mapView.onCreate(savedInstanceState) + aMap = homeView.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -133,15 +163,16 @@ //设置按钮状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + homeView.stopInspectButton.isEnabled = false + homeView.addInspectionButton.isEnabled = true } } - override fun initEvent() { - addInspectionButton.setOnClickListener { + fun initEvent() { + homeView.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -149,8 +180,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + homeView.inspectNameView.text = value + homeView.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -160,8 +191,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + homeView.stopInspectButton.isEnabled = true + homeView.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -173,7 +204,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + homeView.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -197,13 +228,9 @@ } } - override fun observeRequestState() { - - } - private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + homeView.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -224,8 +251,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + homeView.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -242,10 +269,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + homeView.currentValueView.text = "--" + homeView.settingsValueView.text = "--" + homeView.maxValueView.text = "--" + homeView.deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -272,11 +299,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + homeView.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -289,14 +316,16 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -315,6 +344,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -333,32 +363,37 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) +// BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { handleMethaneData(bytes) } else { "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { @@ -366,21 +401,21 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + homeView.deviceStatusView.text = "设备编号:未连接" + homeView.inspectNameView.text = "" + homeView.inspectTimeView.text = "" + homeView.currentValueView.text = "--" + homeView.settingsValueView.text = "--" + homeView.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + homeView.stopInspectButton.isEnabled = false + homeView.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, "") LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -533,9 +568,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + homeView.currentValueView.text = dataModel.potency.toString() + homeView.settingsValueView.text = dataModel.alarmValue.toString() + homeView.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -589,35 +624,40 @@ override fun onResume() { super.onResume() - mapView.onResume() + homeView.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String - if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + if (code.isEmpty()) { + homeView.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + homeView.deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + homeView.inspectNameView.text = newInspectionModel!!.name + homeView.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + homeView.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + homeView.mapView.onSaveInstanceState(outState) + } + + override fun onDestroyView() { + super.onDestroyView() + LocationHub.get.stopLocation() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() - LocationHub.get.stopLocation() + homeView.mapView.onDestroy() } } \ 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 8064acf..3590faa 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 @@ -3,6 +3,10 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R @@ -12,18 +16,18 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.single_fragment_query_event.* +import kotlinx.android.synthetic.main.include_empty_view.view.emptyView +import kotlinx.android.synthetic.main.single_fragment_query_event.view.eventRecyclerView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -class QueryEventFragment : KotlinBaseFragment(), Handler.Callback { +class QueryEventFragment : Fragment(), Handler.Callback { + private lateinit var v: View private var dataBeans: MutableList = ArrayList() companion object { @@ -36,9 +40,9 @@ weakReferenceHandler.sendEmptyMessage(2023081101) } else if (msg.what == 2023081101) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + v.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + v.emptyView.hide() val eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans ) { @@ -50,22 +54,22 @@ lifecycleScope.launch(Dispatchers.Main) { try { val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imageArray[0]) - .submit().get() - } - viewHolder.setImageResource(R.id.inspectImageView, drawable) - } catch (e: Exception) { - e.printStackTrace() + Glide.with(requireContext()).load(imageArray[0]) + .submit().get() } + viewHolder.setImageResource(R.id.inspectImageView, drawable) + } catch (e: Exception) { + e.printStackTrace() } } - - viewHolder.setText(R.id.inspectMsgView, item.eventTitle) - .setText(R.id.inspectTypeView, "类型:${item.type}") - .setText(R.id.inspectDateView, "时间:${item.createTime}") } + + viewHolder.setText(R.id.inspectMsgView, item.eventTitle) + .setText(R.id.inspectTypeView, "类型:${item.type}") + .setText(R.id.inspectDateView, "时间:${item.createTime}") } - eventRecyclerView.adapter = eventListAdapter + } + v.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -77,22 +81,16 @@ return true } - override fun initLayoutView(): Int = R.layout.single_fragment_query_event + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + v = inflater.inflate(R.layout.single_fragment_query_event, container, false) - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - } - override fun initEvent() { - + return v } override fun onResume() { diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt index 6a3ed5c..9caba1b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt @@ -19,7 +19,7 @@ for (index in 1..12) { builder.append(this[index].toInt().toChar()) } - return builder.toString() + return builder.toString().replace("\r", "") } //蓝牙数据解析 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 1d1016c..d4a2a74 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 @@ -2,17 +2,19 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager +import kotlinx.android.synthetic.main.single_fragment_query_data_log.view.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.view.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.view.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : Fragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,28 +24,28 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + val v = inflater.inflate(R.layout.single_fragment_query_data_log, container, false) + + setupTopBarLayout(v) + + v.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + v.topTabLayout.setupWithViewPager(v.viewPager) + + return v } - override fun initEvent() { - - } - - override fun initLayoutView(): Int = R.layout.single_fragment_query_data_log - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { + fun setupTopBarLayout(view: View) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = view.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + view.statusBarView.setBackgroundColor(Color.WHITE) + view.statusBarView.requestLayout() } } \ No newline at end of file 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 86bbd96..8113c49 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,7 +11,11 @@ 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 @@ -29,7 +33,6 @@ 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 @@ -41,14 +44,26 @@ 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.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.addInspectionButton +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.bluetoothButton +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.currentValueView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.deviceStatusView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.inspectNameView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.inspectTimeView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.mapView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.maxValueView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.newEventButton +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.refreshButton +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.settingsValueView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.statusBarView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.stopInspectButton import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : Fragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -57,6 +72,7 @@ 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//新建巡检数据结构模型 @@ -66,18 +82,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + setupTopBarLayout() + + initData(savedInstanceState) + + initEvent() + + return homeView } - override fun initData(savedInstanceState: Bundle?) { + fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = requireContext().getStatusBarHeight() + val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + homeView.statusBarView.requestLayout() + } + + fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -89,8 +119,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - mapView.onCreate(savedInstanceState) - aMap = mapView.map + homeView.mapView.onCreate(savedInstanceState) + aMap = homeView.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -133,15 +163,16 @@ //设置按钮状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + homeView.stopInspectButton.isEnabled = false + homeView.addInspectionButton.isEnabled = true } } - override fun initEvent() { - addInspectionButton.setOnClickListener { + fun initEvent() { + homeView.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -149,8 +180,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + homeView.inspectNameView.text = value + homeView.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -160,8 +191,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + homeView.stopInspectButton.isEnabled = true + homeView.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -173,7 +204,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + homeView.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -197,13 +228,9 @@ } } - override fun observeRequestState() { - - } - private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + homeView.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -224,8 +251,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + homeView.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -242,10 +269,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + homeView.currentValueView.text = "--" + homeView.settingsValueView.text = "--" + homeView.maxValueView.text = "--" + homeView.deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -272,11 +299,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + homeView.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -289,14 +316,16 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -315,6 +344,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -333,32 +363,37 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) +// BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { handleMethaneData(bytes) } else { "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { @@ -366,21 +401,21 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + homeView.deviceStatusView.text = "设备编号:未连接" + homeView.inspectNameView.text = "" + homeView.inspectTimeView.text = "" + homeView.currentValueView.text = "--" + homeView.settingsValueView.text = "--" + homeView.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + homeView.stopInspectButton.isEnabled = false + homeView.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, "") LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -533,9 +568,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + homeView.currentValueView.text = dataModel.potency.toString() + homeView.settingsValueView.text = dataModel.alarmValue.toString() + homeView.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -589,35 +624,40 @@ override fun onResume() { super.onResume() - mapView.onResume() + homeView.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String - if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + if (code.isEmpty()) { + homeView.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + homeView.deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + homeView.inspectNameView.text = newInspectionModel!!.name + homeView.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + homeView.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + homeView.mapView.onSaveInstanceState(outState) + } + + override fun onDestroyView() { + super.onDestroyView() + LocationHub.get.stopLocation() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() - LocationHub.get.stopLocation() + homeView.mapView.onDestroy() } } \ 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 8064acf..3590faa 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 @@ -3,6 +3,10 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R @@ -12,18 +16,18 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.single_fragment_query_event.* +import kotlinx.android.synthetic.main.include_empty_view.view.emptyView +import kotlinx.android.synthetic.main.single_fragment_query_event.view.eventRecyclerView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -class QueryEventFragment : KotlinBaseFragment(), Handler.Callback { +class QueryEventFragment : Fragment(), Handler.Callback { + private lateinit var v: View private var dataBeans: MutableList = ArrayList() companion object { @@ -36,9 +40,9 @@ weakReferenceHandler.sendEmptyMessage(2023081101) } else if (msg.what == 2023081101) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + v.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + v.emptyView.hide() val eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans ) { @@ -50,22 +54,22 @@ lifecycleScope.launch(Dispatchers.Main) { try { val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imageArray[0]) - .submit().get() - } - viewHolder.setImageResource(R.id.inspectImageView, drawable) - } catch (e: Exception) { - e.printStackTrace() + Glide.with(requireContext()).load(imageArray[0]) + .submit().get() } + viewHolder.setImageResource(R.id.inspectImageView, drawable) + } catch (e: Exception) { + e.printStackTrace() } } - - viewHolder.setText(R.id.inspectMsgView, item.eventTitle) - .setText(R.id.inspectTypeView, "类型:${item.type}") - .setText(R.id.inspectDateView, "时间:${item.createTime}") } + + viewHolder.setText(R.id.inspectMsgView, item.eventTitle) + .setText(R.id.inspectTypeView, "类型:${item.type}") + .setText(R.id.inspectDateView, "时间:${item.createTime}") } - eventRecyclerView.adapter = eventListAdapter + } + v.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -77,22 +81,16 @@ return true } - override fun initLayoutView(): Int = R.layout.single_fragment_query_event + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + v = inflater.inflate(R.layout.single_fragment_query_event, container, false) - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - } - override fun initEvent() { - + return v } override fun onResume() { 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 2bc6465..204da7d 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 @@ -3,6 +3,10 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.InspectionLocalBean @@ -11,18 +15,18 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.single_fragment_query_inspect.* +import kotlinx.android.synthetic.main.include_empty_view.view.emptyView +import kotlinx.android.synthetic.main.single_fragment_query_inspect.view.inspectRecyclerView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -class QueryInspectionFragment : KotlinBaseFragment(), Handler.Callback { +class QueryInspectionFragment : Fragment(), Handler.Callback { + private lateinit var v: View private var dataBeans: MutableList = ArrayList() companion object { @@ -35,9 +39,9 @@ weakReferenceHandler.sendEmptyMessage(2023081201) } else if (msg.what == 2023081201) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + v.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + v.emptyView.hide() val inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans ) { @@ -82,7 +86,7 @@ } } } - inspectRecyclerView.adapter = inspectListAdapter + v.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: InspectionLocalBean) { @@ -94,22 +98,16 @@ return true } - override fun initLayoutView(): Int = R.layout.single_fragment_query_inspect + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + v = inflater.inflate(R.layout.single_fragment_query_inspect, container, false) - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - } - override fun initEvent() { - + return v } override fun onResume() { diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt index 6a3ed5c..9caba1b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ByteArray.kt @@ -19,7 +19,7 @@ for (index in 1..12) { builder.append(this[index].toInt().toChar()) } - return builder.toString() + return builder.toString().replace("\r", "") } //蓝牙数据解析 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 1d1016c..d4a2a74 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 @@ -2,17 +2,19 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.single_fragment_query_data_log.statusBarView -import kotlinx.android.synthetic.main.single_fragment_query_data_log.topTabLayout -import kotlinx.android.synthetic.main.single_fragment_query_data_log.viewPager +import kotlinx.android.synthetic.main.single_fragment_query_data_log.view.statusBarView +import kotlinx.android.synthetic.main.single_fragment_query_data_log.view.topTabLayout +import kotlinx.android.synthetic.main.single_fragment_query_data_log.view.viewPager -class DataLogPageFragment : KotlinBaseFragment() { +class DataLogPageFragment : Fragment() { private val pageTitles = arrayOf("巡检记录", "事件记录") private var fragmentPages: ArrayList = ArrayList() @@ -22,28 +24,28 @@ fragmentPages.add(QueryEventFragment()) } - override fun initData(savedInstanceState: Bundle?) { - viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + val v = inflater.inflate(R.layout.single_fragment_query_data_log, container, false) + + setupTopBarLayout(v) + + v.viewPager.adapter = SubViewPagerAdapter(childFragmentManager, fragmentPages, pageTitles) //绑定 - topTabLayout.setupWithViewPager(viewPager) + v.topTabLayout.setupWithViewPager(v.viewPager) + + return v } - override fun initEvent() { - - } - - override fun initLayoutView(): Int = R.layout.single_fragment_query_data_log - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { + fun setupTopBarLayout(view: View) { //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = view.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.WHITE) - statusBarView.requestLayout() + view.statusBarView.setBackgroundColor(Color.WHITE) + view.statusBarView.requestLayout() } } \ No newline at end of file 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 86bbd96..8113c49 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,7 +11,11 @@ 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 @@ -29,7 +33,6 @@ 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 @@ -41,14 +44,26 @@ 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.* +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.addInspectionButton +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.bluetoothButton +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.currentValueView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.deviceStatusView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.inspectNameView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.inspectTimeView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.mapView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.maxValueView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.newEventButton +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.refreshButton +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.settingsValueView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.statusBarView +import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.stopInspectButton import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") -class HomePageFragment : KotlinBaseFragment(), Handler.Callback { +class HomePageFragment : Fragment(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -57,6 +72,7 @@ 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//新建巡检数据结构模型 @@ -66,18 +82,32 @@ private var isGeneratingTask = false private var alarmCount = 0 - override fun initLayoutView(): Int = R.layout.single_fragment_map_inspect + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + homeView = inflater.inflate(R.layout.single_fragment_map_inspect, container, false) - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) - statusBarView.requestLayout() + setupTopBarLayout() + + initData(savedInstanceState) + + initEvent() + + return homeView } - override fun initData(savedInstanceState: Bundle?) { + fun setupTopBarLayout() { + //根据不同设备状态栏高度设置statusBarView高度 + val statusBarHeight = requireContext().getStatusBarHeight() + val params = homeView.statusBarView.layoutParams as LinearLayout.LayoutParams + params.height = statusBarHeight + homeView.statusBarView.setBackgroundColor(Color.parseColor("#D6EEFE")) + homeView.statusBarView.requestLayout() + } + + fun initData(savedInstanceState: Bundle?) { vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(this) @@ -89,8 +119,8 @@ "该设备不支持低功耗蓝牙".show(requireContext()) } - mapView.onCreate(savedInstanceState) - aMap = mapView.map + homeView.mapView.onCreate(savedInstanceState) + aMap = homeView.mapView.map val uiSettings = aMap.uiSettings uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER @@ -133,15 +163,16 @@ //设置按钮状态 if (newInspectionModel == null) { - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + homeView.stopInspectButton.isEnabled = false + homeView.addInspectionButton.isEnabled = true } } - override fun initEvent() { - addInspectionButton.setOnClickListener { + fun initEvent() { + homeView.addInspectionButton.setOnClickListener { AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃") + .setPositiveButton("开始巡检") .setOnDialogButtonClickListener(object : AlertInputDialog.OnDialogButtonClickListener { override fun onConfirmClick(value: String) { @@ -149,8 +180,8 @@ val startTime = currentTimeMillis.timestampToCompleteDate() //设置标题和时间 - inspectNameView.text = value - inspectTimeView.text = startTime + homeView.inspectNameView.text = value + homeView.inspectTimeView.text = startTime newInspectionModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, @@ -160,8 +191,8 @@ ) //按钮状态 - stopInspectButton.isEnabled = true - addInspectionButton.isEnabled = false + homeView.stopInspectButton.isEnabled = true + homeView.addInspectionButton.isEnabled = false } override fun onCancelClick() { @@ -173,7 +204,7 @@ //地图左边三个按钮事件 menuButtonEvent() - newEventButton.setOnClickListener { + homeView.newEventButton.setOnClickListener { if (newInspectionModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener @@ -197,13 +228,9 @@ } } - override fun observeRequestState() { - - } - private fun menuButtonEvent() { //结束巡检 - stopInspectButton.setOnClickListener { + homeView.stopInspectButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -224,8 +251,8 @@ //蓝牙按钮 if (isBluetoothOn) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { + homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + homeView.bluetoothButton.setOnClickListener { if (curConnectState) { AlertControlDialog.Builder() .setContext(requireContext()) @@ -242,10 +269,10 @@ override fun onConfirmClick() { //断开连接 BLEManager.disConnectDevice() - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" - deviceStatusView.text = "设备编号:未连接" + homeView.currentValueView.text = "--" + homeView.settingsValueView.text = "--" + homeView.maxValueView.text = "--" + homeView.deviceStatusView.text = "设备编号:未连接" "设备已断开连接".show(requireContext()) } }).build().show() @@ -272,11 +299,11 @@ } } } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) } //重新发送指令按钮 - refreshButton.setOnClickListener { + homeView.refreshButton.setOnClickListener { if (curConnectState) { BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else { @@ -289,14 +316,16 @@ when (msg.what) { LocaleConstant.BLUETOOTH_ON -> { "蓝牙已开启".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) isBluetoothOn = true } + LocaleConstant.BLUETOOTH_OFF -> { "蓝牙已关闭".show(requireContext()) - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + homeView.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) isBluetoothOn = false } + LocaleConstant.DISCOVERY_DEVICE -> { val bean = msg.obj as BlueToothBean if (blueToothBeans.size == 0) { @@ -315,6 +344,7 @@ } } } + LocaleConstant.DISCOVERY_OUT_TIME -> { LoadingDialogHub.dismiss() if (blueToothBeans.size == 0) { @@ -333,32 +363,37 @@ }.build().show() } } + LocaleConstant.CONNECT_SUCCESS -> { LoadingDialogHub.dismiss() curConnectState = true BLEManager.sendCommand(LocaleConstant.ASK_DEV_CODE_COMMAND) } + LocaleConstant.CONNECT_FAILURE -> curConnectState = false LocaleConstant.SEND_SUCCESS -> Log.d( kTag, "发送成功-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.SEND_FAILURE -> Log.d( kTag, "发送失败-> ${(msg.obj as ByteArray).toList()}" ) + LocaleConstant.RECEIVE_SUCCESS -> { val bytes = msg.obj as ByteArray if (bytes.first() == 51.toByte() && bytes.size >= 14) { //解析deviceCode //[51, 51, 50, 48, 48, 48, 48, 49, 48, 48, 48, 50, 13, 10] - deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" + homeView.deviceStatusView.text = "设备编号: ${bytes.toDeviceCode()}" SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, bytes.toDeviceCode()) - BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) +// BLEManager.sendCommand(LocaleConstant.OPEN_TRANSFER_COMMAND) } else if (bytes.size == 14) { handleMethaneData(bytes) } else { "甲烷数据格式异常".show(requireContext()) } } + LocaleConstant.RECEIVE_FAILURE -> Log.d(kTag, "接收失败-> ${msg.obj as String}") LocaleConstant.DISCONNECT_SUCCESS -> curConnectState = false LocaleConstant.STOP_TASK -> { @@ -366,21 +401,21 @@ if (curConnectState) { BLEManager.disConnectDevice() } - deviceStatusView.text = "设备编号:未连接" - inspectNameView.text = "" - inspectTimeView.text = "" - currentValueView.text = "--" - settingsValueView.text = "--" - maxValueView.text = "--" + homeView.deviceStatusView.text = "设备编号:未连接" + homeView.inspectNameView.text = "" + homeView.inspectTimeView.text = "" + homeView.currentValueView.text = "--" + homeView.settingsValueView.text = "--" + homeView.maxValueView.text = "--" //按钮状态 - stopInspectButton.isEnabled = false - addInspectionButton.isEnabled = true + homeView.stopInspectButton.isEnabled = false + homeView.addInspectionButton.isEnabled = true //清除缓存 blueToothBeans.clear() latLngs.clear() - SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) + SaveKeyValues.putValue(LocaleConstant.DEVICE_CODE, "") LoadingDialogHub.dismiss() "巡检记录保存成功".show(requireContext()) @@ -533,9 +568,9 @@ * */ private fun handleMethaneData(bytes: ByteArray) { val dataModel = bytes.toDataModel() - currentValueView.text = dataModel.potency.toString() - settingsValueView.text = dataModel.alarmValue.toString() - maxValueView.text = dataModel.maxPotency.toString() + homeView.currentValueView.text = dataModel.potency.toString() + homeView.settingsValueView.text = dataModel.alarmValue.toString() + homeView.maxValueView.text = dataModel.maxPotency.toString() //判断是否需要报警 val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean if (isOpen) { @@ -589,35 +624,40 @@ override fun onResume() { super.onResume() - mapView.onResume() + homeView.mapView.onResume() val code = SaveKeyValues.getValue(LocaleConstant.DEVICE_CODE, "") as String - if (code == "") { - deviceStatusView.text = "设备编号: 未连接" + if (code.isEmpty()) { + homeView.deviceStatusView.text = "设备编号: 未连接" } else { - deviceStatusView.text = "设备编号: $code" + homeView.deviceStatusView.text = "设备编号: $code" } //设置标题和时间 if (newInspectionModel == null) { return } - inspectNameView.text = newInspectionModel!!.name - inspectTimeView.text = newInspectionModel!!.startTime + homeView.inspectNameView.text = newInspectionModel!!.name + homeView.inspectTimeView.text = newInspectionModel!!.startTime } override fun onPause() { super.onPause() - mapView.onPause() + homeView.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + homeView.mapView.onSaveInstanceState(outState) + } + + override fun onDestroyView() { + super.onDestroyView() + LocationHub.get.stopLocation() + SaveKeyValues.removeKey(LocaleConstant.DEVICE_CODE) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() - LocationHub.get.stopLocation() + homeView.mapView.onDestroy() } } \ 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 8064acf..3590faa 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 @@ -3,6 +3,10 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.bumptech.glide.Glide import com.casic.birmm.inspect.R @@ -12,18 +16,18 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.single_fragment_query_event.* +import kotlinx.android.synthetic.main.include_empty_view.view.emptyView +import kotlinx.android.synthetic.main.single_fragment_query_event.view.eventRecyclerView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -class QueryEventFragment : KotlinBaseFragment(), Handler.Callback { +class QueryEventFragment : Fragment(), Handler.Callback { + private lateinit var v: View private var dataBeans: MutableList = ArrayList() companion object { @@ -36,9 +40,9 @@ weakReferenceHandler.sendEmptyMessage(2023081101) } else if (msg.what == 2023081101) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + v.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + v.emptyView.hide() val eventListAdapter = object : NormalRecyclerAdapter( R.layout.item_event_rv_l, dataBeans ) { @@ -50,22 +54,22 @@ lifecycleScope.launch(Dispatchers.Main) { try { val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imageArray[0]) - .submit().get() - } - viewHolder.setImageResource(R.id.inspectImageView, drawable) - } catch (e: Exception) { - e.printStackTrace() + Glide.with(requireContext()).load(imageArray[0]) + .submit().get() } + viewHolder.setImageResource(R.id.inspectImageView, drawable) + } catch (e: Exception) { + e.printStackTrace() } } - - viewHolder.setText(R.id.inspectMsgView, item.eventTitle) - .setText(R.id.inspectTypeView, "类型:${item.type}") - .setText(R.id.inspectDateView, "时间:${item.createTime}") } + + viewHolder.setText(R.id.inspectMsgView, item.eventTitle) + .setText(R.id.inspectTypeView, "类型:${item.type}") + .setText(R.id.inspectDateView, "时间:${item.createTime}") } - eventRecyclerView.adapter = eventListAdapter + } + v.eventRecyclerView.adapter = eventListAdapter eventListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: TaskEventLocalBean) { @@ -77,22 +81,16 @@ return true } - override fun initLayoutView(): Int = R.layout.single_fragment_query_event + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + v = inflater.inflate(R.layout.single_fragment_query_event, container, false) - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - } - override fun initEvent() { - + return v } override fun onResume() { 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 2bc6465..204da7d 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 @@ -3,6 +3,10 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import com.casic.birmm.inspect.R import com.casic.birmm.inspect.bean.InspectionLocalBean @@ -11,18 +15,18 @@ import com.casic.birmm.inspect.utils.LocaleConstant import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder -import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.single_fragment_query_inspect.* +import kotlinx.android.synthetic.main.include_empty_view.view.emptyView +import kotlinx.android.synthetic.main.single_fragment_query_inspect.view.inspectRecyclerView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -class QueryInspectionFragment : KotlinBaseFragment(), Handler.Callback { +class QueryInspectionFragment : Fragment(), Handler.Callback { + private lateinit var v: View private var dataBeans: MutableList = ArrayList() companion object { @@ -35,9 +39,9 @@ weakReferenceHandler.sendEmptyMessage(2023081201) } else if (msg.what == 2023081201) { if (dataBeans.size == 0) { - emptyView.show("抱歉,无法查询到相关记录", null) + v.emptyView.show("抱歉,无法查询到相关记录", null) } else { - emptyView.hide() + v.emptyView.hide() val inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans ) { @@ -82,7 +86,7 @@ } } } - inspectRecyclerView.adapter = inspectListAdapter + v.inspectRecyclerView.adapter = inspectListAdapter inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked(position: Int, t: InspectionLocalBean) { @@ -94,22 +98,16 @@ return true } - override fun initLayoutView(): Int = R.layout.single_fragment_query_inspect + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + v = inflater.inflate(R.layout.single_fragment_query_inspect, container, false) - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } - - override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - } - override fun initEvent() { - + return v } override fun onResume() { 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 d96b1bb..a24a507 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 @@ -5,7 +5,11 @@ import android.net.Uri import android.os.Bundle import android.os.Vibrator +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.fragment.app.Fragment import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.birmm.inspect.BuildConfig @@ -14,52 +18,66 @@ import com.casic.birmm.inspect.utils.SoundPoolHelper import com.casic.birmm.inspect.view.HelpCenterActivity import com.casic.birmm.inspect.view.LoginActivity -import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getStatusBarHeight import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.single_fragment_user_settings.appVersionView -import kotlinx.android.synthetic.main.single_fragment_user_settings.autoRecordSwitch -import kotlinx.android.synthetic.main.single_fragment_user_settings.backLayout -import kotlinx.android.synthetic.main.single_fragment_user_settings.exitLoginView -import kotlinx.android.synthetic.main.single_fragment_user_settings.helpLayout -import kotlinx.android.synthetic.main.single_fragment_user_settings.statusBarView -import kotlinx.android.synthetic.main.single_fragment_user_settings.updateLayout -import kotlinx.android.synthetic.main.single_fragment_user_settings.userAvatarView -import kotlinx.android.synthetic.main.single_fragment_user_settings.warningSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.view.appVersionView +import kotlinx.android.synthetic.main.single_fragment_user_settings.view.autoRecordSwitch +import kotlinx.android.synthetic.main.single_fragment_user_settings.view.backLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.view.exitLoginView +import kotlinx.android.synthetic.main.single_fragment_user_settings.view.helpLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.view.statusBarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.view.updateLayout +import kotlinx.android.synthetic.main.single_fragment_user_settings.view.userAvatarView +import kotlinx.android.synthetic.main.single_fragment_user_settings.view.warningSwitch -class SettingPageFragment : KotlinBaseFragment() { +class SettingPageFragment : Fragment() { + private lateinit var v: View private lateinit var vibrator: Vibrator - override fun initData(savedInstanceState: Bundle?) { + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + v = inflater.inflate(R.layout.single_fragment_user_settings, container, false) + //根据不同设备状态栏高度设置statusBarView高度 val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams + val params = v.statusBarView.layoutParams as LinearLayout.LayoutParams params.height = statusBarHeight - statusBarView.requestLayout() + v.statusBarView.requestLayout() + initData() + + initEvent() + + return v + } + + fun initData() { Glide.with(requireContext()) .load(R.mipmap.ic_launcher) .apply(RequestOptions.circleCropTransform()) - .into(userAvatarView) + .into(v.userAvatarView) val isOpen = SaveKeyValues.getValue(LocaleConstant.SINGLE_OPEN_WARNING, false) as Boolean - warningSwitch.isChecked = isOpen + v.warningSwitch.isChecked = isOpen val isRecord = SaveKeyValues.getValue(LocaleConstant.SINGLE_AUTO_RECORD, false) as Boolean - autoRecordSwitch.isChecked = isRecord + v.autoRecordSwitch.isChecked = isRecord - appVersionView.text = BuildConfig.VERSION_NAME + v.appVersionView.text = BuildConfig.VERSION_NAME //震动 vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator } - override fun initEvent() { - exitLoginView.setOnClickListener { + fun initEvent() { + v.exitLoginView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -80,14 +98,14 @@ }).build().show() } - warningSwitch.setOnClickListener { + v.warningSwitch.setOnClickListener { if (!vibrator.hasVibrator()) { "设备没有震动蜂鸣器,无法打开此开关".show(requireContext()) - warningSwitch.isChecked = false + v.warningSwitch.isChecked = false return@setOnClickListener } } - warningSwitch.setOnCheckedChangeListener { _, isChecked -> + v.warningSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.SINGLE_OPEN_WARNING, true) SoundPoolHelper.playSound(requireContext(), R.raw.alarm) @@ -97,7 +115,7 @@ SaveKeyValues.putValue(LocaleConstant.SINGLE_OPEN_WARNING, false) } } - autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> + v.autoRecordSwitch.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { SaveKeyValues.putValue(LocaleConstant.SINGLE_AUTO_RECORD, true) } else { @@ -105,15 +123,15 @@ } } - helpLayout.setOnClickListener { + v.helpLayout.setOnClickListener { requireContext().navigatePageTo() } - updateLayout.setOnClickListener { + v.updateLayout.setOnClickListener { "已是最新版本,无需更新".show(requireContext()) } - backLayout.setOnClickListener { + v.backLayout.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") @@ -133,14 +151,4 @@ }).build().show() } } - - override fun initLayoutView(): Int = R.layout.single_fragment_user_settings - - override fun observeRequestState() { - - } - - override fun setupTopBarLayout() { - - } } \ No newline at end of file