水枪设置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() { class SettingsActivity : BaseActivity() {
private lateinit var binding: SettingsActivityBinding private lateinit var binding: SettingsActivityBinding
private val SP_NAME = "DeviceSettings"
private val KEY_RECOGNITION_MODE = "recognition_mode"
private var alertAudio: String? = null private var alertAudio: String? = null
private var audioContent: String? = null private var audioContent: String? = null
@@ -82,7 +80,43 @@ class SettingsActivity : BaseActivity() {
} }
binding.itemWaterGunSetting.setOnClickListener { binding.itemWaterGunSetting.setOnClickListener {
val intent = Intent(this, WaterGunSettingsActivity::class.java) 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 { binding.itemAutoMode.setOnClickListener {
val intent = Intent(this, AutoModeActivity::class.java) val intent = Intent(this, AutoModeActivity::class.java)

View File

@@ -1,18 +1,30 @@
package com.example.defenseapplication.liveVideo package com.example.defenseapplication.liveVideo
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.widget.Toast
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import com.example.defenseapplication.R import com.example.defenseapplication.R
import com.example.defenseapplication.base.BaseActivity import com.example.defenseapplication.base.BaseActivity
import com.example.defenseapplication.bean.DeviceBean
import com.example.defenseapplication.databinding.WaterGunSettingsActivityBinding 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.ContainerSelectDialog
import com.example.defenseapplication.view.CustomDialogFragmentText import com.example.defenseapplication.view.CustomDialogFragmentText
import com.gyf.immersionbar.ImmersionBar import com.gyf.immersionbar.ImmersionBar
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
//水枪设置 //水枪设置
class WaterGunSettingsActivity : BaseActivity() { class WaterGunSettingsActivity : BaseActivity() {
private lateinit var binding: WaterGunSettingsActivityBinding 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?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@@ -24,6 +36,18 @@ class WaterGunSettingsActivity : BaseActivity() {
.titleBar(binding.topBar) .titleBar(binding.topBar)
.init() .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() initListeners()
} }
@@ -35,9 +59,9 @@ class WaterGunSettingsActivity : BaseActivity() {
binding.itemDistance.setOnClickListener { binding.itemDistance.setOnClickListener {
val dialog = CustomDialogFragmentText() val dialog = CustomDialogFragmentText()
.setTitle(getString(R.string.strike_distance)) .setTitle(getString(R.string.strike_distance))
.setInputText(binding.tvDistance.text.toString().replace("m", "")) .setInputText(currentStrikeRange)
dialog.setOnConfirmListener { distance -> dialog.setOnConfirmListener { distance ->
binding.tvDistance.text = "${distance}m" updateStrikeRange(distance)
} }
dialog.show(supportFragmentManager, "DistanceDialog") dialog.show(supportFragmentManager, "DistanceDialog")
} }
@@ -45,23 +69,118 @@ class WaterGunSettingsActivity : BaseActivity() {
binding.itemInterval.setOnClickListener { binding.itemInterval.setOnClickListener {
val dialog = CustomDialogFragmentText() val dialog = CustomDialogFragmentText()
.setTitle(getString(R.string.strike_interval)) .setTitle(getString(R.string.strike_interval))
.setInputText(binding.tvInterval.text.toString().replace("s", "")) .setInputText(currentStrikeInterval)
dialog.setOnConfirmListener { interval -> dialog.setOnConfirmListener { interval ->
binding.tvInterval.text = "${interval}s" updateStrikeInterval(interval)
} }
dialog.show(supportFragmentManager, "IntervalDialog") dialog.show(supportFragmentManager, "IntervalDialog")
} }
binding.itemContainer.setOnClickListener { binding.itemContainer.setOnClickListener {
val dialog = ContainerSelectDialog(this) val dialog = ContainerSelectDialog(this)
dialog.setSelectedContainer(binding.tvContainer.text.toString()) dialog.setSelectedContainer(currentContainer)
dialog.setOnConfirmListener { container -> dialog.setOnConfirmListener { container ->
binding.tvContainer.text = container updateContainer(container)
} }
dialog.show() dialog.show()
} }
binding.itemPosition.setOnClickListener { 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()
}
}
} }
} }
} }