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);
}
}