diff --git a/app/src/main/assets/DeviceCommand.json b/app/src/main/assets/DeviceCommand.json new file mode 100644 index 0000000..8dd80f4 --- /dev/null +++ b/app/src/main/assets/DeviceCommand.json @@ -0,0 +1,82 @@ +[ + { + "type": "确认劳保用品齐全", + "command": "AA 01 00 93 11 00 A5" + }, + { + "type": "完成施工交底", + "command": "AA 01 00 93 05 00 99" + }, + { + "type": "完成井下气体检测", + "command": "AA 01 00 93 19 00 AD" + }, + { + "type": "未通风严禁进入有限空间", + "command": "AA 01 00 93 1A 00 AE" + }, + { + "type": "甲烷报警", + "command": "AA 01 00 93 02 00 96" + }, + { + "type": "不安全行为报警", + "command": "AA 01 00 93 01 00 95" + }, + { + "type": "周界入侵报警指令", + "command": "AA 01 00 93 00 00 94" + }, + { + "type": "吸烟报警", + "command": "AA 01 00 93 03 00 97" + }, + { + "type": "开始施工交底", + "command": "AA 01 00 93 04 00 98" + }, + { + "type": "施工前环境检测", + "command": "AA 01 00 93 06 00 9A" + }, + { + "type": "确认现场鼓风机设备", + "command": "AA 01 00 93 07 00 9B" + }, + { + "type": "确认现场通风完好", + "command": "AA 01 00 93 08 00 9C" + }, + { + "type": "确认现场气体环境正常", + "command": "AA 01 00 93 09 00 9D" + }, + { + "type": "施工前劳保用品检测", + "command": "AA 01 00 93 0A 00 9E" + }, + { + "type": "确认人员配备气体检测设备", + "command": "AA 01 00 93 0C 00 A0" + }, + { + "type": "确认人员配备呼吸防护用品", + "command": "AA 01 00 93 0D 00 A1" + }, + { + "type": "确认人员配备安全帽", + "command": "AA 01 00 93 0E 00 A2" + }, + { + "type": "确认现场应急救援设备完好", + "command": "AA 01 00 93 10 00 A4" + }, + { + "type": "下井作业必须有监护人员", + "command": "AA 01 00 93 13 00 A7" + }, + { + "type": "井内气体浓度超标", + "command": "AA 01 00 93 14 00 A8" + } +] \ No newline at end of file diff --git a/app/src/main/assets/DeviceCommand.json b/app/src/main/assets/DeviceCommand.json new file mode 100644 index 0000000..8dd80f4 --- /dev/null +++ b/app/src/main/assets/DeviceCommand.json @@ -0,0 +1,82 @@ +[ + { + "type": "确认劳保用品齐全", + "command": "AA 01 00 93 11 00 A5" + }, + { + "type": "完成施工交底", + "command": "AA 01 00 93 05 00 99" + }, + { + "type": "完成井下气体检测", + "command": "AA 01 00 93 19 00 AD" + }, + { + "type": "未通风严禁进入有限空间", + "command": "AA 01 00 93 1A 00 AE" + }, + { + "type": "甲烷报警", + "command": "AA 01 00 93 02 00 96" + }, + { + "type": "不安全行为报警", + "command": "AA 01 00 93 01 00 95" + }, + { + "type": "周界入侵报警指令", + "command": "AA 01 00 93 00 00 94" + }, + { + "type": "吸烟报警", + "command": "AA 01 00 93 03 00 97" + }, + { + "type": "开始施工交底", + "command": "AA 01 00 93 04 00 98" + }, + { + "type": "施工前环境检测", + "command": "AA 01 00 93 06 00 9A" + }, + { + "type": "确认现场鼓风机设备", + "command": "AA 01 00 93 07 00 9B" + }, + { + "type": "确认现场通风完好", + "command": "AA 01 00 93 08 00 9C" + }, + { + "type": "确认现场气体环境正常", + "command": "AA 01 00 93 09 00 9D" + }, + { + "type": "施工前劳保用品检测", + "command": "AA 01 00 93 0A 00 9E" + }, + { + "type": "确认人员配备气体检测设备", + "command": "AA 01 00 93 0C 00 A0" + }, + { + "type": "确认人员配备呼吸防护用品", + "command": "AA 01 00 93 0D 00 A1" + }, + { + "type": "确认人员配备安全帽", + "command": "AA 01 00 93 0E 00 A2" + }, + { + "type": "确认现场应急救援设备完好", + "command": "AA 01 00 93 10 00 A4" + }, + { + "type": "下井作业必须有监护人员", + "command": "AA 01 00 93 13 00 A7" + }, + { + "type": "井内气体浓度超标", + "command": "AA 01 00 93 14 00 A8" + } +] \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt index 7841962..ced912f 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt @@ -41,6 +41,16 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +fun String.convert(): ByteArray { + //AA 01 00 93 00 00 94 + val strings = this.split(" ") + val command = ByteArray(strings.size) + strings.forEachIndexed { index, s -> + command[index] = s.toInt(16).toByte() + } + return command +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/assets/DeviceCommand.json b/app/src/main/assets/DeviceCommand.json new file mode 100644 index 0000000..8dd80f4 --- /dev/null +++ b/app/src/main/assets/DeviceCommand.json @@ -0,0 +1,82 @@ +[ + { + "type": "确认劳保用品齐全", + "command": "AA 01 00 93 11 00 A5" + }, + { + "type": "完成施工交底", + "command": "AA 01 00 93 05 00 99" + }, + { + "type": "完成井下气体检测", + "command": "AA 01 00 93 19 00 AD" + }, + { + "type": "未通风严禁进入有限空间", + "command": "AA 01 00 93 1A 00 AE" + }, + { + "type": "甲烷报警", + "command": "AA 01 00 93 02 00 96" + }, + { + "type": "不安全行为报警", + "command": "AA 01 00 93 01 00 95" + }, + { + "type": "周界入侵报警指令", + "command": "AA 01 00 93 00 00 94" + }, + { + "type": "吸烟报警", + "command": "AA 01 00 93 03 00 97" + }, + { + "type": "开始施工交底", + "command": "AA 01 00 93 04 00 98" + }, + { + "type": "施工前环境检测", + "command": "AA 01 00 93 06 00 9A" + }, + { + "type": "确认现场鼓风机设备", + "command": "AA 01 00 93 07 00 9B" + }, + { + "type": "确认现场通风完好", + "command": "AA 01 00 93 08 00 9C" + }, + { + "type": "确认现场气体环境正常", + "command": "AA 01 00 93 09 00 9D" + }, + { + "type": "施工前劳保用品检测", + "command": "AA 01 00 93 0A 00 9E" + }, + { + "type": "确认人员配备气体检测设备", + "command": "AA 01 00 93 0C 00 A0" + }, + { + "type": "确认人员配备呼吸防护用品", + "command": "AA 01 00 93 0D 00 A1" + }, + { + "type": "确认人员配备安全帽", + "command": "AA 01 00 93 0E 00 A2" + }, + { + "type": "确认现场应急救援设备完好", + "command": "AA 01 00 93 10 00 A4" + }, + { + "type": "下井作业必须有监护人员", + "command": "AA 01 00 93 13 00 A7" + }, + { + "type": "井内气体浓度超标", + "command": "AA 01 00 93 14 00 A8" + } +] \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt index 7841962..ced912f 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt @@ -41,6 +41,16 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +fun String.convert(): ByteArray { + //AA 01 00 93 00 00 94 + val strings = this.split(" ") + val command = ByteArray(strings.size) + strings.forEachIndexed { index, s -> + command[index] = s.toInt(16).toByte() + } + return command +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/CommandModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/CommandModel.java new file mode 100644 index 0000000..8fc5389 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/model/CommandModel.java @@ -0,0 +1,23 @@ +package com.casic.br.operationsite.test.model; + +public class CommandModel { + + private String type; + private String command; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getCommand() { + return command; + } + + public void setCommand(String command) { + this.command = command; + } +} diff --git a/app/src/main/assets/DeviceCommand.json b/app/src/main/assets/DeviceCommand.json new file mode 100644 index 0000000..8dd80f4 --- /dev/null +++ b/app/src/main/assets/DeviceCommand.json @@ -0,0 +1,82 @@ +[ + { + "type": "确认劳保用品齐全", + "command": "AA 01 00 93 11 00 A5" + }, + { + "type": "完成施工交底", + "command": "AA 01 00 93 05 00 99" + }, + { + "type": "完成井下气体检测", + "command": "AA 01 00 93 19 00 AD" + }, + { + "type": "未通风严禁进入有限空间", + "command": "AA 01 00 93 1A 00 AE" + }, + { + "type": "甲烷报警", + "command": "AA 01 00 93 02 00 96" + }, + { + "type": "不安全行为报警", + "command": "AA 01 00 93 01 00 95" + }, + { + "type": "周界入侵报警指令", + "command": "AA 01 00 93 00 00 94" + }, + { + "type": "吸烟报警", + "command": "AA 01 00 93 03 00 97" + }, + { + "type": "开始施工交底", + "command": "AA 01 00 93 04 00 98" + }, + { + "type": "施工前环境检测", + "command": "AA 01 00 93 06 00 9A" + }, + { + "type": "确认现场鼓风机设备", + "command": "AA 01 00 93 07 00 9B" + }, + { + "type": "确认现场通风完好", + "command": "AA 01 00 93 08 00 9C" + }, + { + "type": "确认现场气体环境正常", + "command": "AA 01 00 93 09 00 9D" + }, + { + "type": "施工前劳保用品检测", + "command": "AA 01 00 93 0A 00 9E" + }, + { + "type": "确认人员配备气体检测设备", + "command": "AA 01 00 93 0C 00 A0" + }, + { + "type": "确认人员配备呼吸防护用品", + "command": "AA 01 00 93 0D 00 A1" + }, + { + "type": "确认人员配备安全帽", + "command": "AA 01 00 93 0E 00 A2" + }, + { + "type": "确认现场应急救援设备完好", + "command": "AA 01 00 93 10 00 A4" + }, + { + "type": "下井作业必须有监护人员", + "command": "AA 01 00 93 13 00 A7" + }, + { + "type": "井内气体浓度超标", + "command": "AA 01 00 93 14 00 A8" + } +] \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt index 7841962..ced912f 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt @@ -41,6 +41,16 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +fun String.convert(): ByteArray { + //AA 01 00 93 00 00 94 + val strings = this.split(" ") + val command = ByteArray(strings.size) + strings.forEachIndexed { index, s -> + command[index] = s.toInt(16).toByte() + } + return command +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/CommandModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/CommandModel.java new file mode 100644 index 0000000..8fc5389 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/model/CommandModel.java @@ -0,0 +1,23 @@ +package com.casic.br.operationsite.test.model; + +public class CommandModel { + + private String type; + private String command; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getCommand() { + return command; + } + + public void setCommand(String command) { + this.command = command; + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt index 404f0d6..18e43a3 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt @@ -14,6 +14,7 @@ import com.casic.br.operationsite.test.vm.AirViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel import com.casic.br.operationsite.test.vm.SceneViewModel +import com.casic.br.operationsite.test.widget.AllCommandSheet import com.casic.br.operationsite.test.widget.BottomControlSheet import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.dp2px @@ -42,6 +43,10 @@ constructionCheckViewModel.setCurrentPhase(LocaleConstant.AI_BASE_IP, "brief") } + binding.showOtherCommandButton.setOnClickListener { + AllCommandSheet(this).show() + } + binding.showControlViewButton.setOnClickListener { BottomControlSheet(this).show() } diff --git a/app/src/main/assets/DeviceCommand.json b/app/src/main/assets/DeviceCommand.json new file mode 100644 index 0000000..8dd80f4 --- /dev/null +++ b/app/src/main/assets/DeviceCommand.json @@ -0,0 +1,82 @@ +[ + { + "type": "确认劳保用品齐全", + "command": "AA 01 00 93 11 00 A5" + }, + { + "type": "完成施工交底", + "command": "AA 01 00 93 05 00 99" + }, + { + "type": "完成井下气体检测", + "command": "AA 01 00 93 19 00 AD" + }, + { + "type": "未通风严禁进入有限空间", + "command": "AA 01 00 93 1A 00 AE" + }, + { + "type": "甲烷报警", + "command": "AA 01 00 93 02 00 96" + }, + { + "type": "不安全行为报警", + "command": "AA 01 00 93 01 00 95" + }, + { + "type": "周界入侵报警指令", + "command": "AA 01 00 93 00 00 94" + }, + { + "type": "吸烟报警", + "command": "AA 01 00 93 03 00 97" + }, + { + "type": "开始施工交底", + "command": "AA 01 00 93 04 00 98" + }, + { + "type": "施工前环境检测", + "command": "AA 01 00 93 06 00 9A" + }, + { + "type": "确认现场鼓风机设备", + "command": "AA 01 00 93 07 00 9B" + }, + { + "type": "确认现场通风完好", + "command": "AA 01 00 93 08 00 9C" + }, + { + "type": "确认现场气体环境正常", + "command": "AA 01 00 93 09 00 9D" + }, + { + "type": "施工前劳保用品检测", + "command": "AA 01 00 93 0A 00 9E" + }, + { + "type": "确认人员配备气体检测设备", + "command": "AA 01 00 93 0C 00 A0" + }, + { + "type": "确认人员配备呼吸防护用品", + "command": "AA 01 00 93 0D 00 A1" + }, + { + "type": "确认人员配备安全帽", + "command": "AA 01 00 93 0E 00 A2" + }, + { + "type": "确认现场应急救援设备完好", + "command": "AA 01 00 93 10 00 A4" + }, + { + "type": "下井作业必须有监护人员", + "command": "AA 01 00 93 13 00 A7" + }, + { + "type": "井内气体浓度超标", + "command": "AA 01 00 93 14 00 A8" + } +] \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt index 7841962..ced912f 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt @@ -41,6 +41,16 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +fun String.convert(): ByteArray { + //AA 01 00 93 00 00 94 + val strings = this.split(" ") + val command = ByteArray(strings.size) + strings.forEachIndexed { index, s -> + command[index] = s.toInt(16).toByte() + } + return command +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/CommandModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/CommandModel.java new file mode 100644 index 0000000..8fc5389 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/model/CommandModel.java @@ -0,0 +1,23 @@ +package com.casic.br.operationsite.test.model; + +public class CommandModel { + + private String type; + private String command; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getCommand() { + return command; + } + + public void setCommand(String command) { + this.command = command; + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt index 404f0d6..18e43a3 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt @@ -14,6 +14,7 @@ import com.casic.br.operationsite.test.vm.AirViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel import com.casic.br.operationsite.test.vm.SceneViewModel +import com.casic.br.operationsite.test.widget.AllCommandSheet import com.casic.br.operationsite.test.widget.BottomControlSheet import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.dp2px @@ -42,6 +43,10 @@ constructionCheckViewModel.setCurrentPhase(LocaleConstant.AI_BASE_IP, "brief") } + binding.showOtherCommandButton.setOnClickListener { + AllCommandSheet(this).show() + } + binding.showControlViewButton.setOnClickListener { BottomControlSheet(this).show() } diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt index db3d72b..cfdd73d 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt @@ -19,6 +19,7 @@ import com.casic.br.operationsite.test.vm.AlarmViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel import com.casic.br.operationsite.test.vm.WorkSiteViewModel +import com.casic.br.operationsite.test.widget.AllCommandSheet import com.casic.br.operationsite.test.widget.BottomControlSheet import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -155,6 +156,10 @@ constructionCheckViewModel.setCurrentPhase(LocaleConstant.AI_BASE_IP, "in_operation") } + binding.showOtherCommandButton.setOnClickListener { + AllCommandSheet(this).show() + } + binding.showControlViewButton.setOnClickListener { BottomControlSheet(this).show() } diff --git a/app/src/main/assets/DeviceCommand.json b/app/src/main/assets/DeviceCommand.json new file mode 100644 index 0000000..8dd80f4 --- /dev/null +++ b/app/src/main/assets/DeviceCommand.json @@ -0,0 +1,82 @@ +[ + { + "type": "确认劳保用品齐全", + "command": "AA 01 00 93 11 00 A5" + }, + { + "type": "完成施工交底", + "command": "AA 01 00 93 05 00 99" + }, + { + "type": "完成井下气体检测", + "command": "AA 01 00 93 19 00 AD" + }, + { + "type": "未通风严禁进入有限空间", + "command": "AA 01 00 93 1A 00 AE" + }, + { + "type": "甲烷报警", + "command": "AA 01 00 93 02 00 96" + }, + { + "type": "不安全行为报警", + "command": "AA 01 00 93 01 00 95" + }, + { + "type": "周界入侵报警指令", + "command": "AA 01 00 93 00 00 94" + }, + { + "type": "吸烟报警", + "command": "AA 01 00 93 03 00 97" + }, + { + "type": "开始施工交底", + "command": "AA 01 00 93 04 00 98" + }, + { + "type": "施工前环境检测", + "command": "AA 01 00 93 06 00 9A" + }, + { + "type": "确认现场鼓风机设备", + "command": "AA 01 00 93 07 00 9B" + }, + { + "type": "确认现场通风完好", + "command": "AA 01 00 93 08 00 9C" + }, + { + "type": "确认现场气体环境正常", + "command": "AA 01 00 93 09 00 9D" + }, + { + "type": "施工前劳保用品检测", + "command": "AA 01 00 93 0A 00 9E" + }, + { + "type": "确认人员配备气体检测设备", + "command": "AA 01 00 93 0C 00 A0" + }, + { + "type": "确认人员配备呼吸防护用品", + "command": "AA 01 00 93 0D 00 A1" + }, + { + "type": "确认人员配备安全帽", + "command": "AA 01 00 93 0E 00 A2" + }, + { + "type": "确认现场应急救援设备完好", + "command": "AA 01 00 93 10 00 A4" + }, + { + "type": "下井作业必须有监护人员", + "command": "AA 01 00 93 13 00 A7" + }, + { + "type": "井内气体浓度超标", + "command": "AA 01 00 93 14 00 A8" + } +] \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt index 7841962..ced912f 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt @@ -41,6 +41,16 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +fun String.convert(): ByteArray { + //AA 01 00 93 00 00 94 + val strings = this.split(" ") + val command = ByteArray(strings.size) + strings.forEachIndexed { index, s -> + command[index] = s.toInt(16).toByte() + } + return command +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/CommandModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/CommandModel.java new file mode 100644 index 0000000..8fc5389 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/model/CommandModel.java @@ -0,0 +1,23 @@ +package com.casic.br.operationsite.test.model; + +public class CommandModel { + + private String type; + private String command; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getCommand() { + return command; + } + + public void setCommand(String command) { + this.command = command; + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt index 404f0d6..18e43a3 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt @@ -14,6 +14,7 @@ import com.casic.br.operationsite.test.vm.AirViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel import com.casic.br.operationsite.test.vm.SceneViewModel +import com.casic.br.operationsite.test.widget.AllCommandSheet import com.casic.br.operationsite.test.widget.BottomControlSheet import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.dp2px @@ -42,6 +43,10 @@ constructionCheckViewModel.setCurrentPhase(LocaleConstant.AI_BASE_IP, "brief") } + binding.showOtherCommandButton.setOnClickListener { + AllCommandSheet(this).show() + } + binding.showControlViewButton.setOnClickListener { BottomControlSheet(this).show() } diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt index db3d72b..cfdd73d 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt @@ -19,6 +19,7 @@ import com.casic.br.operationsite.test.vm.AlarmViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel import com.casic.br.operationsite.test.vm.WorkSiteViewModel +import com.casic.br.operationsite.test.widget.AllCommandSheet import com.casic.br.operationsite.test.widget.BottomControlSheet import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -155,6 +156,10 @@ constructionCheckViewModel.setCurrentPhase(LocaleConstant.AI_BASE_IP, "in_operation") } + binding.showOtherCommandButton.setOnClickListener { + AllCommandSheet(this).show() + } + binding.showControlViewButton.setOnClickListener { BottomControlSheet(this).show() } diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt index b78d55c..f473f27 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt @@ -21,6 +21,7 @@ import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel import com.casic.br.operationsite.test.vm.SceneViewModel import com.casic.br.operationsite.test.vm.UploadFileViewModel +import com.casic.br.operationsite.test.widget.AllCommandSheet import com.casic.br.operationsite.test.widget.BottomControlSheet import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -92,6 +93,10 @@ } } + binding.showOtherCommandButton.setOnClickListener { + AllCommandSheet(this).show() + } + binding.showControlViewButton.setOnClickListener { BottomControlSheet(this).show() } @@ -158,6 +163,7 @@ if (path.isNotBlank()) { val map = HashMap() map["id"] = RuntimeCache.uploadFileTaskId + map["deviceCode"] = "YTJ_010002" map["imageId"] = UUID.randomUUID().toString() map["scenario"] = "before_operation_protection" map["image"] = path @@ -215,8 +221,8 @@ when (recyclerViewImages.size) { 1 -> binding.stepView.text = "稍后开始检查第二项:安全帽,请准备" 2 -> binding.stepView.text = "稍后开始检查第三项:灭火器,请准备" - 3 -> binding.stepView.text = "稍后开始检查第四项:鼓风机,请准备" - 4 -> binding.stepView.text = "稍后开始检查第五项:警示牌,请准备" + 3 -> binding.stepView.text = "稍后开始检查第四项:警示牌,请准备" + 4 -> binding.stepView.text = "稍后开始检查第五项:鼓风机,请准备" 5 -> AlertControlDialog.Builder() .setContext(this) .setTitle("温馨提示") diff --git a/app/src/main/assets/DeviceCommand.json b/app/src/main/assets/DeviceCommand.json new file mode 100644 index 0000000..8dd80f4 --- /dev/null +++ b/app/src/main/assets/DeviceCommand.json @@ -0,0 +1,82 @@ +[ + { + "type": "确认劳保用品齐全", + "command": "AA 01 00 93 11 00 A5" + }, + { + "type": "完成施工交底", + "command": "AA 01 00 93 05 00 99" + }, + { + "type": "完成井下气体检测", + "command": "AA 01 00 93 19 00 AD" + }, + { + "type": "未通风严禁进入有限空间", + "command": "AA 01 00 93 1A 00 AE" + }, + { + "type": "甲烷报警", + "command": "AA 01 00 93 02 00 96" + }, + { + "type": "不安全行为报警", + "command": "AA 01 00 93 01 00 95" + }, + { + "type": "周界入侵报警指令", + "command": "AA 01 00 93 00 00 94" + }, + { + "type": "吸烟报警", + "command": "AA 01 00 93 03 00 97" + }, + { + "type": "开始施工交底", + "command": "AA 01 00 93 04 00 98" + }, + { + "type": "施工前环境检测", + "command": "AA 01 00 93 06 00 9A" + }, + { + "type": "确认现场鼓风机设备", + "command": "AA 01 00 93 07 00 9B" + }, + { + "type": "确认现场通风完好", + "command": "AA 01 00 93 08 00 9C" + }, + { + "type": "确认现场气体环境正常", + "command": "AA 01 00 93 09 00 9D" + }, + { + "type": "施工前劳保用品检测", + "command": "AA 01 00 93 0A 00 9E" + }, + { + "type": "确认人员配备气体检测设备", + "command": "AA 01 00 93 0C 00 A0" + }, + { + "type": "确认人员配备呼吸防护用品", + "command": "AA 01 00 93 0D 00 A1" + }, + { + "type": "确认人员配备安全帽", + "command": "AA 01 00 93 0E 00 A2" + }, + { + "type": "确认现场应急救援设备完好", + "command": "AA 01 00 93 10 00 A4" + }, + { + "type": "下井作业必须有监护人员", + "command": "AA 01 00 93 13 00 A7" + }, + { + "type": "井内气体浓度超标", + "command": "AA 01 00 93 14 00 A8" + } +] \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt index 7841962..ced912f 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt @@ -41,6 +41,16 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +fun String.convert(): ByteArray { + //AA 01 00 93 00 00 94 + val strings = this.split(" ") + val command = ByteArray(strings.size) + strings.forEachIndexed { index, s -> + command[index] = s.toInt(16).toByte() + } + return command +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/CommandModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/CommandModel.java new file mode 100644 index 0000000..8fc5389 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/model/CommandModel.java @@ -0,0 +1,23 @@ +package com.casic.br.operationsite.test.model; + +public class CommandModel { + + private String type; + private String command; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getCommand() { + return command; + } + + public void setCommand(String command) { + this.command = command; + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt index 404f0d6..18e43a3 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt @@ -14,6 +14,7 @@ import com.casic.br.operationsite.test.vm.AirViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel import com.casic.br.operationsite.test.vm.SceneViewModel +import com.casic.br.operationsite.test.widget.AllCommandSheet import com.casic.br.operationsite.test.widget.BottomControlSheet import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.dp2px @@ -42,6 +43,10 @@ constructionCheckViewModel.setCurrentPhase(LocaleConstant.AI_BASE_IP, "brief") } + binding.showOtherCommandButton.setOnClickListener { + AllCommandSheet(this).show() + } + binding.showControlViewButton.setOnClickListener { BottomControlSheet(this).show() } diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt index db3d72b..cfdd73d 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt @@ -19,6 +19,7 @@ import com.casic.br.operationsite.test.vm.AlarmViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel import com.casic.br.operationsite.test.vm.WorkSiteViewModel +import com.casic.br.operationsite.test.widget.AllCommandSheet import com.casic.br.operationsite.test.widget.BottomControlSheet import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -155,6 +156,10 @@ constructionCheckViewModel.setCurrentPhase(LocaleConstant.AI_BASE_IP, "in_operation") } + binding.showOtherCommandButton.setOnClickListener { + AllCommandSheet(this).show() + } + binding.showControlViewButton.setOnClickListener { BottomControlSheet(this).show() } diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt index b78d55c..f473f27 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt @@ -21,6 +21,7 @@ import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel import com.casic.br.operationsite.test.vm.SceneViewModel import com.casic.br.operationsite.test.vm.UploadFileViewModel +import com.casic.br.operationsite.test.widget.AllCommandSheet import com.casic.br.operationsite.test.widget.BottomControlSheet import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -92,6 +93,10 @@ } } + binding.showOtherCommandButton.setOnClickListener { + AllCommandSheet(this).show() + } + binding.showControlViewButton.setOnClickListener { BottomControlSheet(this).show() } @@ -158,6 +163,7 @@ if (path.isNotBlank()) { val map = HashMap() map["id"] = RuntimeCache.uploadFileTaskId + map["deviceCode"] = "YTJ_010002" map["imageId"] = UUID.randomUUID().toString() map["scenario"] = "before_operation_protection" map["image"] = path @@ -215,8 +221,8 @@ when (recyclerViewImages.size) { 1 -> binding.stepView.text = "稍后开始检查第二项:安全帽,请准备" 2 -> binding.stepView.text = "稍后开始检查第三项:灭火器,请准备" - 3 -> binding.stepView.text = "稍后开始检查第四项:鼓风机,请准备" - 4 -> binding.stepView.text = "稍后开始检查第五项:警示牌,请准备" + 3 -> binding.stepView.text = "稍后开始检查第四项:警示牌,请准备" + 4 -> binding.stepView.text = "稍后开始检查第五项:鼓风机,请准备" 5 -> AlertControlDialog.Builder() .setContext(this) .setTitle("温馨提示") diff --git a/app/src/main/java/com/casic/br/operationsite/test/widget/AllCommandSheet.kt b/app/src/main/java/com/casic/br/operationsite/test/widget/AllCommandSheet.kt new file mode 100644 index 0000000..0ef28fa --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/widget/AllCommandSheet.kt @@ -0,0 +1,78 @@ +package com.casic.br.operationsite.test.widget + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.os.Bundle +import android.view.Gravity +import com.casic.br.operationsite.test.R +import com.casic.br.operationsite.test.databinding.SheetAllCommandBinding +import com.casic.br.operationsite.test.extensions.convert +import com.casic.br.operationsite.test.model.CommandModel +import com.casic.br.operationsite.test.util.tcp.SocketManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.binding +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.getScreenHeight +import com.pengxh.kt.lite.extensions.getScreenWidth +import com.pengxh.kt.lite.extensions.readAssetsFile +import com.pengxh.kt.lite.extensions.show + +class AllCommandSheet(context: Context) : Dialog(context, R.style.BottomControlSheetStyle) { + + private val gson by lazy { Gson() } + private val marginOffset by lazy { 5.dp2px(context) } + private val binding: SheetAllCommandBinding by binding() + + private fun Dialog.resetParams() { + val window = this.window ?: return + window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + window.decorView.setBackgroundColor(Color.TRANSPARENT) + window.setGravity(Gravity.BOTTOM) + //设置Dialog出现的动画 + window.setWindowAnimations(R.style.ActionSheetDialogAnimation) + val params = window.attributes + params.width = context.getScreenWidth() + params.height = (context.getScreenHeight() * 0.65).toInt() + window.attributes = params + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams() + setCancelable(true) + setCanceledOnTouchOutside(true) + + val assetsFile = context.readAssetsFile("DeviceCommand.json") + val dataRows = gson.fromJson>( + assetsFile, object : TypeToken>() {}.type + ) + + val commandAdapter = object : + NormalRecyclerAdapter(R.layout.item_command_rv_g, dataRows) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: CommandModel) { + viewHolder.setText(R.id.commandButton, item.type) + } + } + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) + binding.recyclerView.adapter = commandAdapter + commandAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: CommandModel) { + if (!SocketManager.get.nettyClient.connectStatus) { + "指令发送失败,请确认是否处于同一网段".show(context) + return + } + SocketManager.get.send(t.command.convert()) + } + }) + binding.sheetCancelButton.setOnClickListener { dismiss() } + } +} \ No newline at end of file diff --git a/app/src/main/assets/DeviceCommand.json b/app/src/main/assets/DeviceCommand.json new file mode 100644 index 0000000..8dd80f4 --- /dev/null +++ b/app/src/main/assets/DeviceCommand.json @@ -0,0 +1,82 @@ +[ + { + "type": "确认劳保用品齐全", + "command": "AA 01 00 93 11 00 A5" + }, + { + "type": "完成施工交底", + "command": "AA 01 00 93 05 00 99" + }, + { + "type": "完成井下气体检测", + "command": "AA 01 00 93 19 00 AD" + }, + { + "type": "未通风严禁进入有限空间", + "command": "AA 01 00 93 1A 00 AE" + }, + { + "type": "甲烷报警", + "command": "AA 01 00 93 02 00 96" + }, + { + "type": "不安全行为报警", + "command": "AA 01 00 93 01 00 95" + }, + { + "type": "周界入侵报警指令", + "command": "AA 01 00 93 00 00 94" + }, + { + "type": "吸烟报警", + "command": "AA 01 00 93 03 00 97" + }, + { + "type": "开始施工交底", + "command": "AA 01 00 93 04 00 98" + }, + { + "type": "施工前环境检测", + "command": "AA 01 00 93 06 00 9A" + }, + { + "type": "确认现场鼓风机设备", + "command": "AA 01 00 93 07 00 9B" + }, + { + "type": "确认现场通风完好", + "command": "AA 01 00 93 08 00 9C" + }, + { + "type": "确认现场气体环境正常", + "command": "AA 01 00 93 09 00 9D" + }, + { + "type": "施工前劳保用品检测", + "command": "AA 01 00 93 0A 00 9E" + }, + { + "type": "确认人员配备气体检测设备", + "command": "AA 01 00 93 0C 00 A0" + }, + { + "type": "确认人员配备呼吸防护用品", + "command": "AA 01 00 93 0D 00 A1" + }, + { + "type": "确认人员配备安全帽", + "command": "AA 01 00 93 0E 00 A2" + }, + { + "type": "确认现场应急救援设备完好", + "command": "AA 01 00 93 10 00 A4" + }, + { + "type": "下井作业必须有监护人员", + "command": "AA 01 00 93 13 00 A7" + }, + { + "type": "井内气体浓度超标", + "command": "AA 01 00 93 14 00 A8" + } +] \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt index 7841962..ced912f 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/extensions/String.kt @@ -41,6 +41,16 @@ return "$defaultValue/static/${this.replace("\\", "/")}" } +fun String.convert(): ByteArray { + //AA 01 00 93 00 00 94 + val strings = this.split(" ") + val command = ByteArray(strings.size) + strings.forEachIndexed { index, s -> + command[index] = s.toInt(16).toByte() + } + return command +} + fun String.compressImage(context: Context, listener: OnImageCompressListener) { Luban.with(context) .load(this) diff --git a/app/src/main/java/com/casic/br/operationsite/test/model/CommandModel.java b/app/src/main/java/com/casic/br/operationsite/test/model/CommandModel.java new file mode 100644 index 0000000..8fc5389 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/model/CommandModel.java @@ -0,0 +1,23 @@ +package com.casic.br.operationsite.test.model; + +public class CommandModel { + + private String type; + private String command; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getCommand() { + return command; + } + + public void setCommand(String command) { + this.command = command; + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt index 404f0d6..18e43a3 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/DisclosureActivity.kt @@ -14,6 +14,7 @@ import com.casic.br.operationsite.test.vm.AirViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel import com.casic.br.operationsite.test.vm.SceneViewModel +import com.casic.br.operationsite.test.widget.AllCommandSheet import com.casic.br.operationsite.test.widget.BottomControlSheet import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.dp2px @@ -42,6 +43,10 @@ constructionCheckViewModel.setCurrentPhase(LocaleConstant.AI_BASE_IP, "brief") } + binding.showOtherCommandButton.setOnClickListener { + AllCommandSheet(this).show() + } + binding.showControlViewButton.setOnClickListener { BottomControlSheet(this).show() } diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt index db3d72b..cfdd73d 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/GuardiansActivity.kt @@ -19,6 +19,7 @@ import com.casic.br.operationsite.test.vm.AlarmViewModel import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel import com.casic.br.operationsite.test.vm.WorkSiteViewModel +import com.casic.br.operationsite.test.widget.AllCommandSheet import com.casic.br.operationsite.test.widget.BottomControlSheet import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -155,6 +156,10 @@ constructionCheckViewModel.setCurrentPhase(LocaleConstant.AI_BASE_IP, "in_operation") } + binding.showOtherCommandButton.setOnClickListener { + AllCommandSheet(this).show() + } + binding.showControlViewButton.setOnClickListener { BottomControlSheet(this).show() } diff --git a/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt b/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt index b78d55c..f473f27 100644 --- a/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/test/view/SuppliesActivity.kt @@ -21,6 +21,7 @@ import com.casic.br.operationsite.test.vm.ConstructionCheckViewModel import com.casic.br.operationsite.test.vm.SceneViewModel import com.casic.br.operationsite.test.vm.UploadFileViewModel +import com.casic.br.operationsite.test.widget.AllCommandSheet import com.casic.br.operationsite.test.widget.BottomControlSheet import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -92,6 +93,10 @@ } } + binding.showOtherCommandButton.setOnClickListener { + AllCommandSheet(this).show() + } + binding.showControlViewButton.setOnClickListener { BottomControlSheet(this).show() } @@ -158,6 +163,7 @@ if (path.isNotBlank()) { val map = HashMap() map["id"] = RuntimeCache.uploadFileTaskId + map["deviceCode"] = "YTJ_010002" map["imageId"] = UUID.randomUUID().toString() map["scenario"] = "before_operation_protection" map["image"] = path @@ -215,8 +221,8 @@ when (recyclerViewImages.size) { 1 -> binding.stepView.text = "稍后开始检查第二项:安全帽,请准备" 2 -> binding.stepView.text = "稍后开始检查第三项:灭火器,请准备" - 3 -> binding.stepView.text = "稍后开始检查第四项:鼓风机,请准备" - 4 -> binding.stepView.text = "稍后开始检查第五项:警示牌,请准备" + 3 -> binding.stepView.text = "稍后开始检查第四项:警示牌,请准备" + 4 -> binding.stepView.text = "稍后开始检查第五项:鼓风机,请准备" 5 -> AlertControlDialog.Builder() .setContext(this) .setTitle("温馨提示") diff --git a/app/src/main/java/com/casic/br/operationsite/test/widget/AllCommandSheet.kt b/app/src/main/java/com/casic/br/operationsite/test/widget/AllCommandSheet.kt new file mode 100644 index 0000000..0ef28fa --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/test/widget/AllCommandSheet.kt @@ -0,0 +1,78 @@ +package com.casic.br.operationsite.test.widget + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.os.Bundle +import android.view.Gravity +import com.casic.br.operationsite.test.R +import com.casic.br.operationsite.test.databinding.SheetAllCommandBinding +import com.casic.br.operationsite.test.extensions.convert +import com.casic.br.operationsite.test.model.CommandModel +import com.casic.br.operationsite.test.util.tcp.SocketManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.binding +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.getScreenHeight +import com.pengxh.kt.lite.extensions.getScreenWidth +import com.pengxh.kt.lite.extensions.readAssetsFile +import com.pengxh.kt.lite.extensions.show + +class AllCommandSheet(context: Context) : Dialog(context, R.style.BottomControlSheetStyle) { + + private val gson by lazy { Gson() } + private val marginOffset by lazy { 5.dp2px(context) } + private val binding: SheetAllCommandBinding by binding() + + private fun Dialog.resetParams() { + val window = this.window ?: return + window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + window.decorView.setBackgroundColor(Color.TRANSPARENT) + window.setGravity(Gravity.BOTTOM) + //设置Dialog出现的动画 + window.setWindowAnimations(R.style.ActionSheetDialogAnimation) + val params = window.attributes + params.width = context.getScreenWidth() + params.height = (context.getScreenHeight() * 0.65).toInt() + window.attributes = params + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams() + setCancelable(true) + setCanceledOnTouchOutside(true) + + val assetsFile = context.readAssetsFile("DeviceCommand.json") + val dataRows = gson.fromJson>( + assetsFile, object : TypeToken>() {}.type + ) + + val commandAdapter = object : + NormalRecyclerAdapter(R.layout.item_command_rv_g, dataRows) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: CommandModel) { + viewHolder.setText(R.id.commandButton, item.type) + } + } + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) + binding.recyclerView.adapter = commandAdapter + commandAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: CommandModel) { + if (!SocketManager.get.nettyClient.connectStatus) { + "指令发送失败,请确认是否处于同一网段".show(context) + return + } + SocketManager.get.send(t.command.convert()) + } + }) + binding.sheetCancelButton.setOnClickListener { dismiss() } + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_disclosure.xml b/app/src/main/res/layout/activity_disclosure.xml index 794684f..16d52ff 100644 --- a/app/src/main/res/layout/activity_disclosure.xml +++ b/app/src/main/res/layout/activity_disclosure.xml @@ -38,17 +38,25 @@ android:id="@+id/startCheckButton" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginEnd="@dimen/dp_5" android:layout_weight="1" android:background="@drawable/button_check_selector" android:text="开始交底" android:textColor="@color/black" />