Better support for multi call.

Bug: 73775453,73775590
Test: unit tests
PiperOrigin-RevId: 191657758
Change-Id: If1ae5505185191f04fd57aa828ae5bcc9c21b173
diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java
index 65ef323..44d8667 100644
--- a/java/com/android/incallui/InCallActivity.java
+++ b/java/com/android/incallui/InCallActivity.java
@@ -151,6 +151,7 @@
   private boolean didShowVideoCallScreen;
   private boolean didShowRttCallScreen;
   private boolean didShowSpeakEasyScreen;
+  private String lastShownSpeakEasyScreenUniqueCallid = "";
   private boolean dismissKeyguard;
   private boolean isInShowMainInCallFragment;
   private boolean isRecreating; // whether the activity is going to be recreated
@@ -1353,15 +1354,18 @@
 
   private boolean showSpeakEasyFragment(FragmentTransaction transaction, DialerCall call) {
 
-    // TODO(erfanian): Support multiple speakeasy screens.
     if (didShowSpeakEasyScreen) {
-      return false;
+      if (lastShownSpeakEasyScreenUniqueCallid.equals(call.getUniqueCallId())) {
+        return false;
+      }
+      hideSpeakEasyFragment(transaction);
     }
 
     Optional<Fragment> speakEasyFragment = speakEasyCallManager.getSpeakEasyFragment(call);
     if (speakEasyFragment.isPresent()) {
       transaction.add(R.id.main, speakEasyFragment.get(), Tags.SPEAK_EASY_SCREEN);
       didShowSpeakEasyScreen = true;
+      lastShownSpeakEasyScreenUniqueCallid = call.getUniqueCallId();
       return true;
     }
     return false;