diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 14e9b51..92d80c5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -70,7 +70,6 @@
android:name=".view.ElectricMarkerDetailActivity"
android:theme="@style/Theme.ActivityDialogStyle" />
-
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 14e9b51..92d80c5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -70,7 +70,6 @@
android:name=".view.ElectricMarkerDetailActivity"
android:theme="@style/Theme.ActivityDialogStyle" />
-
diff --git a/app/src/main/java/com/casic/electric/detector/view/InstallLabelActivity.kt b/app/src/main/java/com/casic/electric/detector/view/InstallLabelActivity.kt
deleted file mode 100644
index 6510104..0000000
--- a/app/src/main/java/com/casic/electric/detector/view/InstallLabelActivity.kt
+++ /dev/null
@@ -1,601 +0,0 @@
-package com.casic.electric.detector.view
-
-import android.annotation.SuppressLint
-import android.app.AlertDialog
-import android.app.DatePickerDialog
-import android.content.Context
-import android.content.DialogInterface
-import android.content.Intent
-import android.media.AudioAttributes
-import android.media.SoundPool
-import android.os.Bundle
-import android.os.Handler
-import android.os.Message
-import android.provider.Settings
-import android.util.Log
-import android.view.KeyEvent
-import android.view.View
-import android.view.WindowManager
-import android.widget.AdapterView
-import androidx.lifecycle.ViewModelProvider
-import androidx.lifecycle.lifecycleScope
-import com.amap.api.location.AMapLocation
-import com.casic.electric.detector.R
-import com.casic.electric.detector.adapter.EditableImageAdapter
-import com.casic.electric.detector.base.SerialPortActivity
-import com.casic.electric.detector.callback.ILocationListener
-import com.casic.electric.detector.callback.OnImageCompressListener
-import com.casic.electric.detector.databinding.ActivityInstallLabelBinding
-import com.casic.electric.detector.extensions.*
-import com.casic.electric.detector.utils.*
-import com.casic.electric.detector.vm.TaskViewModel
-import com.luck.picture.lib.basic.PictureSelector
-import com.luck.picture.lib.config.SelectMimeType
-import com.luck.picture.lib.entity.LocalMedia
-import com.luck.picture.lib.interfaces.OnResultCallbackListener
-import com.pengxh.kt.lite.extensions.*
-import com.pengxh.kt.lite.utils.LoadState
-import com.pengxh.kt.lite.utils.LoadingDialogHub
-import com.pengxh.kt.lite.utils.SaveKeyValues
-import com.pengxh.kt.lite.utils.WeakReferenceHandler
-import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.withContext
-import java.io.File
-import java.io.IOException
-import java.util.*
-
-@SuppressLint("SetTextI18n")
-class InstallLabelActivity : SerialPortActivity(), Handler.Callback {
-
- private val kTag = "LabelActivity"
- private val context: Context = this@InstallLabelActivity
- private val gpioManager by lazy { GpioManager() }
- private val calendar by lazy { Calendar.getInstance() }
- private val locationHub by lazy { LocationHub(this) }
- private val realPaths = ArrayList() //真实图片路径
- private var soundResId = 0
- private lateinit var weakReferenceHandler: WeakReferenceHandler
- private lateinit var soundPool: SoundPool
- private lateinit var imageAdapter: EditableImageAdapter
- private lateinit var taskViewModel: TaskViewModel
-
- override fun initViewBinding(): ActivityInstallLabelBinding {
- return ActivityInstallLabelBinding.inflate(layoutInflater)
- }
-
- override fun setupTopBarLayout() {
- binding.titleInclude.titleView.text = "安装新标识器"
- binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(this))
- }
-
- override fun initOnCreate(savedInstanceState: Bundle?) {
- window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN or WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)
-
- weakReferenceHandler = WeakReferenceHandler(this)
-
- val audioAttributes = AudioAttributes.Builder()
- .setUsage(AudioAttributes.USAGE_MEDIA)
- .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
- .build()
- soundPool = SoundPool.Builder()
- .setMaxStreams(16)
- .setAudioAttributes(audioAttributes)
- .build()
-
- //设置上次填写过的值
- binding.objectAttrInclude.objectCodeView.setText("objectCodeView".getDefaultValue())
- binding.objectAttrInclude.objectNameView.setText("objectNameView".getDefaultValue())
- binding.objectAttrInclude.inlineNameView.setText("inlineNameView".getDefaultValue())
- binding.objectAttrInclude.capacityView.setText("capacityView".getDefaultValue())
- binding.objectAttrInclude.transformerSpecView.setText("transformerSpecView".getDefaultValue())
- binding.objectAttrInclude.sLengthView.setText("sLengthView".getDefaultValue())
- binding.objectAttrInclude.sWidthView.setText("sWidthView".getDefaultValue())
- binding.objectAttrInclude.sHeightView.setText("sHeightView".getDefaultValue())
- binding.objectAttrInclude.inlineCountView.setText("inlineCountView".getDefaultValue())
- binding.objectAttrInclude.outlineCountView.setText("outlineCountView".getDefaultValue())
- binding.objectAttrInclude.bottomDepthView.setText("bottomDepthView".getDefaultValue())
- binding.objectAttrInclude.rowCountView.setText("rowCountView".getDefaultValue())
- binding.objectAttrInclude.rowHoleCountView.setText("rowHoleCountView".getDefaultValue())
- binding.objectAttrInclude.coverDepthView.setText("coverDepthView".getDefaultValue())
- binding.objectAttrInclude.remainingChannelsView.setText("remainingChannelsView".getDefaultValue())
- binding.objectAttrInclude.tieCableView1.setText("tieCableView1".getDefaultValue())
- binding.objectAttrInclude.tieCableView2.setText("tieCableView2".getDefaultValue())
- binding.objectAttrInclude.jointCountView.setText("jointCountView".getDefaultValue())
- binding.objectAttrInclude.casingHoleCountView.setText("casingHoleCountView".getDefaultValue())
- binding.objectAttrInclude.casingHoleDiameterView.setText("casingHoleDiameterView".getDefaultValue())
- binding.objectAttrInclude.heightView.setText("heightView".getDefaultValue())
- binding.objectAttrInclude.lineNumberView.setText("lineNumberView".getDefaultValue())
- binding.objectAttrInclude.inspectionUnitView.setText("inspectionUnitView".getDefaultValue())
- binding.objectAttrInclude.areaView.setText("areaView".getDefaultValue())
- binding.objectAttrInclude.roadView.setText("roadView".getDefaultValue())
- binding.objectAttrInclude.objectRemarkView1.setText("objectRemarkView1".getDefaultValue())
- binding.objectAttrInclude.objectRemarkView2.setText("objectRemarkView2".getDefaultValue())
- binding.objectAttrInclude.objectRemarkView3.setText("objectRemarkView3".getDefaultValue())
- binding.markerAttrInclude.ownerView.setText("ownerView".getDefaultValue())
- binding.markerAttrInclude.markerDepthView.setText("markerDepthView".getDefaultValue())
- binding.markerAttrInclude.markerCountView.setText("markerCountView".getDefaultValue())
- binding.markerAttrInclude.remarkView1.setText("remarkView1".getDefaultValue())
- binding.markerAttrInclude.remarkView2.setText("remarkView2".getDefaultValue())
- binding.markerAttrInclude.remarkView3.setText("remarkView3".getDefaultValue())
-
- //初始化图片九宫格
- imageAdapter = EditableImageAdapter(this, 3, 3)
- binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter
-
- taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
- }
-
- override fun observeRequestState() {
- taskViewModel.loadState.observe(this) {
- when (it) {
- LoadState.Loading -> LoadingDialogHub.show(this, "标识器安装中,请稍后...")
- LoadState.Success -> {
- LoadingDialogHub.dismiss()
- finish()
- }
-
- else -> LoadingDialogHub.dismiss()
- }
- }
- }
-
- override fun initEvent() {
- binding.titleInclude.leftBackView.setOnClickListener { finish() }
-
- /**************************************************************************************/
- binding.objectAttrInclude.objectTypeSpinner.show(this, LocaleConstant.CONTENT_ARRAY, 0)
- binding.objectAttrInclude.objectTypeSpinner.onItemSelectedListener =
- object : AdapterView.OnItemSelectedListener {
- override fun onItemSelected(
- parent: AdapterView<*>?, view: View?, position: Int, id: Long
- ) {
- when (position) {
- 0 -> {
- //选择电缆井
- binding.objectAttrInclude.objectModeView.text = "类型:"
- binding.objectAttrInclude.wellCoverMaterialView.text = "井盖材质:"
- binding.objectAttrInclude.bottomDepthNameView.text = "井深:"
- setLayoutVisibility(
- View.VISIBLE, View.GONE, View.VISIBLE, View.GONE, View.VISIBLE,
- View.GONE, View.GONE, View.VISIBLE, View.GONE, View.VISIBLE,
- View.GONE
- )
- binding.objectAttrInclude.objectModeSpinner.show(
- this@InstallLabelActivity, LocaleConstant.OBJECT_MODE_ARRAY, 0
- )
- binding.objectAttrInclude.wellCoverMaterialSpinner.show(
- this@InstallLabelActivity,
- LocaleConstant.WELL_COVER_MATERIAL_ARRAY_1,
- 0
- )
- }
-
- 1 -> {
- //选择电缆通道
- binding.objectAttrInclude.bottomDepthNameView.text = "底部深度:"
- setLayoutVisibility(
- View.GONE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.GONE, View.GONE, View.VISIBLE, View.VISIBLE, View.VISIBLE,
- View.GONE
- )
- }
-
- 2 -> {
- //选择配电房
- setLayoutVisibility(
- View.GONE, View.GONE, View.GONE, View.VISIBLE, View.VISIBLE,
- View.VISIBLE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.GONE
- )
- }
-
- 3 -> {
- //选择开关站
- setLayoutVisibility(
- View.GONE, View.GONE, View.GONE, View.GONE, View.VISIBLE,
- View.VISIBLE, View.VISIBLE, View.GONE, View.GONE, View.GONE,
- View.GONE
- )
- }
-
- 4 -> {
- //选择台区
- binding.objectAttrInclude.objectModeView.text = "变压器型号:"
- setLayoutVisibility(
- View.VISIBLE, View.VISIBLE, View.GONE, View.GONE, View.GONE,
- View.GONE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.GONE
- )
- binding.objectAttrInclude.objectModeSpinner.show(
- this@InstallLabelActivity, arrayOf("变压器 KVA"), 0
- )
- }
-
- 5 -> {
- //选择杆塔
- binding.objectAttrInclude.wellCoverMaterialView.text = "对象材质:"
- setLayoutVisibility(
- View.GONE, View.GONE, View.VISIBLE, View.GONE, View.GONE,
- View.GONE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.VISIBLE
- )
- binding.objectAttrInclude.wellCoverMaterialSpinner.show(
- this@InstallLabelActivity,
- LocaleConstant.WELL_COVER_MATERIAL_ARRAY_2,
- 0
- )
- }
- }
- }
-
- override fun onNothingSelected(parent: AdapterView<*>?) {
-
- }
- }
-
- binding.objectAttrInclude.cabinetTypeSpinner.show(
- this,
- LocaleConstant.CABINET_TYPE_ARRAY,
- 0
- )
- binding.objectAttrInclude.casingMaterialSpinner.show(
- this,
- LocaleConstant.PIPE_MATERIAL_ARRAY,
- 0
- )
- binding.markerAttrInclude.markerTypeSpinner.show(this, LocaleConstant.MARKER_TYPE_ARRAY, 0)
-
- //电压等级-多选
- binding.objectAttrInclude.voltageLevelView.setOnClickListener {
- AlertDialog.Builder(context)
- .setCancelable(false)
- .setIcon(R.mipmap.ic_launcher)
- .setTitle("请选择电压等级")
- .setMultiChoiceItems(
- LocaleConstant.VOLTAGE_LEVEL_ARRAY, LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY
- ) { _, which, isChecked ->
- LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[which] = isChecked
- }
- .setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
- .setPositiveButton("确定") { _, _ ->
- val temp = ArrayList()
- LocaleConstant.VOLTAGE_LEVEL_ARRAY.forEachIndexed { index, s ->
- if (LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[index]) {
- temp.add(s)
- }
- }
-
- binding.objectAttrInclude.voltageLevelView.text = temp.reformat()
- }.show()
- }
-
- //交叉管道类型-多选
- binding.objectAttrInclude.crossPipeLineView.setOnClickListener {
- AlertDialog.Builder(context)
- .setCancelable(false)
- .setIcon(R.mipmap.ic_launcher)
- .setTitle("请选择交叉管道类型")
- .setMultiChoiceItems(
- LocaleConstant.CROSS_PIPE_ARRAY, LocaleConstant.CROSS_PIPE_STATE_ARRAY
- ) { _, which, isChecked ->
- LocaleConstant.CROSS_PIPE_STATE_ARRAY[which] = isChecked
- }
- .setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
- .setPositiveButton("确定") { _, _ ->
- val temp = ArrayList()
- LocaleConstant.CROSS_PIPE_ARRAY.forEachIndexed { index, s ->
- if (LocaleConstant.CROSS_PIPE_STATE_ARRAY[index]) {
- temp.add(s)
- }
- }
-
- binding.objectAttrInclude.crossPipeLineView.text = temp.reformat()
- }.show()
- }
-
- binding.objectAttrInclude.constructDateView.setOnClickListener {
- val datePicker = DatePickerDialog(
- this,
- null,
- calendar.get(Calendar.YEAR),
- calendar.get(Calendar.MONTH),
- calendar.get(Calendar.DAY_OF_MONTH)
- )
- datePicker.show()
-
- datePicker.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener {
- val year = datePicker.datePicker.year
- val month = datePicker.datePicker.month + 1
- val day = datePicker.datePicker.dayOfMonth
- val selectedDate = String.format(
- "%s-%s-%s", year, month.appendZero(), day.appendZero()
- )
-
- //当前时间
- val current = System.currentTimeMillis().timestampToTime()
- val today = "$selectedDate $current".dateToTimestamp()
- if (Date(today).after(Date())) {
- "建设年代不能早于当前日期".show(context)
- } else {
- datePicker.dismiss()
- binding.objectAttrInclude.constructDateView.text = selectedDate
- }
- }
- }
-
- binding.markerAttrInclude.installTimeView.text =
- System.currentTimeMillis().timestampToCompleteDate()
- locationHub.getCurrentLocation(true, object : ILocationListener {
- override fun onAMapLocationGet(location: AMapLocation?) {
- if (location != null) {
- binding.markerAttrInclude.lngView.text = location.longitude.toString()
- binding.markerAttrInclude.latView.text = location.latitude.toString()
- } else {
- "当前位置信号差,无法获取定位".show(context)
- }
- }
- })
-
- imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
- override fun onAddImageClick() {
- PictureSelector.create(this@InstallLabelActivity)
- .openCamera(SelectMimeType.ofImage())
- .forResult(object : OnResultCallbackListener {
- override fun onResult(result: ArrayList?) {
- if (result == null) {
- "拍照失败,请重试".show(context)
- return
- }
- analyticalSelectResult(result[0])
- }
-
- override fun onCancel() {
-
- }
- })
- }
-
- override fun onItemClick(position: Int) {
- if (realPaths[position].isEmpty()) {
- "图片加载失败,无法查看大图".show(context)
- } else {
- context.navigatePageTo(position, realPaths)
- }
- }
-
- override fun onItemLongClick(view: View?, position: Int) {
- imageAdapter.deleteImage(position)
- }
- })
-
- /**************************************************************************************/
- binding.installButton.setOnClickListener {
- if (isNetworkConnected()) {
- val companyId = SaveKeyValues.getValue(LocaleConstant.USER_COMPANY_ID, "") as String
-
- val itemPosition = binding.objectAttrInclude.objectTypeSpinner.selectedItemPosition
- val objectTypeCode = itemPosition + 1
-
- if (binding.markerAttrInclude.markerIdView.text.isNullOrBlank()) {
- "标识器ID不能为空,请读标识器".show(this)
- return@setOnClickListener
- }
-
- if (binding.objectAttrInclude.constructDateView.text.isNullOrBlank()) {
- "请选择建设时间".show(this)
- return@setOnClickListener
- }
-
- if (binding.markerAttrInclude.markerCountView.text.isNullOrBlank()) {
- "请输入电子标签数量".show(this)
- return@setOnClickListener
- }
-
- //保存默认值
- "objectCodeView".setDefaultValue(binding.objectAttrInclude.objectCodeView)
- "objectNameView".setDefaultValue(binding.objectAttrInclude.objectNameView)
- "inlineNameView".setDefaultValue(binding.objectAttrInclude.inlineNameView)
- "capacityView".setDefaultValue(binding.objectAttrInclude.capacityView)
- "transformerSpecView".setDefaultValue(binding.objectAttrInclude.transformerSpecView)
- "sLengthView".setDefaultValue(binding.objectAttrInclude.sLengthView)
- "sWidthView".setDefaultValue(binding.objectAttrInclude.sWidthView)
- "sHeightView".setDefaultValue(binding.objectAttrInclude.sHeightView)
- "inlineCountView".setDefaultValue(binding.objectAttrInclude.inlineCountView)
- "outlineCountView".setDefaultValue(binding.objectAttrInclude.outlineCountView)
- "bottomDepthView".setDefaultValue(binding.objectAttrInclude.bottomDepthView)
- "rowCountView".setDefaultValue(binding.objectAttrInclude.rowCountView)
- "rowHoleCountView".setDefaultValue(binding.objectAttrInclude.rowHoleCountView)
- "coverDepthView".setDefaultValue(binding.objectAttrInclude.coverDepthView)
- "remainingChannelsView".setDefaultValue(binding.objectAttrInclude.remainingChannelsView)
- "tieCableView1".setDefaultValue(binding.objectAttrInclude.tieCableView1)
- "tieCableView2".setDefaultValue(binding.objectAttrInclude.tieCableView2)
- "jointCountView".setDefaultValue(binding.objectAttrInclude.jointCountView)
- "casingHoleCountView".setDefaultValue(binding.objectAttrInclude.casingHoleCountView)
- "casingHoleDiameterView".setDefaultValue(binding.objectAttrInclude.casingHoleDiameterView)
- "heightView".setDefaultValue(binding.objectAttrInclude.heightView)
- "lineNumberView".setDefaultValue(binding.objectAttrInclude.lineNumberView)
- "inspectionUnitView".setDefaultValue(binding.objectAttrInclude.inspectionUnitView)
- "areaView".setDefaultValue(binding.objectAttrInclude.areaView)
- "roadView".setDefaultValue(binding.objectAttrInclude.roadView)
- "objectRemarkView1".setDefaultValue(binding.objectAttrInclude.objectRemarkView1)
- "objectRemarkView2".setDefaultValue(binding.objectAttrInclude.objectRemarkView2)
- "objectRemarkView3".setDefaultValue(binding.objectAttrInclude.objectRemarkView3)
- "ownerView".setDefaultValue(binding.markerAttrInclude.ownerView)
- "markerDepthView".setDefaultValue(binding.markerAttrInclude.markerDepthView)
- "markerCountView".setDefaultValue(binding.markerAttrInclude.markerCountView)
- "remarkView1".setDefaultValue(binding.markerAttrInclude.remarkView1)
- "remarkView2".setDefaultValue(binding.markerAttrInclude.remarkView2)
- "remarkView3".setDefaultValue(binding.markerAttrInclude.remarkView3)
-
- val labelData = LabelDataClass(
- companyId,
- objectTypeCode.toString(),
- binding.objectAttrInclude.objectCodeView.text.toString(),
- binding.objectAttrInclude.objectNameView.text.toString(),
- binding.objectAttrInclude.voltageLevelView.text.toString(),
- binding.objectAttrInclude.objectModeSpinner.selectedItem.toString(),
- "进线${binding.objectAttrInclude.inlineNameView.text}",
- binding.objectAttrInclude.wellCoverMaterialSpinner.selectedItem.toString(),
- "${binding.objectAttrInclude.capacityView.text}KVA",
- binding.objectAttrInclude.transformerSpecView.text.toString(),
- "${binding.objectAttrInclude.sLengthView.text}米长 x ${binding.objectAttrInclude.sWidthView.text}米宽 x ${binding.objectAttrInclude.sHeightView.text}米高",
- binding.objectAttrInclude.inlineCountView.text.toString(),
- binding.objectAttrInclude.outlineCountView.text.toString(),
- binding.objectAttrInclude.cabinetTypeSpinner.selectedItem.toString(),
- binding.objectAttrInclude.bottomDepthView.text.toString(),
- "${binding.objectAttrInclude.rowCountView.text}排 x ${binding.objectAttrInclude.rowHoleCountView.text}孔",
- "${binding.objectAttrInclude.coverDepthView.text}米",
- binding.objectAttrInclude.crossPipeLineView.text.toString(),
- binding.objectAttrInclude.remainingChannelsView.text.toString(),
- binding.objectAttrInclude.tieCableView1.text.toString(),
- binding.objectAttrInclude.tieCableView2.text.toString(),
- binding.objectAttrInclude.jointCountView.text.toString(),
- binding.objectAttrInclude.casingMaterialSpinner.selectedItem.toString(),
- "${binding.objectAttrInclude.casingHoleCountView.text}孔,直径${binding.objectAttrInclude.casingHoleDiameterView.text}毫米",
- "${binding.objectAttrInclude.heightView.text.toString()}米",
- binding.objectAttrInclude.lineNumberView.text.toString(),
- binding.objectAttrInclude.constructDateView.text.toString(),
- binding.objectAttrInclude.inspectionUnitView.text.toString(),
- binding.objectAttrInclude.areaView.text.toString(),
- binding.objectAttrInclude.roadView.text.toString(),
- binding.objectAttrInclude.objectRemarkView1.text.toString(),
- binding.objectAttrInclude.objectRemarkView2.text.toString(),
- binding.objectAttrInclude.objectRemarkView3.text.toString(),
- binding.markerAttrInclude.markerIdView.text.toString(),
- binding.markerAttrInclude.markerTypeSpinner.selectedItem.toString(),
- binding.markerAttrInclude.ownerView.text.toString(),
- binding.markerAttrInclude.markerDepthView.text.toString(),
- binding.markerAttrInclude.installTimeView.text.toString(),
- binding.markerAttrInclude.lngView.text.toString(),
- binding.markerAttrInclude.latView.text.toString(),
- binding.markerAttrInclude.markerCountView.text.toString(),
- binding.markerAttrInclude.remarkView1.text.toString(),
- binding.markerAttrInclude.remarkView2.text.toString(),
- binding.markerAttrInclude.remarkView3.text.toString(),
- realPaths
- )
-
- //先存本地
- lifecycleScope.launch {
- withContext(Dispatchers.IO) {
- DataBaseManager.get.insertLabel(labelData)
- }
- }
-
- //再存服务器
- taskViewModel.installLabel(labelData)
- } else {
- NoNetworkDialog.Builder()
- .setContext(context)
- .setOnDialogButtonClickListener(object :
- NoNetworkDialog.OnDialogButtonClickListener {
- override fun onButtonClick() {
- val intent = Intent(Settings.ACTION_SETTINGS)
- startActivity(intent)
- }
- }).build().show()
- }
- }
-
- binding.readLabelButton.setOnClickListener {
- gpioManager.setGpioHigh("18")
-
- LoadingDialogHub.show(this, "标识器读取中,请稍后...")
-
- soundResId = soundPool.load(this, R.raw.ring3, 1)
- soundPool.setOnLoadCompleteListener { soundPool, _, _ ->
- soundPool.play(soundResId, 1f, 1f, 0, -1, 1f)
- }
-
- // 1000ms后发送读标识器或搜索信号
- weakReferenceHandler.postDelayed({
- try {
- // 发送读标识器或搜索信号
- out.write("2".toByteArray())
- out.flush()
- } catch (e: IOException) {
- e.printStackTrace()
- }
- }, 1000)
- }
- }
-
- override fun onDataReceived(buffer: ByteArray) {
- Log.d(kTag, "onDataReceived => " + buffer.contentToString())
- if (buffer != null) {
- val message = weakReferenceHandler.obtainMessage()
- message.what = 2023081701
- message.obj = buffer
- weakReferenceHandler.sendMessage(message)
- }
- }
-
- override fun handleMessage(msg: Message): Boolean {
- if (msg.what == 2023081701) {
- soundPool.release()
-
- val buffer = msg.obj as ByteArray
- val hex = buffer.toHex()
-
- if (hex.length >= 20) {
- val markerId = hex.substring(0, 20).hexToString()
-
- gpioManager.setGpioLow("18")
-
- //查本地库
- val result = DataBaseManager.get.queryLabelById(markerId)
- if (result.isEmpty()) {
- binding.markerAttrInclude.markerIdView.text = markerId
- } else {
- "此标识器已安装,请更换标识器!".show(this)
- }
- LoadingDialogHub.dismiss()
- }
- }
- return true
- }
-
- private fun analyticalSelectResult(result: LocalMedia) {
- //压缩图片
- result.realPath.compressImage(this, object : OnImageCompressListener {
- override fun onSuccess(file: File) {
- realPaths.add(file.absolutePath)
- imageAdapter.setupImage(realPaths)
- }
-
- override fun onError(e: Throwable) {
- e.printStackTrace()
- }
- })
- }
-
- //根据选择类型控制界面某些区域显隐
- private fun setLayoutVisibility(vararg args: Int) {
- binding.objectAttrInclude.objectModeLayout.visibility = args[0]
- binding.objectAttrInclude.inlineNameLayout.visibility = args[1]
- binding.objectAttrInclude.wellCoverMaterialLayout.visibility = args[2]
- binding.objectAttrInclude.capacityLayout.visibility = args[3]
- binding.objectAttrInclude.sizeLayout.visibility = args[4]
- binding.objectAttrInclude.inlineCountLayout.visibility = args[5]
- binding.objectAttrInclude.outlineCountLayout.visibility = args[6]
- binding.objectAttrInclude.wellDepthLayout.visibility = args[7]
- binding.objectAttrInclude.pipeLineLayout.visibility = args[8]
- binding.objectAttrInclude.jointCountLayout.visibility = args[9]
- binding.objectAttrInclude.heightLayout.visibility = args[10]
- }
-
- override fun onDestroy() {
- super.onDestroy()
- soundPool.release()
- gpioManager.setGpioLow("18")
- }
-
- override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- soundPool.release()
- }
- return super.onKeyDown(keyCode, event)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 14e9b51..92d80c5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -70,7 +70,6 @@
android:name=".view.ElectricMarkerDetailActivity"
android:theme="@style/Theme.ActivityDialogStyle" />
-
diff --git a/app/src/main/java/com/casic/electric/detector/view/InstallLabelActivity.kt b/app/src/main/java/com/casic/electric/detector/view/InstallLabelActivity.kt
deleted file mode 100644
index 6510104..0000000
--- a/app/src/main/java/com/casic/electric/detector/view/InstallLabelActivity.kt
+++ /dev/null
@@ -1,601 +0,0 @@
-package com.casic.electric.detector.view
-
-import android.annotation.SuppressLint
-import android.app.AlertDialog
-import android.app.DatePickerDialog
-import android.content.Context
-import android.content.DialogInterface
-import android.content.Intent
-import android.media.AudioAttributes
-import android.media.SoundPool
-import android.os.Bundle
-import android.os.Handler
-import android.os.Message
-import android.provider.Settings
-import android.util.Log
-import android.view.KeyEvent
-import android.view.View
-import android.view.WindowManager
-import android.widget.AdapterView
-import androidx.lifecycle.ViewModelProvider
-import androidx.lifecycle.lifecycleScope
-import com.amap.api.location.AMapLocation
-import com.casic.electric.detector.R
-import com.casic.electric.detector.adapter.EditableImageAdapter
-import com.casic.electric.detector.base.SerialPortActivity
-import com.casic.electric.detector.callback.ILocationListener
-import com.casic.electric.detector.callback.OnImageCompressListener
-import com.casic.electric.detector.databinding.ActivityInstallLabelBinding
-import com.casic.electric.detector.extensions.*
-import com.casic.electric.detector.utils.*
-import com.casic.electric.detector.vm.TaskViewModel
-import com.luck.picture.lib.basic.PictureSelector
-import com.luck.picture.lib.config.SelectMimeType
-import com.luck.picture.lib.entity.LocalMedia
-import com.luck.picture.lib.interfaces.OnResultCallbackListener
-import com.pengxh.kt.lite.extensions.*
-import com.pengxh.kt.lite.utils.LoadState
-import com.pengxh.kt.lite.utils.LoadingDialogHub
-import com.pengxh.kt.lite.utils.SaveKeyValues
-import com.pengxh.kt.lite.utils.WeakReferenceHandler
-import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.withContext
-import java.io.File
-import java.io.IOException
-import java.util.*
-
-@SuppressLint("SetTextI18n")
-class InstallLabelActivity : SerialPortActivity(), Handler.Callback {
-
- private val kTag = "LabelActivity"
- private val context: Context = this@InstallLabelActivity
- private val gpioManager by lazy { GpioManager() }
- private val calendar by lazy { Calendar.getInstance() }
- private val locationHub by lazy { LocationHub(this) }
- private val realPaths = ArrayList() //真实图片路径
- private var soundResId = 0
- private lateinit var weakReferenceHandler: WeakReferenceHandler
- private lateinit var soundPool: SoundPool
- private lateinit var imageAdapter: EditableImageAdapter
- private lateinit var taskViewModel: TaskViewModel
-
- override fun initViewBinding(): ActivityInstallLabelBinding {
- return ActivityInstallLabelBinding.inflate(layoutInflater)
- }
-
- override fun setupTopBarLayout() {
- binding.titleInclude.titleView.text = "安装新标识器"
- binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(this))
- }
-
- override fun initOnCreate(savedInstanceState: Bundle?) {
- window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN or WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)
-
- weakReferenceHandler = WeakReferenceHandler(this)
-
- val audioAttributes = AudioAttributes.Builder()
- .setUsage(AudioAttributes.USAGE_MEDIA)
- .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
- .build()
- soundPool = SoundPool.Builder()
- .setMaxStreams(16)
- .setAudioAttributes(audioAttributes)
- .build()
-
- //设置上次填写过的值
- binding.objectAttrInclude.objectCodeView.setText("objectCodeView".getDefaultValue())
- binding.objectAttrInclude.objectNameView.setText("objectNameView".getDefaultValue())
- binding.objectAttrInclude.inlineNameView.setText("inlineNameView".getDefaultValue())
- binding.objectAttrInclude.capacityView.setText("capacityView".getDefaultValue())
- binding.objectAttrInclude.transformerSpecView.setText("transformerSpecView".getDefaultValue())
- binding.objectAttrInclude.sLengthView.setText("sLengthView".getDefaultValue())
- binding.objectAttrInclude.sWidthView.setText("sWidthView".getDefaultValue())
- binding.objectAttrInclude.sHeightView.setText("sHeightView".getDefaultValue())
- binding.objectAttrInclude.inlineCountView.setText("inlineCountView".getDefaultValue())
- binding.objectAttrInclude.outlineCountView.setText("outlineCountView".getDefaultValue())
- binding.objectAttrInclude.bottomDepthView.setText("bottomDepthView".getDefaultValue())
- binding.objectAttrInclude.rowCountView.setText("rowCountView".getDefaultValue())
- binding.objectAttrInclude.rowHoleCountView.setText("rowHoleCountView".getDefaultValue())
- binding.objectAttrInclude.coverDepthView.setText("coverDepthView".getDefaultValue())
- binding.objectAttrInclude.remainingChannelsView.setText("remainingChannelsView".getDefaultValue())
- binding.objectAttrInclude.tieCableView1.setText("tieCableView1".getDefaultValue())
- binding.objectAttrInclude.tieCableView2.setText("tieCableView2".getDefaultValue())
- binding.objectAttrInclude.jointCountView.setText("jointCountView".getDefaultValue())
- binding.objectAttrInclude.casingHoleCountView.setText("casingHoleCountView".getDefaultValue())
- binding.objectAttrInclude.casingHoleDiameterView.setText("casingHoleDiameterView".getDefaultValue())
- binding.objectAttrInclude.heightView.setText("heightView".getDefaultValue())
- binding.objectAttrInclude.lineNumberView.setText("lineNumberView".getDefaultValue())
- binding.objectAttrInclude.inspectionUnitView.setText("inspectionUnitView".getDefaultValue())
- binding.objectAttrInclude.areaView.setText("areaView".getDefaultValue())
- binding.objectAttrInclude.roadView.setText("roadView".getDefaultValue())
- binding.objectAttrInclude.objectRemarkView1.setText("objectRemarkView1".getDefaultValue())
- binding.objectAttrInclude.objectRemarkView2.setText("objectRemarkView2".getDefaultValue())
- binding.objectAttrInclude.objectRemarkView3.setText("objectRemarkView3".getDefaultValue())
- binding.markerAttrInclude.ownerView.setText("ownerView".getDefaultValue())
- binding.markerAttrInclude.markerDepthView.setText("markerDepthView".getDefaultValue())
- binding.markerAttrInclude.markerCountView.setText("markerCountView".getDefaultValue())
- binding.markerAttrInclude.remarkView1.setText("remarkView1".getDefaultValue())
- binding.markerAttrInclude.remarkView2.setText("remarkView2".getDefaultValue())
- binding.markerAttrInclude.remarkView3.setText("remarkView3".getDefaultValue())
-
- //初始化图片九宫格
- imageAdapter = EditableImageAdapter(this, 3, 3)
- binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter
-
- taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
- }
-
- override fun observeRequestState() {
- taskViewModel.loadState.observe(this) {
- when (it) {
- LoadState.Loading -> LoadingDialogHub.show(this, "标识器安装中,请稍后...")
- LoadState.Success -> {
- LoadingDialogHub.dismiss()
- finish()
- }
-
- else -> LoadingDialogHub.dismiss()
- }
- }
- }
-
- override fun initEvent() {
- binding.titleInclude.leftBackView.setOnClickListener { finish() }
-
- /**************************************************************************************/
- binding.objectAttrInclude.objectTypeSpinner.show(this, LocaleConstant.CONTENT_ARRAY, 0)
- binding.objectAttrInclude.objectTypeSpinner.onItemSelectedListener =
- object : AdapterView.OnItemSelectedListener {
- override fun onItemSelected(
- parent: AdapterView<*>?, view: View?, position: Int, id: Long
- ) {
- when (position) {
- 0 -> {
- //选择电缆井
- binding.objectAttrInclude.objectModeView.text = "类型:"
- binding.objectAttrInclude.wellCoverMaterialView.text = "井盖材质:"
- binding.objectAttrInclude.bottomDepthNameView.text = "井深:"
- setLayoutVisibility(
- View.VISIBLE, View.GONE, View.VISIBLE, View.GONE, View.VISIBLE,
- View.GONE, View.GONE, View.VISIBLE, View.GONE, View.VISIBLE,
- View.GONE
- )
- binding.objectAttrInclude.objectModeSpinner.show(
- this@InstallLabelActivity, LocaleConstant.OBJECT_MODE_ARRAY, 0
- )
- binding.objectAttrInclude.wellCoverMaterialSpinner.show(
- this@InstallLabelActivity,
- LocaleConstant.WELL_COVER_MATERIAL_ARRAY_1,
- 0
- )
- }
-
- 1 -> {
- //选择电缆通道
- binding.objectAttrInclude.bottomDepthNameView.text = "底部深度:"
- setLayoutVisibility(
- View.GONE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.GONE, View.GONE, View.VISIBLE, View.VISIBLE, View.VISIBLE,
- View.GONE
- )
- }
-
- 2 -> {
- //选择配电房
- setLayoutVisibility(
- View.GONE, View.GONE, View.GONE, View.VISIBLE, View.VISIBLE,
- View.VISIBLE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.GONE
- )
- }
-
- 3 -> {
- //选择开关站
- setLayoutVisibility(
- View.GONE, View.GONE, View.GONE, View.GONE, View.VISIBLE,
- View.VISIBLE, View.VISIBLE, View.GONE, View.GONE, View.GONE,
- View.GONE
- )
- }
-
- 4 -> {
- //选择台区
- binding.objectAttrInclude.objectModeView.text = "变压器型号:"
- setLayoutVisibility(
- View.VISIBLE, View.VISIBLE, View.GONE, View.GONE, View.GONE,
- View.GONE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.GONE
- )
- binding.objectAttrInclude.objectModeSpinner.show(
- this@InstallLabelActivity, arrayOf("变压器 KVA"), 0
- )
- }
-
- 5 -> {
- //选择杆塔
- binding.objectAttrInclude.wellCoverMaterialView.text = "对象材质:"
- setLayoutVisibility(
- View.GONE, View.GONE, View.VISIBLE, View.GONE, View.GONE,
- View.GONE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.VISIBLE
- )
- binding.objectAttrInclude.wellCoverMaterialSpinner.show(
- this@InstallLabelActivity,
- LocaleConstant.WELL_COVER_MATERIAL_ARRAY_2,
- 0
- )
- }
- }
- }
-
- override fun onNothingSelected(parent: AdapterView<*>?) {
-
- }
- }
-
- binding.objectAttrInclude.cabinetTypeSpinner.show(
- this,
- LocaleConstant.CABINET_TYPE_ARRAY,
- 0
- )
- binding.objectAttrInclude.casingMaterialSpinner.show(
- this,
- LocaleConstant.PIPE_MATERIAL_ARRAY,
- 0
- )
- binding.markerAttrInclude.markerTypeSpinner.show(this, LocaleConstant.MARKER_TYPE_ARRAY, 0)
-
- //电压等级-多选
- binding.objectAttrInclude.voltageLevelView.setOnClickListener {
- AlertDialog.Builder(context)
- .setCancelable(false)
- .setIcon(R.mipmap.ic_launcher)
- .setTitle("请选择电压等级")
- .setMultiChoiceItems(
- LocaleConstant.VOLTAGE_LEVEL_ARRAY, LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY
- ) { _, which, isChecked ->
- LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[which] = isChecked
- }
- .setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
- .setPositiveButton("确定") { _, _ ->
- val temp = ArrayList()
- LocaleConstant.VOLTAGE_LEVEL_ARRAY.forEachIndexed { index, s ->
- if (LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[index]) {
- temp.add(s)
- }
- }
-
- binding.objectAttrInclude.voltageLevelView.text = temp.reformat()
- }.show()
- }
-
- //交叉管道类型-多选
- binding.objectAttrInclude.crossPipeLineView.setOnClickListener {
- AlertDialog.Builder(context)
- .setCancelable(false)
- .setIcon(R.mipmap.ic_launcher)
- .setTitle("请选择交叉管道类型")
- .setMultiChoiceItems(
- LocaleConstant.CROSS_PIPE_ARRAY, LocaleConstant.CROSS_PIPE_STATE_ARRAY
- ) { _, which, isChecked ->
- LocaleConstant.CROSS_PIPE_STATE_ARRAY[which] = isChecked
- }
- .setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
- .setPositiveButton("确定") { _, _ ->
- val temp = ArrayList()
- LocaleConstant.CROSS_PIPE_ARRAY.forEachIndexed { index, s ->
- if (LocaleConstant.CROSS_PIPE_STATE_ARRAY[index]) {
- temp.add(s)
- }
- }
-
- binding.objectAttrInclude.crossPipeLineView.text = temp.reformat()
- }.show()
- }
-
- binding.objectAttrInclude.constructDateView.setOnClickListener {
- val datePicker = DatePickerDialog(
- this,
- null,
- calendar.get(Calendar.YEAR),
- calendar.get(Calendar.MONTH),
- calendar.get(Calendar.DAY_OF_MONTH)
- )
- datePicker.show()
-
- datePicker.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener {
- val year = datePicker.datePicker.year
- val month = datePicker.datePicker.month + 1
- val day = datePicker.datePicker.dayOfMonth
- val selectedDate = String.format(
- "%s-%s-%s", year, month.appendZero(), day.appendZero()
- )
-
- //当前时间
- val current = System.currentTimeMillis().timestampToTime()
- val today = "$selectedDate $current".dateToTimestamp()
- if (Date(today).after(Date())) {
- "建设年代不能早于当前日期".show(context)
- } else {
- datePicker.dismiss()
- binding.objectAttrInclude.constructDateView.text = selectedDate
- }
- }
- }
-
- binding.markerAttrInclude.installTimeView.text =
- System.currentTimeMillis().timestampToCompleteDate()
- locationHub.getCurrentLocation(true, object : ILocationListener {
- override fun onAMapLocationGet(location: AMapLocation?) {
- if (location != null) {
- binding.markerAttrInclude.lngView.text = location.longitude.toString()
- binding.markerAttrInclude.latView.text = location.latitude.toString()
- } else {
- "当前位置信号差,无法获取定位".show(context)
- }
- }
- })
-
- imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
- override fun onAddImageClick() {
- PictureSelector.create(this@InstallLabelActivity)
- .openCamera(SelectMimeType.ofImage())
- .forResult(object : OnResultCallbackListener {
- override fun onResult(result: ArrayList?) {
- if (result == null) {
- "拍照失败,请重试".show(context)
- return
- }
- analyticalSelectResult(result[0])
- }
-
- override fun onCancel() {
-
- }
- })
- }
-
- override fun onItemClick(position: Int) {
- if (realPaths[position].isEmpty()) {
- "图片加载失败,无法查看大图".show(context)
- } else {
- context.navigatePageTo(position, realPaths)
- }
- }
-
- override fun onItemLongClick(view: View?, position: Int) {
- imageAdapter.deleteImage(position)
- }
- })
-
- /**************************************************************************************/
- binding.installButton.setOnClickListener {
- if (isNetworkConnected()) {
- val companyId = SaveKeyValues.getValue(LocaleConstant.USER_COMPANY_ID, "") as String
-
- val itemPosition = binding.objectAttrInclude.objectTypeSpinner.selectedItemPosition
- val objectTypeCode = itemPosition + 1
-
- if (binding.markerAttrInclude.markerIdView.text.isNullOrBlank()) {
- "标识器ID不能为空,请读标识器".show(this)
- return@setOnClickListener
- }
-
- if (binding.objectAttrInclude.constructDateView.text.isNullOrBlank()) {
- "请选择建设时间".show(this)
- return@setOnClickListener
- }
-
- if (binding.markerAttrInclude.markerCountView.text.isNullOrBlank()) {
- "请输入电子标签数量".show(this)
- return@setOnClickListener
- }
-
- //保存默认值
- "objectCodeView".setDefaultValue(binding.objectAttrInclude.objectCodeView)
- "objectNameView".setDefaultValue(binding.objectAttrInclude.objectNameView)
- "inlineNameView".setDefaultValue(binding.objectAttrInclude.inlineNameView)
- "capacityView".setDefaultValue(binding.objectAttrInclude.capacityView)
- "transformerSpecView".setDefaultValue(binding.objectAttrInclude.transformerSpecView)
- "sLengthView".setDefaultValue(binding.objectAttrInclude.sLengthView)
- "sWidthView".setDefaultValue(binding.objectAttrInclude.sWidthView)
- "sHeightView".setDefaultValue(binding.objectAttrInclude.sHeightView)
- "inlineCountView".setDefaultValue(binding.objectAttrInclude.inlineCountView)
- "outlineCountView".setDefaultValue(binding.objectAttrInclude.outlineCountView)
- "bottomDepthView".setDefaultValue(binding.objectAttrInclude.bottomDepthView)
- "rowCountView".setDefaultValue(binding.objectAttrInclude.rowCountView)
- "rowHoleCountView".setDefaultValue(binding.objectAttrInclude.rowHoleCountView)
- "coverDepthView".setDefaultValue(binding.objectAttrInclude.coverDepthView)
- "remainingChannelsView".setDefaultValue(binding.objectAttrInclude.remainingChannelsView)
- "tieCableView1".setDefaultValue(binding.objectAttrInclude.tieCableView1)
- "tieCableView2".setDefaultValue(binding.objectAttrInclude.tieCableView2)
- "jointCountView".setDefaultValue(binding.objectAttrInclude.jointCountView)
- "casingHoleCountView".setDefaultValue(binding.objectAttrInclude.casingHoleCountView)
- "casingHoleDiameterView".setDefaultValue(binding.objectAttrInclude.casingHoleDiameterView)
- "heightView".setDefaultValue(binding.objectAttrInclude.heightView)
- "lineNumberView".setDefaultValue(binding.objectAttrInclude.lineNumberView)
- "inspectionUnitView".setDefaultValue(binding.objectAttrInclude.inspectionUnitView)
- "areaView".setDefaultValue(binding.objectAttrInclude.areaView)
- "roadView".setDefaultValue(binding.objectAttrInclude.roadView)
- "objectRemarkView1".setDefaultValue(binding.objectAttrInclude.objectRemarkView1)
- "objectRemarkView2".setDefaultValue(binding.objectAttrInclude.objectRemarkView2)
- "objectRemarkView3".setDefaultValue(binding.objectAttrInclude.objectRemarkView3)
- "ownerView".setDefaultValue(binding.markerAttrInclude.ownerView)
- "markerDepthView".setDefaultValue(binding.markerAttrInclude.markerDepthView)
- "markerCountView".setDefaultValue(binding.markerAttrInclude.markerCountView)
- "remarkView1".setDefaultValue(binding.markerAttrInclude.remarkView1)
- "remarkView2".setDefaultValue(binding.markerAttrInclude.remarkView2)
- "remarkView3".setDefaultValue(binding.markerAttrInclude.remarkView3)
-
- val labelData = LabelDataClass(
- companyId,
- objectTypeCode.toString(),
- binding.objectAttrInclude.objectCodeView.text.toString(),
- binding.objectAttrInclude.objectNameView.text.toString(),
- binding.objectAttrInclude.voltageLevelView.text.toString(),
- binding.objectAttrInclude.objectModeSpinner.selectedItem.toString(),
- "进线${binding.objectAttrInclude.inlineNameView.text}",
- binding.objectAttrInclude.wellCoverMaterialSpinner.selectedItem.toString(),
- "${binding.objectAttrInclude.capacityView.text}KVA",
- binding.objectAttrInclude.transformerSpecView.text.toString(),
- "${binding.objectAttrInclude.sLengthView.text}米长 x ${binding.objectAttrInclude.sWidthView.text}米宽 x ${binding.objectAttrInclude.sHeightView.text}米高",
- binding.objectAttrInclude.inlineCountView.text.toString(),
- binding.objectAttrInclude.outlineCountView.text.toString(),
- binding.objectAttrInclude.cabinetTypeSpinner.selectedItem.toString(),
- binding.objectAttrInclude.bottomDepthView.text.toString(),
- "${binding.objectAttrInclude.rowCountView.text}排 x ${binding.objectAttrInclude.rowHoleCountView.text}孔",
- "${binding.objectAttrInclude.coverDepthView.text}米",
- binding.objectAttrInclude.crossPipeLineView.text.toString(),
- binding.objectAttrInclude.remainingChannelsView.text.toString(),
- binding.objectAttrInclude.tieCableView1.text.toString(),
- binding.objectAttrInclude.tieCableView2.text.toString(),
- binding.objectAttrInclude.jointCountView.text.toString(),
- binding.objectAttrInclude.casingMaterialSpinner.selectedItem.toString(),
- "${binding.objectAttrInclude.casingHoleCountView.text}孔,直径${binding.objectAttrInclude.casingHoleDiameterView.text}毫米",
- "${binding.objectAttrInclude.heightView.text.toString()}米",
- binding.objectAttrInclude.lineNumberView.text.toString(),
- binding.objectAttrInclude.constructDateView.text.toString(),
- binding.objectAttrInclude.inspectionUnitView.text.toString(),
- binding.objectAttrInclude.areaView.text.toString(),
- binding.objectAttrInclude.roadView.text.toString(),
- binding.objectAttrInclude.objectRemarkView1.text.toString(),
- binding.objectAttrInclude.objectRemarkView2.text.toString(),
- binding.objectAttrInclude.objectRemarkView3.text.toString(),
- binding.markerAttrInclude.markerIdView.text.toString(),
- binding.markerAttrInclude.markerTypeSpinner.selectedItem.toString(),
- binding.markerAttrInclude.ownerView.text.toString(),
- binding.markerAttrInclude.markerDepthView.text.toString(),
- binding.markerAttrInclude.installTimeView.text.toString(),
- binding.markerAttrInclude.lngView.text.toString(),
- binding.markerAttrInclude.latView.text.toString(),
- binding.markerAttrInclude.markerCountView.text.toString(),
- binding.markerAttrInclude.remarkView1.text.toString(),
- binding.markerAttrInclude.remarkView2.text.toString(),
- binding.markerAttrInclude.remarkView3.text.toString(),
- realPaths
- )
-
- //先存本地
- lifecycleScope.launch {
- withContext(Dispatchers.IO) {
- DataBaseManager.get.insertLabel(labelData)
- }
- }
-
- //再存服务器
- taskViewModel.installLabel(labelData)
- } else {
- NoNetworkDialog.Builder()
- .setContext(context)
- .setOnDialogButtonClickListener(object :
- NoNetworkDialog.OnDialogButtonClickListener {
- override fun onButtonClick() {
- val intent = Intent(Settings.ACTION_SETTINGS)
- startActivity(intent)
- }
- }).build().show()
- }
- }
-
- binding.readLabelButton.setOnClickListener {
- gpioManager.setGpioHigh("18")
-
- LoadingDialogHub.show(this, "标识器读取中,请稍后...")
-
- soundResId = soundPool.load(this, R.raw.ring3, 1)
- soundPool.setOnLoadCompleteListener { soundPool, _, _ ->
- soundPool.play(soundResId, 1f, 1f, 0, -1, 1f)
- }
-
- // 1000ms后发送读标识器或搜索信号
- weakReferenceHandler.postDelayed({
- try {
- // 发送读标识器或搜索信号
- out.write("2".toByteArray())
- out.flush()
- } catch (e: IOException) {
- e.printStackTrace()
- }
- }, 1000)
- }
- }
-
- override fun onDataReceived(buffer: ByteArray) {
- Log.d(kTag, "onDataReceived => " + buffer.contentToString())
- if (buffer != null) {
- val message = weakReferenceHandler.obtainMessage()
- message.what = 2023081701
- message.obj = buffer
- weakReferenceHandler.sendMessage(message)
- }
- }
-
- override fun handleMessage(msg: Message): Boolean {
- if (msg.what == 2023081701) {
- soundPool.release()
-
- val buffer = msg.obj as ByteArray
- val hex = buffer.toHex()
-
- if (hex.length >= 20) {
- val markerId = hex.substring(0, 20).hexToString()
-
- gpioManager.setGpioLow("18")
-
- //查本地库
- val result = DataBaseManager.get.queryLabelById(markerId)
- if (result.isEmpty()) {
- binding.markerAttrInclude.markerIdView.text = markerId
- } else {
- "此标识器已安装,请更换标识器!".show(this)
- }
- LoadingDialogHub.dismiss()
- }
- }
- return true
- }
-
- private fun analyticalSelectResult(result: LocalMedia) {
- //压缩图片
- result.realPath.compressImage(this, object : OnImageCompressListener {
- override fun onSuccess(file: File) {
- realPaths.add(file.absolutePath)
- imageAdapter.setupImage(realPaths)
- }
-
- override fun onError(e: Throwable) {
- e.printStackTrace()
- }
- })
- }
-
- //根据选择类型控制界面某些区域显隐
- private fun setLayoutVisibility(vararg args: Int) {
- binding.objectAttrInclude.objectModeLayout.visibility = args[0]
- binding.objectAttrInclude.inlineNameLayout.visibility = args[1]
- binding.objectAttrInclude.wellCoverMaterialLayout.visibility = args[2]
- binding.objectAttrInclude.capacityLayout.visibility = args[3]
- binding.objectAttrInclude.sizeLayout.visibility = args[4]
- binding.objectAttrInclude.inlineCountLayout.visibility = args[5]
- binding.objectAttrInclude.outlineCountLayout.visibility = args[6]
- binding.objectAttrInclude.wellDepthLayout.visibility = args[7]
- binding.objectAttrInclude.pipeLineLayout.visibility = args[8]
- binding.objectAttrInclude.jointCountLayout.visibility = args[9]
- binding.objectAttrInclude.heightLayout.visibility = args[10]
- }
-
- override fun onDestroy() {
- super.onDestroy()
- soundPool.release()
- gpioManager.setGpioLow("18")
- }
-
- override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- soundPool.release()
- }
- return super.onKeyDown(keyCode, event)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt
index a0a4aac..40a5f3d 100644
--- a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt
@@ -2,8 +2,10 @@
import android.annotation.SuppressLint
import android.app.AlertDialog
+import android.app.DatePickerDialog
import android.app.Dialog
import android.content.Context
+import android.content.DialogInterface
import android.graphics.Color
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
@@ -16,6 +18,7 @@
import android.view.View
import android.view.animation.Animation
import android.view.animation.RotateAnimation
+import android.widget.AdapterView
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import com.amap.api.location.AMapLocation
@@ -33,6 +36,7 @@
import com.casic.electric.detector.bean.SmallLabelBean
import com.casic.electric.detector.bean.TaskBean
import com.casic.electric.detector.callback.ILocationListener
+import com.casic.electric.detector.callback.OnImageCompressListener
import com.casic.electric.detector.cluster.ClusterItem
import com.casic.electric.detector.cluster.ClusterOverlay
import com.casic.electric.detector.cluster.RegionItem
@@ -41,14 +45,20 @@
import com.casic.electric.detector.databinding.DialogInstallSmallMarkerBinding
import com.casic.electric.detector.databinding.DialogSearchMarkerBinding
import com.casic.electric.detector.extensions.appendExcelDownloadUrl
+import com.casic.electric.detector.extensions.compressImage
import com.casic.electric.detector.extensions.drawCircle
+import com.casic.electric.detector.extensions.getDefaultValue
import com.casic.electric.detector.extensions.hexToString
import com.casic.electric.detector.extensions.initImmersionBar
import com.casic.electric.detector.extensions.isNumber
+import com.casic.electric.detector.extensions.reformat
+import com.casic.electric.detector.extensions.setDefaultValue
+import com.casic.electric.detector.extensions.show
import com.casic.electric.detector.extensions.toHex
import com.casic.electric.detector.utils.DataBaseManager
import com.casic.electric.detector.utils.ExcelHub
import com.casic.electric.detector.utils.GpioManager
+import com.casic.electric.detector.utils.LabelDataClass
import com.casic.electric.detector.utils.LocaleConstant
import com.casic.electric.detector.utils.LocationHub
import com.casic.electric.detector.utils.RouteOnMap
@@ -56,13 +66,22 @@
import com.casic.electric.detector.widgets.QueryMarkerDialog
import com.casic.electric.detector.widgets.SamplePopupWindow
import com.google.gson.Gson
+import com.luck.picture.lib.basic.PictureSelector
+import com.luck.picture.lib.config.SelectMimeType
+import com.luck.picture.lib.entity.LocalMedia
+import com.luck.picture.lib.interfaces.OnResultCallbackListener
+import com.pengxh.kt.lite.extensions.appendZero
import com.pengxh.kt.lite.extensions.binding
+import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.createDownloadFileDir
+import com.pengxh.kt.lite.extensions.dateToTimestamp
import com.pengxh.kt.lite.extensions.dp2px
import com.pengxh.kt.lite.extensions.initDialogLayoutParams
import com.pengxh.kt.lite.extensions.isNetworkConnected
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.extensions.timestampToCompleteDate
+import com.pengxh.kt.lite.extensions.timestampToTime
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.FileDownloadManager
import com.pengxh.kt.lite.utils.LoadState
@@ -78,6 +97,7 @@
import java.io.File
import java.text.DecimalFormat
import java.util.Calendar
+import java.util.Date
import java.util.Timer
import java.util.TimerTask
@@ -456,16 +476,16 @@
Log.d(kTag, "$kTag => $hex")
if (searchDialog.isDetectMarker) {
searchDialog.bindingValue(hex)
-// } else if (installMarkerDialog.isReadMarker) {
-// val markerId = hex.take(20).hexToString()
-// if (markerId.isNumber()) {
-// installMarkerDialog.bindingValue(markerId)
-// }
-// } else if (installSmallMarkerDialog.isReadMarker) {
-// val markerId = hex.take(20).hexToString()
-// if (markerId.isNumber()) {
-// installSmallMarkerDialog.bindingValue(markerId)
-// }
+ } else if (installMarkerDialog.isReadMarker) {
+ val markerId = hex.take(20).hexToString()
+ if (markerId.isNumber()) {
+ installMarkerDialog.bindingValue(markerId)
+ }
+ } else if (installSmallMarkerDialog.isReadMarker) {
+ val markerId = hex.take(20).hexToString()
+ if (markerId.isNumber()) {
+ installSmallMarkerDialog.bindingValue(markerId)
+ }
} else if (isFreeTask) {
val markerId = hex.take(20).hexToString()
if (markerId.isNumber()) {
@@ -847,6 +867,500 @@
var isReadMarker = false
var isInstallMarker = false
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ this.initDialogLayoutParams(1f)
+ setCancelable(false)
+ setCanceledOnTouchOutside(false)
+
+ //初始化数据
+ initDefaultData()
+
+ //返回
+ binding.titleInclude.leftBackView.setOnClickListener {
+ soundPool.autoPause()
+ dismiss()
+ }
+
+ binding.installButton.setOnClickListener {
+ val companyId = SaveKeyValues.getValue(LocaleConstant.USER_COMPANY_ID, "") as String
+
+ val itemPosition = binding.objectAttrInclude.objectTypeSpinner.selectedItemPosition
+ val objectTypeCode = itemPosition + 1
+
+ if (binding.markerAttrInclude.markerIdView.text.isNullOrBlank()) {
+ "标识器ID不能为空,请读标识器".show(context)
+ return@setOnClickListener
+ }
+
+ if (binding.objectAttrInclude.constructDateView.text.isNullOrBlank()) {
+ "请选择建设时间".show(context)
+ return@setOnClickListener
+ }
+
+ if (binding.markerAttrInclude.markerCountView.text.isNullOrBlank()) {
+ "请输入电子标签数量".show(context)
+ return@setOnClickListener
+ }
+
+ //保存默认值
+ "objectCodeView".setDefaultValue(binding.objectAttrInclude.objectCodeView)
+ "objectNameView".setDefaultValue(binding.objectAttrInclude.objectNameView)
+ "inlineNameView".setDefaultValue(binding.objectAttrInclude.inlineNameView)
+ "capacityView".setDefaultValue(binding.objectAttrInclude.capacityView)
+ "transformerSpecView".setDefaultValue(binding.objectAttrInclude.transformerSpecView)
+ "sLengthView".setDefaultValue(binding.objectAttrInclude.sLengthView)
+ "sWidthView".setDefaultValue(binding.objectAttrInclude.sWidthView)
+ "sHeightView".setDefaultValue(binding.objectAttrInclude.sHeightView)
+ "inlineCountView".setDefaultValue(binding.objectAttrInclude.inlineCountView)
+ "outlineCountView".setDefaultValue(binding.objectAttrInclude.outlineCountView)
+ "bottomDepthView".setDefaultValue(binding.objectAttrInclude.bottomDepthView)
+ "rowCountView".setDefaultValue(binding.objectAttrInclude.rowCountView)
+ "rowHoleCountView".setDefaultValue(binding.objectAttrInclude.rowHoleCountView)
+ "coverDepthView".setDefaultValue(binding.objectAttrInclude.coverDepthView)
+ "remainingChannelsView".setDefaultValue(binding.objectAttrInclude.remainingChannelsView)
+ "tieCableView1".setDefaultValue(binding.objectAttrInclude.tieCableView1)
+ "tieCableView2".setDefaultValue(binding.objectAttrInclude.tieCableView2)
+ "jointCountView".setDefaultValue(binding.objectAttrInclude.jointCountView)
+ "casingHoleCountView".setDefaultValue(binding.objectAttrInclude.casingHoleCountView)
+ "casingHoleDiameterView".setDefaultValue(binding.objectAttrInclude.casingHoleDiameterView)
+ "heightView".setDefaultValue(binding.objectAttrInclude.heightView)
+ "lineNumberView".setDefaultValue(binding.objectAttrInclude.lineNumberView)
+ "inspectionUnitView".setDefaultValue(binding.objectAttrInclude.inspectionUnitView)
+ "areaView".setDefaultValue(binding.objectAttrInclude.areaView)
+ "roadView".setDefaultValue(binding.objectAttrInclude.roadView)
+ "objectRemarkView1".setDefaultValue(binding.objectAttrInclude.objectRemarkView1)
+ "objectRemarkView2".setDefaultValue(binding.objectAttrInclude.objectRemarkView2)
+ "objectRemarkView3".setDefaultValue(binding.objectAttrInclude.objectRemarkView3)
+ "ownerView".setDefaultValue(binding.markerAttrInclude.ownerView)
+ "markerDepthView".setDefaultValue(binding.markerAttrInclude.markerDepthView)
+ "markerCountView".setDefaultValue(binding.markerAttrInclude.markerCountView)
+ "remarkView1".setDefaultValue(binding.markerAttrInclude.remarkView1)
+ "remarkView2".setDefaultValue(binding.markerAttrInclude.remarkView2)
+ "remarkView3".setDefaultValue(binding.markerAttrInclude.remarkView3)
+
+ val labelData = LabelDataClass(
+ companyId,
+ objectTypeCode.toString(),
+ binding.objectAttrInclude.objectCodeView.text.toString(),
+ binding.objectAttrInclude.objectNameView.text.toString(),
+ binding.objectAttrInclude.voltageLevelView.text.toString(),
+ binding.objectAttrInclude.objectModeSpinner.selectedItem.toString(),
+ "进线${binding.objectAttrInclude.inlineNameView.text}",
+ binding.objectAttrInclude.wellCoverMaterialSpinner.selectedItem.toString(),
+ "${binding.objectAttrInclude.capacityView.text}KVA",
+ binding.objectAttrInclude.transformerSpecView.text.toString(),
+ "${binding.objectAttrInclude.sLengthView.text}米长 x ${binding.objectAttrInclude.sWidthView.text}米宽 x ${binding.objectAttrInclude.sHeightView.text}米高",
+ binding.objectAttrInclude.inlineCountView.text.toString(),
+ binding.objectAttrInclude.outlineCountView.text.toString(),
+ binding.objectAttrInclude.cabinetTypeSpinner.selectedItem.toString(),
+ binding.objectAttrInclude.bottomDepthView.text.toString(),
+ "${binding.objectAttrInclude.rowCountView.text}排 x ${binding.objectAttrInclude.rowHoleCountView.text}孔",
+ "${binding.objectAttrInclude.coverDepthView.text}米",
+ binding.objectAttrInclude.crossPipeLineView.text.toString(),
+ binding.objectAttrInclude.remainingChannelsView.text.toString(),
+ binding.objectAttrInclude.tieCableView1.text.toString(),
+ binding.objectAttrInclude.tieCableView2.text.toString(),
+ binding.objectAttrInclude.jointCountView.text.toString(),
+ binding.objectAttrInclude.casingMaterialSpinner.selectedItem.toString(),
+ "${binding.objectAttrInclude.casingHoleCountView.text}孔,直径${binding.objectAttrInclude.casingHoleDiameterView.text}毫米",
+ "${binding.objectAttrInclude.heightView.text.toString()}米",
+ binding.objectAttrInclude.lineNumberView.text.toString(),
+ binding.objectAttrInclude.constructDateView.text.toString(),
+ binding.objectAttrInclude.inspectionUnitView.text.toString(),
+ binding.objectAttrInclude.areaView.text.toString(),
+ binding.objectAttrInclude.roadView.text.toString(),
+ binding.objectAttrInclude.objectRemarkView1.text.toString(),
+ binding.objectAttrInclude.objectRemarkView2.text.toString(),
+ binding.objectAttrInclude.objectRemarkView3.text.toString(),
+ binding.markerAttrInclude.markerIdView.text.toString(),
+ binding.markerAttrInclude.markerTypeSpinner.selectedItem.toString(),
+ binding.markerAttrInclude.ownerView.text.toString(),
+ binding.markerAttrInclude.markerDepthView.text.toString(),
+ binding.markerAttrInclude.installTimeView.text.toString(),
+ binding.markerAttrInclude.lngView.text.toString(),
+ binding.markerAttrInclude.latView.text.toString(),
+ binding.markerAttrInclude.markerCountView.text.toString(),
+ binding.markerAttrInclude.remarkView1.text.toString(),
+ binding.markerAttrInclude.remarkView2.text.toString(),
+ binding.markerAttrInclude.remarkView3.text.toString(),
+ realPaths
+ )
+
+ //先存本地
+ lifecycleScope.launch {
+ withContext(Dispatchers.IO) {
+ DataBaseManager.get.insertLabel(labelData)
+ }
+ }
+
+ //再存服务器
+ taskViewModel.installLabel(labelData)
+ }
+
+ //读标识器
+ binding.readMarkerButton.setOnClickListener {
+ LoadingDialogHub.show(this@MainActivity, "标识器读取中,请稍后...")
+ binding.readMarkerButton.isEnabled = false
+
+ isReadMarker = true
+
+ //调高串口电位
+ gpioManager.setGpioHigh("18")
+
+ soundPool.play(soundResourceId, 1f, 1f, 0, -1, 1f)
+
+ out.write('2'.code)
+ out.flush()
+ }
+ }
+
+ fun bindingValue(markerId: String) {
+ LoadingDialogHub.dismiss()
+ soundPool.autoPause()
+ binding.readMarkerButton.isEnabled = true
+
+ //降低串口电位
+ gpioManager.setGpioLow("18")
+
+ isReadMarker = false
+ binding.markerAttrInclude.markerIdView.text = markerId
+ }
+
+ private fun initDefaultData() {
+ binding.titleInclude.titleView.text = "安装新标识器"
+ binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(context))
+
+ imageAdapter = EditableImageAdapter(context, 3, 3)
+ binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter
+
+ //设置上次填写过的值
+ binding.objectAttrInclude.objectCodeView.setText("objectCodeView".getDefaultValue())
+ binding.objectAttrInclude.objectNameView.setText("objectNameView".getDefaultValue())
+ binding.objectAttrInclude.inlineNameView.setText("inlineNameView".getDefaultValue())
+ binding.objectAttrInclude.capacityView.setText("capacityView".getDefaultValue())
+ binding.objectAttrInclude.transformerSpecView.setText("transformerSpecView".getDefaultValue())
+ binding.objectAttrInclude.sLengthView.setText("sLengthView".getDefaultValue())
+ binding.objectAttrInclude.sWidthView.setText("sWidthView".getDefaultValue())
+ binding.objectAttrInclude.sHeightView.setText("sHeightView".getDefaultValue())
+ binding.objectAttrInclude.inlineCountView.setText("inlineCountView".getDefaultValue())
+ binding.objectAttrInclude.outlineCountView.setText("outlineCountView".getDefaultValue())
+ binding.objectAttrInclude.bottomDepthView.setText("bottomDepthView".getDefaultValue())
+ binding.objectAttrInclude.rowCountView.setText("rowCountView".getDefaultValue())
+ binding.objectAttrInclude.rowHoleCountView.setText("rowHoleCountView".getDefaultValue())
+ binding.objectAttrInclude.coverDepthView.setText("coverDepthView".getDefaultValue())
+ binding.objectAttrInclude.remainingChannelsView.setText("remainingChannelsView".getDefaultValue())
+ binding.objectAttrInclude.tieCableView1.setText("tieCableView1".getDefaultValue())
+ binding.objectAttrInclude.tieCableView2.setText("tieCableView2".getDefaultValue())
+ binding.objectAttrInclude.jointCountView.setText("jointCountView".getDefaultValue())
+ binding.objectAttrInclude.casingHoleCountView.setText("casingHoleCountView".getDefaultValue())
+ binding.objectAttrInclude.casingHoleDiameterView.setText("casingHoleDiameterView".getDefaultValue())
+ binding.objectAttrInclude.heightView.setText("heightView".getDefaultValue())
+ binding.objectAttrInclude.lineNumberView.setText("lineNumberView".getDefaultValue())
+ binding.objectAttrInclude.inspectionUnitView.setText("inspectionUnitView".getDefaultValue())
+ binding.objectAttrInclude.areaView.setText("areaView".getDefaultValue())
+ binding.objectAttrInclude.roadView.setText("roadView".getDefaultValue())
+ binding.objectAttrInclude.objectRemarkView1.setText("objectRemarkView1".getDefaultValue())
+ binding.objectAttrInclude.objectRemarkView2.setText("objectRemarkView2".getDefaultValue())
+ binding.objectAttrInclude.objectRemarkView3.setText("objectRemarkView3".getDefaultValue())
+ binding.markerAttrInclude.ownerView.setText("ownerView".getDefaultValue())
+ binding.markerAttrInclude.markerDepthView.setText("markerDepthView".getDefaultValue())
+ binding.markerAttrInclude.markerCountView.setText("markerCountView".getDefaultValue())
+ binding.markerAttrInclude.remarkView1.setText("remarkView1".getDefaultValue())
+ binding.markerAttrInclude.remarkView2.setText("remarkView2".getDefaultValue())
+ binding.markerAttrInclude.remarkView3.setText("remarkView3".getDefaultValue())
+
+ /**************************************************************************************/
+ binding.objectAttrInclude.objectTypeSpinner.show(
+ this@MainActivity, LocaleConstant.CONTENT_ARRAY, 0
+ )
+ binding.objectAttrInclude.objectTypeSpinner.onItemSelectedListener =
+ object : AdapterView.OnItemSelectedListener {
+ override fun onItemSelected(
+ parent: AdapterView<*>?, view: View?, position: Int, id: Long
+ ) {
+ when (position) {
+ 0 -> {
+ //选择电缆井
+ binding.objectAttrInclude.objectModeView.text = "类型:"
+ binding.objectAttrInclude.wellCoverMaterialView.text = "井盖材质:"
+ binding.objectAttrInclude.bottomDepthNameView.text = "井深:"
+ setLayoutVisibility(
+ View.VISIBLE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE
+ )
+ binding.objectAttrInclude.objectModeSpinner.show(
+ this@MainActivity, LocaleConstant.OBJECT_MODE_ARRAY, 0
+ )
+ binding.objectAttrInclude.wellCoverMaterialSpinner.show(
+ this@MainActivity, LocaleConstant.WELL_COVER_MATERIAL_ARRAY_1, 0
+ )
+ }
+
+ 1 -> {
+ //选择电缆通道
+ binding.objectAttrInclude.bottomDepthNameView.text = "底部深度:"
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE
+ )
+ }
+
+ 2 -> {
+ //选择配电房
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE
+ )
+ }
+
+ 3 -> {
+ //选择开关站
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE
+ )
+ }
+
+ 4 -> {
+ //选择台区
+ binding.objectAttrInclude.objectModeView.text = "变压器型号:"
+ setLayoutVisibility(
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE
+ )
+ binding.objectAttrInclude.objectModeSpinner.show(
+ this@MainActivity, arrayOf("变压器 KVA"), 0
+ )
+ }
+
+ 5 -> {
+ //选择杆塔
+ binding.objectAttrInclude.wellCoverMaterialView.text = "对象材质:"
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE
+ )
+ binding.objectAttrInclude.wellCoverMaterialSpinner.show(
+ this@MainActivity, LocaleConstant.WELL_COVER_MATERIAL_ARRAY_2, 0
+ )
+ }
+ }
+ }
+
+ override fun onNothingSelected(parent: AdapterView<*>?) {
+
+ }
+ }
+
+ binding.objectAttrInclude.cabinetTypeSpinner.show(
+ this@MainActivity, LocaleConstant.CABINET_TYPE_ARRAY, 0
+ )
+ binding.objectAttrInclude.casingMaterialSpinner.show(
+ this@MainActivity, LocaleConstant.PIPE_MATERIAL_ARRAY, 0
+ )
+ binding.markerAttrInclude.markerTypeSpinner.show(
+ this@MainActivity, LocaleConstant.MARKER_TYPE_ARRAY, 0
+ )
+
+ //电压等级-多选
+ binding.objectAttrInclude.voltageLevelView.setOnClickListener {
+ AlertDialog.Builder(context).setCancelable(false).setIcon(R.mipmap.ic_launcher)
+ .setTitle("请选择电压等级").setMultiChoiceItems(
+ LocaleConstant.VOLTAGE_LEVEL_ARRAY, LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY
+ ) { _, which, isChecked ->
+ LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[which] = isChecked
+ }.setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
+ .setPositiveButton("确定") { _, _ ->
+ val temp = java.util.ArrayList()
+ LocaleConstant.VOLTAGE_LEVEL_ARRAY.forEachIndexed { index, s ->
+ if (LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[index]) {
+ temp.add(s)
+ }
+ }
+
+ binding.objectAttrInclude.voltageLevelView.text = temp.reformat()
+ }.show()
+ }
+
+ //交叉管道类型-多选
+ binding.objectAttrInclude.crossPipeLineView.setOnClickListener {
+ AlertDialog.Builder(context).setCancelable(false).setIcon(R.mipmap.ic_launcher)
+ .setTitle("请选择交叉管道类型").setMultiChoiceItems(
+ LocaleConstant.CROSS_PIPE_ARRAY, LocaleConstant.CROSS_PIPE_STATE_ARRAY
+ ) { _, which, isChecked ->
+ LocaleConstant.CROSS_PIPE_STATE_ARRAY[which] = isChecked
+ }.setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
+ .setPositiveButton("确定") { _, _ ->
+ val temp = java.util.ArrayList()
+ LocaleConstant.CROSS_PIPE_ARRAY.forEachIndexed { index, s ->
+ if (LocaleConstant.CROSS_PIPE_STATE_ARRAY[index]) {
+ temp.add(s)
+ }
+ }
+
+ binding.objectAttrInclude.crossPipeLineView.text = temp.reformat()
+ }.show()
+ }
+
+ binding.objectAttrInclude.constructDateView.setOnClickListener {
+ val datePicker = DatePickerDialog(
+ context,
+ null,
+ calendar.get(Calendar.YEAR),
+ calendar.get(Calendar.MONTH),
+ calendar.get(Calendar.DAY_OF_MONTH)
+ )
+ datePicker.show()
+
+ datePicker.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener {
+ val year = datePicker.datePicker.year
+ val month = datePicker.datePicker.month + 1
+ val day = datePicker.datePicker.dayOfMonth
+ val selectedDate = String.format(
+ "%s-%s-%s", year, month.appendZero(), day.appendZero()
+ )
+
+ //当前时间
+ val current = System.currentTimeMillis().timestampToTime()
+ val today = "$selectedDate $current".dateToTimestamp()
+ if (Date(today).after(Date())) {
+ "建设年代不能早于当前日期".show(context)
+ } else {
+ datePicker.dismiss()
+ binding.objectAttrInclude.constructDateView.text = selectedDate
+ }
+ }
+ }
+
+ binding.markerAttrInclude.installTimeView.text =
+ System.currentTimeMillis().timestampToCompleteDate()
+ locationHub.getCurrentLocation(true, object : ILocationListener {
+ override fun onAMapLocationGet(location: AMapLocation?) {
+ if (location != null) {
+ binding.markerAttrInclude.lngView.text = location.longitude.toString()
+ binding.markerAttrInclude.latView.text = location.latitude.toString()
+ } else {
+ "当前位置信号差,无法获取定位".show(context)
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+ PictureSelector.create(this@MainActivity).openCamera(SelectMimeType.ofImage())
+ .forResult(object : OnResultCallbackListener {
+ override fun onResult(result: java.util.ArrayList?) {
+ if (result == null) {
+ "拍照失败,请重试".show(context)
+ return
+ }
+ analyticalSelectResult(result[0])
+ }
+
+ override fun onCancel() {
+
+ }
+ })
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(context)
+ } else {
+ context.navigatePageTo(position, realPaths)
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+
+ private fun analyticalSelectResult(result: LocalMedia) {
+ //压缩图片
+ result.realPath.compressImage(context, object : OnImageCompressListener {
+ override fun onSuccess(file: File) {
+ realPaths.add(file.absolutePath)
+ imageAdapter.setupImage(realPaths)
+ }
+
+ override fun onError(e: Throwable) {
+ e.printStackTrace()
+ }
+ })
+ }
+
+ //根据选择类型控制界面某些区域显隐
+ private fun setLayoutVisibility(vararg args: Int) {
+ binding.objectAttrInclude.objectModeLayout.visibility = args[0]
+ binding.objectAttrInclude.inlineNameLayout.visibility = args[1]
+ binding.objectAttrInclude.wellCoverMaterialLayout.visibility = args[2]
+ binding.objectAttrInclude.capacityLayout.visibility = args[3]
+ binding.objectAttrInclude.sizeLayout.visibility = args[4]
+ binding.objectAttrInclude.inlineCountLayout.visibility = args[5]
+ binding.objectAttrInclude.outlineCountLayout.visibility = args[6]
+ binding.objectAttrInclude.wellDepthLayout.visibility = args[7]
+ binding.objectAttrInclude.pipeLineLayout.visibility = args[8]
+ binding.objectAttrInclude.jointCountLayout.visibility = args[9]
+ binding.objectAttrInclude.heightLayout.visibility = args[10]
+ }
}
/**安装小标签对话框******************************************************************************/
@@ -859,6 +1373,29 @@
var isReadMarker = false
var isInstallMarker = false
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ this.initDialogLayoutParams(1f)
+ setCancelable(false)
+ setCanceledOnTouchOutside(false)
+
+ //返回
+ binding.titleInclude.leftBackView.setOnClickListener {
+ dismiss()
+ }
+ }
+
+ fun bindingValue(markerId: String) {
+ LoadingDialogHub.dismiss()
+ soundPool.autoPause()
+ binding.readMarkerButton.isEnabled = true
+
+ //降低串口电位
+ gpioManager.setGpioLow("18")
+
+ isReadMarker = false
+ }
}
/**探测标识器对话框******************************************************************************/
@@ -976,9 +1513,12 @@
degreeCache["lastDegree"]?.apply {
val animation = RotateAnimation(
- this, degree,
- Animation.RELATIVE_TO_SELF, 0.5f,
- Animation.RELATIVE_TO_SELF, 0.5f
+ this,
+ degree,
+ Animation.RELATIVE_TO_SELF,
+ 0.5f,
+ Animation.RELATIVE_TO_SELF,
+ 0.5f
)
animation.duration = 0
animation.fillAfter = true
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 14e9b51..92d80c5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -70,7 +70,6 @@
android:name=".view.ElectricMarkerDetailActivity"
android:theme="@style/Theme.ActivityDialogStyle" />
-
diff --git a/app/src/main/java/com/casic/electric/detector/view/InstallLabelActivity.kt b/app/src/main/java/com/casic/electric/detector/view/InstallLabelActivity.kt
deleted file mode 100644
index 6510104..0000000
--- a/app/src/main/java/com/casic/electric/detector/view/InstallLabelActivity.kt
+++ /dev/null
@@ -1,601 +0,0 @@
-package com.casic.electric.detector.view
-
-import android.annotation.SuppressLint
-import android.app.AlertDialog
-import android.app.DatePickerDialog
-import android.content.Context
-import android.content.DialogInterface
-import android.content.Intent
-import android.media.AudioAttributes
-import android.media.SoundPool
-import android.os.Bundle
-import android.os.Handler
-import android.os.Message
-import android.provider.Settings
-import android.util.Log
-import android.view.KeyEvent
-import android.view.View
-import android.view.WindowManager
-import android.widget.AdapterView
-import androidx.lifecycle.ViewModelProvider
-import androidx.lifecycle.lifecycleScope
-import com.amap.api.location.AMapLocation
-import com.casic.electric.detector.R
-import com.casic.electric.detector.adapter.EditableImageAdapter
-import com.casic.electric.detector.base.SerialPortActivity
-import com.casic.electric.detector.callback.ILocationListener
-import com.casic.electric.detector.callback.OnImageCompressListener
-import com.casic.electric.detector.databinding.ActivityInstallLabelBinding
-import com.casic.electric.detector.extensions.*
-import com.casic.electric.detector.utils.*
-import com.casic.electric.detector.vm.TaskViewModel
-import com.luck.picture.lib.basic.PictureSelector
-import com.luck.picture.lib.config.SelectMimeType
-import com.luck.picture.lib.entity.LocalMedia
-import com.luck.picture.lib.interfaces.OnResultCallbackListener
-import com.pengxh.kt.lite.extensions.*
-import com.pengxh.kt.lite.utils.LoadState
-import com.pengxh.kt.lite.utils.LoadingDialogHub
-import com.pengxh.kt.lite.utils.SaveKeyValues
-import com.pengxh.kt.lite.utils.WeakReferenceHandler
-import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.withContext
-import java.io.File
-import java.io.IOException
-import java.util.*
-
-@SuppressLint("SetTextI18n")
-class InstallLabelActivity : SerialPortActivity(), Handler.Callback {
-
- private val kTag = "LabelActivity"
- private val context: Context = this@InstallLabelActivity
- private val gpioManager by lazy { GpioManager() }
- private val calendar by lazy { Calendar.getInstance() }
- private val locationHub by lazy { LocationHub(this) }
- private val realPaths = ArrayList() //真实图片路径
- private var soundResId = 0
- private lateinit var weakReferenceHandler: WeakReferenceHandler
- private lateinit var soundPool: SoundPool
- private lateinit var imageAdapter: EditableImageAdapter
- private lateinit var taskViewModel: TaskViewModel
-
- override fun initViewBinding(): ActivityInstallLabelBinding {
- return ActivityInstallLabelBinding.inflate(layoutInflater)
- }
-
- override fun setupTopBarLayout() {
- binding.titleInclude.titleView.text = "安装新标识器"
- binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(this))
- }
-
- override fun initOnCreate(savedInstanceState: Bundle?) {
- window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN or WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)
-
- weakReferenceHandler = WeakReferenceHandler(this)
-
- val audioAttributes = AudioAttributes.Builder()
- .setUsage(AudioAttributes.USAGE_MEDIA)
- .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
- .build()
- soundPool = SoundPool.Builder()
- .setMaxStreams(16)
- .setAudioAttributes(audioAttributes)
- .build()
-
- //设置上次填写过的值
- binding.objectAttrInclude.objectCodeView.setText("objectCodeView".getDefaultValue())
- binding.objectAttrInclude.objectNameView.setText("objectNameView".getDefaultValue())
- binding.objectAttrInclude.inlineNameView.setText("inlineNameView".getDefaultValue())
- binding.objectAttrInclude.capacityView.setText("capacityView".getDefaultValue())
- binding.objectAttrInclude.transformerSpecView.setText("transformerSpecView".getDefaultValue())
- binding.objectAttrInclude.sLengthView.setText("sLengthView".getDefaultValue())
- binding.objectAttrInclude.sWidthView.setText("sWidthView".getDefaultValue())
- binding.objectAttrInclude.sHeightView.setText("sHeightView".getDefaultValue())
- binding.objectAttrInclude.inlineCountView.setText("inlineCountView".getDefaultValue())
- binding.objectAttrInclude.outlineCountView.setText("outlineCountView".getDefaultValue())
- binding.objectAttrInclude.bottomDepthView.setText("bottomDepthView".getDefaultValue())
- binding.objectAttrInclude.rowCountView.setText("rowCountView".getDefaultValue())
- binding.objectAttrInclude.rowHoleCountView.setText("rowHoleCountView".getDefaultValue())
- binding.objectAttrInclude.coverDepthView.setText("coverDepthView".getDefaultValue())
- binding.objectAttrInclude.remainingChannelsView.setText("remainingChannelsView".getDefaultValue())
- binding.objectAttrInclude.tieCableView1.setText("tieCableView1".getDefaultValue())
- binding.objectAttrInclude.tieCableView2.setText("tieCableView2".getDefaultValue())
- binding.objectAttrInclude.jointCountView.setText("jointCountView".getDefaultValue())
- binding.objectAttrInclude.casingHoleCountView.setText("casingHoleCountView".getDefaultValue())
- binding.objectAttrInclude.casingHoleDiameterView.setText("casingHoleDiameterView".getDefaultValue())
- binding.objectAttrInclude.heightView.setText("heightView".getDefaultValue())
- binding.objectAttrInclude.lineNumberView.setText("lineNumberView".getDefaultValue())
- binding.objectAttrInclude.inspectionUnitView.setText("inspectionUnitView".getDefaultValue())
- binding.objectAttrInclude.areaView.setText("areaView".getDefaultValue())
- binding.objectAttrInclude.roadView.setText("roadView".getDefaultValue())
- binding.objectAttrInclude.objectRemarkView1.setText("objectRemarkView1".getDefaultValue())
- binding.objectAttrInclude.objectRemarkView2.setText("objectRemarkView2".getDefaultValue())
- binding.objectAttrInclude.objectRemarkView3.setText("objectRemarkView3".getDefaultValue())
- binding.markerAttrInclude.ownerView.setText("ownerView".getDefaultValue())
- binding.markerAttrInclude.markerDepthView.setText("markerDepthView".getDefaultValue())
- binding.markerAttrInclude.markerCountView.setText("markerCountView".getDefaultValue())
- binding.markerAttrInclude.remarkView1.setText("remarkView1".getDefaultValue())
- binding.markerAttrInclude.remarkView2.setText("remarkView2".getDefaultValue())
- binding.markerAttrInclude.remarkView3.setText("remarkView3".getDefaultValue())
-
- //初始化图片九宫格
- imageAdapter = EditableImageAdapter(this, 3, 3)
- binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter
-
- taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
- }
-
- override fun observeRequestState() {
- taskViewModel.loadState.observe(this) {
- when (it) {
- LoadState.Loading -> LoadingDialogHub.show(this, "标识器安装中,请稍后...")
- LoadState.Success -> {
- LoadingDialogHub.dismiss()
- finish()
- }
-
- else -> LoadingDialogHub.dismiss()
- }
- }
- }
-
- override fun initEvent() {
- binding.titleInclude.leftBackView.setOnClickListener { finish() }
-
- /**************************************************************************************/
- binding.objectAttrInclude.objectTypeSpinner.show(this, LocaleConstant.CONTENT_ARRAY, 0)
- binding.objectAttrInclude.objectTypeSpinner.onItemSelectedListener =
- object : AdapterView.OnItemSelectedListener {
- override fun onItemSelected(
- parent: AdapterView<*>?, view: View?, position: Int, id: Long
- ) {
- when (position) {
- 0 -> {
- //选择电缆井
- binding.objectAttrInclude.objectModeView.text = "类型:"
- binding.objectAttrInclude.wellCoverMaterialView.text = "井盖材质:"
- binding.objectAttrInclude.bottomDepthNameView.text = "井深:"
- setLayoutVisibility(
- View.VISIBLE, View.GONE, View.VISIBLE, View.GONE, View.VISIBLE,
- View.GONE, View.GONE, View.VISIBLE, View.GONE, View.VISIBLE,
- View.GONE
- )
- binding.objectAttrInclude.objectModeSpinner.show(
- this@InstallLabelActivity, LocaleConstant.OBJECT_MODE_ARRAY, 0
- )
- binding.objectAttrInclude.wellCoverMaterialSpinner.show(
- this@InstallLabelActivity,
- LocaleConstant.WELL_COVER_MATERIAL_ARRAY_1,
- 0
- )
- }
-
- 1 -> {
- //选择电缆通道
- binding.objectAttrInclude.bottomDepthNameView.text = "底部深度:"
- setLayoutVisibility(
- View.GONE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.GONE, View.GONE, View.VISIBLE, View.VISIBLE, View.VISIBLE,
- View.GONE
- )
- }
-
- 2 -> {
- //选择配电房
- setLayoutVisibility(
- View.GONE, View.GONE, View.GONE, View.VISIBLE, View.VISIBLE,
- View.VISIBLE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.GONE
- )
- }
-
- 3 -> {
- //选择开关站
- setLayoutVisibility(
- View.GONE, View.GONE, View.GONE, View.GONE, View.VISIBLE,
- View.VISIBLE, View.VISIBLE, View.GONE, View.GONE, View.GONE,
- View.GONE
- )
- }
-
- 4 -> {
- //选择台区
- binding.objectAttrInclude.objectModeView.text = "变压器型号:"
- setLayoutVisibility(
- View.VISIBLE, View.VISIBLE, View.GONE, View.GONE, View.GONE,
- View.GONE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.GONE
- )
- binding.objectAttrInclude.objectModeSpinner.show(
- this@InstallLabelActivity, arrayOf("变压器 KVA"), 0
- )
- }
-
- 5 -> {
- //选择杆塔
- binding.objectAttrInclude.wellCoverMaterialView.text = "对象材质:"
- setLayoutVisibility(
- View.GONE, View.GONE, View.VISIBLE, View.GONE, View.GONE,
- View.GONE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.VISIBLE
- )
- binding.objectAttrInclude.wellCoverMaterialSpinner.show(
- this@InstallLabelActivity,
- LocaleConstant.WELL_COVER_MATERIAL_ARRAY_2,
- 0
- )
- }
- }
- }
-
- override fun onNothingSelected(parent: AdapterView<*>?) {
-
- }
- }
-
- binding.objectAttrInclude.cabinetTypeSpinner.show(
- this,
- LocaleConstant.CABINET_TYPE_ARRAY,
- 0
- )
- binding.objectAttrInclude.casingMaterialSpinner.show(
- this,
- LocaleConstant.PIPE_MATERIAL_ARRAY,
- 0
- )
- binding.markerAttrInclude.markerTypeSpinner.show(this, LocaleConstant.MARKER_TYPE_ARRAY, 0)
-
- //电压等级-多选
- binding.objectAttrInclude.voltageLevelView.setOnClickListener {
- AlertDialog.Builder(context)
- .setCancelable(false)
- .setIcon(R.mipmap.ic_launcher)
- .setTitle("请选择电压等级")
- .setMultiChoiceItems(
- LocaleConstant.VOLTAGE_LEVEL_ARRAY, LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY
- ) { _, which, isChecked ->
- LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[which] = isChecked
- }
- .setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
- .setPositiveButton("确定") { _, _ ->
- val temp = ArrayList()
- LocaleConstant.VOLTAGE_LEVEL_ARRAY.forEachIndexed { index, s ->
- if (LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[index]) {
- temp.add(s)
- }
- }
-
- binding.objectAttrInclude.voltageLevelView.text = temp.reformat()
- }.show()
- }
-
- //交叉管道类型-多选
- binding.objectAttrInclude.crossPipeLineView.setOnClickListener {
- AlertDialog.Builder(context)
- .setCancelable(false)
- .setIcon(R.mipmap.ic_launcher)
- .setTitle("请选择交叉管道类型")
- .setMultiChoiceItems(
- LocaleConstant.CROSS_PIPE_ARRAY, LocaleConstant.CROSS_PIPE_STATE_ARRAY
- ) { _, which, isChecked ->
- LocaleConstant.CROSS_PIPE_STATE_ARRAY[which] = isChecked
- }
- .setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
- .setPositiveButton("确定") { _, _ ->
- val temp = ArrayList()
- LocaleConstant.CROSS_PIPE_ARRAY.forEachIndexed { index, s ->
- if (LocaleConstant.CROSS_PIPE_STATE_ARRAY[index]) {
- temp.add(s)
- }
- }
-
- binding.objectAttrInclude.crossPipeLineView.text = temp.reformat()
- }.show()
- }
-
- binding.objectAttrInclude.constructDateView.setOnClickListener {
- val datePicker = DatePickerDialog(
- this,
- null,
- calendar.get(Calendar.YEAR),
- calendar.get(Calendar.MONTH),
- calendar.get(Calendar.DAY_OF_MONTH)
- )
- datePicker.show()
-
- datePicker.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener {
- val year = datePicker.datePicker.year
- val month = datePicker.datePicker.month + 1
- val day = datePicker.datePicker.dayOfMonth
- val selectedDate = String.format(
- "%s-%s-%s", year, month.appendZero(), day.appendZero()
- )
-
- //当前时间
- val current = System.currentTimeMillis().timestampToTime()
- val today = "$selectedDate $current".dateToTimestamp()
- if (Date(today).after(Date())) {
- "建设年代不能早于当前日期".show(context)
- } else {
- datePicker.dismiss()
- binding.objectAttrInclude.constructDateView.text = selectedDate
- }
- }
- }
-
- binding.markerAttrInclude.installTimeView.text =
- System.currentTimeMillis().timestampToCompleteDate()
- locationHub.getCurrentLocation(true, object : ILocationListener {
- override fun onAMapLocationGet(location: AMapLocation?) {
- if (location != null) {
- binding.markerAttrInclude.lngView.text = location.longitude.toString()
- binding.markerAttrInclude.latView.text = location.latitude.toString()
- } else {
- "当前位置信号差,无法获取定位".show(context)
- }
- }
- })
-
- imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
- override fun onAddImageClick() {
- PictureSelector.create(this@InstallLabelActivity)
- .openCamera(SelectMimeType.ofImage())
- .forResult(object : OnResultCallbackListener {
- override fun onResult(result: ArrayList?) {
- if (result == null) {
- "拍照失败,请重试".show(context)
- return
- }
- analyticalSelectResult(result[0])
- }
-
- override fun onCancel() {
-
- }
- })
- }
-
- override fun onItemClick(position: Int) {
- if (realPaths[position].isEmpty()) {
- "图片加载失败,无法查看大图".show(context)
- } else {
- context.navigatePageTo(position, realPaths)
- }
- }
-
- override fun onItemLongClick(view: View?, position: Int) {
- imageAdapter.deleteImage(position)
- }
- })
-
- /**************************************************************************************/
- binding.installButton.setOnClickListener {
- if (isNetworkConnected()) {
- val companyId = SaveKeyValues.getValue(LocaleConstant.USER_COMPANY_ID, "") as String
-
- val itemPosition = binding.objectAttrInclude.objectTypeSpinner.selectedItemPosition
- val objectTypeCode = itemPosition + 1
-
- if (binding.markerAttrInclude.markerIdView.text.isNullOrBlank()) {
- "标识器ID不能为空,请读标识器".show(this)
- return@setOnClickListener
- }
-
- if (binding.objectAttrInclude.constructDateView.text.isNullOrBlank()) {
- "请选择建设时间".show(this)
- return@setOnClickListener
- }
-
- if (binding.markerAttrInclude.markerCountView.text.isNullOrBlank()) {
- "请输入电子标签数量".show(this)
- return@setOnClickListener
- }
-
- //保存默认值
- "objectCodeView".setDefaultValue(binding.objectAttrInclude.objectCodeView)
- "objectNameView".setDefaultValue(binding.objectAttrInclude.objectNameView)
- "inlineNameView".setDefaultValue(binding.objectAttrInclude.inlineNameView)
- "capacityView".setDefaultValue(binding.objectAttrInclude.capacityView)
- "transformerSpecView".setDefaultValue(binding.objectAttrInclude.transformerSpecView)
- "sLengthView".setDefaultValue(binding.objectAttrInclude.sLengthView)
- "sWidthView".setDefaultValue(binding.objectAttrInclude.sWidthView)
- "sHeightView".setDefaultValue(binding.objectAttrInclude.sHeightView)
- "inlineCountView".setDefaultValue(binding.objectAttrInclude.inlineCountView)
- "outlineCountView".setDefaultValue(binding.objectAttrInclude.outlineCountView)
- "bottomDepthView".setDefaultValue(binding.objectAttrInclude.bottomDepthView)
- "rowCountView".setDefaultValue(binding.objectAttrInclude.rowCountView)
- "rowHoleCountView".setDefaultValue(binding.objectAttrInclude.rowHoleCountView)
- "coverDepthView".setDefaultValue(binding.objectAttrInclude.coverDepthView)
- "remainingChannelsView".setDefaultValue(binding.objectAttrInclude.remainingChannelsView)
- "tieCableView1".setDefaultValue(binding.objectAttrInclude.tieCableView1)
- "tieCableView2".setDefaultValue(binding.objectAttrInclude.tieCableView2)
- "jointCountView".setDefaultValue(binding.objectAttrInclude.jointCountView)
- "casingHoleCountView".setDefaultValue(binding.objectAttrInclude.casingHoleCountView)
- "casingHoleDiameterView".setDefaultValue(binding.objectAttrInclude.casingHoleDiameterView)
- "heightView".setDefaultValue(binding.objectAttrInclude.heightView)
- "lineNumberView".setDefaultValue(binding.objectAttrInclude.lineNumberView)
- "inspectionUnitView".setDefaultValue(binding.objectAttrInclude.inspectionUnitView)
- "areaView".setDefaultValue(binding.objectAttrInclude.areaView)
- "roadView".setDefaultValue(binding.objectAttrInclude.roadView)
- "objectRemarkView1".setDefaultValue(binding.objectAttrInclude.objectRemarkView1)
- "objectRemarkView2".setDefaultValue(binding.objectAttrInclude.objectRemarkView2)
- "objectRemarkView3".setDefaultValue(binding.objectAttrInclude.objectRemarkView3)
- "ownerView".setDefaultValue(binding.markerAttrInclude.ownerView)
- "markerDepthView".setDefaultValue(binding.markerAttrInclude.markerDepthView)
- "markerCountView".setDefaultValue(binding.markerAttrInclude.markerCountView)
- "remarkView1".setDefaultValue(binding.markerAttrInclude.remarkView1)
- "remarkView2".setDefaultValue(binding.markerAttrInclude.remarkView2)
- "remarkView3".setDefaultValue(binding.markerAttrInclude.remarkView3)
-
- val labelData = LabelDataClass(
- companyId,
- objectTypeCode.toString(),
- binding.objectAttrInclude.objectCodeView.text.toString(),
- binding.objectAttrInclude.objectNameView.text.toString(),
- binding.objectAttrInclude.voltageLevelView.text.toString(),
- binding.objectAttrInclude.objectModeSpinner.selectedItem.toString(),
- "进线${binding.objectAttrInclude.inlineNameView.text}",
- binding.objectAttrInclude.wellCoverMaterialSpinner.selectedItem.toString(),
- "${binding.objectAttrInclude.capacityView.text}KVA",
- binding.objectAttrInclude.transformerSpecView.text.toString(),
- "${binding.objectAttrInclude.sLengthView.text}米长 x ${binding.objectAttrInclude.sWidthView.text}米宽 x ${binding.objectAttrInclude.sHeightView.text}米高",
- binding.objectAttrInclude.inlineCountView.text.toString(),
- binding.objectAttrInclude.outlineCountView.text.toString(),
- binding.objectAttrInclude.cabinetTypeSpinner.selectedItem.toString(),
- binding.objectAttrInclude.bottomDepthView.text.toString(),
- "${binding.objectAttrInclude.rowCountView.text}排 x ${binding.objectAttrInclude.rowHoleCountView.text}孔",
- "${binding.objectAttrInclude.coverDepthView.text}米",
- binding.objectAttrInclude.crossPipeLineView.text.toString(),
- binding.objectAttrInclude.remainingChannelsView.text.toString(),
- binding.objectAttrInclude.tieCableView1.text.toString(),
- binding.objectAttrInclude.tieCableView2.text.toString(),
- binding.objectAttrInclude.jointCountView.text.toString(),
- binding.objectAttrInclude.casingMaterialSpinner.selectedItem.toString(),
- "${binding.objectAttrInclude.casingHoleCountView.text}孔,直径${binding.objectAttrInclude.casingHoleDiameterView.text}毫米",
- "${binding.objectAttrInclude.heightView.text.toString()}米",
- binding.objectAttrInclude.lineNumberView.text.toString(),
- binding.objectAttrInclude.constructDateView.text.toString(),
- binding.objectAttrInclude.inspectionUnitView.text.toString(),
- binding.objectAttrInclude.areaView.text.toString(),
- binding.objectAttrInclude.roadView.text.toString(),
- binding.objectAttrInclude.objectRemarkView1.text.toString(),
- binding.objectAttrInclude.objectRemarkView2.text.toString(),
- binding.objectAttrInclude.objectRemarkView3.text.toString(),
- binding.markerAttrInclude.markerIdView.text.toString(),
- binding.markerAttrInclude.markerTypeSpinner.selectedItem.toString(),
- binding.markerAttrInclude.ownerView.text.toString(),
- binding.markerAttrInclude.markerDepthView.text.toString(),
- binding.markerAttrInclude.installTimeView.text.toString(),
- binding.markerAttrInclude.lngView.text.toString(),
- binding.markerAttrInclude.latView.text.toString(),
- binding.markerAttrInclude.markerCountView.text.toString(),
- binding.markerAttrInclude.remarkView1.text.toString(),
- binding.markerAttrInclude.remarkView2.text.toString(),
- binding.markerAttrInclude.remarkView3.text.toString(),
- realPaths
- )
-
- //先存本地
- lifecycleScope.launch {
- withContext(Dispatchers.IO) {
- DataBaseManager.get.insertLabel(labelData)
- }
- }
-
- //再存服务器
- taskViewModel.installLabel(labelData)
- } else {
- NoNetworkDialog.Builder()
- .setContext(context)
- .setOnDialogButtonClickListener(object :
- NoNetworkDialog.OnDialogButtonClickListener {
- override fun onButtonClick() {
- val intent = Intent(Settings.ACTION_SETTINGS)
- startActivity(intent)
- }
- }).build().show()
- }
- }
-
- binding.readLabelButton.setOnClickListener {
- gpioManager.setGpioHigh("18")
-
- LoadingDialogHub.show(this, "标识器读取中,请稍后...")
-
- soundResId = soundPool.load(this, R.raw.ring3, 1)
- soundPool.setOnLoadCompleteListener { soundPool, _, _ ->
- soundPool.play(soundResId, 1f, 1f, 0, -1, 1f)
- }
-
- // 1000ms后发送读标识器或搜索信号
- weakReferenceHandler.postDelayed({
- try {
- // 发送读标识器或搜索信号
- out.write("2".toByteArray())
- out.flush()
- } catch (e: IOException) {
- e.printStackTrace()
- }
- }, 1000)
- }
- }
-
- override fun onDataReceived(buffer: ByteArray) {
- Log.d(kTag, "onDataReceived => " + buffer.contentToString())
- if (buffer != null) {
- val message = weakReferenceHandler.obtainMessage()
- message.what = 2023081701
- message.obj = buffer
- weakReferenceHandler.sendMessage(message)
- }
- }
-
- override fun handleMessage(msg: Message): Boolean {
- if (msg.what == 2023081701) {
- soundPool.release()
-
- val buffer = msg.obj as ByteArray
- val hex = buffer.toHex()
-
- if (hex.length >= 20) {
- val markerId = hex.substring(0, 20).hexToString()
-
- gpioManager.setGpioLow("18")
-
- //查本地库
- val result = DataBaseManager.get.queryLabelById(markerId)
- if (result.isEmpty()) {
- binding.markerAttrInclude.markerIdView.text = markerId
- } else {
- "此标识器已安装,请更换标识器!".show(this)
- }
- LoadingDialogHub.dismiss()
- }
- }
- return true
- }
-
- private fun analyticalSelectResult(result: LocalMedia) {
- //压缩图片
- result.realPath.compressImage(this, object : OnImageCompressListener {
- override fun onSuccess(file: File) {
- realPaths.add(file.absolutePath)
- imageAdapter.setupImage(realPaths)
- }
-
- override fun onError(e: Throwable) {
- e.printStackTrace()
- }
- })
- }
-
- //根据选择类型控制界面某些区域显隐
- private fun setLayoutVisibility(vararg args: Int) {
- binding.objectAttrInclude.objectModeLayout.visibility = args[0]
- binding.objectAttrInclude.inlineNameLayout.visibility = args[1]
- binding.objectAttrInclude.wellCoverMaterialLayout.visibility = args[2]
- binding.objectAttrInclude.capacityLayout.visibility = args[3]
- binding.objectAttrInclude.sizeLayout.visibility = args[4]
- binding.objectAttrInclude.inlineCountLayout.visibility = args[5]
- binding.objectAttrInclude.outlineCountLayout.visibility = args[6]
- binding.objectAttrInclude.wellDepthLayout.visibility = args[7]
- binding.objectAttrInclude.pipeLineLayout.visibility = args[8]
- binding.objectAttrInclude.jointCountLayout.visibility = args[9]
- binding.objectAttrInclude.heightLayout.visibility = args[10]
- }
-
- override fun onDestroy() {
- super.onDestroy()
- soundPool.release()
- gpioManager.setGpioLow("18")
- }
-
- override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- soundPool.release()
- }
- return super.onKeyDown(keyCode, event)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt
index a0a4aac..40a5f3d 100644
--- a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt
@@ -2,8 +2,10 @@
import android.annotation.SuppressLint
import android.app.AlertDialog
+import android.app.DatePickerDialog
import android.app.Dialog
import android.content.Context
+import android.content.DialogInterface
import android.graphics.Color
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
@@ -16,6 +18,7 @@
import android.view.View
import android.view.animation.Animation
import android.view.animation.RotateAnimation
+import android.widget.AdapterView
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import com.amap.api.location.AMapLocation
@@ -33,6 +36,7 @@
import com.casic.electric.detector.bean.SmallLabelBean
import com.casic.electric.detector.bean.TaskBean
import com.casic.electric.detector.callback.ILocationListener
+import com.casic.electric.detector.callback.OnImageCompressListener
import com.casic.electric.detector.cluster.ClusterItem
import com.casic.electric.detector.cluster.ClusterOverlay
import com.casic.electric.detector.cluster.RegionItem
@@ -41,14 +45,20 @@
import com.casic.electric.detector.databinding.DialogInstallSmallMarkerBinding
import com.casic.electric.detector.databinding.DialogSearchMarkerBinding
import com.casic.electric.detector.extensions.appendExcelDownloadUrl
+import com.casic.electric.detector.extensions.compressImage
import com.casic.electric.detector.extensions.drawCircle
+import com.casic.electric.detector.extensions.getDefaultValue
import com.casic.electric.detector.extensions.hexToString
import com.casic.electric.detector.extensions.initImmersionBar
import com.casic.electric.detector.extensions.isNumber
+import com.casic.electric.detector.extensions.reformat
+import com.casic.electric.detector.extensions.setDefaultValue
+import com.casic.electric.detector.extensions.show
import com.casic.electric.detector.extensions.toHex
import com.casic.electric.detector.utils.DataBaseManager
import com.casic.electric.detector.utils.ExcelHub
import com.casic.electric.detector.utils.GpioManager
+import com.casic.electric.detector.utils.LabelDataClass
import com.casic.electric.detector.utils.LocaleConstant
import com.casic.electric.detector.utils.LocationHub
import com.casic.electric.detector.utils.RouteOnMap
@@ -56,13 +66,22 @@
import com.casic.electric.detector.widgets.QueryMarkerDialog
import com.casic.electric.detector.widgets.SamplePopupWindow
import com.google.gson.Gson
+import com.luck.picture.lib.basic.PictureSelector
+import com.luck.picture.lib.config.SelectMimeType
+import com.luck.picture.lib.entity.LocalMedia
+import com.luck.picture.lib.interfaces.OnResultCallbackListener
+import com.pengxh.kt.lite.extensions.appendZero
import com.pengxh.kt.lite.extensions.binding
+import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.createDownloadFileDir
+import com.pengxh.kt.lite.extensions.dateToTimestamp
import com.pengxh.kt.lite.extensions.dp2px
import com.pengxh.kt.lite.extensions.initDialogLayoutParams
import com.pengxh.kt.lite.extensions.isNetworkConnected
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.extensions.timestampToCompleteDate
+import com.pengxh.kt.lite.extensions.timestampToTime
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.FileDownloadManager
import com.pengxh.kt.lite.utils.LoadState
@@ -78,6 +97,7 @@
import java.io.File
import java.text.DecimalFormat
import java.util.Calendar
+import java.util.Date
import java.util.Timer
import java.util.TimerTask
@@ -456,16 +476,16 @@
Log.d(kTag, "$kTag => $hex")
if (searchDialog.isDetectMarker) {
searchDialog.bindingValue(hex)
-// } else if (installMarkerDialog.isReadMarker) {
-// val markerId = hex.take(20).hexToString()
-// if (markerId.isNumber()) {
-// installMarkerDialog.bindingValue(markerId)
-// }
-// } else if (installSmallMarkerDialog.isReadMarker) {
-// val markerId = hex.take(20).hexToString()
-// if (markerId.isNumber()) {
-// installSmallMarkerDialog.bindingValue(markerId)
-// }
+ } else if (installMarkerDialog.isReadMarker) {
+ val markerId = hex.take(20).hexToString()
+ if (markerId.isNumber()) {
+ installMarkerDialog.bindingValue(markerId)
+ }
+ } else if (installSmallMarkerDialog.isReadMarker) {
+ val markerId = hex.take(20).hexToString()
+ if (markerId.isNumber()) {
+ installSmallMarkerDialog.bindingValue(markerId)
+ }
} else if (isFreeTask) {
val markerId = hex.take(20).hexToString()
if (markerId.isNumber()) {
@@ -847,6 +867,500 @@
var isReadMarker = false
var isInstallMarker = false
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ this.initDialogLayoutParams(1f)
+ setCancelable(false)
+ setCanceledOnTouchOutside(false)
+
+ //初始化数据
+ initDefaultData()
+
+ //返回
+ binding.titleInclude.leftBackView.setOnClickListener {
+ soundPool.autoPause()
+ dismiss()
+ }
+
+ binding.installButton.setOnClickListener {
+ val companyId = SaveKeyValues.getValue(LocaleConstant.USER_COMPANY_ID, "") as String
+
+ val itemPosition = binding.objectAttrInclude.objectTypeSpinner.selectedItemPosition
+ val objectTypeCode = itemPosition + 1
+
+ if (binding.markerAttrInclude.markerIdView.text.isNullOrBlank()) {
+ "标识器ID不能为空,请读标识器".show(context)
+ return@setOnClickListener
+ }
+
+ if (binding.objectAttrInclude.constructDateView.text.isNullOrBlank()) {
+ "请选择建设时间".show(context)
+ return@setOnClickListener
+ }
+
+ if (binding.markerAttrInclude.markerCountView.text.isNullOrBlank()) {
+ "请输入电子标签数量".show(context)
+ return@setOnClickListener
+ }
+
+ //保存默认值
+ "objectCodeView".setDefaultValue(binding.objectAttrInclude.objectCodeView)
+ "objectNameView".setDefaultValue(binding.objectAttrInclude.objectNameView)
+ "inlineNameView".setDefaultValue(binding.objectAttrInclude.inlineNameView)
+ "capacityView".setDefaultValue(binding.objectAttrInclude.capacityView)
+ "transformerSpecView".setDefaultValue(binding.objectAttrInclude.transformerSpecView)
+ "sLengthView".setDefaultValue(binding.objectAttrInclude.sLengthView)
+ "sWidthView".setDefaultValue(binding.objectAttrInclude.sWidthView)
+ "sHeightView".setDefaultValue(binding.objectAttrInclude.sHeightView)
+ "inlineCountView".setDefaultValue(binding.objectAttrInclude.inlineCountView)
+ "outlineCountView".setDefaultValue(binding.objectAttrInclude.outlineCountView)
+ "bottomDepthView".setDefaultValue(binding.objectAttrInclude.bottomDepthView)
+ "rowCountView".setDefaultValue(binding.objectAttrInclude.rowCountView)
+ "rowHoleCountView".setDefaultValue(binding.objectAttrInclude.rowHoleCountView)
+ "coverDepthView".setDefaultValue(binding.objectAttrInclude.coverDepthView)
+ "remainingChannelsView".setDefaultValue(binding.objectAttrInclude.remainingChannelsView)
+ "tieCableView1".setDefaultValue(binding.objectAttrInclude.tieCableView1)
+ "tieCableView2".setDefaultValue(binding.objectAttrInclude.tieCableView2)
+ "jointCountView".setDefaultValue(binding.objectAttrInclude.jointCountView)
+ "casingHoleCountView".setDefaultValue(binding.objectAttrInclude.casingHoleCountView)
+ "casingHoleDiameterView".setDefaultValue(binding.objectAttrInclude.casingHoleDiameterView)
+ "heightView".setDefaultValue(binding.objectAttrInclude.heightView)
+ "lineNumberView".setDefaultValue(binding.objectAttrInclude.lineNumberView)
+ "inspectionUnitView".setDefaultValue(binding.objectAttrInclude.inspectionUnitView)
+ "areaView".setDefaultValue(binding.objectAttrInclude.areaView)
+ "roadView".setDefaultValue(binding.objectAttrInclude.roadView)
+ "objectRemarkView1".setDefaultValue(binding.objectAttrInclude.objectRemarkView1)
+ "objectRemarkView2".setDefaultValue(binding.objectAttrInclude.objectRemarkView2)
+ "objectRemarkView3".setDefaultValue(binding.objectAttrInclude.objectRemarkView3)
+ "ownerView".setDefaultValue(binding.markerAttrInclude.ownerView)
+ "markerDepthView".setDefaultValue(binding.markerAttrInclude.markerDepthView)
+ "markerCountView".setDefaultValue(binding.markerAttrInclude.markerCountView)
+ "remarkView1".setDefaultValue(binding.markerAttrInclude.remarkView1)
+ "remarkView2".setDefaultValue(binding.markerAttrInclude.remarkView2)
+ "remarkView3".setDefaultValue(binding.markerAttrInclude.remarkView3)
+
+ val labelData = LabelDataClass(
+ companyId,
+ objectTypeCode.toString(),
+ binding.objectAttrInclude.objectCodeView.text.toString(),
+ binding.objectAttrInclude.objectNameView.text.toString(),
+ binding.objectAttrInclude.voltageLevelView.text.toString(),
+ binding.objectAttrInclude.objectModeSpinner.selectedItem.toString(),
+ "进线${binding.objectAttrInclude.inlineNameView.text}",
+ binding.objectAttrInclude.wellCoverMaterialSpinner.selectedItem.toString(),
+ "${binding.objectAttrInclude.capacityView.text}KVA",
+ binding.objectAttrInclude.transformerSpecView.text.toString(),
+ "${binding.objectAttrInclude.sLengthView.text}米长 x ${binding.objectAttrInclude.sWidthView.text}米宽 x ${binding.objectAttrInclude.sHeightView.text}米高",
+ binding.objectAttrInclude.inlineCountView.text.toString(),
+ binding.objectAttrInclude.outlineCountView.text.toString(),
+ binding.objectAttrInclude.cabinetTypeSpinner.selectedItem.toString(),
+ binding.objectAttrInclude.bottomDepthView.text.toString(),
+ "${binding.objectAttrInclude.rowCountView.text}排 x ${binding.objectAttrInclude.rowHoleCountView.text}孔",
+ "${binding.objectAttrInclude.coverDepthView.text}米",
+ binding.objectAttrInclude.crossPipeLineView.text.toString(),
+ binding.objectAttrInclude.remainingChannelsView.text.toString(),
+ binding.objectAttrInclude.tieCableView1.text.toString(),
+ binding.objectAttrInclude.tieCableView2.text.toString(),
+ binding.objectAttrInclude.jointCountView.text.toString(),
+ binding.objectAttrInclude.casingMaterialSpinner.selectedItem.toString(),
+ "${binding.objectAttrInclude.casingHoleCountView.text}孔,直径${binding.objectAttrInclude.casingHoleDiameterView.text}毫米",
+ "${binding.objectAttrInclude.heightView.text.toString()}米",
+ binding.objectAttrInclude.lineNumberView.text.toString(),
+ binding.objectAttrInclude.constructDateView.text.toString(),
+ binding.objectAttrInclude.inspectionUnitView.text.toString(),
+ binding.objectAttrInclude.areaView.text.toString(),
+ binding.objectAttrInclude.roadView.text.toString(),
+ binding.objectAttrInclude.objectRemarkView1.text.toString(),
+ binding.objectAttrInclude.objectRemarkView2.text.toString(),
+ binding.objectAttrInclude.objectRemarkView3.text.toString(),
+ binding.markerAttrInclude.markerIdView.text.toString(),
+ binding.markerAttrInclude.markerTypeSpinner.selectedItem.toString(),
+ binding.markerAttrInclude.ownerView.text.toString(),
+ binding.markerAttrInclude.markerDepthView.text.toString(),
+ binding.markerAttrInclude.installTimeView.text.toString(),
+ binding.markerAttrInclude.lngView.text.toString(),
+ binding.markerAttrInclude.latView.text.toString(),
+ binding.markerAttrInclude.markerCountView.text.toString(),
+ binding.markerAttrInclude.remarkView1.text.toString(),
+ binding.markerAttrInclude.remarkView2.text.toString(),
+ binding.markerAttrInclude.remarkView3.text.toString(),
+ realPaths
+ )
+
+ //先存本地
+ lifecycleScope.launch {
+ withContext(Dispatchers.IO) {
+ DataBaseManager.get.insertLabel(labelData)
+ }
+ }
+
+ //再存服务器
+ taskViewModel.installLabel(labelData)
+ }
+
+ //读标识器
+ binding.readMarkerButton.setOnClickListener {
+ LoadingDialogHub.show(this@MainActivity, "标识器读取中,请稍后...")
+ binding.readMarkerButton.isEnabled = false
+
+ isReadMarker = true
+
+ //调高串口电位
+ gpioManager.setGpioHigh("18")
+
+ soundPool.play(soundResourceId, 1f, 1f, 0, -1, 1f)
+
+ out.write('2'.code)
+ out.flush()
+ }
+ }
+
+ fun bindingValue(markerId: String) {
+ LoadingDialogHub.dismiss()
+ soundPool.autoPause()
+ binding.readMarkerButton.isEnabled = true
+
+ //降低串口电位
+ gpioManager.setGpioLow("18")
+
+ isReadMarker = false
+ binding.markerAttrInclude.markerIdView.text = markerId
+ }
+
+ private fun initDefaultData() {
+ binding.titleInclude.titleView.text = "安装新标识器"
+ binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(context))
+
+ imageAdapter = EditableImageAdapter(context, 3, 3)
+ binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter
+
+ //设置上次填写过的值
+ binding.objectAttrInclude.objectCodeView.setText("objectCodeView".getDefaultValue())
+ binding.objectAttrInclude.objectNameView.setText("objectNameView".getDefaultValue())
+ binding.objectAttrInclude.inlineNameView.setText("inlineNameView".getDefaultValue())
+ binding.objectAttrInclude.capacityView.setText("capacityView".getDefaultValue())
+ binding.objectAttrInclude.transformerSpecView.setText("transformerSpecView".getDefaultValue())
+ binding.objectAttrInclude.sLengthView.setText("sLengthView".getDefaultValue())
+ binding.objectAttrInclude.sWidthView.setText("sWidthView".getDefaultValue())
+ binding.objectAttrInclude.sHeightView.setText("sHeightView".getDefaultValue())
+ binding.objectAttrInclude.inlineCountView.setText("inlineCountView".getDefaultValue())
+ binding.objectAttrInclude.outlineCountView.setText("outlineCountView".getDefaultValue())
+ binding.objectAttrInclude.bottomDepthView.setText("bottomDepthView".getDefaultValue())
+ binding.objectAttrInclude.rowCountView.setText("rowCountView".getDefaultValue())
+ binding.objectAttrInclude.rowHoleCountView.setText("rowHoleCountView".getDefaultValue())
+ binding.objectAttrInclude.coverDepthView.setText("coverDepthView".getDefaultValue())
+ binding.objectAttrInclude.remainingChannelsView.setText("remainingChannelsView".getDefaultValue())
+ binding.objectAttrInclude.tieCableView1.setText("tieCableView1".getDefaultValue())
+ binding.objectAttrInclude.tieCableView2.setText("tieCableView2".getDefaultValue())
+ binding.objectAttrInclude.jointCountView.setText("jointCountView".getDefaultValue())
+ binding.objectAttrInclude.casingHoleCountView.setText("casingHoleCountView".getDefaultValue())
+ binding.objectAttrInclude.casingHoleDiameterView.setText("casingHoleDiameterView".getDefaultValue())
+ binding.objectAttrInclude.heightView.setText("heightView".getDefaultValue())
+ binding.objectAttrInclude.lineNumberView.setText("lineNumberView".getDefaultValue())
+ binding.objectAttrInclude.inspectionUnitView.setText("inspectionUnitView".getDefaultValue())
+ binding.objectAttrInclude.areaView.setText("areaView".getDefaultValue())
+ binding.objectAttrInclude.roadView.setText("roadView".getDefaultValue())
+ binding.objectAttrInclude.objectRemarkView1.setText("objectRemarkView1".getDefaultValue())
+ binding.objectAttrInclude.objectRemarkView2.setText("objectRemarkView2".getDefaultValue())
+ binding.objectAttrInclude.objectRemarkView3.setText("objectRemarkView3".getDefaultValue())
+ binding.markerAttrInclude.ownerView.setText("ownerView".getDefaultValue())
+ binding.markerAttrInclude.markerDepthView.setText("markerDepthView".getDefaultValue())
+ binding.markerAttrInclude.markerCountView.setText("markerCountView".getDefaultValue())
+ binding.markerAttrInclude.remarkView1.setText("remarkView1".getDefaultValue())
+ binding.markerAttrInclude.remarkView2.setText("remarkView2".getDefaultValue())
+ binding.markerAttrInclude.remarkView3.setText("remarkView3".getDefaultValue())
+
+ /**************************************************************************************/
+ binding.objectAttrInclude.objectTypeSpinner.show(
+ this@MainActivity, LocaleConstant.CONTENT_ARRAY, 0
+ )
+ binding.objectAttrInclude.objectTypeSpinner.onItemSelectedListener =
+ object : AdapterView.OnItemSelectedListener {
+ override fun onItemSelected(
+ parent: AdapterView<*>?, view: View?, position: Int, id: Long
+ ) {
+ when (position) {
+ 0 -> {
+ //选择电缆井
+ binding.objectAttrInclude.objectModeView.text = "类型:"
+ binding.objectAttrInclude.wellCoverMaterialView.text = "井盖材质:"
+ binding.objectAttrInclude.bottomDepthNameView.text = "井深:"
+ setLayoutVisibility(
+ View.VISIBLE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE
+ )
+ binding.objectAttrInclude.objectModeSpinner.show(
+ this@MainActivity, LocaleConstant.OBJECT_MODE_ARRAY, 0
+ )
+ binding.objectAttrInclude.wellCoverMaterialSpinner.show(
+ this@MainActivity, LocaleConstant.WELL_COVER_MATERIAL_ARRAY_1, 0
+ )
+ }
+
+ 1 -> {
+ //选择电缆通道
+ binding.objectAttrInclude.bottomDepthNameView.text = "底部深度:"
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE
+ )
+ }
+
+ 2 -> {
+ //选择配电房
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE
+ )
+ }
+
+ 3 -> {
+ //选择开关站
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE
+ )
+ }
+
+ 4 -> {
+ //选择台区
+ binding.objectAttrInclude.objectModeView.text = "变压器型号:"
+ setLayoutVisibility(
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE
+ )
+ binding.objectAttrInclude.objectModeSpinner.show(
+ this@MainActivity, arrayOf("变压器 KVA"), 0
+ )
+ }
+
+ 5 -> {
+ //选择杆塔
+ binding.objectAttrInclude.wellCoverMaterialView.text = "对象材质:"
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE
+ )
+ binding.objectAttrInclude.wellCoverMaterialSpinner.show(
+ this@MainActivity, LocaleConstant.WELL_COVER_MATERIAL_ARRAY_2, 0
+ )
+ }
+ }
+ }
+
+ override fun onNothingSelected(parent: AdapterView<*>?) {
+
+ }
+ }
+
+ binding.objectAttrInclude.cabinetTypeSpinner.show(
+ this@MainActivity, LocaleConstant.CABINET_TYPE_ARRAY, 0
+ )
+ binding.objectAttrInclude.casingMaterialSpinner.show(
+ this@MainActivity, LocaleConstant.PIPE_MATERIAL_ARRAY, 0
+ )
+ binding.markerAttrInclude.markerTypeSpinner.show(
+ this@MainActivity, LocaleConstant.MARKER_TYPE_ARRAY, 0
+ )
+
+ //电压等级-多选
+ binding.objectAttrInclude.voltageLevelView.setOnClickListener {
+ AlertDialog.Builder(context).setCancelable(false).setIcon(R.mipmap.ic_launcher)
+ .setTitle("请选择电压等级").setMultiChoiceItems(
+ LocaleConstant.VOLTAGE_LEVEL_ARRAY, LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY
+ ) { _, which, isChecked ->
+ LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[which] = isChecked
+ }.setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
+ .setPositiveButton("确定") { _, _ ->
+ val temp = java.util.ArrayList()
+ LocaleConstant.VOLTAGE_LEVEL_ARRAY.forEachIndexed { index, s ->
+ if (LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[index]) {
+ temp.add(s)
+ }
+ }
+
+ binding.objectAttrInclude.voltageLevelView.text = temp.reformat()
+ }.show()
+ }
+
+ //交叉管道类型-多选
+ binding.objectAttrInclude.crossPipeLineView.setOnClickListener {
+ AlertDialog.Builder(context).setCancelable(false).setIcon(R.mipmap.ic_launcher)
+ .setTitle("请选择交叉管道类型").setMultiChoiceItems(
+ LocaleConstant.CROSS_PIPE_ARRAY, LocaleConstant.CROSS_PIPE_STATE_ARRAY
+ ) { _, which, isChecked ->
+ LocaleConstant.CROSS_PIPE_STATE_ARRAY[which] = isChecked
+ }.setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
+ .setPositiveButton("确定") { _, _ ->
+ val temp = java.util.ArrayList()
+ LocaleConstant.CROSS_PIPE_ARRAY.forEachIndexed { index, s ->
+ if (LocaleConstant.CROSS_PIPE_STATE_ARRAY[index]) {
+ temp.add(s)
+ }
+ }
+
+ binding.objectAttrInclude.crossPipeLineView.text = temp.reformat()
+ }.show()
+ }
+
+ binding.objectAttrInclude.constructDateView.setOnClickListener {
+ val datePicker = DatePickerDialog(
+ context,
+ null,
+ calendar.get(Calendar.YEAR),
+ calendar.get(Calendar.MONTH),
+ calendar.get(Calendar.DAY_OF_MONTH)
+ )
+ datePicker.show()
+
+ datePicker.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener {
+ val year = datePicker.datePicker.year
+ val month = datePicker.datePicker.month + 1
+ val day = datePicker.datePicker.dayOfMonth
+ val selectedDate = String.format(
+ "%s-%s-%s", year, month.appendZero(), day.appendZero()
+ )
+
+ //当前时间
+ val current = System.currentTimeMillis().timestampToTime()
+ val today = "$selectedDate $current".dateToTimestamp()
+ if (Date(today).after(Date())) {
+ "建设年代不能早于当前日期".show(context)
+ } else {
+ datePicker.dismiss()
+ binding.objectAttrInclude.constructDateView.text = selectedDate
+ }
+ }
+ }
+
+ binding.markerAttrInclude.installTimeView.text =
+ System.currentTimeMillis().timestampToCompleteDate()
+ locationHub.getCurrentLocation(true, object : ILocationListener {
+ override fun onAMapLocationGet(location: AMapLocation?) {
+ if (location != null) {
+ binding.markerAttrInclude.lngView.text = location.longitude.toString()
+ binding.markerAttrInclude.latView.text = location.latitude.toString()
+ } else {
+ "当前位置信号差,无法获取定位".show(context)
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+ PictureSelector.create(this@MainActivity).openCamera(SelectMimeType.ofImage())
+ .forResult(object : OnResultCallbackListener {
+ override fun onResult(result: java.util.ArrayList?) {
+ if (result == null) {
+ "拍照失败,请重试".show(context)
+ return
+ }
+ analyticalSelectResult(result[0])
+ }
+
+ override fun onCancel() {
+
+ }
+ })
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(context)
+ } else {
+ context.navigatePageTo(position, realPaths)
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+
+ private fun analyticalSelectResult(result: LocalMedia) {
+ //压缩图片
+ result.realPath.compressImage(context, object : OnImageCompressListener {
+ override fun onSuccess(file: File) {
+ realPaths.add(file.absolutePath)
+ imageAdapter.setupImage(realPaths)
+ }
+
+ override fun onError(e: Throwable) {
+ e.printStackTrace()
+ }
+ })
+ }
+
+ //根据选择类型控制界面某些区域显隐
+ private fun setLayoutVisibility(vararg args: Int) {
+ binding.objectAttrInclude.objectModeLayout.visibility = args[0]
+ binding.objectAttrInclude.inlineNameLayout.visibility = args[1]
+ binding.objectAttrInclude.wellCoverMaterialLayout.visibility = args[2]
+ binding.objectAttrInclude.capacityLayout.visibility = args[3]
+ binding.objectAttrInclude.sizeLayout.visibility = args[4]
+ binding.objectAttrInclude.inlineCountLayout.visibility = args[5]
+ binding.objectAttrInclude.outlineCountLayout.visibility = args[6]
+ binding.objectAttrInclude.wellDepthLayout.visibility = args[7]
+ binding.objectAttrInclude.pipeLineLayout.visibility = args[8]
+ binding.objectAttrInclude.jointCountLayout.visibility = args[9]
+ binding.objectAttrInclude.heightLayout.visibility = args[10]
+ }
}
/**安装小标签对话框******************************************************************************/
@@ -859,6 +1373,29 @@
var isReadMarker = false
var isInstallMarker = false
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ this.initDialogLayoutParams(1f)
+ setCancelable(false)
+ setCanceledOnTouchOutside(false)
+
+ //返回
+ binding.titleInclude.leftBackView.setOnClickListener {
+ dismiss()
+ }
+ }
+
+ fun bindingValue(markerId: String) {
+ LoadingDialogHub.dismiss()
+ soundPool.autoPause()
+ binding.readMarkerButton.isEnabled = true
+
+ //降低串口电位
+ gpioManager.setGpioLow("18")
+
+ isReadMarker = false
+ }
}
/**探测标识器对话框******************************************************************************/
@@ -976,9 +1513,12 @@
degreeCache["lastDegree"]?.apply {
val animation = RotateAnimation(
- this, degree,
- Animation.RELATIVE_TO_SELF, 0.5f,
- Animation.RELATIVE_TO_SELF, 0.5f
+ this,
+ degree,
+ Animation.RELATIVE_TO_SELF,
+ 0.5f,
+ Animation.RELATIVE_TO_SELF,
+ 0.5f
)
animation.duration = 0
animation.fillAfter = true
diff --git a/app/src/main/java/com/casic/electric/detector/widgets/QueryMarkerDialog.kt b/app/src/main/java/com/casic/electric/detector/widgets/QueryMarkerDialog.kt
index 0d9f58b..169147b 100644
--- a/app/src/main/java/com/casic/electric/detector/widgets/QueryMarkerDialog.kt
+++ b/app/src/main/java/com/casic/electric/detector/widgets/QueryMarkerDialog.kt
@@ -10,10 +10,10 @@
import android.widget.Spinner
import com.casic.electric.detector.R
import com.casic.electric.detector.databinding.DialogQueryMarkerBinding
-import com.casic.electric.detector.extensions.appendZero
import com.casic.electric.detector.utils.DataBaseManager
import com.casic.electric.detector.utils.LocaleConstant
import com.casic.electric.detector.utils.QueryMode
+import com.pengxh.kt.lite.extensions.appendZero
import com.pengxh.kt.lite.extensions.binding
import com.pengxh.kt.lite.extensions.initDialogLayoutParams
import kotlinx.coroutines.CoroutineScope
@@ -82,7 +82,6 @@
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
this.initDialogLayoutParams(0.8f)
- setContentView(R.layout.dialog_query_marker)
setCanceledOnTouchOutside(false)
initView()
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 14e9b51..92d80c5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -70,7 +70,6 @@
android:name=".view.ElectricMarkerDetailActivity"
android:theme="@style/Theme.ActivityDialogStyle" />
-
diff --git a/app/src/main/java/com/casic/electric/detector/view/InstallLabelActivity.kt b/app/src/main/java/com/casic/electric/detector/view/InstallLabelActivity.kt
deleted file mode 100644
index 6510104..0000000
--- a/app/src/main/java/com/casic/electric/detector/view/InstallLabelActivity.kt
+++ /dev/null
@@ -1,601 +0,0 @@
-package com.casic.electric.detector.view
-
-import android.annotation.SuppressLint
-import android.app.AlertDialog
-import android.app.DatePickerDialog
-import android.content.Context
-import android.content.DialogInterface
-import android.content.Intent
-import android.media.AudioAttributes
-import android.media.SoundPool
-import android.os.Bundle
-import android.os.Handler
-import android.os.Message
-import android.provider.Settings
-import android.util.Log
-import android.view.KeyEvent
-import android.view.View
-import android.view.WindowManager
-import android.widget.AdapterView
-import androidx.lifecycle.ViewModelProvider
-import androidx.lifecycle.lifecycleScope
-import com.amap.api.location.AMapLocation
-import com.casic.electric.detector.R
-import com.casic.electric.detector.adapter.EditableImageAdapter
-import com.casic.electric.detector.base.SerialPortActivity
-import com.casic.electric.detector.callback.ILocationListener
-import com.casic.electric.detector.callback.OnImageCompressListener
-import com.casic.electric.detector.databinding.ActivityInstallLabelBinding
-import com.casic.electric.detector.extensions.*
-import com.casic.electric.detector.utils.*
-import com.casic.electric.detector.vm.TaskViewModel
-import com.luck.picture.lib.basic.PictureSelector
-import com.luck.picture.lib.config.SelectMimeType
-import com.luck.picture.lib.entity.LocalMedia
-import com.luck.picture.lib.interfaces.OnResultCallbackListener
-import com.pengxh.kt.lite.extensions.*
-import com.pengxh.kt.lite.utils.LoadState
-import com.pengxh.kt.lite.utils.LoadingDialogHub
-import com.pengxh.kt.lite.utils.SaveKeyValues
-import com.pengxh.kt.lite.utils.WeakReferenceHandler
-import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.withContext
-import java.io.File
-import java.io.IOException
-import java.util.*
-
-@SuppressLint("SetTextI18n")
-class InstallLabelActivity : SerialPortActivity(), Handler.Callback {
-
- private val kTag = "LabelActivity"
- private val context: Context = this@InstallLabelActivity
- private val gpioManager by lazy { GpioManager() }
- private val calendar by lazy { Calendar.getInstance() }
- private val locationHub by lazy { LocationHub(this) }
- private val realPaths = ArrayList() //真实图片路径
- private var soundResId = 0
- private lateinit var weakReferenceHandler: WeakReferenceHandler
- private lateinit var soundPool: SoundPool
- private lateinit var imageAdapter: EditableImageAdapter
- private lateinit var taskViewModel: TaskViewModel
-
- override fun initViewBinding(): ActivityInstallLabelBinding {
- return ActivityInstallLabelBinding.inflate(layoutInflater)
- }
-
- override fun setupTopBarLayout() {
- binding.titleInclude.titleView.text = "安装新标识器"
- binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(this))
- }
-
- override fun initOnCreate(savedInstanceState: Bundle?) {
- window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN or WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)
-
- weakReferenceHandler = WeakReferenceHandler(this)
-
- val audioAttributes = AudioAttributes.Builder()
- .setUsage(AudioAttributes.USAGE_MEDIA)
- .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
- .build()
- soundPool = SoundPool.Builder()
- .setMaxStreams(16)
- .setAudioAttributes(audioAttributes)
- .build()
-
- //设置上次填写过的值
- binding.objectAttrInclude.objectCodeView.setText("objectCodeView".getDefaultValue())
- binding.objectAttrInclude.objectNameView.setText("objectNameView".getDefaultValue())
- binding.objectAttrInclude.inlineNameView.setText("inlineNameView".getDefaultValue())
- binding.objectAttrInclude.capacityView.setText("capacityView".getDefaultValue())
- binding.objectAttrInclude.transformerSpecView.setText("transformerSpecView".getDefaultValue())
- binding.objectAttrInclude.sLengthView.setText("sLengthView".getDefaultValue())
- binding.objectAttrInclude.sWidthView.setText("sWidthView".getDefaultValue())
- binding.objectAttrInclude.sHeightView.setText("sHeightView".getDefaultValue())
- binding.objectAttrInclude.inlineCountView.setText("inlineCountView".getDefaultValue())
- binding.objectAttrInclude.outlineCountView.setText("outlineCountView".getDefaultValue())
- binding.objectAttrInclude.bottomDepthView.setText("bottomDepthView".getDefaultValue())
- binding.objectAttrInclude.rowCountView.setText("rowCountView".getDefaultValue())
- binding.objectAttrInclude.rowHoleCountView.setText("rowHoleCountView".getDefaultValue())
- binding.objectAttrInclude.coverDepthView.setText("coverDepthView".getDefaultValue())
- binding.objectAttrInclude.remainingChannelsView.setText("remainingChannelsView".getDefaultValue())
- binding.objectAttrInclude.tieCableView1.setText("tieCableView1".getDefaultValue())
- binding.objectAttrInclude.tieCableView2.setText("tieCableView2".getDefaultValue())
- binding.objectAttrInclude.jointCountView.setText("jointCountView".getDefaultValue())
- binding.objectAttrInclude.casingHoleCountView.setText("casingHoleCountView".getDefaultValue())
- binding.objectAttrInclude.casingHoleDiameterView.setText("casingHoleDiameterView".getDefaultValue())
- binding.objectAttrInclude.heightView.setText("heightView".getDefaultValue())
- binding.objectAttrInclude.lineNumberView.setText("lineNumberView".getDefaultValue())
- binding.objectAttrInclude.inspectionUnitView.setText("inspectionUnitView".getDefaultValue())
- binding.objectAttrInclude.areaView.setText("areaView".getDefaultValue())
- binding.objectAttrInclude.roadView.setText("roadView".getDefaultValue())
- binding.objectAttrInclude.objectRemarkView1.setText("objectRemarkView1".getDefaultValue())
- binding.objectAttrInclude.objectRemarkView2.setText("objectRemarkView2".getDefaultValue())
- binding.objectAttrInclude.objectRemarkView3.setText("objectRemarkView3".getDefaultValue())
- binding.markerAttrInclude.ownerView.setText("ownerView".getDefaultValue())
- binding.markerAttrInclude.markerDepthView.setText("markerDepthView".getDefaultValue())
- binding.markerAttrInclude.markerCountView.setText("markerCountView".getDefaultValue())
- binding.markerAttrInclude.remarkView1.setText("remarkView1".getDefaultValue())
- binding.markerAttrInclude.remarkView2.setText("remarkView2".getDefaultValue())
- binding.markerAttrInclude.remarkView3.setText("remarkView3".getDefaultValue())
-
- //初始化图片九宫格
- imageAdapter = EditableImageAdapter(this, 3, 3)
- binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter
-
- taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
- }
-
- override fun observeRequestState() {
- taskViewModel.loadState.observe(this) {
- when (it) {
- LoadState.Loading -> LoadingDialogHub.show(this, "标识器安装中,请稍后...")
- LoadState.Success -> {
- LoadingDialogHub.dismiss()
- finish()
- }
-
- else -> LoadingDialogHub.dismiss()
- }
- }
- }
-
- override fun initEvent() {
- binding.titleInclude.leftBackView.setOnClickListener { finish() }
-
- /**************************************************************************************/
- binding.objectAttrInclude.objectTypeSpinner.show(this, LocaleConstant.CONTENT_ARRAY, 0)
- binding.objectAttrInclude.objectTypeSpinner.onItemSelectedListener =
- object : AdapterView.OnItemSelectedListener {
- override fun onItemSelected(
- parent: AdapterView<*>?, view: View?, position: Int, id: Long
- ) {
- when (position) {
- 0 -> {
- //选择电缆井
- binding.objectAttrInclude.objectModeView.text = "类型:"
- binding.objectAttrInclude.wellCoverMaterialView.text = "井盖材质:"
- binding.objectAttrInclude.bottomDepthNameView.text = "井深:"
- setLayoutVisibility(
- View.VISIBLE, View.GONE, View.VISIBLE, View.GONE, View.VISIBLE,
- View.GONE, View.GONE, View.VISIBLE, View.GONE, View.VISIBLE,
- View.GONE
- )
- binding.objectAttrInclude.objectModeSpinner.show(
- this@InstallLabelActivity, LocaleConstant.OBJECT_MODE_ARRAY, 0
- )
- binding.objectAttrInclude.wellCoverMaterialSpinner.show(
- this@InstallLabelActivity,
- LocaleConstant.WELL_COVER_MATERIAL_ARRAY_1,
- 0
- )
- }
-
- 1 -> {
- //选择电缆通道
- binding.objectAttrInclude.bottomDepthNameView.text = "底部深度:"
- setLayoutVisibility(
- View.GONE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.GONE, View.GONE, View.VISIBLE, View.VISIBLE, View.VISIBLE,
- View.GONE
- )
- }
-
- 2 -> {
- //选择配电房
- setLayoutVisibility(
- View.GONE, View.GONE, View.GONE, View.VISIBLE, View.VISIBLE,
- View.VISIBLE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.GONE
- )
- }
-
- 3 -> {
- //选择开关站
- setLayoutVisibility(
- View.GONE, View.GONE, View.GONE, View.GONE, View.VISIBLE,
- View.VISIBLE, View.VISIBLE, View.GONE, View.GONE, View.GONE,
- View.GONE
- )
- }
-
- 4 -> {
- //选择台区
- binding.objectAttrInclude.objectModeView.text = "变压器型号:"
- setLayoutVisibility(
- View.VISIBLE, View.VISIBLE, View.GONE, View.GONE, View.GONE,
- View.GONE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.GONE
- )
- binding.objectAttrInclude.objectModeSpinner.show(
- this@InstallLabelActivity, arrayOf("变压器 KVA"), 0
- )
- }
-
- 5 -> {
- //选择杆塔
- binding.objectAttrInclude.wellCoverMaterialView.text = "对象材质:"
- setLayoutVisibility(
- View.GONE, View.GONE, View.VISIBLE, View.GONE, View.GONE,
- View.GONE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.VISIBLE
- )
- binding.objectAttrInclude.wellCoverMaterialSpinner.show(
- this@InstallLabelActivity,
- LocaleConstant.WELL_COVER_MATERIAL_ARRAY_2,
- 0
- )
- }
- }
- }
-
- override fun onNothingSelected(parent: AdapterView<*>?) {
-
- }
- }
-
- binding.objectAttrInclude.cabinetTypeSpinner.show(
- this,
- LocaleConstant.CABINET_TYPE_ARRAY,
- 0
- )
- binding.objectAttrInclude.casingMaterialSpinner.show(
- this,
- LocaleConstant.PIPE_MATERIAL_ARRAY,
- 0
- )
- binding.markerAttrInclude.markerTypeSpinner.show(this, LocaleConstant.MARKER_TYPE_ARRAY, 0)
-
- //电压等级-多选
- binding.objectAttrInclude.voltageLevelView.setOnClickListener {
- AlertDialog.Builder(context)
- .setCancelable(false)
- .setIcon(R.mipmap.ic_launcher)
- .setTitle("请选择电压等级")
- .setMultiChoiceItems(
- LocaleConstant.VOLTAGE_LEVEL_ARRAY, LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY
- ) { _, which, isChecked ->
- LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[which] = isChecked
- }
- .setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
- .setPositiveButton("确定") { _, _ ->
- val temp = ArrayList()
- LocaleConstant.VOLTAGE_LEVEL_ARRAY.forEachIndexed { index, s ->
- if (LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[index]) {
- temp.add(s)
- }
- }
-
- binding.objectAttrInclude.voltageLevelView.text = temp.reformat()
- }.show()
- }
-
- //交叉管道类型-多选
- binding.objectAttrInclude.crossPipeLineView.setOnClickListener {
- AlertDialog.Builder(context)
- .setCancelable(false)
- .setIcon(R.mipmap.ic_launcher)
- .setTitle("请选择交叉管道类型")
- .setMultiChoiceItems(
- LocaleConstant.CROSS_PIPE_ARRAY, LocaleConstant.CROSS_PIPE_STATE_ARRAY
- ) { _, which, isChecked ->
- LocaleConstant.CROSS_PIPE_STATE_ARRAY[which] = isChecked
- }
- .setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
- .setPositiveButton("确定") { _, _ ->
- val temp = ArrayList()
- LocaleConstant.CROSS_PIPE_ARRAY.forEachIndexed { index, s ->
- if (LocaleConstant.CROSS_PIPE_STATE_ARRAY[index]) {
- temp.add(s)
- }
- }
-
- binding.objectAttrInclude.crossPipeLineView.text = temp.reformat()
- }.show()
- }
-
- binding.objectAttrInclude.constructDateView.setOnClickListener {
- val datePicker = DatePickerDialog(
- this,
- null,
- calendar.get(Calendar.YEAR),
- calendar.get(Calendar.MONTH),
- calendar.get(Calendar.DAY_OF_MONTH)
- )
- datePicker.show()
-
- datePicker.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener {
- val year = datePicker.datePicker.year
- val month = datePicker.datePicker.month + 1
- val day = datePicker.datePicker.dayOfMonth
- val selectedDate = String.format(
- "%s-%s-%s", year, month.appendZero(), day.appendZero()
- )
-
- //当前时间
- val current = System.currentTimeMillis().timestampToTime()
- val today = "$selectedDate $current".dateToTimestamp()
- if (Date(today).after(Date())) {
- "建设年代不能早于当前日期".show(context)
- } else {
- datePicker.dismiss()
- binding.objectAttrInclude.constructDateView.text = selectedDate
- }
- }
- }
-
- binding.markerAttrInclude.installTimeView.text =
- System.currentTimeMillis().timestampToCompleteDate()
- locationHub.getCurrentLocation(true, object : ILocationListener {
- override fun onAMapLocationGet(location: AMapLocation?) {
- if (location != null) {
- binding.markerAttrInclude.lngView.text = location.longitude.toString()
- binding.markerAttrInclude.latView.text = location.latitude.toString()
- } else {
- "当前位置信号差,无法获取定位".show(context)
- }
- }
- })
-
- imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
- override fun onAddImageClick() {
- PictureSelector.create(this@InstallLabelActivity)
- .openCamera(SelectMimeType.ofImage())
- .forResult(object : OnResultCallbackListener {
- override fun onResult(result: ArrayList?) {
- if (result == null) {
- "拍照失败,请重试".show(context)
- return
- }
- analyticalSelectResult(result[0])
- }
-
- override fun onCancel() {
-
- }
- })
- }
-
- override fun onItemClick(position: Int) {
- if (realPaths[position].isEmpty()) {
- "图片加载失败,无法查看大图".show(context)
- } else {
- context.navigatePageTo(position, realPaths)
- }
- }
-
- override fun onItemLongClick(view: View?, position: Int) {
- imageAdapter.deleteImage(position)
- }
- })
-
- /**************************************************************************************/
- binding.installButton.setOnClickListener {
- if (isNetworkConnected()) {
- val companyId = SaveKeyValues.getValue(LocaleConstant.USER_COMPANY_ID, "") as String
-
- val itemPosition = binding.objectAttrInclude.objectTypeSpinner.selectedItemPosition
- val objectTypeCode = itemPosition + 1
-
- if (binding.markerAttrInclude.markerIdView.text.isNullOrBlank()) {
- "标识器ID不能为空,请读标识器".show(this)
- return@setOnClickListener
- }
-
- if (binding.objectAttrInclude.constructDateView.text.isNullOrBlank()) {
- "请选择建设时间".show(this)
- return@setOnClickListener
- }
-
- if (binding.markerAttrInclude.markerCountView.text.isNullOrBlank()) {
- "请输入电子标签数量".show(this)
- return@setOnClickListener
- }
-
- //保存默认值
- "objectCodeView".setDefaultValue(binding.objectAttrInclude.objectCodeView)
- "objectNameView".setDefaultValue(binding.objectAttrInclude.objectNameView)
- "inlineNameView".setDefaultValue(binding.objectAttrInclude.inlineNameView)
- "capacityView".setDefaultValue(binding.objectAttrInclude.capacityView)
- "transformerSpecView".setDefaultValue(binding.objectAttrInclude.transformerSpecView)
- "sLengthView".setDefaultValue(binding.objectAttrInclude.sLengthView)
- "sWidthView".setDefaultValue(binding.objectAttrInclude.sWidthView)
- "sHeightView".setDefaultValue(binding.objectAttrInclude.sHeightView)
- "inlineCountView".setDefaultValue(binding.objectAttrInclude.inlineCountView)
- "outlineCountView".setDefaultValue(binding.objectAttrInclude.outlineCountView)
- "bottomDepthView".setDefaultValue(binding.objectAttrInclude.bottomDepthView)
- "rowCountView".setDefaultValue(binding.objectAttrInclude.rowCountView)
- "rowHoleCountView".setDefaultValue(binding.objectAttrInclude.rowHoleCountView)
- "coverDepthView".setDefaultValue(binding.objectAttrInclude.coverDepthView)
- "remainingChannelsView".setDefaultValue(binding.objectAttrInclude.remainingChannelsView)
- "tieCableView1".setDefaultValue(binding.objectAttrInclude.tieCableView1)
- "tieCableView2".setDefaultValue(binding.objectAttrInclude.tieCableView2)
- "jointCountView".setDefaultValue(binding.objectAttrInclude.jointCountView)
- "casingHoleCountView".setDefaultValue(binding.objectAttrInclude.casingHoleCountView)
- "casingHoleDiameterView".setDefaultValue(binding.objectAttrInclude.casingHoleDiameterView)
- "heightView".setDefaultValue(binding.objectAttrInclude.heightView)
- "lineNumberView".setDefaultValue(binding.objectAttrInclude.lineNumberView)
- "inspectionUnitView".setDefaultValue(binding.objectAttrInclude.inspectionUnitView)
- "areaView".setDefaultValue(binding.objectAttrInclude.areaView)
- "roadView".setDefaultValue(binding.objectAttrInclude.roadView)
- "objectRemarkView1".setDefaultValue(binding.objectAttrInclude.objectRemarkView1)
- "objectRemarkView2".setDefaultValue(binding.objectAttrInclude.objectRemarkView2)
- "objectRemarkView3".setDefaultValue(binding.objectAttrInclude.objectRemarkView3)
- "ownerView".setDefaultValue(binding.markerAttrInclude.ownerView)
- "markerDepthView".setDefaultValue(binding.markerAttrInclude.markerDepthView)
- "markerCountView".setDefaultValue(binding.markerAttrInclude.markerCountView)
- "remarkView1".setDefaultValue(binding.markerAttrInclude.remarkView1)
- "remarkView2".setDefaultValue(binding.markerAttrInclude.remarkView2)
- "remarkView3".setDefaultValue(binding.markerAttrInclude.remarkView3)
-
- val labelData = LabelDataClass(
- companyId,
- objectTypeCode.toString(),
- binding.objectAttrInclude.objectCodeView.text.toString(),
- binding.objectAttrInclude.objectNameView.text.toString(),
- binding.objectAttrInclude.voltageLevelView.text.toString(),
- binding.objectAttrInclude.objectModeSpinner.selectedItem.toString(),
- "进线${binding.objectAttrInclude.inlineNameView.text}",
- binding.objectAttrInclude.wellCoverMaterialSpinner.selectedItem.toString(),
- "${binding.objectAttrInclude.capacityView.text}KVA",
- binding.objectAttrInclude.transformerSpecView.text.toString(),
- "${binding.objectAttrInclude.sLengthView.text}米长 x ${binding.objectAttrInclude.sWidthView.text}米宽 x ${binding.objectAttrInclude.sHeightView.text}米高",
- binding.objectAttrInclude.inlineCountView.text.toString(),
- binding.objectAttrInclude.outlineCountView.text.toString(),
- binding.objectAttrInclude.cabinetTypeSpinner.selectedItem.toString(),
- binding.objectAttrInclude.bottomDepthView.text.toString(),
- "${binding.objectAttrInclude.rowCountView.text}排 x ${binding.objectAttrInclude.rowHoleCountView.text}孔",
- "${binding.objectAttrInclude.coverDepthView.text}米",
- binding.objectAttrInclude.crossPipeLineView.text.toString(),
- binding.objectAttrInclude.remainingChannelsView.text.toString(),
- binding.objectAttrInclude.tieCableView1.text.toString(),
- binding.objectAttrInclude.tieCableView2.text.toString(),
- binding.objectAttrInclude.jointCountView.text.toString(),
- binding.objectAttrInclude.casingMaterialSpinner.selectedItem.toString(),
- "${binding.objectAttrInclude.casingHoleCountView.text}孔,直径${binding.objectAttrInclude.casingHoleDiameterView.text}毫米",
- "${binding.objectAttrInclude.heightView.text.toString()}米",
- binding.objectAttrInclude.lineNumberView.text.toString(),
- binding.objectAttrInclude.constructDateView.text.toString(),
- binding.objectAttrInclude.inspectionUnitView.text.toString(),
- binding.objectAttrInclude.areaView.text.toString(),
- binding.objectAttrInclude.roadView.text.toString(),
- binding.objectAttrInclude.objectRemarkView1.text.toString(),
- binding.objectAttrInclude.objectRemarkView2.text.toString(),
- binding.objectAttrInclude.objectRemarkView3.text.toString(),
- binding.markerAttrInclude.markerIdView.text.toString(),
- binding.markerAttrInclude.markerTypeSpinner.selectedItem.toString(),
- binding.markerAttrInclude.ownerView.text.toString(),
- binding.markerAttrInclude.markerDepthView.text.toString(),
- binding.markerAttrInclude.installTimeView.text.toString(),
- binding.markerAttrInclude.lngView.text.toString(),
- binding.markerAttrInclude.latView.text.toString(),
- binding.markerAttrInclude.markerCountView.text.toString(),
- binding.markerAttrInclude.remarkView1.text.toString(),
- binding.markerAttrInclude.remarkView2.text.toString(),
- binding.markerAttrInclude.remarkView3.text.toString(),
- realPaths
- )
-
- //先存本地
- lifecycleScope.launch {
- withContext(Dispatchers.IO) {
- DataBaseManager.get.insertLabel(labelData)
- }
- }
-
- //再存服务器
- taskViewModel.installLabel(labelData)
- } else {
- NoNetworkDialog.Builder()
- .setContext(context)
- .setOnDialogButtonClickListener(object :
- NoNetworkDialog.OnDialogButtonClickListener {
- override fun onButtonClick() {
- val intent = Intent(Settings.ACTION_SETTINGS)
- startActivity(intent)
- }
- }).build().show()
- }
- }
-
- binding.readLabelButton.setOnClickListener {
- gpioManager.setGpioHigh("18")
-
- LoadingDialogHub.show(this, "标识器读取中,请稍后...")
-
- soundResId = soundPool.load(this, R.raw.ring3, 1)
- soundPool.setOnLoadCompleteListener { soundPool, _, _ ->
- soundPool.play(soundResId, 1f, 1f, 0, -1, 1f)
- }
-
- // 1000ms后发送读标识器或搜索信号
- weakReferenceHandler.postDelayed({
- try {
- // 发送读标识器或搜索信号
- out.write("2".toByteArray())
- out.flush()
- } catch (e: IOException) {
- e.printStackTrace()
- }
- }, 1000)
- }
- }
-
- override fun onDataReceived(buffer: ByteArray) {
- Log.d(kTag, "onDataReceived => " + buffer.contentToString())
- if (buffer != null) {
- val message = weakReferenceHandler.obtainMessage()
- message.what = 2023081701
- message.obj = buffer
- weakReferenceHandler.sendMessage(message)
- }
- }
-
- override fun handleMessage(msg: Message): Boolean {
- if (msg.what == 2023081701) {
- soundPool.release()
-
- val buffer = msg.obj as ByteArray
- val hex = buffer.toHex()
-
- if (hex.length >= 20) {
- val markerId = hex.substring(0, 20).hexToString()
-
- gpioManager.setGpioLow("18")
-
- //查本地库
- val result = DataBaseManager.get.queryLabelById(markerId)
- if (result.isEmpty()) {
- binding.markerAttrInclude.markerIdView.text = markerId
- } else {
- "此标识器已安装,请更换标识器!".show(this)
- }
- LoadingDialogHub.dismiss()
- }
- }
- return true
- }
-
- private fun analyticalSelectResult(result: LocalMedia) {
- //压缩图片
- result.realPath.compressImage(this, object : OnImageCompressListener {
- override fun onSuccess(file: File) {
- realPaths.add(file.absolutePath)
- imageAdapter.setupImage(realPaths)
- }
-
- override fun onError(e: Throwable) {
- e.printStackTrace()
- }
- })
- }
-
- //根据选择类型控制界面某些区域显隐
- private fun setLayoutVisibility(vararg args: Int) {
- binding.objectAttrInclude.objectModeLayout.visibility = args[0]
- binding.objectAttrInclude.inlineNameLayout.visibility = args[1]
- binding.objectAttrInclude.wellCoverMaterialLayout.visibility = args[2]
- binding.objectAttrInclude.capacityLayout.visibility = args[3]
- binding.objectAttrInclude.sizeLayout.visibility = args[4]
- binding.objectAttrInclude.inlineCountLayout.visibility = args[5]
- binding.objectAttrInclude.outlineCountLayout.visibility = args[6]
- binding.objectAttrInclude.wellDepthLayout.visibility = args[7]
- binding.objectAttrInclude.pipeLineLayout.visibility = args[8]
- binding.objectAttrInclude.jointCountLayout.visibility = args[9]
- binding.objectAttrInclude.heightLayout.visibility = args[10]
- }
-
- override fun onDestroy() {
- super.onDestroy()
- soundPool.release()
- gpioManager.setGpioLow("18")
- }
-
- override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- soundPool.release()
- }
- return super.onKeyDown(keyCode, event)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt
index a0a4aac..40a5f3d 100644
--- a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt
@@ -2,8 +2,10 @@
import android.annotation.SuppressLint
import android.app.AlertDialog
+import android.app.DatePickerDialog
import android.app.Dialog
import android.content.Context
+import android.content.DialogInterface
import android.graphics.Color
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
@@ -16,6 +18,7 @@
import android.view.View
import android.view.animation.Animation
import android.view.animation.RotateAnimation
+import android.widget.AdapterView
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import com.amap.api.location.AMapLocation
@@ -33,6 +36,7 @@
import com.casic.electric.detector.bean.SmallLabelBean
import com.casic.electric.detector.bean.TaskBean
import com.casic.electric.detector.callback.ILocationListener
+import com.casic.electric.detector.callback.OnImageCompressListener
import com.casic.electric.detector.cluster.ClusterItem
import com.casic.electric.detector.cluster.ClusterOverlay
import com.casic.electric.detector.cluster.RegionItem
@@ -41,14 +45,20 @@
import com.casic.electric.detector.databinding.DialogInstallSmallMarkerBinding
import com.casic.electric.detector.databinding.DialogSearchMarkerBinding
import com.casic.electric.detector.extensions.appendExcelDownloadUrl
+import com.casic.electric.detector.extensions.compressImage
import com.casic.electric.detector.extensions.drawCircle
+import com.casic.electric.detector.extensions.getDefaultValue
import com.casic.electric.detector.extensions.hexToString
import com.casic.electric.detector.extensions.initImmersionBar
import com.casic.electric.detector.extensions.isNumber
+import com.casic.electric.detector.extensions.reformat
+import com.casic.electric.detector.extensions.setDefaultValue
+import com.casic.electric.detector.extensions.show
import com.casic.electric.detector.extensions.toHex
import com.casic.electric.detector.utils.DataBaseManager
import com.casic.electric.detector.utils.ExcelHub
import com.casic.electric.detector.utils.GpioManager
+import com.casic.electric.detector.utils.LabelDataClass
import com.casic.electric.detector.utils.LocaleConstant
import com.casic.electric.detector.utils.LocationHub
import com.casic.electric.detector.utils.RouteOnMap
@@ -56,13 +66,22 @@
import com.casic.electric.detector.widgets.QueryMarkerDialog
import com.casic.electric.detector.widgets.SamplePopupWindow
import com.google.gson.Gson
+import com.luck.picture.lib.basic.PictureSelector
+import com.luck.picture.lib.config.SelectMimeType
+import com.luck.picture.lib.entity.LocalMedia
+import com.luck.picture.lib.interfaces.OnResultCallbackListener
+import com.pengxh.kt.lite.extensions.appendZero
import com.pengxh.kt.lite.extensions.binding
+import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.createDownloadFileDir
+import com.pengxh.kt.lite.extensions.dateToTimestamp
import com.pengxh.kt.lite.extensions.dp2px
import com.pengxh.kt.lite.extensions.initDialogLayoutParams
import com.pengxh.kt.lite.extensions.isNetworkConnected
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.extensions.timestampToCompleteDate
+import com.pengxh.kt.lite.extensions.timestampToTime
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.FileDownloadManager
import com.pengxh.kt.lite.utils.LoadState
@@ -78,6 +97,7 @@
import java.io.File
import java.text.DecimalFormat
import java.util.Calendar
+import java.util.Date
import java.util.Timer
import java.util.TimerTask
@@ -456,16 +476,16 @@
Log.d(kTag, "$kTag => $hex")
if (searchDialog.isDetectMarker) {
searchDialog.bindingValue(hex)
-// } else if (installMarkerDialog.isReadMarker) {
-// val markerId = hex.take(20).hexToString()
-// if (markerId.isNumber()) {
-// installMarkerDialog.bindingValue(markerId)
-// }
-// } else if (installSmallMarkerDialog.isReadMarker) {
-// val markerId = hex.take(20).hexToString()
-// if (markerId.isNumber()) {
-// installSmallMarkerDialog.bindingValue(markerId)
-// }
+ } else if (installMarkerDialog.isReadMarker) {
+ val markerId = hex.take(20).hexToString()
+ if (markerId.isNumber()) {
+ installMarkerDialog.bindingValue(markerId)
+ }
+ } else if (installSmallMarkerDialog.isReadMarker) {
+ val markerId = hex.take(20).hexToString()
+ if (markerId.isNumber()) {
+ installSmallMarkerDialog.bindingValue(markerId)
+ }
} else if (isFreeTask) {
val markerId = hex.take(20).hexToString()
if (markerId.isNumber()) {
@@ -847,6 +867,500 @@
var isReadMarker = false
var isInstallMarker = false
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ this.initDialogLayoutParams(1f)
+ setCancelable(false)
+ setCanceledOnTouchOutside(false)
+
+ //初始化数据
+ initDefaultData()
+
+ //返回
+ binding.titleInclude.leftBackView.setOnClickListener {
+ soundPool.autoPause()
+ dismiss()
+ }
+
+ binding.installButton.setOnClickListener {
+ val companyId = SaveKeyValues.getValue(LocaleConstant.USER_COMPANY_ID, "") as String
+
+ val itemPosition = binding.objectAttrInclude.objectTypeSpinner.selectedItemPosition
+ val objectTypeCode = itemPosition + 1
+
+ if (binding.markerAttrInclude.markerIdView.text.isNullOrBlank()) {
+ "标识器ID不能为空,请读标识器".show(context)
+ return@setOnClickListener
+ }
+
+ if (binding.objectAttrInclude.constructDateView.text.isNullOrBlank()) {
+ "请选择建设时间".show(context)
+ return@setOnClickListener
+ }
+
+ if (binding.markerAttrInclude.markerCountView.text.isNullOrBlank()) {
+ "请输入电子标签数量".show(context)
+ return@setOnClickListener
+ }
+
+ //保存默认值
+ "objectCodeView".setDefaultValue(binding.objectAttrInclude.objectCodeView)
+ "objectNameView".setDefaultValue(binding.objectAttrInclude.objectNameView)
+ "inlineNameView".setDefaultValue(binding.objectAttrInclude.inlineNameView)
+ "capacityView".setDefaultValue(binding.objectAttrInclude.capacityView)
+ "transformerSpecView".setDefaultValue(binding.objectAttrInclude.transformerSpecView)
+ "sLengthView".setDefaultValue(binding.objectAttrInclude.sLengthView)
+ "sWidthView".setDefaultValue(binding.objectAttrInclude.sWidthView)
+ "sHeightView".setDefaultValue(binding.objectAttrInclude.sHeightView)
+ "inlineCountView".setDefaultValue(binding.objectAttrInclude.inlineCountView)
+ "outlineCountView".setDefaultValue(binding.objectAttrInclude.outlineCountView)
+ "bottomDepthView".setDefaultValue(binding.objectAttrInclude.bottomDepthView)
+ "rowCountView".setDefaultValue(binding.objectAttrInclude.rowCountView)
+ "rowHoleCountView".setDefaultValue(binding.objectAttrInclude.rowHoleCountView)
+ "coverDepthView".setDefaultValue(binding.objectAttrInclude.coverDepthView)
+ "remainingChannelsView".setDefaultValue(binding.objectAttrInclude.remainingChannelsView)
+ "tieCableView1".setDefaultValue(binding.objectAttrInclude.tieCableView1)
+ "tieCableView2".setDefaultValue(binding.objectAttrInclude.tieCableView2)
+ "jointCountView".setDefaultValue(binding.objectAttrInclude.jointCountView)
+ "casingHoleCountView".setDefaultValue(binding.objectAttrInclude.casingHoleCountView)
+ "casingHoleDiameterView".setDefaultValue(binding.objectAttrInclude.casingHoleDiameterView)
+ "heightView".setDefaultValue(binding.objectAttrInclude.heightView)
+ "lineNumberView".setDefaultValue(binding.objectAttrInclude.lineNumberView)
+ "inspectionUnitView".setDefaultValue(binding.objectAttrInclude.inspectionUnitView)
+ "areaView".setDefaultValue(binding.objectAttrInclude.areaView)
+ "roadView".setDefaultValue(binding.objectAttrInclude.roadView)
+ "objectRemarkView1".setDefaultValue(binding.objectAttrInclude.objectRemarkView1)
+ "objectRemarkView2".setDefaultValue(binding.objectAttrInclude.objectRemarkView2)
+ "objectRemarkView3".setDefaultValue(binding.objectAttrInclude.objectRemarkView3)
+ "ownerView".setDefaultValue(binding.markerAttrInclude.ownerView)
+ "markerDepthView".setDefaultValue(binding.markerAttrInclude.markerDepthView)
+ "markerCountView".setDefaultValue(binding.markerAttrInclude.markerCountView)
+ "remarkView1".setDefaultValue(binding.markerAttrInclude.remarkView1)
+ "remarkView2".setDefaultValue(binding.markerAttrInclude.remarkView2)
+ "remarkView3".setDefaultValue(binding.markerAttrInclude.remarkView3)
+
+ val labelData = LabelDataClass(
+ companyId,
+ objectTypeCode.toString(),
+ binding.objectAttrInclude.objectCodeView.text.toString(),
+ binding.objectAttrInclude.objectNameView.text.toString(),
+ binding.objectAttrInclude.voltageLevelView.text.toString(),
+ binding.objectAttrInclude.objectModeSpinner.selectedItem.toString(),
+ "进线${binding.objectAttrInclude.inlineNameView.text}",
+ binding.objectAttrInclude.wellCoverMaterialSpinner.selectedItem.toString(),
+ "${binding.objectAttrInclude.capacityView.text}KVA",
+ binding.objectAttrInclude.transformerSpecView.text.toString(),
+ "${binding.objectAttrInclude.sLengthView.text}米长 x ${binding.objectAttrInclude.sWidthView.text}米宽 x ${binding.objectAttrInclude.sHeightView.text}米高",
+ binding.objectAttrInclude.inlineCountView.text.toString(),
+ binding.objectAttrInclude.outlineCountView.text.toString(),
+ binding.objectAttrInclude.cabinetTypeSpinner.selectedItem.toString(),
+ binding.objectAttrInclude.bottomDepthView.text.toString(),
+ "${binding.objectAttrInclude.rowCountView.text}排 x ${binding.objectAttrInclude.rowHoleCountView.text}孔",
+ "${binding.objectAttrInclude.coverDepthView.text}米",
+ binding.objectAttrInclude.crossPipeLineView.text.toString(),
+ binding.objectAttrInclude.remainingChannelsView.text.toString(),
+ binding.objectAttrInclude.tieCableView1.text.toString(),
+ binding.objectAttrInclude.tieCableView2.text.toString(),
+ binding.objectAttrInclude.jointCountView.text.toString(),
+ binding.objectAttrInclude.casingMaterialSpinner.selectedItem.toString(),
+ "${binding.objectAttrInclude.casingHoleCountView.text}孔,直径${binding.objectAttrInclude.casingHoleDiameterView.text}毫米",
+ "${binding.objectAttrInclude.heightView.text.toString()}米",
+ binding.objectAttrInclude.lineNumberView.text.toString(),
+ binding.objectAttrInclude.constructDateView.text.toString(),
+ binding.objectAttrInclude.inspectionUnitView.text.toString(),
+ binding.objectAttrInclude.areaView.text.toString(),
+ binding.objectAttrInclude.roadView.text.toString(),
+ binding.objectAttrInclude.objectRemarkView1.text.toString(),
+ binding.objectAttrInclude.objectRemarkView2.text.toString(),
+ binding.objectAttrInclude.objectRemarkView3.text.toString(),
+ binding.markerAttrInclude.markerIdView.text.toString(),
+ binding.markerAttrInclude.markerTypeSpinner.selectedItem.toString(),
+ binding.markerAttrInclude.ownerView.text.toString(),
+ binding.markerAttrInclude.markerDepthView.text.toString(),
+ binding.markerAttrInclude.installTimeView.text.toString(),
+ binding.markerAttrInclude.lngView.text.toString(),
+ binding.markerAttrInclude.latView.text.toString(),
+ binding.markerAttrInclude.markerCountView.text.toString(),
+ binding.markerAttrInclude.remarkView1.text.toString(),
+ binding.markerAttrInclude.remarkView2.text.toString(),
+ binding.markerAttrInclude.remarkView3.text.toString(),
+ realPaths
+ )
+
+ //先存本地
+ lifecycleScope.launch {
+ withContext(Dispatchers.IO) {
+ DataBaseManager.get.insertLabel(labelData)
+ }
+ }
+
+ //再存服务器
+ taskViewModel.installLabel(labelData)
+ }
+
+ //读标识器
+ binding.readMarkerButton.setOnClickListener {
+ LoadingDialogHub.show(this@MainActivity, "标识器读取中,请稍后...")
+ binding.readMarkerButton.isEnabled = false
+
+ isReadMarker = true
+
+ //调高串口电位
+ gpioManager.setGpioHigh("18")
+
+ soundPool.play(soundResourceId, 1f, 1f, 0, -1, 1f)
+
+ out.write('2'.code)
+ out.flush()
+ }
+ }
+
+ fun bindingValue(markerId: String) {
+ LoadingDialogHub.dismiss()
+ soundPool.autoPause()
+ binding.readMarkerButton.isEnabled = true
+
+ //降低串口电位
+ gpioManager.setGpioLow("18")
+
+ isReadMarker = false
+ binding.markerAttrInclude.markerIdView.text = markerId
+ }
+
+ private fun initDefaultData() {
+ binding.titleInclude.titleView.text = "安装新标识器"
+ binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(context))
+
+ imageAdapter = EditableImageAdapter(context, 3, 3)
+ binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter
+
+ //设置上次填写过的值
+ binding.objectAttrInclude.objectCodeView.setText("objectCodeView".getDefaultValue())
+ binding.objectAttrInclude.objectNameView.setText("objectNameView".getDefaultValue())
+ binding.objectAttrInclude.inlineNameView.setText("inlineNameView".getDefaultValue())
+ binding.objectAttrInclude.capacityView.setText("capacityView".getDefaultValue())
+ binding.objectAttrInclude.transformerSpecView.setText("transformerSpecView".getDefaultValue())
+ binding.objectAttrInclude.sLengthView.setText("sLengthView".getDefaultValue())
+ binding.objectAttrInclude.sWidthView.setText("sWidthView".getDefaultValue())
+ binding.objectAttrInclude.sHeightView.setText("sHeightView".getDefaultValue())
+ binding.objectAttrInclude.inlineCountView.setText("inlineCountView".getDefaultValue())
+ binding.objectAttrInclude.outlineCountView.setText("outlineCountView".getDefaultValue())
+ binding.objectAttrInclude.bottomDepthView.setText("bottomDepthView".getDefaultValue())
+ binding.objectAttrInclude.rowCountView.setText("rowCountView".getDefaultValue())
+ binding.objectAttrInclude.rowHoleCountView.setText("rowHoleCountView".getDefaultValue())
+ binding.objectAttrInclude.coverDepthView.setText("coverDepthView".getDefaultValue())
+ binding.objectAttrInclude.remainingChannelsView.setText("remainingChannelsView".getDefaultValue())
+ binding.objectAttrInclude.tieCableView1.setText("tieCableView1".getDefaultValue())
+ binding.objectAttrInclude.tieCableView2.setText("tieCableView2".getDefaultValue())
+ binding.objectAttrInclude.jointCountView.setText("jointCountView".getDefaultValue())
+ binding.objectAttrInclude.casingHoleCountView.setText("casingHoleCountView".getDefaultValue())
+ binding.objectAttrInclude.casingHoleDiameterView.setText("casingHoleDiameterView".getDefaultValue())
+ binding.objectAttrInclude.heightView.setText("heightView".getDefaultValue())
+ binding.objectAttrInclude.lineNumberView.setText("lineNumberView".getDefaultValue())
+ binding.objectAttrInclude.inspectionUnitView.setText("inspectionUnitView".getDefaultValue())
+ binding.objectAttrInclude.areaView.setText("areaView".getDefaultValue())
+ binding.objectAttrInclude.roadView.setText("roadView".getDefaultValue())
+ binding.objectAttrInclude.objectRemarkView1.setText("objectRemarkView1".getDefaultValue())
+ binding.objectAttrInclude.objectRemarkView2.setText("objectRemarkView2".getDefaultValue())
+ binding.objectAttrInclude.objectRemarkView3.setText("objectRemarkView3".getDefaultValue())
+ binding.markerAttrInclude.ownerView.setText("ownerView".getDefaultValue())
+ binding.markerAttrInclude.markerDepthView.setText("markerDepthView".getDefaultValue())
+ binding.markerAttrInclude.markerCountView.setText("markerCountView".getDefaultValue())
+ binding.markerAttrInclude.remarkView1.setText("remarkView1".getDefaultValue())
+ binding.markerAttrInclude.remarkView2.setText("remarkView2".getDefaultValue())
+ binding.markerAttrInclude.remarkView3.setText("remarkView3".getDefaultValue())
+
+ /**************************************************************************************/
+ binding.objectAttrInclude.objectTypeSpinner.show(
+ this@MainActivity, LocaleConstant.CONTENT_ARRAY, 0
+ )
+ binding.objectAttrInclude.objectTypeSpinner.onItemSelectedListener =
+ object : AdapterView.OnItemSelectedListener {
+ override fun onItemSelected(
+ parent: AdapterView<*>?, view: View?, position: Int, id: Long
+ ) {
+ when (position) {
+ 0 -> {
+ //选择电缆井
+ binding.objectAttrInclude.objectModeView.text = "类型:"
+ binding.objectAttrInclude.wellCoverMaterialView.text = "井盖材质:"
+ binding.objectAttrInclude.bottomDepthNameView.text = "井深:"
+ setLayoutVisibility(
+ View.VISIBLE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE
+ )
+ binding.objectAttrInclude.objectModeSpinner.show(
+ this@MainActivity, LocaleConstant.OBJECT_MODE_ARRAY, 0
+ )
+ binding.objectAttrInclude.wellCoverMaterialSpinner.show(
+ this@MainActivity, LocaleConstant.WELL_COVER_MATERIAL_ARRAY_1, 0
+ )
+ }
+
+ 1 -> {
+ //选择电缆通道
+ binding.objectAttrInclude.bottomDepthNameView.text = "底部深度:"
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE
+ )
+ }
+
+ 2 -> {
+ //选择配电房
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE
+ )
+ }
+
+ 3 -> {
+ //选择开关站
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE
+ )
+ }
+
+ 4 -> {
+ //选择台区
+ binding.objectAttrInclude.objectModeView.text = "变压器型号:"
+ setLayoutVisibility(
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE
+ )
+ binding.objectAttrInclude.objectModeSpinner.show(
+ this@MainActivity, arrayOf("变压器 KVA"), 0
+ )
+ }
+
+ 5 -> {
+ //选择杆塔
+ binding.objectAttrInclude.wellCoverMaterialView.text = "对象材质:"
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE
+ )
+ binding.objectAttrInclude.wellCoverMaterialSpinner.show(
+ this@MainActivity, LocaleConstant.WELL_COVER_MATERIAL_ARRAY_2, 0
+ )
+ }
+ }
+ }
+
+ override fun onNothingSelected(parent: AdapterView<*>?) {
+
+ }
+ }
+
+ binding.objectAttrInclude.cabinetTypeSpinner.show(
+ this@MainActivity, LocaleConstant.CABINET_TYPE_ARRAY, 0
+ )
+ binding.objectAttrInclude.casingMaterialSpinner.show(
+ this@MainActivity, LocaleConstant.PIPE_MATERIAL_ARRAY, 0
+ )
+ binding.markerAttrInclude.markerTypeSpinner.show(
+ this@MainActivity, LocaleConstant.MARKER_TYPE_ARRAY, 0
+ )
+
+ //电压等级-多选
+ binding.objectAttrInclude.voltageLevelView.setOnClickListener {
+ AlertDialog.Builder(context).setCancelable(false).setIcon(R.mipmap.ic_launcher)
+ .setTitle("请选择电压等级").setMultiChoiceItems(
+ LocaleConstant.VOLTAGE_LEVEL_ARRAY, LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY
+ ) { _, which, isChecked ->
+ LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[which] = isChecked
+ }.setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
+ .setPositiveButton("确定") { _, _ ->
+ val temp = java.util.ArrayList()
+ LocaleConstant.VOLTAGE_LEVEL_ARRAY.forEachIndexed { index, s ->
+ if (LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[index]) {
+ temp.add(s)
+ }
+ }
+
+ binding.objectAttrInclude.voltageLevelView.text = temp.reformat()
+ }.show()
+ }
+
+ //交叉管道类型-多选
+ binding.objectAttrInclude.crossPipeLineView.setOnClickListener {
+ AlertDialog.Builder(context).setCancelable(false).setIcon(R.mipmap.ic_launcher)
+ .setTitle("请选择交叉管道类型").setMultiChoiceItems(
+ LocaleConstant.CROSS_PIPE_ARRAY, LocaleConstant.CROSS_PIPE_STATE_ARRAY
+ ) { _, which, isChecked ->
+ LocaleConstant.CROSS_PIPE_STATE_ARRAY[which] = isChecked
+ }.setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
+ .setPositiveButton("确定") { _, _ ->
+ val temp = java.util.ArrayList()
+ LocaleConstant.CROSS_PIPE_ARRAY.forEachIndexed { index, s ->
+ if (LocaleConstant.CROSS_PIPE_STATE_ARRAY[index]) {
+ temp.add(s)
+ }
+ }
+
+ binding.objectAttrInclude.crossPipeLineView.text = temp.reformat()
+ }.show()
+ }
+
+ binding.objectAttrInclude.constructDateView.setOnClickListener {
+ val datePicker = DatePickerDialog(
+ context,
+ null,
+ calendar.get(Calendar.YEAR),
+ calendar.get(Calendar.MONTH),
+ calendar.get(Calendar.DAY_OF_MONTH)
+ )
+ datePicker.show()
+
+ datePicker.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener {
+ val year = datePicker.datePicker.year
+ val month = datePicker.datePicker.month + 1
+ val day = datePicker.datePicker.dayOfMonth
+ val selectedDate = String.format(
+ "%s-%s-%s", year, month.appendZero(), day.appendZero()
+ )
+
+ //当前时间
+ val current = System.currentTimeMillis().timestampToTime()
+ val today = "$selectedDate $current".dateToTimestamp()
+ if (Date(today).after(Date())) {
+ "建设年代不能早于当前日期".show(context)
+ } else {
+ datePicker.dismiss()
+ binding.objectAttrInclude.constructDateView.text = selectedDate
+ }
+ }
+ }
+
+ binding.markerAttrInclude.installTimeView.text =
+ System.currentTimeMillis().timestampToCompleteDate()
+ locationHub.getCurrentLocation(true, object : ILocationListener {
+ override fun onAMapLocationGet(location: AMapLocation?) {
+ if (location != null) {
+ binding.markerAttrInclude.lngView.text = location.longitude.toString()
+ binding.markerAttrInclude.latView.text = location.latitude.toString()
+ } else {
+ "当前位置信号差,无法获取定位".show(context)
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+ PictureSelector.create(this@MainActivity).openCamera(SelectMimeType.ofImage())
+ .forResult(object : OnResultCallbackListener {
+ override fun onResult(result: java.util.ArrayList?) {
+ if (result == null) {
+ "拍照失败,请重试".show(context)
+ return
+ }
+ analyticalSelectResult(result[0])
+ }
+
+ override fun onCancel() {
+
+ }
+ })
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(context)
+ } else {
+ context.navigatePageTo(position, realPaths)
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+
+ private fun analyticalSelectResult(result: LocalMedia) {
+ //压缩图片
+ result.realPath.compressImage(context, object : OnImageCompressListener {
+ override fun onSuccess(file: File) {
+ realPaths.add(file.absolutePath)
+ imageAdapter.setupImage(realPaths)
+ }
+
+ override fun onError(e: Throwable) {
+ e.printStackTrace()
+ }
+ })
+ }
+
+ //根据选择类型控制界面某些区域显隐
+ private fun setLayoutVisibility(vararg args: Int) {
+ binding.objectAttrInclude.objectModeLayout.visibility = args[0]
+ binding.objectAttrInclude.inlineNameLayout.visibility = args[1]
+ binding.objectAttrInclude.wellCoverMaterialLayout.visibility = args[2]
+ binding.objectAttrInclude.capacityLayout.visibility = args[3]
+ binding.objectAttrInclude.sizeLayout.visibility = args[4]
+ binding.objectAttrInclude.inlineCountLayout.visibility = args[5]
+ binding.objectAttrInclude.outlineCountLayout.visibility = args[6]
+ binding.objectAttrInclude.wellDepthLayout.visibility = args[7]
+ binding.objectAttrInclude.pipeLineLayout.visibility = args[8]
+ binding.objectAttrInclude.jointCountLayout.visibility = args[9]
+ binding.objectAttrInclude.heightLayout.visibility = args[10]
+ }
}
/**安装小标签对话框******************************************************************************/
@@ -859,6 +1373,29 @@
var isReadMarker = false
var isInstallMarker = false
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ this.initDialogLayoutParams(1f)
+ setCancelable(false)
+ setCanceledOnTouchOutside(false)
+
+ //返回
+ binding.titleInclude.leftBackView.setOnClickListener {
+ dismiss()
+ }
+ }
+
+ fun bindingValue(markerId: String) {
+ LoadingDialogHub.dismiss()
+ soundPool.autoPause()
+ binding.readMarkerButton.isEnabled = true
+
+ //降低串口电位
+ gpioManager.setGpioLow("18")
+
+ isReadMarker = false
+ }
}
/**探测标识器对话框******************************************************************************/
@@ -976,9 +1513,12 @@
degreeCache["lastDegree"]?.apply {
val animation = RotateAnimation(
- this, degree,
- Animation.RELATIVE_TO_SELF, 0.5f,
- Animation.RELATIVE_TO_SELF, 0.5f
+ this,
+ degree,
+ Animation.RELATIVE_TO_SELF,
+ 0.5f,
+ Animation.RELATIVE_TO_SELF,
+ 0.5f
)
animation.duration = 0
animation.fillAfter = true
diff --git a/app/src/main/java/com/casic/electric/detector/widgets/QueryMarkerDialog.kt b/app/src/main/java/com/casic/electric/detector/widgets/QueryMarkerDialog.kt
index 0d9f58b..169147b 100644
--- a/app/src/main/java/com/casic/electric/detector/widgets/QueryMarkerDialog.kt
+++ b/app/src/main/java/com/casic/electric/detector/widgets/QueryMarkerDialog.kt
@@ -10,10 +10,10 @@
import android.widget.Spinner
import com.casic.electric.detector.R
import com.casic.electric.detector.databinding.DialogQueryMarkerBinding
-import com.casic.electric.detector.extensions.appendZero
import com.casic.electric.detector.utils.DataBaseManager
import com.casic.electric.detector.utils.LocaleConstant
import com.casic.electric.detector.utils.QueryMode
+import com.pengxh.kt.lite.extensions.appendZero
import com.pengxh.kt.lite.extensions.binding
import com.pengxh.kt.lite.extensions.initDialogLayoutParams
import kotlinx.coroutines.CoroutineScope
@@ -82,7 +82,6 @@
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
this.initDialogLayoutParams(0.8f)
- setContentView(R.layout.dialog_query_marker)
setCanceledOnTouchOutside(false)
initView()
}
diff --git a/app/src/main/res/layout/activity_install_label.xml b/app/src/main/res/layout/activity_install_label.xml
deleted file mode 100644
index eddafd4..0000000
--- a/app/src/main/res/layout/activity_install_label.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 14e9b51..92d80c5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -70,7 +70,6 @@
android:name=".view.ElectricMarkerDetailActivity"
android:theme="@style/Theme.ActivityDialogStyle" />
-
diff --git a/app/src/main/java/com/casic/electric/detector/view/InstallLabelActivity.kt b/app/src/main/java/com/casic/electric/detector/view/InstallLabelActivity.kt
deleted file mode 100644
index 6510104..0000000
--- a/app/src/main/java/com/casic/electric/detector/view/InstallLabelActivity.kt
+++ /dev/null
@@ -1,601 +0,0 @@
-package com.casic.electric.detector.view
-
-import android.annotation.SuppressLint
-import android.app.AlertDialog
-import android.app.DatePickerDialog
-import android.content.Context
-import android.content.DialogInterface
-import android.content.Intent
-import android.media.AudioAttributes
-import android.media.SoundPool
-import android.os.Bundle
-import android.os.Handler
-import android.os.Message
-import android.provider.Settings
-import android.util.Log
-import android.view.KeyEvent
-import android.view.View
-import android.view.WindowManager
-import android.widget.AdapterView
-import androidx.lifecycle.ViewModelProvider
-import androidx.lifecycle.lifecycleScope
-import com.amap.api.location.AMapLocation
-import com.casic.electric.detector.R
-import com.casic.electric.detector.adapter.EditableImageAdapter
-import com.casic.electric.detector.base.SerialPortActivity
-import com.casic.electric.detector.callback.ILocationListener
-import com.casic.electric.detector.callback.OnImageCompressListener
-import com.casic.electric.detector.databinding.ActivityInstallLabelBinding
-import com.casic.electric.detector.extensions.*
-import com.casic.electric.detector.utils.*
-import com.casic.electric.detector.vm.TaskViewModel
-import com.luck.picture.lib.basic.PictureSelector
-import com.luck.picture.lib.config.SelectMimeType
-import com.luck.picture.lib.entity.LocalMedia
-import com.luck.picture.lib.interfaces.OnResultCallbackListener
-import com.pengxh.kt.lite.extensions.*
-import com.pengxh.kt.lite.utils.LoadState
-import com.pengxh.kt.lite.utils.LoadingDialogHub
-import com.pengxh.kt.lite.utils.SaveKeyValues
-import com.pengxh.kt.lite.utils.WeakReferenceHandler
-import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.withContext
-import java.io.File
-import java.io.IOException
-import java.util.*
-
-@SuppressLint("SetTextI18n")
-class InstallLabelActivity : SerialPortActivity(), Handler.Callback {
-
- private val kTag = "LabelActivity"
- private val context: Context = this@InstallLabelActivity
- private val gpioManager by lazy { GpioManager() }
- private val calendar by lazy { Calendar.getInstance() }
- private val locationHub by lazy { LocationHub(this) }
- private val realPaths = ArrayList() //真实图片路径
- private var soundResId = 0
- private lateinit var weakReferenceHandler: WeakReferenceHandler
- private lateinit var soundPool: SoundPool
- private lateinit var imageAdapter: EditableImageAdapter
- private lateinit var taskViewModel: TaskViewModel
-
- override fun initViewBinding(): ActivityInstallLabelBinding {
- return ActivityInstallLabelBinding.inflate(layoutInflater)
- }
-
- override fun setupTopBarLayout() {
- binding.titleInclude.titleView.text = "安装新标识器"
- binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(this))
- }
-
- override fun initOnCreate(savedInstanceState: Bundle?) {
- window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN or WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)
-
- weakReferenceHandler = WeakReferenceHandler(this)
-
- val audioAttributes = AudioAttributes.Builder()
- .setUsage(AudioAttributes.USAGE_MEDIA)
- .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
- .build()
- soundPool = SoundPool.Builder()
- .setMaxStreams(16)
- .setAudioAttributes(audioAttributes)
- .build()
-
- //设置上次填写过的值
- binding.objectAttrInclude.objectCodeView.setText("objectCodeView".getDefaultValue())
- binding.objectAttrInclude.objectNameView.setText("objectNameView".getDefaultValue())
- binding.objectAttrInclude.inlineNameView.setText("inlineNameView".getDefaultValue())
- binding.objectAttrInclude.capacityView.setText("capacityView".getDefaultValue())
- binding.objectAttrInclude.transformerSpecView.setText("transformerSpecView".getDefaultValue())
- binding.objectAttrInclude.sLengthView.setText("sLengthView".getDefaultValue())
- binding.objectAttrInclude.sWidthView.setText("sWidthView".getDefaultValue())
- binding.objectAttrInclude.sHeightView.setText("sHeightView".getDefaultValue())
- binding.objectAttrInclude.inlineCountView.setText("inlineCountView".getDefaultValue())
- binding.objectAttrInclude.outlineCountView.setText("outlineCountView".getDefaultValue())
- binding.objectAttrInclude.bottomDepthView.setText("bottomDepthView".getDefaultValue())
- binding.objectAttrInclude.rowCountView.setText("rowCountView".getDefaultValue())
- binding.objectAttrInclude.rowHoleCountView.setText("rowHoleCountView".getDefaultValue())
- binding.objectAttrInclude.coverDepthView.setText("coverDepthView".getDefaultValue())
- binding.objectAttrInclude.remainingChannelsView.setText("remainingChannelsView".getDefaultValue())
- binding.objectAttrInclude.tieCableView1.setText("tieCableView1".getDefaultValue())
- binding.objectAttrInclude.tieCableView2.setText("tieCableView2".getDefaultValue())
- binding.objectAttrInclude.jointCountView.setText("jointCountView".getDefaultValue())
- binding.objectAttrInclude.casingHoleCountView.setText("casingHoleCountView".getDefaultValue())
- binding.objectAttrInclude.casingHoleDiameterView.setText("casingHoleDiameterView".getDefaultValue())
- binding.objectAttrInclude.heightView.setText("heightView".getDefaultValue())
- binding.objectAttrInclude.lineNumberView.setText("lineNumberView".getDefaultValue())
- binding.objectAttrInclude.inspectionUnitView.setText("inspectionUnitView".getDefaultValue())
- binding.objectAttrInclude.areaView.setText("areaView".getDefaultValue())
- binding.objectAttrInclude.roadView.setText("roadView".getDefaultValue())
- binding.objectAttrInclude.objectRemarkView1.setText("objectRemarkView1".getDefaultValue())
- binding.objectAttrInclude.objectRemarkView2.setText("objectRemarkView2".getDefaultValue())
- binding.objectAttrInclude.objectRemarkView3.setText("objectRemarkView3".getDefaultValue())
- binding.markerAttrInclude.ownerView.setText("ownerView".getDefaultValue())
- binding.markerAttrInclude.markerDepthView.setText("markerDepthView".getDefaultValue())
- binding.markerAttrInclude.markerCountView.setText("markerCountView".getDefaultValue())
- binding.markerAttrInclude.remarkView1.setText("remarkView1".getDefaultValue())
- binding.markerAttrInclude.remarkView2.setText("remarkView2".getDefaultValue())
- binding.markerAttrInclude.remarkView3.setText("remarkView3".getDefaultValue())
-
- //初始化图片九宫格
- imageAdapter = EditableImageAdapter(this, 3, 3)
- binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter
-
- taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
- }
-
- override fun observeRequestState() {
- taskViewModel.loadState.observe(this) {
- when (it) {
- LoadState.Loading -> LoadingDialogHub.show(this, "标识器安装中,请稍后...")
- LoadState.Success -> {
- LoadingDialogHub.dismiss()
- finish()
- }
-
- else -> LoadingDialogHub.dismiss()
- }
- }
- }
-
- override fun initEvent() {
- binding.titleInclude.leftBackView.setOnClickListener { finish() }
-
- /**************************************************************************************/
- binding.objectAttrInclude.objectTypeSpinner.show(this, LocaleConstant.CONTENT_ARRAY, 0)
- binding.objectAttrInclude.objectTypeSpinner.onItemSelectedListener =
- object : AdapterView.OnItemSelectedListener {
- override fun onItemSelected(
- parent: AdapterView<*>?, view: View?, position: Int, id: Long
- ) {
- when (position) {
- 0 -> {
- //选择电缆井
- binding.objectAttrInclude.objectModeView.text = "类型:"
- binding.objectAttrInclude.wellCoverMaterialView.text = "井盖材质:"
- binding.objectAttrInclude.bottomDepthNameView.text = "井深:"
- setLayoutVisibility(
- View.VISIBLE, View.GONE, View.VISIBLE, View.GONE, View.VISIBLE,
- View.GONE, View.GONE, View.VISIBLE, View.GONE, View.VISIBLE,
- View.GONE
- )
- binding.objectAttrInclude.objectModeSpinner.show(
- this@InstallLabelActivity, LocaleConstant.OBJECT_MODE_ARRAY, 0
- )
- binding.objectAttrInclude.wellCoverMaterialSpinner.show(
- this@InstallLabelActivity,
- LocaleConstant.WELL_COVER_MATERIAL_ARRAY_1,
- 0
- )
- }
-
- 1 -> {
- //选择电缆通道
- binding.objectAttrInclude.bottomDepthNameView.text = "底部深度:"
- setLayoutVisibility(
- View.GONE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.GONE, View.GONE, View.VISIBLE, View.VISIBLE, View.VISIBLE,
- View.GONE
- )
- }
-
- 2 -> {
- //选择配电房
- setLayoutVisibility(
- View.GONE, View.GONE, View.GONE, View.VISIBLE, View.VISIBLE,
- View.VISIBLE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.GONE
- )
- }
-
- 3 -> {
- //选择开关站
- setLayoutVisibility(
- View.GONE, View.GONE, View.GONE, View.GONE, View.VISIBLE,
- View.VISIBLE, View.VISIBLE, View.GONE, View.GONE, View.GONE,
- View.GONE
- )
- }
-
- 4 -> {
- //选择台区
- binding.objectAttrInclude.objectModeView.text = "变压器型号:"
- setLayoutVisibility(
- View.VISIBLE, View.VISIBLE, View.GONE, View.GONE, View.GONE,
- View.GONE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.GONE
- )
- binding.objectAttrInclude.objectModeSpinner.show(
- this@InstallLabelActivity, arrayOf("变压器 KVA"), 0
- )
- }
-
- 5 -> {
- //选择杆塔
- binding.objectAttrInclude.wellCoverMaterialView.text = "对象材质:"
- setLayoutVisibility(
- View.GONE, View.GONE, View.VISIBLE, View.GONE, View.GONE,
- View.GONE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.VISIBLE
- )
- binding.objectAttrInclude.wellCoverMaterialSpinner.show(
- this@InstallLabelActivity,
- LocaleConstant.WELL_COVER_MATERIAL_ARRAY_2,
- 0
- )
- }
- }
- }
-
- override fun onNothingSelected(parent: AdapterView<*>?) {
-
- }
- }
-
- binding.objectAttrInclude.cabinetTypeSpinner.show(
- this,
- LocaleConstant.CABINET_TYPE_ARRAY,
- 0
- )
- binding.objectAttrInclude.casingMaterialSpinner.show(
- this,
- LocaleConstant.PIPE_MATERIAL_ARRAY,
- 0
- )
- binding.markerAttrInclude.markerTypeSpinner.show(this, LocaleConstant.MARKER_TYPE_ARRAY, 0)
-
- //电压等级-多选
- binding.objectAttrInclude.voltageLevelView.setOnClickListener {
- AlertDialog.Builder(context)
- .setCancelable(false)
- .setIcon(R.mipmap.ic_launcher)
- .setTitle("请选择电压等级")
- .setMultiChoiceItems(
- LocaleConstant.VOLTAGE_LEVEL_ARRAY, LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY
- ) { _, which, isChecked ->
- LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[which] = isChecked
- }
- .setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
- .setPositiveButton("确定") { _, _ ->
- val temp = ArrayList()
- LocaleConstant.VOLTAGE_LEVEL_ARRAY.forEachIndexed { index, s ->
- if (LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[index]) {
- temp.add(s)
- }
- }
-
- binding.objectAttrInclude.voltageLevelView.text = temp.reformat()
- }.show()
- }
-
- //交叉管道类型-多选
- binding.objectAttrInclude.crossPipeLineView.setOnClickListener {
- AlertDialog.Builder(context)
- .setCancelable(false)
- .setIcon(R.mipmap.ic_launcher)
- .setTitle("请选择交叉管道类型")
- .setMultiChoiceItems(
- LocaleConstant.CROSS_PIPE_ARRAY, LocaleConstant.CROSS_PIPE_STATE_ARRAY
- ) { _, which, isChecked ->
- LocaleConstant.CROSS_PIPE_STATE_ARRAY[which] = isChecked
- }
- .setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
- .setPositiveButton("确定") { _, _ ->
- val temp = ArrayList()
- LocaleConstant.CROSS_PIPE_ARRAY.forEachIndexed { index, s ->
- if (LocaleConstant.CROSS_PIPE_STATE_ARRAY[index]) {
- temp.add(s)
- }
- }
-
- binding.objectAttrInclude.crossPipeLineView.text = temp.reformat()
- }.show()
- }
-
- binding.objectAttrInclude.constructDateView.setOnClickListener {
- val datePicker = DatePickerDialog(
- this,
- null,
- calendar.get(Calendar.YEAR),
- calendar.get(Calendar.MONTH),
- calendar.get(Calendar.DAY_OF_MONTH)
- )
- datePicker.show()
-
- datePicker.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener {
- val year = datePicker.datePicker.year
- val month = datePicker.datePicker.month + 1
- val day = datePicker.datePicker.dayOfMonth
- val selectedDate = String.format(
- "%s-%s-%s", year, month.appendZero(), day.appendZero()
- )
-
- //当前时间
- val current = System.currentTimeMillis().timestampToTime()
- val today = "$selectedDate $current".dateToTimestamp()
- if (Date(today).after(Date())) {
- "建设年代不能早于当前日期".show(context)
- } else {
- datePicker.dismiss()
- binding.objectAttrInclude.constructDateView.text = selectedDate
- }
- }
- }
-
- binding.markerAttrInclude.installTimeView.text =
- System.currentTimeMillis().timestampToCompleteDate()
- locationHub.getCurrentLocation(true, object : ILocationListener {
- override fun onAMapLocationGet(location: AMapLocation?) {
- if (location != null) {
- binding.markerAttrInclude.lngView.text = location.longitude.toString()
- binding.markerAttrInclude.latView.text = location.latitude.toString()
- } else {
- "当前位置信号差,无法获取定位".show(context)
- }
- }
- })
-
- imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
- override fun onAddImageClick() {
- PictureSelector.create(this@InstallLabelActivity)
- .openCamera(SelectMimeType.ofImage())
- .forResult(object : OnResultCallbackListener {
- override fun onResult(result: ArrayList?) {
- if (result == null) {
- "拍照失败,请重试".show(context)
- return
- }
- analyticalSelectResult(result[0])
- }
-
- override fun onCancel() {
-
- }
- })
- }
-
- override fun onItemClick(position: Int) {
- if (realPaths[position].isEmpty()) {
- "图片加载失败,无法查看大图".show(context)
- } else {
- context.navigatePageTo(position, realPaths)
- }
- }
-
- override fun onItemLongClick(view: View?, position: Int) {
- imageAdapter.deleteImage(position)
- }
- })
-
- /**************************************************************************************/
- binding.installButton.setOnClickListener {
- if (isNetworkConnected()) {
- val companyId = SaveKeyValues.getValue(LocaleConstant.USER_COMPANY_ID, "") as String
-
- val itemPosition = binding.objectAttrInclude.objectTypeSpinner.selectedItemPosition
- val objectTypeCode = itemPosition + 1
-
- if (binding.markerAttrInclude.markerIdView.text.isNullOrBlank()) {
- "标识器ID不能为空,请读标识器".show(this)
- return@setOnClickListener
- }
-
- if (binding.objectAttrInclude.constructDateView.text.isNullOrBlank()) {
- "请选择建设时间".show(this)
- return@setOnClickListener
- }
-
- if (binding.markerAttrInclude.markerCountView.text.isNullOrBlank()) {
- "请输入电子标签数量".show(this)
- return@setOnClickListener
- }
-
- //保存默认值
- "objectCodeView".setDefaultValue(binding.objectAttrInclude.objectCodeView)
- "objectNameView".setDefaultValue(binding.objectAttrInclude.objectNameView)
- "inlineNameView".setDefaultValue(binding.objectAttrInclude.inlineNameView)
- "capacityView".setDefaultValue(binding.objectAttrInclude.capacityView)
- "transformerSpecView".setDefaultValue(binding.objectAttrInclude.transformerSpecView)
- "sLengthView".setDefaultValue(binding.objectAttrInclude.sLengthView)
- "sWidthView".setDefaultValue(binding.objectAttrInclude.sWidthView)
- "sHeightView".setDefaultValue(binding.objectAttrInclude.sHeightView)
- "inlineCountView".setDefaultValue(binding.objectAttrInclude.inlineCountView)
- "outlineCountView".setDefaultValue(binding.objectAttrInclude.outlineCountView)
- "bottomDepthView".setDefaultValue(binding.objectAttrInclude.bottomDepthView)
- "rowCountView".setDefaultValue(binding.objectAttrInclude.rowCountView)
- "rowHoleCountView".setDefaultValue(binding.objectAttrInclude.rowHoleCountView)
- "coverDepthView".setDefaultValue(binding.objectAttrInclude.coverDepthView)
- "remainingChannelsView".setDefaultValue(binding.objectAttrInclude.remainingChannelsView)
- "tieCableView1".setDefaultValue(binding.objectAttrInclude.tieCableView1)
- "tieCableView2".setDefaultValue(binding.objectAttrInclude.tieCableView2)
- "jointCountView".setDefaultValue(binding.objectAttrInclude.jointCountView)
- "casingHoleCountView".setDefaultValue(binding.objectAttrInclude.casingHoleCountView)
- "casingHoleDiameterView".setDefaultValue(binding.objectAttrInclude.casingHoleDiameterView)
- "heightView".setDefaultValue(binding.objectAttrInclude.heightView)
- "lineNumberView".setDefaultValue(binding.objectAttrInclude.lineNumberView)
- "inspectionUnitView".setDefaultValue(binding.objectAttrInclude.inspectionUnitView)
- "areaView".setDefaultValue(binding.objectAttrInclude.areaView)
- "roadView".setDefaultValue(binding.objectAttrInclude.roadView)
- "objectRemarkView1".setDefaultValue(binding.objectAttrInclude.objectRemarkView1)
- "objectRemarkView2".setDefaultValue(binding.objectAttrInclude.objectRemarkView2)
- "objectRemarkView3".setDefaultValue(binding.objectAttrInclude.objectRemarkView3)
- "ownerView".setDefaultValue(binding.markerAttrInclude.ownerView)
- "markerDepthView".setDefaultValue(binding.markerAttrInclude.markerDepthView)
- "markerCountView".setDefaultValue(binding.markerAttrInclude.markerCountView)
- "remarkView1".setDefaultValue(binding.markerAttrInclude.remarkView1)
- "remarkView2".setDefaultValue(binding.markerAttrInclude.remarkView2)
- "remarkView3".setDefaultValue(binding.markerAttrInclude.remarkView3)
-
- val labelData = LabelDataClass(
- companyId,
- objectTypeCode.toString(),
- binding.objectAttrInclude.objectCodeView.text.toString(),
- binding.objectAttrInclude.objectNameView.text.toString(),
- binding.objectAttrInclude.voltageLevelView.text.toString(),
- binding.objectAttrInclude.objectModeSpinner.selectedItem.toString(),
- "进线${binding.objectAttrInclude.inlineNameView.text}",
- binding.objectAttrInclude.wellCoverMaterialSpinner.selectedItem.toString(),
- "${binding.objectAttrInclude.capacityView.text}KVA",
- binding.objectAttrInclude.transformerSpecView.text.toString(),
- "${binding.objectAttrInclude.sLengthView.text}米长 x ${binding.objectAttrInclude.sWidthView.text}米宽 x ${binding.objectAttrInclude.sHeightView.text}米高",
- binding.objectAttrInclude.inlineCountView.text.toString(),
- binding.objectAttrInclude.outlineCountView.text.toString(),
- binding.objectAttrInclude.cabinetTypeSpinner.selectedItem.toString(),
- binding.objectAttrInclude.bottomDepthView.text.toString(),
- "${binding.objectAttrInclude.rowCountView.text}排 x ${binding.objectAttrInclude.rowHoleCountView.text}孔",
- "${binding.objectAttrInclude.coverDepthView.text}米",
- binding.objectAttrInclude.crossPipeLineView.text.toString(),
- binding.objectAttrInclude.remainingChannelsView.text.toString(),
- binding.objectAttrInclude.tieCableView1.text.toString(),
- binding.objectAttrInclude.tieCableView2.text.toString(),
- binding.objectAttrInclude.jointCountView.text.toString(),
- binding.objectAttrInclude.casingMaterialSpinner.selectedItem.toString(),
- "${binding.objectAttrInclude.casingHoleCountView.text}孔,直径${binding.objectAttrInclude.casingHoleDiameterView.text}毫米",
- "${binding.objectAttrInclude.heightView.text.toString()}米",
- binding.objectAttrInclude.lineNumberView.text.toString(),
- binding.objectAttrInclude.constructDateView.text.toString(),
- binding.objectAttrInclude.inspectionUnitView.text.toString(),
- binding.objectAttrInclude.areaView.text.toString(),
- binding.objectAttrInclude.roadView.text.toString(),
- binding.objectAttrInclude.objectRemarkView1.text.toString(),
- binding.objectAttrInclude.objectRemarkView2.text.toString(),
- binding.objectAttrInclude.objectRemarkView3.text.toString(),
- binding.markerAttrInclude.markerIdView.text.toString(),
- binding.markerAttrInclude.markerTypeSpinner.selectedItem.toString(),
- binding.markerAttrInclude.ownerView.text.toString(),
- binding.markerAttrInclude.markerDepthView.text.toString(),
- binding.markerAttrInclude.installTimeView.text.toString(),
- binding.markerAttrInclude.lngView.text.toString(),
- binding.markerAttrInclude.latView.text.toString(),
- binding.markerAttrInclude.markerCountView.text.toString(),
- binding.markerAttrInclude.remarkView1.text.toString(),
- binding.markerAttrInclude.remarkView2.text.toString(),
- binding.markerAttrInclude.remarkView3.text.toString(),
- realPaths
- )
-
- //先存本地
- lifecycleScope.launch {
- withContext(Dispatchers.IO) {
- DataBaseManager.get.insertLabel(labelData)
- }
- }
-
- //再存服务器
- taskViewModel.installLabel(labelData)
- } else {
- NoNetworkDialog.Builder()
- .setContext(context)
- .setOnDialogButtonClickListener(object :
- NoNetworkDialog.OnDialogButtonClickListener {
- override fun onButtonClick() {
- val intent = Intent(Settings.ACTION_SETTINGS)
- startActivity(intent)
- }
- }).build().show()
- }
- }
-
- binding.readLabelButton.setOnClickListener {
- gpioManager.setGpioHigh("18")
-
- LoadingDialogHub.show(this, "标识器读取中,请稍后...")
-
- soundResId = soundPool.load(this, R.raw.ring3, 1)
- soundPool.setOnLoadCompleteListener { soundPool, _, _ ->
- soundPool.play(soundResId, 1f, 1f, 0, -1, 1f)
- }
-
- // 1000ms后发送读标识器或搜索信号
- weakReferenceHandler.postDelayed({
- try {
- // 发送读标识器或搜索信号
- out.write("2".toByteArray())
- out.flush()
- } catch (e: IOException) {
- e.printStackTrace()
- }
- }, 1000)
- }
- }
-
- override fun onDataReceived(buffer: ByteArray) {
- Log.d(kTag, "onDataReceived => " + buffer.contentToString())
- if (buffer != null) {
- val message = weakReferenceHandler.obtainMessage()
- message.what = 2023081701
- message.obj = buffer
- weakReferenceHandler.sendMessage(message)
- }
- }
-
- override fun handleMessage(msg: Message): Boolean {
- if (msg.what == 2023081701) {
- soundPool.release()
-
- val buffer = msg.obj as ByteArray
- val hex = buffer.toHex()
-
- if (hex.length >= 20) {
- val markerId = hex.substring(0, 20).hexToString()
-
- gpioManager.setGpioLow("18")
-
- //查本地库
- val result = DataBaseManager.get.queryLabelById(markerId)
- if (result.isEmpty()) {
- binding.markerAttrInclude.markerIdView.text = markerId
- } else {
- "此标识器已安装,请更换标识器!".show(this)
- }
- LoadingDialogHub.dismiss()
- }
- }
- return true
- }
-
- private fun analyticalSelectResult(result: LocalMedia) {
- //压缩图片
- result.realPath.compressImage(this, object : OnImageCompressListener {
- override fun onSuccess(file: File) {
- realPaths.add(file.absolutePath)
- imageAdapter.setupImage(realPaths)
- }
-
- override fun onError(e: Throwable) {
- e.printStackTrace()
- }
- })
- }
-
- //根据选择类型控制界面某些区域显隐
- private fun setLayoutVisibility(vararg args: Int) {
- binding.objectAttrInclude.objectModeLayout.visibility = args[0]
- binding.objectAttrInclude.inlineNameLayout.visibility = args[1]
- binding.objectAttrInclude.wellCoverMaterialLayout.visibility = args[2]
- binding.objectAttrInclude.capacityLayout.visibility = args[3]
- binding.objectAttrInclude.sizeLayout.visibility = args[4]
- binding.objectAttrInclude.inlineCountLayout.visibility = args[5]
- binding.objectAttrInclude.outlineCountLayout.visibility = args[6]
- binding.objectAttrInclude.wellDepthLayout.visibility = args[7]
- binding.objectAttrInclude.pipeLineLayout.visibility = args[8]
- binding.objectAttrInclude.jointCountLayout.visibility = args[9]
- binding.objectAttrInclude.heightLayout.visibility = args[10]
- }
-
- override fun onDestroy() {
- super.onDestroy()
- soundPool.release()
- gpioManager.setGpioLow("18")
- }
-
- override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- soundPool.release()
- }
- return super.onKeyDown(keyCode, event)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt
index a0a4aac..40a5f3d 100644
--- a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt
@@ -2,8 +2,10 @@
import android.annotation.SuppressLint
import android.app.AlertDialog
+import android.app.DatePickerDialog
import android.app.Dialog
import android.content.Context
+import android.content.DialogInterface
import android.graphics.Color
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
@@ -16,6 +18,7 @@
import android.view.View
import android.view.animation.Animation
import android.view.animation.RotateAnimation
+import android.widget.AdapterView
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import com.amap.api.location.AMapLocation
@@ -33,6 +36,7 @@
import com.casic.electric.detector.bean.SmallLabelBean
import com.casic.electric.detector.bean.TaskBean
import com.casic.electric.detector.callback.ILocationListener
+import com.casic.electric.detector.callback.OnImageCompressListener
import com.casic.electric.detector.cluster.ClusterItem
import com.casic.electric.detector.cluster.ClusterOverlay
import com.casic.electric.detector.cluster.RegionItem
@@ -41,14 +45,20 @@
import com.casic.electric.detector.databinding.DialogInstallSmallMarkerBinding
import com.casic.electric.detector.databinding.DialogSearchMarkerBinding
import com.casic.electric.detector.extensions.appendExcelDownloadUrl
+import com.casic.electric.detector.extensions.compressImage
import com.casic.electric.detector.extensions.drawCircle
+import com.casic.electric.detector.extensions.getDefaultValue
import com.casic.electric.detector.extensions.hexToString
import com.casic.electric.detector.extensions.initImmersionBar
import com.casic.electric.detector.extensions.isNumber
+import com.casic.electric.detector.extensions.reformat
+import com.casic.electric.detector.extensions.setDefaultValue
+import com.casic.electric.detector.extensions.show
import com.casic.electric.detector.extensions.toHex
import com.casic.electric.detector.utils.DataBaseManager
import com.casic.electric.detector.utils.ExcelHub
import com.casic.electric.detector.utils.GpioManager
+import com.casic.electric.detector.utils.LabelDataClass
import com.casic.electric.detector.utils.LocaleConstant
import com.casic.electric.detector.utils.LocationHub
import com.casic.electric.detector.utils.RouteOnMap
@@ -56,13 +66,22 @@
import com.casic.electric.detector.widgets.QueryMarkerDialog
import com.casic.electric.detector.widgets.SamplePopupWindow
import com.google.gson.Gson
+import com.luck.picture.lib.basic.PictureSelector
+import com.luck.picture.lib.config.SelectMimeType
+import com.luck.picture.lib.entity.LocalMedia
+import com.luck.picture.lib.interfaces.OnResultCallbackListener
+import com.pengxh.kt.lite.extensions.appendZero
import com.pengxh.kt.lite.extensions.binding
+import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.createDownloadFileDir
+import com.pengxh.kt.lite.extensions.dateToTimestamp
import com.pengxh.kt.lite.extensions.dp2px
import com.pengxh.kt.lite.extensions.initDialogLayoutParams
import com.pengxh.kt.lite.extensions.isNetworkConnected
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.extensions.timestampToCompleteDate
+import com.pengxh.kt.lite.extensions.timestampToTime
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.FileDownloadManager
import com.pengxh.kt.lite.utils.LoadState
@@ -78,6 +97,7 @@
import java.io.File
import java.text.DecimalFormat
import java.util.Calendar
+import java.util.Date
import java.util.Timer
import java.util.TimerTask
@@ -456,16 +476,16 @@
Log.d(kTag, "$kTag => $hex")
if (searchDialog.isDetectMarker) {
searchDialog.bindingValue(hex)
-// } else if (installMarkerDialog.isReadMarker) {
-// val markerId = hex.take(20).hexToString()
-// if (markerId.isNumber()) {
-// installMarkerDialog.bindingValue(markerId)
-// }
-// } else if (installSmallMarkerDialog.isReadMarker) {
-// val markerId = hex.take(20).hexToString()
-// if (markerId.isNumber()) {
-// installSmallMarkerDialog.bindingValue(markerId)
-// }
+ } else if (installMarkerDialog.isReadMarker) {
+ val markerId = hex.take(20).hexToString()
+ if (markerId.isNumber()) {
+ installMarkerDialog.bindingValue(markerId)
+ }
+ } else if (installSmallMarkerDialog.isReadMarker) {
+ val markerId = hex.take(20).hexToString()
+ if (markerId.isNumber()) {
+ installSmallMarkerDialog.bindingValue(markerId)
+ }
} else if (isFreeTask) {
val markerId = hex.take(20).hexToString()
if (markerId.isNumber()) {
@@ -847,6 +867,500 @@
var isReadMarker = false
var isInstallMarker = false
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ this.initDialogLayoutParams(1f)
+ setCancelable(false)
+ setCanceledOnTouchOutside(false)
+
+ //初始化数据
+ initDefaultData()
+
+ //返回
+ binding.titleInclude.leftBackView.setOnClickListener {
+ soundPool.autoPause()
+ dismiss()
+ }
+
+ binding.installButton.setOnClickListener {
+ val companyId = SaveKeyValues.getValue(LocaleConstant.USER_COMPANY_ID, "") as String
+
+ val itemPosition = binding.objectAttrInclude.objectTypeSpinner.selectedItemPosition
+ val objectTypeCode = itemPosition + 1
+
+ if (binding.markerAttrInclude.markerIdView.text.isNullOrBlank()) {
+ "标识器ID不能为空,请读标识器".show(context)
+ return@setOnClickListener
+ }
+
+ if (binding.objectAttrInclude.constructDateView.text.isNullOrBlank()) {
+ "请选择建设时间".show(context)
+ return@setOnClickListener
+ }
+
+ if (binding.markerAttrInclude.markerCountView.text.isNullOrBlank()) {
+ "请输入电子标签数量".show(context)
+ return@setOnClickListener
+ }
+
+ //保存默认值
+ "objectCodeView".setDefaultValue(binding.objectAttrInclude.objectCodeView)
+ "objectNameView".setDefaultValue(binding.objectAttrInclude.objectNameView)
+ "inlineNameView".setDefaultValue(binding.objectAttrInclude.inlineNameView)
+ "capacityView".setDefaultValue(binding.objectAttrInclude.capacityView)
+ "transformerSpecView".setDefaultValue(binding.objectAttrInclude.transformerSpecView)
+ "sLengthView".setDefaultValue(binding.objectAttrInclude.sLengthView)
+ "sWidthView".setDefaultValue(binding.objectAttrInclude.sWidthView)
+ "sHeightView".setDefaultValue(binding.objectAttrInclude.sHeightView)
+ "inlineCountView".setDefaultValue(binding.objectAttrInclude.inlineCountView)
+ "outlineCountView".setDefaultValue(binding.objectAttrInclude.outlineCountView)
+ "bottomDepthView".setDefaultValue(binding.objectAttrInclude.bottomDepthView)
+ "rowCountView".setDefaultValue(binding.objectAttrInclude.rowCountView)
+ "rowHoleCountView".setDefaultValue(binding.objectAttrInclude.rowHoleCountView)
+ "coverDepthView".setDefaultValue(binding.objectAttrInclude.coverDepthView)
+ "remainingChannelsView".setDefaultValue(binding.objectAttrInclude.remainingChannelsView)
+ "tieCableView1".setDefaultValue(binding.objectAttrInclude.tieCableView1)
+ "tieCableView2".setDefaultValue(binding.objectAttrInclude.tieCableView2)
+ "jointCountView".setDefaultValue(binding.objectAttrInclude.jointCountView)
+ "casingHoleCountView".setDefaultValue(binding.objectAttrInclude.casingHoleCountView)
+ "casingHoleDiameterView".setDefaultValue(binding.objectAttrInclude.casingHoleDiameterView)
+ "heightView".setDefaultValue(binding.objectAttrInclude.heightView)
+ "lineNumberView".setDefaultValue(binding.objectAttrInclude.lineNumberView)
+ "inspectionUnitView".setDefaultValue(binding.objectAttrInclude.inspectionUnitView)
+ "areaView".setDefaultValue(binding.objectAttrInclude.areaView)
+ "roadView".setDefaultValue(binding.objectAttrInclude.roadView)
+ "objectRemarkView1".setDefaultValue(binding.objectAttrInclude.objectRemarkView1)
+ "objectRemarkView2".setDefaultValue(binding.objectAttrInclude.objectRemarkView2)
+ "objectRemarkView3".setDefaultValue(binding.objectAttrInclude.objectRemarkView3)
+ "ownerView".setDefaultValue(binding.markerAttrInclude.ownerView)
+ "markerDepthView".setDefaultValue(binding.markerAttrInclude.markerDepthView)
+ "markerCountView".setDefaultValue(binding.markerAttrInclude.markerCountView)
+ "remarkView1".setDefaultValue(binding.markerAttrInclude.remarkView1)
+ "remarkView2".setDefaultValue(binding.markerAttrInclude.remarkView2)
+ "remarkView3".setDefaultValue(binding.markerAttrInclude.remarkView3)
+
+ val labelData = LabelDataClass(
+ companyId,
+ objectTypeCode.toString(),
+ binding.objectAttrInclude.objectCodeView.text.toString(),
+ binding.objectAttrInclude.objectNameView.text.toString(),
+ binding.objectAttrInclude.voltageLevelView.text.toString(),
+ binding.objectAttrInclude.objectModeSpinner.selectedItem.toString(),
+ "进线${binding.objectAttrInclude.inlineNameView.text}",
+ binding.objectAttrInclude.wellCoverMaterialSpinner.selectedItem.toString(),
+ "${binding.objectAttrInclude.capacityView.text}KVA",
+ binding.objectAttrInclude.transformerSpecView.text.toString(),
+ "${binding.objectAttrInclude.sLengthView.text}米长 x ${binding.objectAttrInclude.sWidthView.text}米宽 x ${binding.objectAttrInclude.sHeightView.text}米高",
+ binding.objectAttrInclude.inlineCountView.text.toString(),
+ binding.objectAttrInclude.outlineCountView.text.toString(),
+ binding.objectAttrInclude.cabinetTypeSpinner.selectedItem.toString(),
+ binding.objectAttrInclude.bottomDepthView.text.toString(),
+ "${binding.objectAttrInclude.rowCountView.text}排 x ${binding.objectAttrInclude.rowHoleCountView.text}孔",
+ "${binding.objectAttrInclude.coverDepthView.text}米",
+ binding.objectAttrInclude.crossPipeLineView.text.toString(),
+ binding.objectAttrInclude.remainingChannelsView.text.toString(),
+ binding.objectAttrInclude.tieCableView1.text.toString(),
+ binding.objectAttrInclude.tieCableView2.text.toString(),
+ binding.objectAttrInclude.jointCountView.text.toString(),
+ binding.objectAttrInclude.casingMaterialSpinner.selectedItem.toString(),
+ "${binding.objectAttrInclude.casingHoleCountView.text}孔,直径${binding.objectAttrInclude.casingHoleDiameterView.text}毫米",
+ "${binding.objectAttrInclude.heightView.text.toString()}米",
+ binding.objectAttrInclude.lineNumberView.text.toString(),
+ binding.objectAttrInclude.constructDateView.text.toString(),
+ binding.objectAttrInclude.inspectionUnitView.text.toString(),
+ binding.objectAttrInclude.areaView.text.toString(),
+ binding.objectAttrInclude.roadView.text.toString(),
+ binding.objectAttrInclude.objectRemarkView1.text.toString(),
+ binding.objectAttrInclude.objectRemarkView2.text.toString(),
+ binding.objectAttrInclude.objectRemarkView3.text.toString(),
+ binding.markerAttrInclude.markerIdView.text.toString(),
+ binding.markerAttrInclude.markerTypeSpinner.selectedItem.toString(),
+ binding.markerAttrInclude.ownerView.text.toString(),
+ binding.markerAttrInclude.markerDepthView.text.toString(),
+ binding.markerAttrInclude.installTimeView.text.toString(),
+ binding.markerAttrInclude.lngView.text.toString(),
+ binding.markerAttrInclude.latView.text.toString(),
+ binding.markerAttrInclude.markerCountView.text.toString(),
+ binding.markerAttrInclude.remarkView1.text.toString(),
+ binding.markerAttrInclude.remarkView2.text.toString(),
+ binding.markerAttrInclude.remarkView3.text.toString(),
+ realPaths
+ )
+
+ //先存本地
+ lifecycleScope.launch {
+ withContext(Dispatchers.IO) {
+ DataBaseManager.get.insertLabel(labelData)
+ }
+ }
+
+ //再存服务器
+ taskViewModel.installLabel(labelData)
+ }
+
+ //读标识器
+ binding.readMarkerButton.setOnClickListener {
+ LoadingDialogHub.show(this@MainActivity, "标识器读取中,请稍后...")
+ binding.readMarkerButton.isEnabled = false
+
+ isReadMarker = true
+
+ //调高串口电位
+ gpioManager.setGpioHigh("18")
+
+ soundPool.play(soundResourceId, 1f, 1f, 0, -1, 1f)
+
+ out.write('2'.code)
+ out.flush()
+ }
+ }
+
+ fun bindingValue(markerId: String) {
+ LoadingDialogHub.dismiss()
+ soundPool.autoPause()
+ binding.readMarkerButton.isEnabled = true
+
+ //降低串口电位
+ gpioManager.setGpioLow("18")
+
+ isReadMarker = false
+ binding.markerAttrInclude.markerIdView.text = markerId
+ }
+
+ private fun initDefaultData() {
+ binding.titleInclude.titleView.text = "安装新标识器"
+ binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(context))
+
+ imageAdapter = EditableImageAdapter(context, 3, 3)
+ binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter
+
+ //设置上次填写过的值
+ binding.objectAttrInclude.objectCodeView.setText("objectCodeView".getDefaultValue())
+ binding.objectAttrInclude.objectNameView.setText("objectNameView".getDefaultValue())
+ binding.objectAttrInclude.inlineNameView.setText("inlineNameView".getDefaultValue())
+ binding.objectAttrInclude.capacityView.setText("capacityView".getDefaultValue())
+ binding.objectAttrInclude.transformerSpecView.setText("transformerSpecView".getDefaultValue())
+ binding.objectAttrInclude.sLengthView.setText("sLengthView".getDefaultValue())
+ binding.objectAttrInclude.sWidthView.setText("sWidthView".getDefaultValue())
+ binding.objectAttrInclude.sHeightView.setText("sHeightView".getDefaultValue())
+ binding.objectAttrInclude.inlineCountView.setText("inlineCountView".getDefaultValue())
+ binding.objectAttrInclude.outlineCountView.setText("outlineCountView".getDefaultValue())
+ binding.objectAttrInclude.bottomDepthView.setText("bottomDepthView".getDefaultValue())
+ binding.objectAttrInclude.rowCountView.setText("rowCountView".getDefaultValue())
+ binding.objectAttrInclude.rowHoleCountView.setText("rowHoleCountView".getDefaultValue())
+ binding.objectAttrInclude.coverDepthView.setText("coverDepthView".getDefaultValue())
+ binding.objectAttrInclude.remainingChannelsView.setText("remainingChannelsView".getDefaultValue())
+ binding.objectAttrInclude.tieCableView1.setText("tieCableView1".getDefaultValue())
+ binding.objectAttrInclude.tieCableView2.setText("tieCableView2".getDefaultValue())
+ binding.objectAttrInclude.jointCountView.setText("jointCountView".getDefaultValue())
+ binding.objectAttrInclude.casingHoleCountView.setText("casingHoleCountView".getDefaultValue())
+ binding.objectAttrInclude.casingHoleDiameterView.setText("casingHoleDiameterView".getDefaultValue())
+ binding.objectAttrInclude.heightView.setText("heightView".getDefaultValue())
+ binding.objectAttrInclude.lineNumberView.setText("lineNumberView".getDefaultValue())
+ binding.objectAttrInclude.inspectionUnitView.setText("inspectionUnitView".getDefaultValue())
+ binding.objectAttrInclude.areaView.setText("areaView".getDefaultValue())
+ binding.objectAttrInclude.roadView.setText("roadView".getDefaultValue())
+ binding.objectAttrInclude.objectRemarkView1.setText("objectRemarkView1".getDefaultValue())
+ binding.objectAttrInclude.objectRemarkView2.setText("objectRemarkView2".getDefaultValue())
+ binding.objectAttrInclude.objectRemarkView3.setText("objectRemarkView3".getDefaultValue())
+ binding.markerAttrInclude.ownerView.setText("ownerView".getDefaultValue())
+ binding.markerAttrInclude.markerDepthView.setText("markerDepthView".getDefaultValue())
+ binding.markerAttrInclude.markerCountView.setText("markerCountView".getDefaultValue())
+ binding.markerAttrInclude.remarkView1.setText("remarkView1".getDefaultValue())
+ binding.markerAttrInclude.remarkView2.setText("remarkView2".getDefaultValue())
+ binding.markerAttrInclude.remarkView3.setText("remarkView3".getDefaultValue())
+
+ /**************************************************************************************/
+ binding.objectAttrInclude.objectTypeSpinner.show(
+ this@MainActivity, LocaleConstant.CONTENT_ARRAY, 0
+ )
+ binding.objectAttrInclude.objectTypeSpinner.onItemSelectedListener =
+ object : AdapterView.OnItemSelectedListener {
+ override fun onItemSelected(
+ parent: AdapterView<*>?, view: View?, position: Int, id: Long
+ ) {
+ when (position) {
+ 0 -> {
+ //选择电缆井
+ binding.objectAttrInclude.objectModeView.text = "类型:"
+ binding.objectAttrInclude.wellCoverMaterialView.text = "井盖材质:"
+ binding.objectAttrInclude.bottomDepthNameView.text = "井深:"
+ setLayoutVisibility(
+ View.VISIBLE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE
+ )
+ binding.objectAttrInclude.objectModeSpinner.show(
+ this@MainActivity, LocaleConstant.OBJECT_MODE_ARRAY, 0
+ )
+ binding.objectAttrInclude.wellCoverMaterialSpinner.show(
+ this@MainActivity, LocaleConstant.WELL_COVER_MATERIAL_ARRAY_1, 0
+ )
+ }
+
+ 1 -> {
+ //选择电缆通道
+ binding.objectAttrInclude.bottomDepthNameView.text = "底部深度:"
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE
+ )
+ }
+
+ 2 -> {
+ //选择配电房
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE
+ )
+ }
+
+ 3 -> {
+ //选择开关站
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE
+ )
+ }
+
+ 4 -> {
+ //选择台区
+ binding.objectAttrInclude.objectModeView.text = "变压器型号:"
+ setLayoutVisibility(
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE
+ )
+ binding.objectAttrInclude.objectModeSpinner.show(
+ this@MainActivity, arrayOf("变压器 KVA"), 0
+ )
+ }
+
+ 5 -> {
+ //选择杆塔
+ binding.objectAttrInclude.wellCoverMaterialView.text = "对象材质:"
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE
+ )
+ binding.objectAttrInclude.wellCoverMaterialSpinner.show(
+ this@MainActivity, LocaleConstant.WELL_COVER_MATERIAL_ARRAY_2, 0
+ )
+ }
+ }
+ }
+
+ override fun onNothingSelected(parent: AdapterView<*>?) {
+
+ }
+ }
+
+ binding.objectAttrInclude.cabinetTypeSpinner.show(
+ this@MainActivity, LocaleConstant.CABINET_TYPE_ARRAY, 0
+ )
+ binding.objectAttrInclude.casingMaterialSpinner.show(
+ this@MainActivity, LocaleConstant.PIPE_MATERIAL_ARRAY, 0
+ )
+ binding.markerAttrInclude.markerTypeSpinner.show(
+ this@MainActivity, LocaleConstant.MARKER_TYPE_ARRAY, 0
+ )
+
+ //电压等级-多选
+ binding.objectAttrInclude.voltageLevelView.setOnClickListener {
+ AlertDialog.Builder(context).setCancelable(false).setIcon(R.mipmap.ic_launcher)
+ .setTitle("请选择电压等级").setMultiChoiceItems(
+ LocaleConstant.VOLTAGE_LEVEL_ARRAY, LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY
+ ) { _, which, isChecked ->
+ LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[which] = isChecked
+ }.setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
+ .setPositiveButton("确定") { _, _ ->
+ val temp = java.util.ArrayList()
+ LocaleConstant.VOLTAGE_LEVEL_ARRAY.forEachIndexed { index, s ->
+ if (LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[index]) {
+ temp.add(s)
+ }
+ }
+
+ binding.objectAttrInclude.voltageLevelView.text = temp.reformat()
+ }.show()
+ }
+
+ //交叉管道类型-多选
+ binding.objectAttrInclude.crossPipeLineView.setOnClickListener {
+ AlertDialog.Builder(context).setCancelable(false).setIcon(R.mipmap.ic_launcher)
+ .setTitle("请选择交叉管道类型").setMultiChoiceItems(
+ LocaleConstant.CROSS_PIPE_ARRAY, LocaleConstant.CROSS_PIPE_STATE_ARRAY
+ ) { _, which, isChecked ->
+ LocaleConstant.CROSS_PIPE_STATE_ARRAY[which] = isChecked
+ }.setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
+ .setPositiveButton("确定") { _, _ ->
+ val temp = java.util.ArrayList()
+ LocaleConstant.CROSS_PIPE_ARRAY.forEachIndexed { index, s ->
+ if (LocaleConstant.CROSS_PIPE_STATE_ARRAY[index]) {
+ temp.add(s)
+ }
+ }
+
+ binding.objectAttrInclude.crossPipeLineView.text = temp.reformat()
+ }.show()
+ }
+
+ binding.objectAttrInclude.constructDateView.setOnClickListener {
+ val datePicker = DatePickerDialog(
+ context,
+ null,
+ calendar.get(Calendar.YEAR),
+ calendar.get(Calendar.MONTH),
+ calendar.get(Calendar.DAY_OF_MONTH)
+ )
+ datePicker.show()
+
+ datePicker.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener {
+ val year = datePicker.datePicker.year
+ val month = datePicker.datePicker.month + 1
+ val day = datePicker.datePicker.dayOfMonth
+ val selectedDate = String.format(
+ "%s-%s-%s", year, month.appendZero(), day.appendZero()
+ )
+
+ //当前时间
+ val current = System.currentTimeMillis().timestampToTime()
+ val today = "$selectedDate $current".dateToTimestamp()
+ if (Date(today).after(Date())) {
+ "建设年代不能早于当前日期".show(context)
+ } else {
+ datePicker.dismiss()
+ binding.objectAttrInclude.constructDateView.text = selectedDate
+ }
+ }
+ }
+
+ binding.markerAttrInclude.installTimeView.text =
+ System.currentTimeMillis().timestampToCompleteDate()
+ locationHub.getCurrentLocation(true, object : ILocationListener {
+ override fun onAMapLocationGet(location: AMapLocation?) {
+ if (location != null) {
+ binding.markerAttrInclude.lngView.text = location.longitude.toString()
+ binding.markerAttrInclude.latView.text = location.latitude.toString()
+ } else {
+ "当前位置信号差,无法获取定位".show(context)
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+ PictureSelector.create(this@MainActivity).openCamera(SelectMimeType.ofImage())
+ .forResult(object : OnResultCallbackListener {
+ override fun onResult(result: java.util.ArrayList?) {
+ if (result == null) {
+ "拍照失败,请重试".show(context)
+ return
+ }
+ analyticalSelectResult(result[0])
+ }
+
+ override fun onCancel() {
+
+ }
+ })
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(context)
+ } else {
+ context.navigatePageTo(position, realPaths)
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+
+ private fun analyticalSelectResult(result: LocalMedia) {
+ //压缩图片
+ result.realPath.compressImage(context, object : OnImageCompressListener {
+ override fun onSuccess(file: File) {
+ realPaths.add(file.absolutePath)
+ imageAdapter.setupImage(realPaths)
+ }
+
+ override fun onError(e: Throwable) {
+ e.printStackTrace()
+ }
+ })
+ }
+
+ //根据选择类型控制界面某些区域显隐
+ private fun setLayoutVisibility(vararg args: Int) {
+ binding.objectAttrInclude.objectModeLayout.visibility = args[0]
+ binding.objectAttrInclude.inlineNameLayout.visibility = args[1]
+ binding.objectAttrInclude.wellCoverMaterialLayout.visibility = args[2]
+ binding.objectAttrInclude.capacityLayout.visibility = args[3]
+ binding.objectAttrInclude.sizeLayout.visibility = args[4]
+ binding.objectAttrInclude.inlineCountLayout.visibility = args[5]
+ binding.objectAttrInclude.outlineCountLayout.visibility = args[6]
+ binding.objectAttrInclude.wellDepthLayout.visibility = args[7]
+ binding.objectAttrInclude.pipeLineLayout.visibility = args[8]
+ binding.objectAttrInclude.jointCountLayout.visibility = args[9]
+ binding.objectAttrInclude.heightLayout.visibility = args[10]
+ }
}
/**安装小标签对话框******************************************************************************/
@@ -859,6 +1373,29 @@
var isReadMarker = false
var isInstallMarker = false
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ this.initDialogLayoutParams(1f)
+ setCancelable(false)
+ setCanceledOnTouchOutside(false)
+
+ //返回
+ binding.titleInclude.leftBackView.setOnClickListener {
+ dismiss()
+ }
+ }
+
+ fun bindingValue(markerId: String) {
+ LoadingDialogHub.dismiss()
+ soundPool.autoPause()
+ binding.readMarkerButton.isEnabled = true
+
+ //降低串口电位
+ gpioManager.setGpioLow("18")
+
+ isReadMarker = false
+ }
}
/**探测标识器对话框******************************************************************************/
@@ -976,9 +1513,12 @@
degreeCache["lastDegree"]?.apply {
val animation = RotateAnimation(
- this, degree,
- Animation.RELATIVE_TO_SELF, 0.5f,
- Animation.RELATIVE_TO_SELF, 0.5f
+ this,
+ degree,
+ Animation.RELATIVE_TO_SELF,
+ 0.5f,
+ Animation.RELATIVE_TO_SELF,
+ 0.5f
)
animation.duration = 0
animation.fillAfter = true
diff --git a/app/src/main/java/com/casic/electric/detector/widgets/QueryMarkerDialog.kt b/app/src/main/java/com/casic/electric/detector/widgets/QueryMarkerDialog.kt
index 0d9f58b..169147b 100644
--- a/app/src/main/java/com/casic/electric/detector/widgets/QueryMarkerDialog.kt
+++ b/app/src/main/java/com/casic/electric/detector/widgets/QueryMarkerDialog.kt
@@ -10,10 +10,10 @@
import android.widget.Spinner
import com.casic.electric.detector.R
import com.casic.electric.detector.databinding.DialogQueryMarkerBinding
-import com.casic.electric.detector.extensions.appendZero
import com.casic.electric.detector.utils.DataBaseManager
import com.casic.electric.detector.utils.LocaleConstant
import com.casic.electric.detector.utils.QueryMode
+import com.pengxh.kt.lite.extensions.appendZero
import com.pengxh.kt.lite.extensions.binding
import com.pengxh.kt.lite.extensions.initDialogLayoutParams
import kotlinx.coroutines.CoroutineScope
@@ -82,7 +82,6 @@
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
this.initDialogLayoutParams(0.8f)
- setContentView(R.layout.dialog_query_marker)
setCanceledOnTouchOutside(false)
initView()
}
diff --git a/app/src/main/res/layout/activity_install_label.xml b/app/src/main/res/layout/activity_install_label.xml
deleted file mode 100644
index eddafd4..0000000
--- a/app/src/main/res/layout/activity_install_label.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_install_marker.xml b/app/src/main/res/layout/dialog_install_marker.xml
index eddafd4..64ab195 100644
--- a/app/src/main/res/layout/dialog_install_marker.xml
+++ b/app/src/main/res/layout/dialog_install_marker.xml
@@ -76,7 +76,7 @@
android:background="@color/lib_line_color" />
-
diff --git a/app/src/main/java/com/casic/electric/detector/view/InstallLabelActivity.kt b/app/src/main/java/com/casic/electric/detector/view/InstallLabelActivity.kt
deleted file mode 100644
index 6510104..0000000
--- a/app/src/main/java/com/casic/electric/detector/view/InstallLabelActivity.kt
+++ /dev/null
@@ -1,601 +0,0 @@
-package com.casic.electric.detector.view
-
-import android.annotation.SuppressLint
-import android.app.AlertDialog
-import android.app.DatePickerDialog
-import android.content.Context
-import android.content.DialogInterface
-import android.content.Intent
-import android.media.AudioAttributes
-import android.media.SoundPool
-import android.os.Bundle
-import android.os.Handler
-import android.os.Message
-import android.provider.Settings
-import android.util.Log
-import android.view.KeyEvent
-import android.view.View
-import android.view.WindowManager
-import android.widget.AdapterView
-import androidx.lifecycle.ViewModelProvider
-import androidx.lifecycle.lifecycleScope
-import com.amap.api.location.AMapLocation
-import com.casic.electric.detector.R
-import com.casic.electric.detector.adapter.EditableImageAdapter
-import com.casic.electric.detector.base.SerialPortActivity
-import com.casic.electric.detector.callback.ILocationListener
-import com.casic.electric.detector.callback.OnImageCompressListener
-import com.casic.electric.detector.databinding.ActivityInstallLabelBinding
-import com.casic.electric.detector.extensions.*
-import com.casic.electric.detector.utils.*
-import com.casic.electric.detector.vm.TaskViewModel
-import com.luck.picture.lib.basic.PictureSelector
-import com.luck.picture.lib.config.SelectMimeType
-import com.luck.picture.lib.entity.LocalMedia
-import com.luck.picture.lib.interfaces.OnResultCallbackListener
-import com.pengxh.kt.lite.extensions.*
-import com.pengxh.kt.lite.utils.LoadState
-import com.pengxh.kt.lite.utils.LoadingDialogHub
-import com.pengxh.kt.lite.utils.SaveKeyValues
-import com.pengxh.kt.lite.utils.WeakReferenceHandler
-import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.withContext
-import java.io.File
-import java.io.IOException
-import java.util.*
-
-@SuppressLint("SetTextI18n")
-class InstallLabelActivity : SerialPortActivity(), Handler.Callback {
-
- private val kTag = "LabelActivity"
- private val context: Context = this@InstallLabelActivity
- private val gpioManager by lazy { GpioManager() }
- private val calendar by lazy { Calendar.getInstance() }
- private val locationHub by lazy { LocationHub(this) }
- private val realPaths = ArrayList() //真实图片路径
- private var soundResId = 0
- private lateinit var weakReferenceHandler: WeakReferenceHandler
- private lateinit var soundPool: SoundPool
- private lateinit var imageAdapter: EditableImageAdapter
- private lateinit var taskViewModel: TaskViewModel
-
- override fun initViewBinding(): ActivityInstallLabelBinding {
- return ActivityInstallLabelBinding.inflate(layoutInflater)
- }
-
- override fun setupTopBarLayout() {
- binding.titleInclude.titleView.text = "安装新标识器"
- binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(this))
- }
-
- override fun initOnCreate(savedInstanceState: Bundle?) {
- window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN or WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)
-
- weakReferenceHandler = WeakReferenceHandler(this)
-
- val audioAttributes = AudioAttributes.Builder()
- .setUsage(AudioAttributes.USAGE_MEDIA)
- .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
- .build()
- soundPool = SoundPool.Builder()
- .setMaxStreams(16)
- .setAudioAttributes(audioAttributes)
- .build()
-
- //设置上次填写过的值
- binding.objectAttrInclude.objectCodeView.setText("objectCodeView".getDefaultValue())
- binding.objectAttrInclude.objectNameView.setText("objectNameView".getDefaultValue())
- binding.objectAttrInclude.inlineNameView.setText("inlineNameView".getDefaultValue())
- binding.objectAttrInclude.capacityView.setText("capacityView".getDefaultValue())
- binding.objectAttrInclude.transformerSpecView.setText("transformerSpecView".getDefaultValue())
- binding.objectAttrInclude.sLengthView.setText("sLengthView".getDefaultValue())
- binding.objectAttrInclude.sWidthView.setText("sWidthView".getDefaultValue())
- binding.objectAttrInclude.sHeightView.setText("sHeightView".getDefaultValue())
- binding.objectAttrInclude.inlineCountView.setText("inlineCountView".getDefaultValue())
- binding.objectAttrInclude.outlineCountView.setText("outlineCountView".getDefaultValue())
- binding.objectAttrInclude.bottomDepthView.setText("bottomDepthView".getDefaultValue())
- binding.objectAttrInclude.rowCountView.setText("rowCountView".getDefaultValue())
- binding.objectAttrInclude.rowHoleCountView.setText("rowHoleCountView".getDefaultValue())
- binding.objectAttrInclude.coverDepthView.setText("coverDepthView".getDefaultValue())
- binding.objectAttrInclude.remainingChannelsView.setText("remainingChannelsView".getDefaultValue())
- binding.objectAttrInclude.tieCableView1.setText("tieCableView1".getDefaultValue())
- binding.objectAttrInclude.tieCableView2.setText("tieCableView2".getDefaultValue())
- binding.objectAttrInclude.jointCountView.setText("jointCountView".getDefaultValue())
- binding.objectAttrInclude.casingHoleCountView.setText("casingHoleCountView".getDefaultValue())
- binding.objectAttrInclude.casingHoleDiameterView.setText("casingHoleDiameterView".getDefaultValue())
- binding.objectAttrInclude.heightView.setText("heightView".getDefaultValue())
- binding.objectAttrInclude.lineNumberView.setText("lineNumberView".getDefaultValue())
- binding.objectAttrInclude.inspectionUnitView.setText("inspectionUnitView".getDefaultValue())
- binding.objectAttrInclude.areaView.setText("areaView".getDefaultValue())
- binding.objectAttrInclude.roadView.setText("roadView".getDefaultValue())
- binding.objectAttrInclude.objectRemarkView1.setText("objectRemarkView1".getDefaultValue())
- binding.objectAttrInclude.objectRemarkView2.setText("objectRemarkView2".getDefaultValue())
- binding.objectAttrInclude.objectRemarkView3.setText("objectRemarkView3".getDefaultValue())
- binding.markerAttrInclude.ownerView.setText("ownerView".getDefaultValue())
- binding.markerAttrInclude.markerDepthView.setText("markerDepthView".getDefaultValue())
- binding.markerAttrInclude.markerCountView.setText("markerCountView".getDefaultValue())
- binding.markerAttrInclude.remarkView1.setText("remarkView1".getDefaultValue())
- binding.markerAttrInclude.remarkView2.setText("remarkView2".getDefaultValue())
- binding.markerAttrInclude.remarkView3.setText("remarkView3".getDefaultValue())
-
- //初始化图片九宫格
- imageAdapter = EditableImageAdapter(this, 3, 3)
- binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter
-
- taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
- }
-
- override fun observeRequestState() {
- taskViewModel.loadState.observe(this) {
- when (it) {
- LoadState.Loading -> LoadingDialogHub.show(this, "标识器安装中,请稍后...")
- LoadState.Success -> {
- LoadingDialogHub.dismiss()
- finish()
- }
-
- else -> LoadingDialogHub.dismiss()
- }
- }
- }
-
- override fun initEvent() {
- binding.titleInclude.leftBackView.setOnClickListener { finish() }
-
- /**************************************************************************************/
- binding.objectAttrInclude.objectTypeSpinner.show(this, LocaleConstant.CONTENT_ARRAY, 0)
- binding.objectAttrInclude.objectTypeSpinner.onItemSelectedListener =
- object : AdapterView.OnItemSelectedListener {
- override fun onItemSelected(
- parent: AdapterView<*>?, view: View?, position: Int, id: Long
- ) {
- when (position) {
- 0 -> {
- //选择电缆井
- binding.objectAttrInclude.objectModeView.text = "类型:"
- binding.objectAttrInclude.wellCoverMaterialView.text = "井盖材质:"
- binding.objectAttrInclude.bottomDepthNameView.text = "井深:"
- setLayoutVisibility(
- View.VISIBLE, View.GONE, View.VISIBLE, View.GONE, View.VISIBLE,
- View.GONE, View.GONE, View.VISIBLE, View.GONE, View.VISIBLE,
- View.GONE
- )
- binding.objectAttrInclude.objectModeSpinner.show(
- this@InstallLabelActivity, LocaleConstant.OBJECT_MODE_ARRAY, 0
- )
- binding.objectAttrInclude.wellCoverMaterialSpinner.show(
- this@InstallLabelActivity,
- LocaleConstant.WELL_COVER_MATERIAL_ARRAY_1,
- 0
- )
- }
-
- 1 -> {
- //选择电缆通道
- binding.objectAttrInclude.bottomDepthNameView.text = "底部深度:"
- setLayoutVisibility(
- View.GONE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.GONE, View.GONE, View.VISIBLE, View.VISIBLE, View.VISIBLE,
- View.GONE
- )
- }
-
- 2 -> {
- //选择配电房
- setLayoutVisibility(
- View.GONE, View.GONE, View.GONE, View.VISIBLE, View.VISIBLE,
- View.VISIBLE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.GONE
- )
- }
-
- 3 -> {
- //选择开关站
- setLayoutVisibility(
- View.GONE, View.GONE, View.GONE, View.GONE, View.VISIBLE,
- View.VISIBLE, View.VISIBLE, View.GONE, View.GONE, View.GONE,
- View.GONE
- )
- }
-
- 4 -> {
- //选择台区
- binding.objectAttrInclude.objectModeView.text = "变压器型号:"
- setLayoutVisibility(
- View.VISIBLE, View.VISIBLE, View.GONE, View.GONE, View.GONE,
- View.GONE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.GONE
- )
- binding.objectAttrInclude.objectModeSpinner.show(
- this@InstallLabelActivity, arrayOf("变压器 KVA"), 0
- )
- }
-
- 5 -> {
- //选择杆塔
- binding.objectAttrInclude.wellCoverMaterialView.text = "对象材质:"
- setLayoutVisibility(
- View.GONE, View.GONE, View.VISIBLE, View.GONE, View.GONE,
- View.GONE, View.GONE, View.GONE, View.GONE, View.GONE,
- View.VISIBLE
- )
- binding.objectAttrInclude.wellCoverMaterialSpinner.show(
- this@InstallLabelActivity,
- LocaleConstant.WELL_COVER_MATERIAL_ARRAY_2,
- 0
- )
- }
- }
- }
-
- override fun onNothingSelected(parent: AdapterView<*>?) {
-
- }
- }
-
- binding.objectAttrInclude.cabinetTypeSpinner.show(
- this,
- LocaleConstant.CABINET_TYPE_ARRAY,
- 0
- )
- binding.objectAttrInclude.casingMaterialSpinner.show(
- this,
- LocaleConstant.PIPE_MATERIAL_ARRAY,
- 0
- )
- binding.markerAttrInclude.markerTypeSpinner.show(this, LocaleConstant.MARKER_TYPE_ARRAY, 0)
-
- //电压等级-多选
- binding.objectAttrInclude.voltageLevelView.setOnClickListener {
- AlertDialog.Builder(context)
- .setCancelable(false)
- .setIcon(R.mipmap.ic_launcher)
- .setTitle("请选择电压等级")
- .setMultiChoiceItems(
- LocaleConstant.VOLTAGE_LEVEL_ARRAY, LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY
- ) { _, which, isChecked ->
- LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[which] = isChecked
- }
- .setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
- .setPositiveButton("确定") { _, _ ->
- val temp = ArrayList()
- LocaleConstant.VOLTAGE_LEVEL_ARRAY.forEachIndexed { index, s ->
- if (LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[index]) {
- temp.add(s)
- }
- }
-
- binding.objectAttrInclude.voltageLevelView.text = temp.reformat()
- }.show()
- }
-
- //交叉管道类型-多选
- binding.objectAttrInclude.crossPipeLineView.setOnClickListener {
- AlertDialog.Builder(context)
- .setCancelable(false)
- .setIcon(R.mipmap.ic_launcher)
- .setTitle("请选择交叉管道类型")
- .setMultiChoiceItems(
- LocaleConstant.CROSS_PIPE_ARRAY, LocaleConstant.CROSS_PIPE_STATE_ARRAY
- ) { _, which, isChecked ->
- LocaleConstant.CROSS_PIPE_STATE_ARRAY[which] = isChecked
- }
- .setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
- .setPositiveButton("确定") { _, _ ->
- val temp = ArrayList()
- LocaleConstant.CROSS_PIPE_ARRAY.forEachIndexed { index, s ->
- if (LocaleConstant.CROSS_PIPE_STATE_ARRAY[index]) {
- temp.add(s)
- }
- }
-
- binding.objectAttrInclude.crossPipeLineView.text = temp.reformat()
- }.show()
- }
-
- binding.objectAttrInclude.constructDateView.setOnClickListener {
- val datePicker = DatePickerDialog(
- this,
- null,
- calendar.get(Calendar.YEAR),
- calendar.get(Calendar.MONTH),
- calendar.get(Calendar.DAY_OF_MONTH)
- )
- datePicker.show()
-
- datePicker.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener {
- val year = datePicker.datePicker.year
- val month = datePicker.datePicker.month + 1
- val day = datePicker.datePicker.dayOfMonth
- val selectedDate = String.format(
- "%s-%s-%s", year, month.appendZero(), day.appendZero()
- )
-
- //当前时间
- val current = System.currentTimeMillis().timestampToTime()
- val today = "$selectedDate $current".dateToTimestamp()
- if (Date(today).after(Date())) {
- "建设年代不能早于当前日期".show(context)
- } else {
- datePicker.dismiss()
- binding.objectAttrInclude.constructDateView.text = selectedDate
- }
- }
- }
-
- binding.markerAttrInclude.installTimeView.text =
- System.currentTimeMillis().timestampToCompleteDate()
- locationHub.getCurrentLocation(true, object : ILocationListener {
- override fun onAMapLocationGet(location: AMapLocation?) {
- if (location != null) {
- binding.markerAttrInclude.lngView.text = location.longitude.toString()
- binding.markerAttrInclude.latView.text = location.latitude.toString()
- } else {
- "当前位置信号差,无法获取定位".show(context)
- }
- }
- })
-
- imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
- override fun onAddImageClick() {
- PictureSelector.create(this@InstallLabelActivity)
- .openCamera(SelectMimeType.ofImage())
- .forResult(object : OnResultCallbackListener {
- override fun onResult(result: ArrayList?) {
- if (result == null) {
- "拍照失败,请重试".show(context)
- return
- }
- analyticalSelectResult(result[0])
- }
-
- override fun onCancel() {
-
- }
- })
- }
-
- override fun onItemClick(position: Int) {
- if (realPaths[position].isEmpty()) {
- "图片加载失败,无法查看大图".show(context)
- } else {
- context.navigatePageTo(position, realPaths)
- }
- }
-
- override fun onItemLongClick(view: View?, position: Int) {
- imageAdapter.deleteImage(position)
- }
- })
-
- /**************************************************************************************/
- binding.installButton.setOnClickListener {
- if (isNetworkConnected()) {
- val companyId = SaveKeyValues.getValue(LocaleConstant.USER_COMPANY_ID, "") as String
-
- val itemPosition = binding.objectAttrInclude.objectTypeSpinner.selectedItemPosition
- val objectTypeCode = itemPosition + 1
-
- if (binding.markerAttrInclude.markerIdView.text.isNullOrBlank()) {
- "标识器ID不能为空,请读标识器".show(this)
- return@setOnClickListener
- }
-
- if (binding.objectAttrInclude.constructDateView.text.isNullOrBlank()) {
- "请选择建设时间".show(this)
- return@setOnClickListener
- }
-
- if (binding.markerAttrInclude.markerCountView.text.isNullOrBlank()) {
- "请输入电子标签数量".show(this)
- return@setOnClickListener
- }
-
- //保存默认值
- "objectCodeView".setDefaultValue(binding.objectAttrInclude.objectCodeView)
- "objectNameView".setDefaultValue(binding.objectAttrInclude.objectNameView)
- "inlineNameView".setDefaultValue(binding.objectAttrInclude.inlineNameView)
- "capacityView".setDefaultValue(binding.objectAttrInclude.capacityView)
- "transformerSpecView".setDefaultValue(binding.objectAttrInclude.transformerSpecView)
- "sLengthView".setDefaultValue(binding.objectAttrInclude.sLengthView)
- "sWidthView".setDefaultValue(binding.objectAttrInclude.sWidthView)
- "sHeightView".setDefaultValue(binding.objectAttrInclude.sHeightView)
- "inlineCountView".setDefaultValue(binding.objectAttrInclude.inlineCountView)
- "outlineCountView".setDefaultValue(binding.objectAttrInclude.outlineCountView)
- "bottomDepthView".setDefaultValue(binding.objectAttrInclude.bottomDepthView)
- "rowCountView".setDefaultValue(binding.objectAttrInclude.rowCountView)
- "rowHoleCountView".setDefaultValue(binding.objectAttrInclude.rowHoleCountView)
- "coverDepthView".setDefaultValue(binding.objectAttrInclude.coverDepthView)
- "remainingChannelsView".setDefaultValue(binding.objectAttrInclude.remainingChannelsView)
- "tieCableView1".setDefaultValue(binding.objectAttrInclude.tieCableView1)
- "tieCableView2".setDefaultValue(binding.objectAttrInclude.tieCableView2)
- "jointCountView".setDefaultValue(binding.objectAttrInclude.jointCountView)
- "casingHoleCountView".setDefaultValue(binding.objectAttrInclude.casingHoleCountView)
- "casingHoleDiameterView".setDefaultValue(binding.objectAttrInclude.casingHoleDiameterView)
- "heightView".setDefaultValue(binding.objectAttrInclude.heightView)
- "lineNumberView".setDefaultValue(binding.objectAttrInclude.lineNumberView)
- "inspectionUnitView".setDefaultValue(binding.objectAttrInclude.inspectionUnitView)
- "areaView".setDefaultValue(binding.objectAttrInclude.areaView)
- "roadView".setDefaultValue(binding.objectAttrInclude.roadView)
- "objectRemarkView1".setDefaultValue(binding.objectAttrInclude.objectRemarkView1)
- "objectRemarkView2".setDefaultValue(binding.objectAttrInclude.objectRemarkView2)
- "objectRemarkView3".setDefaultValue(binding.objectAttrInclude.objectRemarkView3)
- "ownerView".setDefaultValue(binding.markerAttrInclude.ownerView)
- "markerDepthView".setDefaultValue(binding.markerAttrInclude.markerDepthView)
- "markerCountView".setDefaultValue(binding.markerAttrInclude.markerCountView)
- "remarkView1".setDefaultValue(binding.markerAttrInclude.remarkView1)
- "remarkView2".setDefaultValue(binding.markerAttrInclude.remarkView2)
- "remarkView3".setDefaultValue(binding.markerAttrInclude.remarkView3)
-
- val labelData = LabelDataClass(
- companyId,
- objectTypeCode.toString(),
- binding.objectAttrInclude.objectCodeView.text.toString(),
- binding.objectAttrInclude.objectNameView.text.toString(),
- binding.objectAttrInclude.voltageLevelView.text.toString(),
- binding.objectAttrInclude.objectModeSpinner.selectedItem.toString(),
- "进线${binding.objectAttrInclude.inlineNameView.text}",
- binding.objectAttrInclude.wellCoverMaterialSpinner.selectedItem.toString(),
- "${binding.objectAttrInclude.capacityView.text}KVA",
- binding.objectAttrInclude.transformerSpecView.text.toString(),
- "${binding.objectAttrInclude.sLengthView.text}米长 x ${binding.objectAttrInclude.sWidthView.text}米宽 x ${binding.objectAttrInclude.sHeightView.text}米高",
- binding.objectAttrInclude.inlineCountView.text.toString(),
- binding.objectAttrInclude.outlineCountView.text.toString(),
- binding.objectAttrInclude.cabinetTypeSpinner.selectedItem.toString(),
- binding.objectAttrInclude.bottomDepthView.text.toString(),
- "${binding.objectAttrInclude.rowCountView.text}排 x ${binding.objectAttrInclude.rowHoleCountView.text}孔",
- "${binding.objectAttrInclude.coverDepthView.text}米",
- binding.objectAttrInclude.crossPipeLineView.text.toString(),
- binding.objectAttrInclude.remainingChannelsView.text.toString(),
- binding.objectAttrInclude.tieCableView1.text.toString(),
- binding.objectAttrInclude.tieCableView2.text.toString(),
- binding.objectAttrInclude.jointCountView.text.toString(),
- binding.objectAttrInclude.casingMaterialSpinner.selectedItem.toString(),
- "${binding.objectAttrInclude.casingHoleCountView.text}孔,直径${binding.objectAttrInclude.casingHoleDiameterView.text}毫米",
- "${binding.objectAttrInclude.heightView.text.toString()}米",
- binding.objectAttrInclude.lineNumberView.text.toString(),
- binding.objectAttrInclude.constructDateView.text.toString(),
- binding.objectAttrInclude.inspectionUnitView.text.toString(),
- binding.objectAttrInclude.areaView.text.toString(),
- binding.objectAttrInclude.roadView.text.toString(),
- binding.objectAttrInclude.objectRemarkView1.text.toString(),
- binding.objectAttrInclude.objectRemarkView2.text.toString(),
- binding.objectAttrInclude.objectRemarkView3.text.toString(),
- binding.markerAttrInclude.markerIdView.text.toString(),
- binding.markerAttrInclude.markerTypeSpinner.selectedItem.toString(),
- binding.markerAttrInclude.ownerView.text.toString(),
- binding.markerAttrInclude.markerDepthView.text.toString(),
- binding.markerAttrInclude.installTimeView.text.toString(),
- binding.markerAttrInclude.lngView.text.toString(),
- binding.markerAttrInclude.latView.text.toString(),
- binding.markerAttrInclude.markerCountView.text.toString(),
- binding.markerAttrInclude.remarkView1.text.toString(),
- binding.markerAttrInclude.remarkView2.text.toString(),
- binding.markerAttrInclude.remarkView3.text.toString(),
- realPaths
- )
-
- //先存本地
- lifecycleScope.launch {
- withContext(Dispatchers.IO) {
- DataBaseManager.get.insertLabel(labelData)
- }
- }
-
- //再存服务器
- taskViewModel.installLabel(labelData)
- } else {
- NoNetworkDialog.Builder()
- .setContext(context)
- .setOnDialogButtonClickListener(object :
- NoNetworkDialog.OnDialogButtonClickListener {
- override fun onButtonClick() {
- val intent = Intent(Settings.ACTION_SETTINGS)
- startActivity(intent)
- }
- }).build().show()
- }
- }
-
- binding.readLabelButton.setOnClickListener {
- gpioManager.setGpioHigh("18")
-
- LoadingDialogHub.show(this, "标识器读取中,请稍后...")
-
- soundResId = soundPool.load(this, R.raw.ring3, 1)
- soundPool.setOnLoadCompleteListener { soundPool, _, _ ->
- soundPool.play(soundResId, 1f, 1f, 0, -1, 1f)
- }
-
- // 1000ms后发送读标识器或搜索信号
- weakReferenceHandler.postDelayed({
- try {
- // 发送读标识器或搜索信号
- out.write("2".toByteArray())
- out.flush()
- } catch (e: IOException) {
- e.printStackTrace()
- }
- }, 1000)
- }
- }
-
- override fun onDataReceived(buffer: ByteArray) {
- Log.d(kTag, "onDataReceived => " + buffer.contentToString())
- if (buffer != null) {
- val message = weakReferenceHandler.obtainMessage()
- message.what = 2023081701
- message.obj = buffer
- weakReferenceHandler.sendMessage(message)
- }
- }
-
- override fun handleMessage(msg: Message): Boolean {
- if (msg.what == 2023081701) {
- soundPool.release()
-
- val buffer = msg.obj as ByteArray
- val hex = buffer.toHex()
-
- if (hex.length >= 20) {
- val markerId = hex.substring(0, 20).hexToString()
-
- gpioManager.setGpioLow("18")
-
- //查本地库
- val result = DataBaseManager.get.queryLabelById(markerId)
- if (result.isEmpty()) {
- binding.markerAttrInclude.markerIdView.text = markerId
- } else {
- "此标识器已安装,请更换标识器!".show(this)
- }
- LoadingDialogHub.dismiss()
- }
- }
- return true
- }
-
- private fun analyticalSelectResult(result: LocalMedia) {
- //压缩图片
- result.realPath.compressImage(this, object : OnImageCompressListener {
- override fun onSuccess(file: File) {
- realPaths.add(file.absolutePath)
- imageAdapter.setupImage(realPaths)
- }
-
- override fun onError(e: Throwable) {
- e.printStackTrace()
- }
- })
- }
-
- //根据选择类型控制界面某些区域显隐
- private fun setLayoutVisibility(vararg args: Int) {
- binding.objectAttrInclude.objectModeLayout.visibility = args[0]
- binding.objectAttrInclude.inlineNameLayout.visibility = args[1]
- binding.objectAttrInclude.wellCoverMaterialLayout.visibility = args[2]
- binding.objectAttrInclude.capacityLayout.visibility = args[3]
- binding.objectAttrInclude.sizeLayout.visibility = args[4]
- binding.objectAttrInclude.inlineCountLayout.visibility = args[5]
- binding.objectAttrInclude.outlineCountLayout.visibility = args[6]
- binding.objectAttrInclude.wellDepthLayout.visibility = args[7]
- binding.objectAttrInclude.pipeLineLayout.visibility = args[8]
- binding.objectAttrInclude.jointCountLayout.visibility = args[9]
- binding.objectAttrInclude.heightLayout.visibility = args[10]
- }
-
- override fun onDestroy() {
- super.onDestroy()
- soundPool.release()
- gpioManager.setGpioLow("18")
- }
-
- override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- soundPool.release()
- }
- return super.onKeyDown(keyCode, event)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt
index a0a4aac..40a5f3d 100644
--- a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt
@@ -2,8 +2,10 @@
import android.annotation.SuppressLint
import android.app.AlertDialog
+import android.app.DatePickerDialog
import android.app.Dialog
import android.content.Context
+import android.content.DialogInterface
import android.graphics.Color
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
@@ -16,6 +18,7 @@
import android.view.View
import android.view.animation.Animation
import android.view.animation.RotateAnimation
+import android.widget.AdapterView
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import com.amap.api.location.AMapLocation
@@ -33,6 +36,7 @@
import com.casic.electric.detector.bean.SmallLabelBean
import com.casic.electric.detector.bean.TaskBean
import com.casic.electric.detector.callback.ILocationListener
+import com.casic.electric.detector.callback.OnImageCompressListener
import com.casic.electric.detector.cluster.ClusterItem
import com.casic.electric.detector.cluster.ClusterOverlay
import com.casic.electric.detector.cluster.RegionItem
@@ -41,14 +45,20 @@
import com.casic.electric.detector.databinding.DialogInstallSmallMarkerBinding
import com.casic.electric.detector.databinding.DialogSearchMarkerBinding
import com.casic.electric.detector.extensions.appendExcelDownloadUrl
+import com.casic.electric.detector.extensions.compressImage
import com.casic.electric.detector.extensions.drawCircle
+import com.casic.electric.detector.extensions.getDefaultValue
import com.casic.electric.detector.extensions.hexToString
import com.casic.electric.detector.extensions.initImmersionBar
import com.casic.electric.detector.extensions.isNumber
+import com.casic.electric.detector.extensions.reformat
+import com.casic.electric.detector.extensions.setDefaultValue
+import com.casic.electric.detector.extensions.show
import com.casic.electric.detector.extensions.toHex
import com.casic.electric.detector.utils.DataBaseManager
import com.casic.electric.detector.utils.ExcelHub
import com.casic.electric.detector.utils.GpioManager
+import com.casic.electric.detector.utils.LabelDataClass
import com.casic.electric.detector.utils.LocaleConstant
import com.casic.electric.detector.utils.LocationHub
import com.casic.electric.detector.utils.RouteOnMap
@@ -56,13 +66,22 @@
import com.casic.electric.detector.widgets.QueryMarkerDialog
import com.casic.electric.detector.widgets.SamplePopupWindow
import com.google.gson.Gson
+import com.luck.picture.lib.basic.PictureSelector
+import com.luck.picture.lib.config.SelectMimeType
+import com.luck.picture.lib.entity.LocalMedia
+import com.luck.picture.lib.interfaces.OnResultCallbackListener
+import com.pengxh.kt.lite.extensions.appendZero
import com.pengxh.kt.lite.extensions.binding
+import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.createDownloadFileDir
+import com.pengxh.kt.lite.extensions.dateToTimestamp
import com.pengxh.kt.lite.extensions.dp2px
import com.pengxh.kt.lite.extensions.initDialogLayoutParams
import com.pengxh.kt.lite.extensions.isNetworkConnected
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.extensions.timestampToCompleteDate
+import com.pengxh.kt.lite.extensions.timestampToTime
import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.FileDownloadManager
import com.pengxh.kt.lite.utils.LoadState
@@ -78,6 +97,7 @@
import java.io.File
import java.text.DecimalFormat
import java.util.Calendar
+import java.util.Date
import java.util.Timer
import java.util.TimerTask
@@ -456,16 +476,16 @@
Log.d(kTag, "$kTag => $hex")
if (searchDialog.isDetectMarker) {
searchDialog.bindingValue(hex)
-// } else if (installMarkerDialog.isReadMarker) {
-// val markerId = hex.take(20).hexToString()
-// if (markerId.isNumber()) {
-// installMarkerDialog.bindingValue(markerId)
-// }
-// } else if (installSmallMarkerDialog.isReadMarker) {
-// val markerId = hex.take(20).hexToString()
-// if (markerId.isNumber()) {
-// installSmallMarkerDialog.bindingValue(markerId)
-// }
+ } else if (installMarkerDialog.isReadMarker) {
+ val markerId = hex.take(20).hexToString()
+ if (markerId.isNumber()) {
+ installMarkerDialog.bindingValue(markerId)
+ }
+ } else if (installSmallMarkerDialog.isReadMarker) {
+ val markerId = hex.take(20).hexToString()
+ if (markerId.isNumber()) {
+ installSmallMarkerDialog.bindingValue(markerId)
+ }
} else if (isFreeTask) {
val markerId = hex.take(20).hexToString()
if (markerId.isNumber()) {
@@ -847,6 +867,500 @@
var isReadMarker = false
var isInstallMarker = false
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ this.initDialogLayoutParams(1f)
+ setCancelable(false)
+ setCanceledOnTouchOutside(false)
+
+ //初始化数据
+ initDefaultData()
+
+ //返回
+ binding.titleInclude.leftBackView.setOnClickListener {
+ soundPool.autoPause()
+ dismiss()
+ }
+
+ binding.installButton.setOnClickListener {
+ val companyId = SaveKeyValues.getValue(LocaleConstant.USER_COMPANY_ID, "") as String
+
+ val itemPosition = binding.objectAttrInclude.objectTypeSpinner.selectedItemPosition
+ val objectTypeCode = itemPosition + 1
+
+ if (binding.markerAttrInclude.markerIdView.text.isNullOrBlank()) {
+ "标识器ID不能为空,请读标识器".show(context)
+ return@setOnClickListener
+ }
+
+ if (binding.objectAttrInclude.constructDateView.text.isNullOrBlank()) {
+ "请选择建设时间".show(context)
+ return@setOnClickListener
+ }
+
+ if (binding.markerAttrInclude.markerCountView.text.isNullOrBlank()) {
+ "请输入电子标签数量".show(context)
+ return@setOnClickListener
+ }
+
+ //保存默认值
+ "objectCodeView".setDefaultValue(binding.objectAttrInclude.objectCodeView)
+ "objectNameView".setDefaultValue(binding.objectAttrInclude.objectNameView)
+ "inlineNameView".setDefaultValue(binding.objectAttrInclude.inlineNameView)
+ "capacityView".setDefaultValue(binding.objectAttrInclude.capacityView)
+ "transformerSpecView".setDefaultValue(binding.objectAttrInclude.transformerSpecView)
+ "sLengthView".setDefaultValue(binding.objectAttrInclude.sLengthView)
+ "sWidthView".setDefaultValue(binding.objectAttrInclude.sWidthView)
+ "sHeightView".setDefaultValue(binding.objectAttrInclude.sHeightView)
+ "inlineCountView".setDefaultValue(binding.objectAttrInclude.inlineCountView)
+ "outlineCountView".setDefaultValue(binding.objectAttrInclude.outlineCountView)
+ "bottomDepthView".setDefaultValue(binding.objectAttrInclude.bottomDepthView)
+ "rowCountView".setDefaultValue(binding.objectAttrInclude.rowCountView)
+ "rowHoleCountView".setDefaultValue(binding.objectAttrInclude.rowHoleCountView)
+ "coverDepthView".setDefaultValue(binding.objectAttrInclude.coverDepthView)
+ "remainingChannelsView".setDefaultValue(binding.objectAttrInclude.remainingChannelsView)
+ "tieCableView1".setDefaultValue(binding.objectAttrInclude.tieCableView1)
+ "tieCableView2".setDefaultValue(binding.objectAttrInclude.tieCableView2)
+ "jointCountView".setDefaultValue(binding.objectAttrInclude.jointCountView)
+ "casingHoleCountView".setDefaultValue(binding.objectAttrInclude.casingHoleCountView)
+ "casingHoleDiameterView".setDefaultValue(binding.objectAttrInclude.casingHoleDiameterView)
+ "heightView".setDefaultValue(binding.objectAttrInclude.heightView)
+ "lineNumberView".setDefaultValue(binding.objectAttrInclude.lineNumberView)
+ "inspectionUnitView".setDefaultValue(binding.objectAttrInclude.inspectionUnitView)
+ "areaView".setDefaultValue(binding.objectAttrInclude.areaView)
+ "roadView".setDefaultValue(binding.objectAttrInclude.roadView)
+ "objectRemarkView1".setDefaultValue(binding.objectAttrInclude.objectRemarkView1)
+ "objectRemarkView2".setDefaultValue(binding.objectAttrInclude.objectRemarkView2)
+ "objectRemarkView3".setDefaultValue(binding.objectAttrInclude.objectRemarkView3)
+ "ownerView".setDefaultValue(binding.markerAttrInclude.ownerView)
+ "markerDepthView".setDefaultValue(binding.markerAttrInclude.markerDepthView)
+ "markerCountView".setDefaultValue(binding.markerAttrInclude.markerCountView)
+ "remarkView1".setDefaultValue(binding.markerAttrInclude.remarkView1)
+ "remarkView2".setDefaultValue(binding.markerAttrInclude.remarkView2)
+ "remarkView3".setDefaultValue(binding.markerAttrInclude.remarkView3)
+
+ val labelData = LabelDataClass(
+ companyId,
+ objectTypeCode.toString(),
+ binding.objectAttrInclude.objectCodeView.text.toString(),
+ binding.objectAttrInclude.objectNameView.text.toString(),
+ binding.objectAttrInclude.voltageLevelView.text.toString(),
+ binding.objectAttrInclude.objectModeSpinner.selectedItem.toString(),
+ "进线${binding.objectAttrInclude.inlineNameView.text}",
+ binding.objectAttrInclude.wellCoverMaterialSpinner.selectedItem.toString(),
+ "${binding.objectAttrInclude.capacityView.text}KVA",
+ binding.objectAttrInclude.transformerSpecView.text.toString(),
+ "${binding.objectAttrInclude.sLengthView.text}米长 x ${binding.objectAttrInclude.sWidthView.text}米宽 x ${binding.objectAttrInclude.sHeightView.text}米高",
+ binding.objectAttrInclude.inlineCountView.text.toString(),
+ binding.objectAttrInclude.outlineCountView.text.toString(),
+ binding.objectAttrInclude.cabinetTypeSpinner.selectedItem.toString(),
+ binding.objectAttrInclude.bottomDepthView.text.toString(),
+ "${binding.objectAttrInclude.rowCountView.text}排 x ${binding.objectAttrInclude.rowHoleCountView.text}孔",
+ "${binding.objectAttrInclude.coverDepthView.text}米",
+ binding.objectAttrInclude.crossPipeLineView.text.toString(),
+ binding.objectAttrInclude.remainingChannelsView.text.toString(),
+ binding.objectAttrInclude.tieCableView1.text.toString(),
+ binding.objectAttrInclude.tieCableView2.text.toString(),
+ binding.objectAttrInclude.jointCountView.text.toString(),
+ binding.objectAttrInclude.casingMaterialSpinner.selectedItem.toString(),
+ "${binding.objectAttrInclude.casingHoleCountView.text}孔,直径${binding.objectAttrInclude.casingHoleDiameterView.text}毫米",
+ "${binding.objectAttrInclude.heightView.text.toString()}米",
+ binding.objectAttrInclude.lineNumberView.text.toString(),
+ binding.objectAttrInclude.constructDateView.text.toString(),
+ binding.objectAttrInclude.inspectionUnitView.text.toString(),
+ binding.objectAttrInclude.areaView.text.toString(),
+ binding.objectAttrInclude.roadView.text.toString(),
+ binding.objectAttrInclude.objectRemarkView1.text.toString(),
+ binding.objectAttrInclude.objectRemarkView2.text.toString(),
+ binding.objectAttrInclude.objectRemarkView3.text.toString(),
+ binding.markerAttrInclude.markerIdView.text.toString(),
+ binding.markerAttrInclude.markerTypeSpinner.selectedItem.toString(),
+ binding.markerAttrInclude.ownerView.text.toString(),
+ binding.markerAttrInclude.markerDepthView.text.toString(),
+ binding.markerAttrInclude.installTimeView.text.toString(),
+ binding.markerAttrInclude.lngView.text.toString(),
+ binding.markerAttrInclude.latView.text.toString(),
+ binding.markerAttrInclude.markerCountView.text.toString(),
+ binding.markerAttrInclude.remarkView1.text.toString(),
+ binding.markerAttrInclude.remarkView2.text.toString(),
+ binding.markerAttrInclude.remarkView3.text.toString(),
+ realPaths
+ )
+
+ //先存本地
+ lifecycleScope.launch {
+ withContext(Dispatchers.IO) {
+ DataBaseManager.get.insertLabel(labelData)
+ }
+ }
+
+ //再存服务器
+ taskViewModel.installLabel(labelData)
+ }
+
+ //读标识器
+ binding.readMarkerButton.setOnClickListener {
+ LoadingDialogHub.show(this@MainActivity, "标识器读取中,请稍后...")
+ binding.readMarkerButton.isEnabled = false
+
+ isReadMarker = true
+
+ //调高串口电位
+ gpioManager.setGpioHigh("18")
+
+ soundPool.play(soundResourceId, 1f, 1f, 0, -1, 1f)
+
+ out.write('2'.code)
+ out.flush()
+ }
+ }
+
+ fun bindingValue(markerId: String) {
+ LoadingDialogHub.dismiss()
+ soundPool.autoPause()
+ binding.readMarkerButton.isEnabled = true
+
+ //降低串口电位
+ gpioManager.setGpioLow("18")
+
+ isReadMarker = false
+ binding.markerAttrInclude.markerIdView.text = markerId
+ }
+
+ private fun initDefaultData() {
+ binding.titleInclude.titleView.text = "安装新标识器"
+ binding.titleInclude.titleView.setTextColor(R.color.themeColor.convertColor(context))
+
+ imageAdapter = EditableImageAdapter(context, 3, 3)
+ binding.cameraInclude.addImageRecyclerView.adapter = imageAdapter
+
+ //设置上次填写过的值
+ binding.objectAttrInclude.objectCodeView.setText("objectCodeView".getDefaultValue())
+ binding.objectAttrInclude.objectNameView.setText("objectNameView".getDefaultValue())
+ binding.objectAttrInclude.inlineNameView.setText("inlineNameView".getDefaultValue())
+ binding.objectAttrInclude.capacityView.setText("capacityView".getDefaultValue())
+ binding.objectAttrInclude.transformerSpecView.setText("transformerSpecView".getDefaultValue())
+ binding.objectAttrInclude.sLengthView.setText("sLengthView".getDefaultValue())
+ binding.objectAttrInclude.sWidthView.setText("sWidthView".getDefaultValue())
+ binding.objectAttrInclude.sHeightView.setText("sHeightView".getDefaultValue())
+ binding.objectAttrInclude.inlineCountView.setText("inlineCountView".getDefaultValue())
+ binding.objectAttrInclude.outlineCountView.setText("outlineCountView".getDefaultValue())
+ binding.objectAttrInclude.bottomDepthView.setText("bottomDepthView".getDefaultValue())
+ binding.objectAttrInclude.rowCountView.setText("rowCountView".getDefaultValue())
+ binding.objectAttrInclude.rowHoleCountView.setText("rowHoleCountView".getDefaultValue())
+ binding.objectAttrInclude.coverDepthView.setText("coverDepthView".getDefaultValue())
+ binding.objectAttrInclude.remainingChannelsView.setText("remainingChannelsView".getDefaultValue())
+ binding.objectAttrInclude.tieCableView1.setText("tieCableView1".getDefaultValue())
+ binding.objectAttrInclude.tieCableView2.setText("tieCableView2".getDefaultValue())
+ binding.objectAttrInclude.jointCountView.setText("jointCountView".getDefaultValue())
+ binding.objectAttrInclude.casingHoleCountView.setText("casingHoleCountView".getDefaultValue())
+ binding.objectAttrInclude.casingHoleDiameterView.setText("casingHoleDiameterView".getDefaultValue())
+ binding.objectAttrInclude.heightView.setText("heightView".getDefaultValue())
+ binding.objectAttrInclude.lineNumberView.setText("lineNumberView".getDefaultValue())
+ binding.objectAttrInclude.inspectionUnitView.setText("inspectionUnitView".getDefaultValue())
+ binding.objectAttrInclude.areaView.setText("areaView".getDefaultValue())
+ binding.objectAttrInclude.roadView.setText("roadView".getDefaultValue())
+ binding.objectAttrInclude.objectRemarkView1.setText("objectRemarkView1".getDefaultValue())
+ binding.objectAttrInclude.objectRemarkView2.setText("objectRemarkView2".getDefaultValue())
+ binding.objectAttrInclude.objectRemarkView3.setText("objectRemarkView3".getDefaultValue())
+ binding.markerAttrInclude.ownerView.setText("ownerView".getDefaultValue())
+ binding.markerAttrInclude.markerDepthView.setText("markerDepthView".getDefaultValue())
+ binding.markerAttrInclude.markerCountView.setText("markerCountView".getDefaultValue())
+ binding.markerAttrInclude.remarkView1.setText("remarkView1".getDefaultValue())
+ binding.markerAttrInclude.remarkView2.setText("remarkView2".getDefaultValue())
+ binding.markerAttrInclude.remarkView3.setText("remarkView3".getDefaultValue())
+
+ /**************************************************************************************/
+ binding.objectAttrInclude.objectTypeSpinner.show(
+ this@MainActivity, LocaleConstant.CONTENT_ARRAY, 0
+ )
+ binding.objectAttrInclude.objectTypeSpinner.onItemSelectedListener =
+ object : AdapterView.OnItemSelectedListener {
+ override fun onItemSelected(
+ parent: AdapterView<*>?, view: View?, position: Int, id: Long
+ ) {
+ when (position) {
+ 0 -> {
+ //选择电缆井
+ binding.objectAttrInclude.objectModeView.text = "类型:"
+ binding.objectAttrInclude.wellCoverMaterialView.text = "井盖材质:"
+ binding.objectAttrInclude.bottomDepthNameView.text = "井深:"
+ setLayoutVisibility(
+ View.VISIBLE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE
+ )
+ binding.objectAttrInclude.objectModeSpinner.show(
+ this@MainActivity, LocaleConstant.OBJECT_MODE_ARRAY, 0
+ )
+ binding.objectAttrInclude.wellCoverMaterialSpinner.show(
+ this@MainActivity, LocaleConstant.WELL_COVER_MATERIAL_ARRAY_1, 0
+ )
+ }
+
+ 1 -> {
+ //选择电缆通道
+ binding.objectAttrInclude.bottomDepthNameView.text = "底部深度:"
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE
+ )
+ }
+
+ 2 -> {
+ //选择配电房
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE
+ )
+ }
+
+ 3 -> {
+ //选择开关站
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE
+ )
+ }
+
+ 4 -> {
+ //选择台区
+ binding.objectAttrInclude.objectModeView.text = "变压器型号:"
+ setLayoutVisibility(
+ View.VISIBLE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE
+ )
+ binding.objectAttrInclude.objectModeSpinner.show(
+ this@MainActivity, arrayOf("变压器 KVA"), 0
+ )
+ }
+
+ 5 -> {
+ //选择杆塔
+ binding.objectAttrInclude.wellCoverMaterialView.text = "对象材质:"
+ setLayoutVisibility(
+ View.GONE,
+ View.GONE,
+ View.VISIBLE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.GONE,
+ View.VISIBLE
+ )
+ binding.objectAttrInclude.wellCoverMaterialSpinner.show(
+ this@MainActivity, LocaleConstant.WELL_COVER_MATERIAL_ARRAY_2, 0
+ )
+ }
+ }
+ }
+
+ override fun onNothingSelected(parent: AdapterView<*>?) {
+
+ }
+ }
+
+ binding.objectAttrInclude.cabinetTypeSpinner.show(
+ this@MainActivity, LocaleConstant.CABINET_TYPE_ARRAY, 0
+ )
+ binding.objectAttrInclude.casingMaterialSpinner.show(
+ this@MainActivity, LocaleConstant.PIPE_MATERIAL_ARRAY, 0
+ )
+ binding.markerAttrInclude.markerTypeSpinner.show(
+ this@MainActivity, LocaleConstant.MARKER_TYPE_ARRAY, 0
+ )
+
+ //电压等级-多选
+ binding.objectAttrInclude.voltageLevelView.setOnClickListener {
+ AlertDialog.Builder(context).setCancelable(false).setIcon(R.mipmap.ic_launcher)
+ .setTitle("请选择电压等级").setMultiChoiceItems(
+ LocaleConstant.VOLTAGE_LEVEL_ARRAY, LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY
+ ) { _, which, isChecked ->
+ LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[which] = isChecked
+ }.setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
+ .setPositiveButton("确定") { _, _ ->
+ val temp = java.util.ArrayList()
+ LocaleConstant.VOLTAGE_LEVEL_ARRAY.forEachIndexed { index, s ->
+ if (LocaleConstant.VOLTAGE_LEVEL_STATE_ARRAY[index]) {
+ temp.add(s)
+ }
+ }
+
+ binding.objectAttrInclude.voltageLevelView.text = temp.reformat()
+ }.show()
+ }
+
+ //交叉管道类型-多选
+ binding.objectAttrInclude.crossPipeLineView.setOnClickListener {
+ AlertDialog.Builder(context).setCancelable(false).setIcon(R.mipmap.ic_launcher)
+ .setTitle("请选择交叉管道类型").setMultiChoiceItems(
+ LocaleConstant.CROSS_PIPE_ARRAY, LocaleConstant.CROSS_PIPE_STATE_ARRAY
+ ) { _, which, isChecked ->
+ LocaleConstant.CROSS_PIPE_STATE_ARRAY[which] = isChecked
+ }.setNegativeButton("取消") { dialog, _ -> dialog?.dismiss() }
+ .setPositiveButton("确定") { _, _ ->
+ val temp = java.util.ArrayList()
+ LocaleConstant.CROSS_PIPE_ARRAY.forEachIndexed { index, s ->
+ if (LocaleConstant.CROSS_PIPE_STATE_ARRAY[index]) {
+ temp.add(s)
+ }
+ }
+
+ binding.objectAttrInclude.crossPipeLineView.text = temp.reformat()
+ }.show()
+ }
+
+ binding.objectAttrInclude.constructDateView.setOnClickListener {
+ val datePicker = DatePickerDialog(
+ context,
+ null,
+ calendar.get(Calendar.YEAR),
+ calendar.get(Calendar.MONTH),
+ calendar.get(Calendar.DAY_OF_MONTH)
+ )
+ datePicker.show()
+
+ datePicker.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener {
+ val year = datePicker.datePicker.year
+ val month = datePicker.datePicker.month + 1
+ val day = datePicker.datePicker.dayOfMonth
+ val selectedDate = String.format(
+ "%s-%s-%s", year, month.appendZero(), day.appendZero()
+ )
+
+ //当前时间
+ val current = System.currentTimeMillis().timestampToTime()
+ val today = "$selectedDate $current".dateToTimestamp()
+ if (Date(today).after(Date())) {
+ "建设年代不能早于当前日期".show(context)
+ } else {
+ datePicker.dismiss()
+ binding.objectAttrInclude.constructDateView.text = selectedDate
+ }
+ }
+ }
+
+ binding.markerAttrInclude.installTimeView.text =
+ System.currentTimeMillis().timestampToCompleteDate()
+ locationHub.getCurrentLocation(true, object : ILocationListener {
+ override fun onAMapLocationGet(location: AMapLocation?) {
+ if (location != null) {
+ binding.markerAttrInclude.lngView.text = location.longitude.toString()
+ binding.markerAttrInclude.latView.text = location.latitude.toString()
+ } else {
+ "当前位置信号差,无法获取定位".show(context)
+ }
+ }
+ })
+
+ imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+ PictureSelector.create(this@MainActivity).openCamera(SelectMimeType.ofImage())
+ .forResult(object : OnResultCallbackListener {
+ override fun onResult(result: java.util.ArrayList?) {
+ if (result == null) {
+ "拍照失败,请重试".show(context)
+ return
+ }
+ analyticalSelectResult(result[0])
+ }
+
+ override fun onCancel() {
+
+ }
+ })
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(context)
+ } else {
+ context.navigatePageTo(position, realPaths)
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imageAdapter.deleteImage(position)
+ }
+ })
+ }
+
+ private fun analyticalSelectResult(result: LocalMedia) {
+ //压缩图片
+ result.realPath.compressImage(context, object : OnImageCompressListener {
+ override fun onSuccess(file: File) {
+ realPaths.add(file.absolutePath)
+ imageAdapter.setupImage(realPaths)
+ }
+
+ override fun onError(e: Throwable) {
+ e.printStackTrace()
+ }
+ })
+ }
+
+ //根据选择类型控制界面某些区域显隐
+ private fun setLayoutVisibility(vararg args: Int) {
+ binding.objectAttrInclude.objectModeLayout.visibility = args[0]
+ binding.objectAttrInclude.inlineNameLayout.visibility = args[1]
+ binding.objectAttrInclude.wellCoverMaterialLayout.visibility = args[2]
+ binding.objectAttrInclude.capacityLayout.visibility = args[3]
+ binding.objectAttrInclude.sizeLayout.visibility = args[4]
+ binding.objectAttrInclude.inlineCountLayout.visibility = args[5]
+ binding.objectAttrInclude.outlineCountLayout.visibility = args[6]
+ binding.objectAttrInclude.wellDepthLayout.visibility = args[7]
+ binding.objectAttrInclude.pipeLineLayout.visibility = args[8]
+ binding.objectAttrInclude.jointCountLayout.visibility = args[9]
+ binding.objectAttrInclude.heightLayout.visibility = args[10]
+ }
}
/**安装小标签对话框******************************************************************************/
@@ -859,6 +1373,29 @@
var isReadMarker = false
var isInstallMarker = false
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ this.initDialogLayoutParams(1f)
+ setCancelable(false)
+ setCanceledOnTouchOutside(false)
+
+ //返回
+ binding.titleInclude.leftBackView.setOnClickListener {
+ dismiss()
+ }
+ }
+
+ fun bindingValue(markerId: String) {
+ LoadingDialogHub.dismiss()
+ soundPool.autoPause()
+ binding.readMarkerButton.isEnabled = true
+
+ //降低串口电位
+ gpioManager.setGpioLow("18")
+
+ isReadMarker = false
+ }
}
/**探测标识器对话框******************************************************************************/
@@ -976,9 +1513,12 @@
degreeCache["lastDegree"]?.apply {
val animation = RotateAnimation(
- this, degree,
- Animation.RELATIVE_TO_SELF, 0.5f,
- Animation.RELATIVE_TO_SELF, 0.5f
+ this,
+ degree,
+ Animation.RELATIVE_TO_SELF,
+ 0.5f,
+ Animation.RELATIVE_TO_SELF,
+ 0.5f
)
animation.duration = 0
animation.fillAfter = true
diff --git a/app/src/main/java/com/casic/electric/detector/widgets/QueryMarkerDialog.kt b/app/src/main/java/com/casic/electric/detector/widgets/QueryMarkerDialog.kt
index 0d9f58b..169147b 100644
--- a/app/src/main/java/com/casic/electric/detector/widgets/QueryMarkerDialog.kt
+++ b/app/src/main/java/com/casic/electric/detector/widgets/QueryMarkerDialog.kt
@@ -10,10 +10,10 @@
import android.widget.Spinner
import com.casic.electric.detector.R
import com.casic.electric.detector.databinding.DialogQueryMarkerBinding
-import com.casic.electric.detector.extensions.appendZero
import com.casic.electric.detector.utils.DataBaseManager
import com.casic.electric.detector.utils.LocaleConstant
import com.casic.electric.detector.utils.QueryMode
+import com.pengxh.kt.lite.extensions.appendZero
import com.pengxh.kt.lite.extensions.binding
import com.pengxh.kt.lite.extensions.initDialogLayoutParams
import kotlinx.coroutines.CoroutineScope
@@ -82,7 +82,6 @@
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
this.initDialogLayoutParams(0.8f)
- setContentView(R.layout.dialog_query_marker)
setCanceledOnTouchOutside(false)
initView()
}
diff --git a/app/src/main/res/layout/activity_install_label.xml b/app/src/main/res/layout/activity_install_label.xml
deleted file mode 100644
index eddafd4..0000000
--- a/app/src/main/res/layout/activity_install_label.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_install_marker.xml b/app/src/main/res/layout/dialog_install_marker.xml
index eddafd4..64ab195 100644
--- a/app/src/main/res/layout/dialog_install_marker.xml
+++ b/app/src/main/res/layout/dialog_install_marker.xml
@@ -76,7 +76,7 @@
android:background="@color/lib_line_color" />