From bad8e2a7052be5bcb4a3ae95e144c5ad6f4d0a9a Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Wed, 8 Feb 2023 17:08:25 +0100 Subject: [PATCH] avoid IllegalStateException for CallActivity#stopCallingSound This might happen sometimes. For now it's a try-catch instead trying to control the state of the mediaPlayer which could be quite difficult. this will avoid the following exception: java.lang.IllegalStateException at android.media.MediaPlayer.isPlaying(Native Method) at com.nextcloud.talk.activities.CallActivity.stopCallingSound(CallActivity.java:2640) at com.nextcloud.talk.activities.CallActivity.lambda$setCallState$31$com-nextcloud-talk-activities-CallActivity(CallActivity.java:2583) at com.nextcloud.talk.activities.CallActivity$$ExternalSyntheticLambda7.run(Unknown Source:2) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:237) at android.app.ActivityThread.main(ActivityThread.java:8167) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100) Signed-off-by: Marcel Hibbe --- .../nextcloud/talk/activities/CallActivity.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java index 2e0a674b2..0c1c1ff0b 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java +++ b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java @@ -2593,12 +2593,18 @@ public class CallActivity extends CallBaseActivity { private void stopCallingSound() { if (mediaPlayer != null) { - if (mediaPlayer.isPlaying()) { - mediaPlayer.stop(); + try { + if (mediaPlayer.isPlaying()) { + mediaPlayer.stop(); + } + } catch (IllegalStateException e) { + Log.e(TAG, "mediaPlayer was not initialized", e); + } finally { + if (mediaPlayer != null) { + mediaPlayer.release(); + } + mediaPlayer = null; } - - mediaPlayer.release(); - mediaPlayer = null; } }