From d98deb406ffae997309c2690b62ec0c3982140db Mon Sep 17 00:00:00 2001 From: maxinyu Date: Wed, 20 May 2026 08:29:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B0=B4=E6=9E=AA=E8=AE=BE=E7=BD=AE1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../liveVideo/SettingsActivity.kt | 40 ++++- .../liveVideo/WaterGunSettingsActivity.kt | 137 ++++++++++++++++-- 2 files changed, 165 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/example/defenseapplication/liveVideo/SettingsActivity.kt b/app/src/main/java/com/example/defenseapplication/liveVideo/SettingsActivity.kt index f49f845..d5f02d8 100644 --- a/app/src/main/java/com/example/defenseapplication/liveVideo/SettingsActivity.kt +++ b/app/src/main/java/com/example/defenseapplication/liveVideo/SettingsActivity.kt @@ -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) diff --git a/app/src/main/java/com/example/defenseapplication/liveVideo/WaterGunSettingsActivity.kt b/app/src/main/java/com/example/defenseapplication/liveVideo/WaterGunSettingsActivity.kt index c38035c..ed7a90c 100644 --- a/app/src/main/java/com/example/defenseapplication/liveVideo/WaterGunSettingsActivity.kt +++ b/app/src/main/java/com/example/defenseapplication/liveVideo/WaterGunSettingsActivity.kt @@ -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)) } } -} \ No newline at end of file + + 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() + } + } + } + } +}