声音播放

This commit is contained in:
fengge 2026-07-24 12:02:55 +08:00
parent 5f09d0646f
commit 7376b902e9
1 changed files with 23 additions and 15 deletions

View File

@ -537,7 +537,7 @@ class AndroidInterface(private val activity: MainActivity) {
fun playAlert(count: Int, volume: Float) {
Handler(Looper.getMainLooper()).post {
try {
stopAlert()
realStopAlert()
alertPlayCount = 0
alertPlayer = android.media.MediaPlayer.create(activity, R.raw.pull_alert).apply {
setVolume(volume, volume)
@ -549,10 +549,10 @@ class AndroidInterface(private val activity: MainActivity) {
it.start()
} catch (e: Exception) {
Timber.tag("AlertPlayer").e(e, "Error repeating alert play")
stopAlert()
realStopAlert()
}
} else {
stopAlert()
realStopAlert()
}
}
start()
@ -565,19 +565,27 @@ class AndroidInterface(private val activity: MainActivity) {
}
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
if (Looper.myLooper() == Looper.getMainLooper()) {
realStopAlert()
} else {
Handler(Looper.getMainLooper()).post {
realStopAlert()
}
}
}
private fun realStopAlert() {
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
}
}
}