diff --git a/src/main/java/eu/siacs/conversations/ui/XmppFragment.java b/src/main/java/eu/siacs/conversations/ui/XmppFragment.java index 3e5fd62429bc04787411874251a67b75d10fc355..b3f563b2502b8e881a699f7b71fe74f02edbe44e 100644 --- a/src/main/java/eu/siacs/conversations/ui/XmppFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/XmppFragment.java @@ -79,7 +79,9 @@ public abstract class XmppFragment extends Fragment implements OnBackendConnecte @Override public void onDestroy() { if (lifecycle.getCurrentState().isAtLeast(Lifecycle.State.CREATED)) { - lifecycle.handleLifecycleEvent(Lifecycle.Event.ON_DESTROY); + try { + lifecycle.handleLifecycleEvent(Lifecycle.Event.ON_DESTROY); + } catch (IllegalStateException e) { } } super.onDestroy(); } diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java index 38c865443cba9397cb908da57111cafcdc58b984..60e421ebb8a6f0a0ec97b56f6a82e299dd90655a 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java @@ -62,7 +62,7 @@ public class WebRTCWrapper { private final ExecutorService localDescriptionExecutorService = Executors.newSingleThreadExecutor(); - private static final int TONE_DURATION = 500; + private static final int TONE_DURATION = 400; private static final int DEFAULT_TONE_VOLUME = 60; private static final Map TONE_CODES; static { @@ -718,9 +718,12 @@ public class WebRTCWrapper { public boolean applyDtmfTone(String tone) { localAudioTrack.rtpSender.dtmf().insertDtmf(tone, TONE_DURATION, 100); - final var toneGenerator = - new ToneGenerator(AudioManager.STREAM_VOICE_CALL, DEFAULT_TONE_VOLUME); - toneGenerator.startTone(TONE_CODES.get(tone), TONE_DURATION); + final var handler = new android.os.Handler(android.os.Looper.getMainLooper()); + handler.post(() -> { + final var toneGenerator = new ToneGenerator(AudioManager.STREAM_VOICE_CALL, DEFAULT_TONE_VOLUME); + toneGenerator.startTone(TONE_CODES.get(tone), TONE_DURATION); + }); + return true; }