Add "Turn speaker on"/"Turn speaker off" action button in notification.

Add action button when create in call notification and when audio state changes to ROUTE_SPEAKER or ROUTE_WIRED_OR_EARPIECE. Ignore when audio state is ROUTE_BLUETOOTH.

Screenshot:
Speaker on: https://screenshot.googleplex.com/hnsQL0YcFJj
Speaker off: https://screenshot.googleplex.com/oFrbvbs9gVG
Test: StatusBarNotifierTest
PiperOrigin-RevId: 169169372
Change-Id: I2f96f20170dd174b35dfd3f7578fe5b9450391ab
diff --git a/java/com/android/incallui/NotificationBroadcastReceiver.java b/java/com/android/incallui/NotificationBroadcastReceiver.java
index 0daa017..f83f84d 100644
--- a/java/com/android/incallui/NotificationBroadcastReceiver.java
+++ b/java/com/android/incallui/NotificationBroadcastReceiver.java
@@ -21,12 +21,14 @@
 import android.content.Intent;
 import android.os.Build.VERSION_CODES;
 import android.support.annotation.RequiresApi;
+import android.telecom.CallAudioState;
 import android.telecom.VideoProfile;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
+import com.android.incallui.call.TelecomAdapter;
 
 /**
  * Accepts broadcast Intents which will be prepared by {@link StatusBarNotifier} and thus sent from
@@ -52,6 +54,9 @@
       "com.android.incallui.ACTION_ACCEPT_VIDEO_UPGRADE_REQUEST";
   public static final String ACTION_DECLINE_VIDEO_UPGRADE_REQUEST =
       "com.android.incallui.ACTION_DECLINE_VIDEO_UPGRADE_REQUEST";
+  public static final String ACTION_TURN_ON_SPEAKER = "com.android.incallui.ACTION_TURN_ON_SPEAKER";
+  public static final String ACTION_TURN_OFF_SPEAKER =
+      "com.android.incallui.ACTION_TURN_OFF_SPEAKER";
 
   @RequiresApi(VERSION_CODES.N_MR1)
   public static final String ACTION_PULL_EXTERNAL_CALL =
@@ -84,6 +89,10 @@
       context.sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
       int notificationId = intent.getIntExtra(EXTRA_NOTIFICATION_ID, -1);
       InCallPresenter.getInstance().getExternalCallNotifier().pullExternalCall(notificationId);
+    } else if (action.equals(ACTION_TURN_ON_SPEAKER)) {
+      TelecomAdapter.getInstance().setAudioRoute(CallAudioState.ROUTE_SPEAKER);
+    } else if (action.equals(ACTION_TURN_OFF_SPEAKER)) {
+      TelecomAdapter.getInstance().setAudioRoute(CallAudioState.ROUTE_WIRED_OR_EARPIECE);
     }
   }