This commit is contained in:
2026-05-08 09:59:54 +08:00
parent ae5559e01a
commit 428b5e507f
36 changed files with 1420 additions and 303 deletions

View File

@@ -1,14 +1,21 @@
package com.example.defenseapplication.liveVideo
import android.os.Bundle
import android.view.View
import android.os.LocaleList
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.defenseapplication.R
import com.example.defenseapplication.adapter.AlarmLogAdapter
import com.example.defenseapplication.databinding.AlarmLogActivityBinding
import com.gyf.immersionbar.ImmersionBar
import com.google.android.material.datepicker.MaterialDatePicker
import java.util.*
class AlarmLogActivity : AppCompatActivity() {
private lateinit var binding: AlarmLogActivityBinding
private lateinit var calendar: Calendar
private var adapter: AlarmLogAdapter? = null
private val alarmList = mutableListOf<String>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -18,12 +25,57 @@ class AlarmLogActivity : AppCompatActivity() {
.statusBarDarkFont(true)
.titleBar(binding.topBar)
.init()
calendar = Calendar.getInstance()
updateDateDisplay()
initRecyclerView()
loadAlarmList()
initListener()
}
private fun initRecyclerView() {
adapter = AlarmLogAdapter(alarmList)
binding.alarmListRecyclerView.layoutManager = LinearLayoutManager(this)
binding.alarmListRecyclerView.adapter = adapter
}
private fun loadAlarmList() {
alarmList.clear()
alarmList.add("入侵告警 - 10:30")
alarmList.add("入侵告警 - 09:15")
alarmList.add("入侵告警 - 08:45")
alarmList.add("入侵告警 - 07:20")
alarmList.add("入侵告警 - 06:50")
adapter?.notifyDataSetChanged()
}
private fun updateDateDisplay() {
val month = calendar.get(Calendar.MONTH) + 1
val day = calendar.get(Calendar.DAY_OF_MONTH)
binding.tvDate.text = "${month}${day}"
}
private fun initListener() {
binding.btnBack.setOnClickListener {
finish()
}
binding.expandImg.setOnClickListener {
showDatePicker()
}
}
}
private fun showDatePicker() {
val datePicker = android.app.DatePickerDialog(
this,
{ _, year, month, dayOfMonth ->
calendar.set(year, month, dayOfMonth)
updateDateDisplay()
loadAlarmList()
},
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH)
)
datePicker.show()
}
}

View File

@@ -282,7 +282,7 @@ class LiveVideoActivity : AppCompatActivity(), SurfaceHolder.Callback {
if (isVoiceEnabled) {
mediaPlayer?.setVolume(1.0f, 1.0f)
binding.ivVoice.setImageResource(com.example.defenseapplication.R.drawable.voice_open)
binding.ivVoice.setImageResource(com.example.defenseapplication.R.drawable.voice_on_open)
Toast.makeText(this, "声音已开启", Toast.LENGTH_SHORT).show()
} else {
mediaPlayer?.setVolume(0.0f, 0.0f)
@@ -335,14 +335,14 @@ class LiveVideoActivity : AppCompatActivity(), SurfaceHolder.Callback {
binding.consoleBar.visibility = View.VISIBLE
// 麦克风切换成开启状态
binding.ivVoice.setImageResource(com.example.defenseapplication.R.drawable.voice_open)
binding.ivVoice.setImageResource(com.example.defenseapplication.R.drawable.voice_on_open)
isVoiceEnabled = true
// 启动语音录制
startVoiceRecording()
// 启动麦克风脉冲动画
startMicPulseAnimation()
//startMicPulseAnimation()
Toast.makeText(this, "开始控制模式", Toast.LENGTH_SHORT).show()
}
@@ -367,22 +367,22 @@ class LiveVideoActivity : AppCompatActivity(), SurfaceHolder.Callback {
Toast.makeText(this, "停止控制模式", Toast.LENGTH_SHORT).show()
}
private fun startMicPulseAnimation() {
micPulseAnimation = ScaleAnimation(
1.0f, 1.3f,
1.0f, 1.3f,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f
).apply {
duration = 500
repeatCount = Animation.INFINITE
repeatMode = Animation.REVERSE
interpolator = LinearInterpolator()
}
binding.ivVoice.startAnimation(micPulseAnimation)
}
// private fun startMicPulseAnimation() {
// micPulseAnimation = ScaleAnimation(
// 1.0f, 1.3f,
// 1.0f, 1.3f,
// Animation.RELATIVE_TO_SELF, 0.5f,
// Animation.RELATIVE_TO_SELF, 0.5f
// ).apply {
// duration = 500
// repeatCount = Animation.INFINITE
// repeatMode = Animation.REVERSE
// interpolator = LinearInterpolator()
// }
// binding.ivVoice.startAnimation(micPulseAnimation)
// }
private fun stopMicPulseAnimation() {
micPulseAnimation?.let {
binding.ivVoice.clearAnimation()

View File

@@ -3,6 +3,8 @@ package com.example.defenseapplication.liveVideo
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.defenseapplication.databinding.SettingsActivityBinding
import com.example.defenseapplication.view.CustomDialogFragmentText
import com.example.defenseapplication.view.RecognitionModeDialog
import com.gyf.immersionbar.ImmersionBar
class SettingsActivity : AppCompatActivity() {
@@ -21,5 +23,37 @@ class SettingsActivity : AppCompatActivity() {
binding.ivBack.setOnClickListener {
finish()
}
binding.itemRecognitionMode.setOnClickListener {
val dialog = RecognitionModeDialog(this)
dialog.setOnConfirmListener { mode ->
binding.tvRecognitionMode.text = mode
}
dialog.show()
}
binding.itemDeviceName.setOnClickListener {
val dialog = CustomDialogFragmentText()
.setTitle("设备名称")
.setInputHint("请输入设备名称")
.setInputText(binding.tvDeviceName.text.toString())
dialog.setOnConfirmListener { name ->
binding.tvDeviceName.text = name
}
dialog.show(supportFragmentManager, "CustomDialogFragment")
}
binding.itemUnbindDevice.setOnClickListener {
val dialog = CustomDialogFragmentText()
.setTitle("提示")
.setMessage("确定解除该设备的绑定?")
.setNegativeText("取消")
.setPositiveText("确定")
.setShowInput(false)
dialog.setOnConfirmListener {
finish()
}
dialog.show(supportFragmentManager, "CustomDialogFragment")
}
}
}