Refactor call audio routing and bluetooth management.

This commit is contained in:
Cody Henthorne
2021-09-27 11:23:10 -04:00
parent 6c55916cda
commit e637f15a43
36 changed files with 1345 additions and 981 deletions

View File

@@ -41,6 +41,7 @@ import org.thoughtcrime.securesms.util.Hex;
import org.thoughtcrime.securesms.util.IasKeyStore;
import org.thoughtcrime.securesms.video.exo.SimpleExoPlayerPool;
import org.thoughtcrime.securesms.video.exo.GiphyMp4Cache;
import org.thoughtcrime.securesms.webrtc.audio.AudioManagerCompat;
import org.whispersystems.signalservice.api.KeyBackupService;
import org.whispersystems.signalservice.api.SignalServiceAccountManager;
import org.whispersystems.signalservice.api.SignalServiceMessageReceiver;
@@ -100,8 +101,9 @@ public class ApplicationDependencies {
private static volatile TextSecureSessionStore sessionStore;
private static volatile TextSecurePreKeyStore preKeyStore;
private static volatile SignalSenderKeyStore senderKeyStore;
private static volatile GiphyMp4Cache giphyMp4Cache;
private static volatile SimpleExoPlayerPool exoPlayerPool;
private static volatile GiphyMp4Cache giphyMp4Cache;
private static volatile SimpleExoPlayerPool exoPlayerPool;
private static volatile AudioManagerCompat audioManagerCompat;
@MainThread
public static void init(@NonNull Application application, @NonNull Provider provider) {
@@ -577,6 +579,17 @@ public class ApplicationDependencies {
return exoPlayerPool;
}
public static @NonNull AudioManagerCompat getAndroidCallAudioManager() {
if (audioManagerCompat == null) {
synchronized (LOCK) {
if (audioManagerCompat == null) {
audioManagerCompat = provider.provideAndroidCallAudioManager();
}
}
}
return audioManagerCompat;
}
public interface Provider {
@NonNull GroupsV2Operations provideGroupsV2Operations();
@NonNull SignalServiceAccountManager provideSignalServiceAccountManager();
@@ -611,5 +624,6 @@ public class ApplicationDependencies {
@NonNull SignalSenderKeyStore provideSenderKeyStore();
@NonNull GiphyMp4Cache provideGiphyMp4Cache();
@NonNull SimpleExoPlayerPool provideExoPlayerPool();
@NonNull AudioManagerCompat provideAndroidCallAudioManager();
}
}

View File

@@ -60,6 +60,7 @@ import org.thoughtcrime.securesms.util.FrameRateTracker;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.thoughtcrime.securesms.video.exo.SimpleExoPlayerPool;
import org.thoughtcrime.securesms.video.exo.GiphyMp4Cache;
import org.thoughtcrime.securesms.webrtc.audio.AudioManagerCompat;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.SignalServiceAccountManager;
import org.whispersystems.signalservice.api.SignalServiceMessageReceiver;
@@ -295,6 +296,11 @@ public class ApplicationDependencyProvider implements ApplicationDependencies.Pr
return new SimpleExoPlayerPool(context);
}
@Override
public @NonNull AudioManagerCompat provideAndroidCallAudioManager() {
return AudioManagerCompat.create(context);
}
private @NonNull WebSocketFactory provideWebSocketFactory(@NonNull SignalWebSocketHealthMonitor healthMonitor) {
return new WebSocketFactory() {
@Override