Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/iNPUTmice/Conversations.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java')
-rw-r--r--src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java42
1 files changed, 30 insertions, 12 deletions
diff --git a/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java b/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java
index cbf00d04b..e73fdb23c 100644
--- a/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java
@@ -5,6 +5,7 @@ import static eu.siacs.conversations.utils.PermissionUtils.getFirstDenied;
import android.Manifest;
import android.annotation.SuppressLint;
+import android.app.Activity;
import android.app.PictureInPictureParams;
import android.content.ActivityNotFoundException;
import android.content.Context;
@@ -297,21 +298,38 @@ public class RtpSessionActivity extends XmppActivity
}
private void checkMicrophoneAvailabilityAsync() {
- new Thread(this::checkMicrophoneAvailability).start();
+ new Thread(new MicrophoneAvailabilityCheck(this)).start();
}
- private void checkMicrophoneAvailability() {
- final long start = SystemClock.elapsedRealtime();
- final boolean isMicrophoneAvailable = AppRTCAudioManager.isMicrophoneAvailable();
- final long stop = SystemClock.elapsedRealtime();
- Log.d(Config.LOGTAG, "checking microphone availability took " + (stop - start) + "ms");
- if (isMicrophoneAvailable) {
- return;
+ private static class MicrophoneAvailabilityCheck implements Runnable {
+
+ private final WeakReference<Activity> activityReference;
+
+ private MicrophoneAvailabilityCheck(final Activity activity) {
+ this.activityReference = new WeakReference<>(activity);
+ }
+
+ @Override
+ public void run() {
+ final long start = SystemClock.elapsedRealtime();
+ final boolean isMicrophoneAvailable = AppRTCAudioManager.isMicrophoneAvailable();
+ final long stop = SystemClock.elapsedRealtime();
+ Log.d(Config.LOGTAG, "checking microphone availability took " + (stop - start) + "ms");
+ if (isMicrophoneAvailable) {
+ return;
+ }
+ final Activity activity = activityReference.get();
+ if (activity == null) {
+ return;
+ }
+ activity.runOnUiThread(
+ () ->
+ Toast.makeText(
+ activity,
+ R.string.microphone_unavailable,
+ Toast.LENGTH_LONG)
+ .show());
}
- runOnUiThread(
- () ->
- Toast.makeText(this, R.string.microphone_unavailable, Toast.LENGTH_LONG)
- .show());
}
private void putScreenInCallMode() {