临时群调整

This commit is contained in:
fengge 2026-07-22 11:15:51 +08:00
parent d570ecb57f
commit 24df4cb070
1 changed files with 58 additions and 0 deletions

View File

@ -17,6 +17,8 @@ class AndroidInterface(private val activity: MainActivity) {
private var isSpeaking = false private var isSpeaking = false
private var lastSpeakTime = 0L private var lastSpeakTime = 0L
private val MIN_SPEAK_DURATION = 200L private val MIN_SPEAK_DURATION = 200L
private var alertPlayer: android.media.MediaPlayer? = null
private var alertPlayCount = 0
/** /**
* JS bridge 调度入口 * JS bridge 调度入口
@ -88,6 +90,16 @@ class AndroidInterface(private val activity: MainActivity) {
"maximizeTempCall" -> { maximizeTempCall(); "" } "maximizeTempCall" -> { maximizeTempCall(); "" }
"getTempGroupId" -> getTempGroupId() "getTempGroupId" -> getTempGroupId()
"logout" -> { logout(); "" } "logout" -> { logout(); "" }
"playAlert" -> {
val count = args.optInt(0, 3)
val volume = args.optDouble(1, 1.0).toFloat()
playAlert(count, volume)
""
}
"stopAlert" -> {
stopAlert()
""
}
else -> { else -> {
Timber.tag("Bridge").w("Unknown method: $method") Timber.tag("Bridge").w("Unknown method: $method")
"" ""
@ -518,4 +530,50 @@ class AndroidInterface(private val activity: MainActivity) {
fun logout() { fun logout() {
activity.logout() activity.logout()
} }
fun playAlert(count: Int, volume: Float) {
Handler(Looper.getMainLooper()).post {
try {
stopAlert()
alertPlayCount = 0
alertPlayer = android.media.MediaPlayer.create(activity, R.raw.pull_alert).apply {
setVolume(volume, volume)
setOnCompletionListener {
alertPlayCount++
if (alertPlayCount < count) {
try {
it.start()
} catch (e: Exception) {
Timber.tag("AlertPlayer").e(e, "Error repeating alert play")
stopAlert()
}
} else {
stopAlert()
}
}
start()
}
Timber.tag("AlertPlayer").d("Started alert play, count=$count, volume=$volume")
} catch (e: Exception) {
Timber.tag("AlertPlayer").e(e, "Error initializing alert player")
}
}
}
fun stopAlert() {
Handler(Looper.getMainLooper()).post {
try {
alertPlayer?.let { player ->
if (player.isPlaying) {
player.stop()
}
player.release()
}
} catch (e: Exception) {
Timber.tag("AlertPlayer").e(e, "Error stopping alert player")
} finally {
alertPlayer = null
}
}
}
} }