Files
SecurityDefenseDevice/app/src/main/java/com/example/defenseapplication/liveVideo/VoiceSettingsActivity.kt
2026-05-19 17:47:58 +08:00

108 lines
4.4 KiB
Kotlin
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.example.defenseapplication.liveVideo
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.example.defenseapplication.bean.DeviceBean
import com.example.defenseapplication.databinding.VoiceSettingsActivityBinding
import com.example.defenseapplication.utils.ApiService
import com.example.defenseapplication.utils.DeviceIdEvent
import com.example.defenseapplication.utils.RetrofitNetwork
import com.gyf.immersionbar.ImmersionBar
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
//语音设置
class VoiceSettingsActivity : AppCompatActivity() {
private lateinit var binding: VoiceSettingsActivityBinding
private lateinit var apiService: ApiService
private var deviceId: String? = null
private var originalAlertAudio: String? = null
private var originalAudioContent: String? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = VoiceSettingsActivityBinding.inflate(layoutInflater)
setContentView(binding.root)
apiService = RetrofitNetwork.getNetworkService()
// ImmersionBar核心调用,沉浸式
ImmersionBar.with(this)
.statusBarDarkFont(true)
.titleBar(binding.topBar)
.init()
// 获取设备ID
deviceId = DeviceIdEvent.getDeviceId()
// 从 Intent 获取设备数据
originalAlertAudio = intent.getStringExtra("alertAudio") ?: "1"
originalAudioContent = intent.getStringExtra("audioContent") ?: ""
// 设置Switch状态0->false1->true
binding.swWarningVoice.isChecked = originalAlertAudio == "1"
binding.swWarningVoice.setOnCheckedChangeListener { _, isChecked ->
// 开关状态变化时不立即请求,仅记录状态
}
binding.rlWarningContent.setOnClickListener {
val intent = Intent(this, WarningVoiceContentActivity::class.java)
// 传递设备数据给警告语音内容页面
intent.putExtra("deviceId", deviceId)
intent.putExtra("audioContent", originalAudioContent)
startActivityForResult(intent, 1001)
}
binding.ivBack.setOnClickListener {
// 点击返回时触发修改设备请求
updateDeviceAlertAudio()
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == 1001 && resultCode == RESULT_OK) {
// 获取从警告语音内容页面返回的音频内容
val newAudioContent = data?.getStringExtra("result")
originalAudioContent = newAudioContent
Log.d("WarningVoiceContentActivity", "newAudioContent: $newAudioContent")
if (newAudioContent != null) {}
}
}
private fun updateDeviceAlertAudio() {
deviceId?.let { id ->
val newAlertAudio = if (binding.swWarningVoice.isChecked) "1" else "0"
// 只有状态发生变化时才请求
if (newAlertAudio != originalAlertAudio) {
CoroutineScope(Dispatchers.IO).launch {
try {
val deviceBean = DeviceBean(id = id, alertAudio = newAlertAudio)
val response = apiService.updateDeviceInfo(deviceBean)
withContext(Dispatchers.Main) {
if (response.code == 200 && response.data != null) {
Toast.makeText(this@VoiceSettingsActivity, "修改成功", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this@VoiceSettingsActivity, response.msg, Toast.LENGTH_SHORT).show()
}
finish()
}
} catch (e: Exception) {
withContext(Dispatchers.Main) {
Toast.makeText(this@VoiceSettingsActivity, "修改失败", Toast.LENGTH_SHORT).show()
finish()
}
}
}
} else {
finish()
}
}
}
}