diff --git a/app/src/main/java/com/stand/standapp/AndroidInterface.kt b/app/src/main/java/com/stand/standapp/AndroidInterface.kt index 4e5aa70..f881952 100644 --- a/app/src/main/java/com/stand/standapp/AndroidInterface.kt +++ b/app/src/main/java/com/stand/standapp/AndroidInterface.kt @@ -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 + } + } }