Add API for external call audio route.
Test: CTS test
Change-Id: Ibd1c2880e732f39281f5f6616465bf2c680c1b0d
diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java
index d94fafc..ce9530c 100644
--- a/telecomm/java/android/telecom/Call.java
+++ b/telecomm/java/android/telecom/Call.java
@@ -701,8 +701,15 @@
*/
public static final int PROPERTY_CROSS_SIM = 0x00004000;
+ /**
+ * Connection is a tethered external call.
+ * Indicates that the {@link Connection} is fixed on this device but the audio streams are
+ * re-routed to another device.
+ */
+ public static final int PROPERTY_TETHERED_CALL = 0x00008000;
+
//******************************************************************************************
- // Next PROPERTY value: 0x00004000
+ // Next PROPERTY value: 0x00010000
//******************************************************************************************
private final @CallState int mState;
@@ -899,6 +906,9 @@
if (hasProperty(properties, PROPERTY_CROSS_SIM)) {
builder.append(" PROPERTY_CROSS_SIM");
}
+ if (hasProperty(properties, PROPERTY_TETHERED_CALL)) {
+ builder.append(" PROPERTY_TETHERED_CALL");
+ }
builder.append("]");
return builder.toString();
}
diff --git a/telecomm/java/android/telecom/CallAudioState.java b/telecomm/java/android/telecom/CallAudioState.java
index 4b90985..55957bd 100644
--- a/telecomm/java/android/telecom/CallAudioState.java
+++ b/telecomm/java/android/telecom/CallAudioState.java
@@ -27,7 +27,6 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -42,7 +41,8 @@
public final class CallAudioState implements Parcelable {
/** @hide */
@Retention(RetentionPolicy.SOURCE)
- @IntDef(value={ROUTE_EARPIECE, ROUTE_BLUETOOTH, ROUTE_WIRED_HEADSET, ROUTE_SPEAKER},
+ @IntDef(value = {ROUTE_EARPIECE, ROUTE_BLUETOOTH, ROUTE_WIRED_HEADSET, ROUTE_SPEAKER,
+ ROUTE_EXTERNAL},
flag=true)
public @interface CallAudioRoute {}
@@ -58,6 +58,9 @@
/** Direct the audio stream through the device's speakerphone. */
public static final int ROUTE_SPEAKER = 0x00000008;
+ /** Direct the audio stream through another device. */
+ public static final int ROUTE_EXTERNAL = 0x00000010;
+
/**
* Direct the audio stream through the device's earpiece or wired headset if one is
* connected.
@@ -70,7 +73,7 @@
* @hide
**/
public static final int ROUTE_ALL = ROUTE_EARPIECE | ROUTE_BLUETOOTH | ROUTE_WIRED_HEADSET |
- ROUTE_SPEAKER;
+ ROUTE_SPEAKER | ROUTE_EXTERNAL;
private final boolean isMuted;
private final int route;
@@ -189,7 +192,11 @@
*/
@CallAudioRoute
public int getSupportedRouteMask() {
- return supportedRouteMask;
+ if (route == ROUTE_EXTERNAL) {
+ return ROUTE_EXTERNAL;
+ } else {
+ return supportedRouteMask;
+ }
}
/**
@@ -233,6 +240,10 @@
listAppend(buffer, "SPEAKER");
}
+ if ((route & ROUTE_EXTERNAL) == ROUTE_EXTERNAL) {
+ listAppend(buffer, "EXTERNAL");
+ }
+
return buffer.toString();
}
diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java
index 9fec96b..22a37d0 100644
--- a/telecomm/java/android/telecom/Connection.java
+++ b/telecomm/java/android/telecom/Connection.java
@@ -561,6 +561,15 @@
*/
public static final int PROPERTY_CROSS_SIM = 1 << 13;
+ /**
+ * Connection is a tethered external call.
+ * <p>
+ * Indicates that the {@link Connection} is fixed on this device but the audio streams are
+ * re-routed to another device.
+ * <p>
+ */
+ public static final int PROPERTY_TETHERED_CALL = 1 << 14;
+
//**********************************************************************************************
// Next PROPERTY value: 1<<14
//**********************************************************************************************