108 lines
4.4 KiB
Kotlin
108 lines
4.4 KiB
Kotlin
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->false,1->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()
|
||
}
|
||
}
|
||
}
|
||
} |