水枪设置1

This commit is contained in:
2026-05-20 08:29:42 +08:00
parent 7c26e90687
commit d98deb406f
2 changed files with 165 additions and 12 deletions

View File

@@ -22,8 +22,6 @@ import kotlinx.coroutines.withContext
class SettingsActivity : BaseActivity() {
private lateinit var binding: SettingsActivityBinding
private val SP_NAME = "DeviceSettings"
private val KEY_RECOGNITION_MODE = "recognition_mode"
private var alertAudio: String? = null
private var audioContent: String? = null
@@ -82,7 +80,43 @@ class SettingsActivity : BaseActivity() {
}
binding.itemWaterGunSetting.setOnClickListener {
val intent = Intent(this, WaterGunSettingsActivity::class.java)
startActivity(intent)
// 传递水枪设置参数
val deviceId = DeviceIdEvent.getDeviceId()
if (!deviceId.isNullOrEmpty()) {
CoroutineScope(Dispatchers.IO).launch {
try {
val response = RetrofitNetwork.getNetworkService().getDeviceInfo(deviceId)
withContext(Dispatchers.Main) {
if (response.code == 200 && response.data != null) {
val device = response.data
intent.putExtra("strikeRange", device.strikeRange ?: "7")
intent.putExtra("strikeInterval", device.strikeInterval ?: "3")
intent.putExtra("container", device.container ?: "容器4")
startActivity(intent)
} else {
// 如果获取失败,使用默认值
intent.putExtra("strikeRange", "7")
intent.putExtra("strikeInterval", "3")
intent.putExtra("container", "容器4")
startActivity(intent)
}
}
} catch (e: Exception) {
e.printStackTrace()
withContext(Dispatchers.Main) {
intent.putExtra("strikeRange", "7")
intent.putExtra("strikeInterval", "3")
intent.putExtra("container", "容器4")
startActivity(intent)
}
}
}
} else {
intent.putExtra("strikeRange", "7")
intent.putExtra("strikeInterval", "3")
intent.putExtra("container", "容器4")
startActivity(intent)
}
}
binding.itemAutoMode.setOnClickListener {
val intent = Intent(this, AutoModeActivity::class.java)

View File

@@ -1,18 +1,30 @@
package com.example.defenseapplication.liveVideo
import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import com.example.defenseapplication.R
import com.example.defenseapplication.base.BaseActivity
import com.example.defenseapplication.bean.DeviceBean
import com.example.defenseapplication.databinding.WaterGunSettingsActivityBinding
import com.example.defenseapplication.utils.DeviceIdEvent
import com.example.defenseapplication.utils.RetrofitNetwork
import com.example.defenseapplication.view.ContainerSelectDialog
import com.example.defenseapplication.view.CustomDialogFragmentText
import com.gyf.immersionbar.ImmersionBar
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
//水枪设置
class WaterGunSettingsActivity : BaseActivity() {
private lateinit var binding: WaterGunSettingsActivityBinding
private var deviceId: String? = null
private var currentStrikeRange: String = "7"
private var currentStrikeInterval: String = "3"
private var currentContainer: String = "容器4"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -24,6 +36,18 @@ class WaterGunSettingsActivity : BaseActivity() {
.titleBar(binding.topBar)
.init()
deviceId = DeviceIdEvent.getDeviceId()
// 接收传递过来的参数
currentStrikeRange = intent.getStringExtra("strikeRange") ?: "7"
currentStrikeInterval = intent.getStringExtra("strikeInterval") ?: "3"
currentContainer = intent.getStringExtra("container") ?: "容器4"
// 显示初始值
binding.tvDistance.text = "${currentStrikeRange}m"
binding.tvInterval.text = "${currentStrikeInterval}s"
binding.tvContainer.text = currentContainer
initListeners()
}
@@ -35,9 +59,9 @@ class WaterGunSettingsActivity : BaseActivity() {
binding.itemDistance.setOnClickListener {
val dialog = CustomDialogFragmentText()
.setTitle(getString(R.string.strike_distance))
.setInputText(binding.tvDistance.text.toString().replace("m", ""))
.setInputText(currentStrikeRange)
dialog.setOnConfirmListener { distance ->
binding.tvDistance.text = "${distance}m"
updateStrikeRange(distance)
}
dialog.show(supportFragmentManager, "DistanceDialog")
}
@@ -45,23 +69,118 @@ class WaterGunSettingsActivity : BaseActivity() {
binding.itemInterval.setOnClickListener {
val dialog = CustomDialogFragmentText()
.setTitle(getString(R.string.strike_interval))
.setInputText(binding.tvInterval.text.toString().replace("s", ""))
.setInputText(currentStrikeInterval)
dialog.setOnConfirmListener { interval ->
binding.tvInterval.text = "${interval}s"
updateStrikeInterval(interval)
}
dialog.show(supportFragmentManager, "IntervalDialog")
}
binding.itemContainer.setOnClickListener {
val dialog = ContainerSelectDialog(this)
dialog.setSelectedContainer(binding.tvContainer.text.toString())
dialog.setSelectedContainer(currentContainer)
dialog.setOnConfirmListener { container ->
binding.tvContainer.text = container
updateContainer(container)
}
dialog.show()
}
binding.itemPosition.setOnClickListener {
startActivity(Intent(this, StrikePositionActivity::class.java))
// 跳转到打击位置设置页面
startActivity(android.content.Intent(this, StrikePositionActivity::class.java))
}
}
}
private fun updateStrikeRange(distance: String) {
if (deviceId.isNullOrEmpty()) {
Toast.makeText(this, "设备ID为空", Toast.LENGTH_SHORT).show()
return
}
CoroutineScope(Dispatchers.IO).launch {
try {
val deviceBean = DeviceBean(
id = deviceId,
strikeRange = distance
)
val response = RetrofitNetwork.getNetworkService().updateDeviceInfo(deviceBean)
withContext(Dispatchers.Main) {
if (response.code == 200) {
currentStrikeRange = distance
binding.tvDistance.text = "${distance}m"
Toast.makeText(this@WaterGunSettingsActivity, "修改成功", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this@WaterGunSettingsActivity, response.msg, Toast.LENGTH_SHORT).show()
}
}
} catch (e: Exception) {
e.printStackTrace()
withContext(Dispatchers.Main) {
Toast.makeText(this@WaterGunSettingsActivity, "网络请求失败", Toast.LENGTH_SHORT).show()
}
}
}
}
private fun updateStrikeInterval(interval: String) {
if (deviceId.isNullOrEmpty()) {
Toast.makeText(this, "设备ID为空", Toast.LENGTH_SHORT).show()
return
}
CoroutineScope(Dispatchers.IO).launch {
try {
val deviceBean = DeviceBean(
id = deviceId,
strikeInterval = interval
)
val response = RetrofitNetwork.getNetworkService().updateDeviceInfo(deviceBean)
withContext(Dispatchers.Main) {
if (response.code == 200) {
currentStrikeInterval = interval
binding.tvInterval.text = "${interval}s"
Toast.makeText(this@WaterGunSettingsActivity, "修改成功", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this@WaterGunSettingsActivity, response.msg, Toast.LENGTH_SHORT).show()
}
}
} catch (e: Exception) {
e.printStackTrace()
withContext(Dispatchers.Main) {
Toast.makeText(this@WaterGunSettingsActivity, "网络请求失败", Toast.LENGTH_SHORT).show()
}
}
}
}
private fun updateContainer(container: String) {
if (deviceId.isNullOrEmpty()) {
Toast.makeText(this, "设备ID为空", Toast.LENGTH_SHORT).show()
return
}
CoroutineScope(Dispatchers.IO).launch {
try {
val deviceBean = DeviceBean(
id = deviceId,
container = container
)
val response = RetrofitNetwork.getNetworkService().updateDeviceInfo(deviceBean)
withContext(Dispatchers.Main) {
if (response.code == 200) {
currentContainer = container
binding.tvContainer.text = container
Toast.makeText(this@WaterGunSettingsActivity, "修改成功", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this@WaterGunSettingsActivity, response.msg, Toast.LENGTH_SHORT).show()
}
}
} catch (e: Exception) {
e.printStackTrace()
withContext(Dispatchers.Main) {
Toast.makeText(this@WaterGunSettingsActivity, "网络请求失败", Toast.LENGTH_SHORT).show()
}
}
}
}
}