Add ability to set supported audio routes on phone accounts and connection
The set audio routes are used by Telecom to restrict where the audio may be routed to. For example, an account can specify that calls may not be routed over bluetooth headsets, which will prevent a new call from being routed to this source. This is a cherry-pick of abandoned ag/1521009. Bug: 32958838 Change-Id: Idd5e4d38b157f11454f3d991385644f2f384596e
This commit is contained in:
@ -324,6 +324,7 @@ public final class Call {
|
|||||||
private final PhoneAccountHandle mAccountHandle;
|
private final PhoneAccountHandle mAccountHandle;
|
||||||
private final int mCallCapabilities;
|
private final int mCallCapabilities;
|
||||||
private final int mCallProperties;
|
private final int mCallProperties;
|
||||||
|
private final int mSupportedAudioRoutes = CallAudioState.ROUTE_ALL;
|
||||||
private final DisconnectCause mDisconnectCause;
|
private final DisconnectCause mDisconnectCause;
|
||||||
private final long mConnectTimeMillis;
|
private final long mConnectTimeMillis;
|
||||||
private final GatewayInfo mGatewayInfo;
|
private final GatewayInfo mGatewayInfo;
|
||||||
@ -535,6 +536,15 @@ public final class Call {
|
|||||||
return mCallProperties;
|
return mCallProperties;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a bitmask of the audio routes available for the call.
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public int getSupportedAudioRoutes() {
|
||||||
|
return mSupportedAudioRoutes;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return For a {@link #STATE_DISCONNECTED} {@code Call}, the disconnect cause expressed
|
* @return For a {@link #STATE_DISCONNECTED} {@code Call}, the disconnect cause expressed
|
||||||
* by {@link android.telecom.DisconnectCause}.
|
* by {@link android.telecom.DisconnectCause}.
|
||||||
|
@ -44,8 +44,12 @@ public final class CallAudioState implements Parcelable {
|
|||||||
*/
|
*/
|
||||||
public static final int ROUTE_WIRED_OR_EARPIECE = ROUTE_EARPIECE | ROUTE_WIRED_HEADSET;
|
public static final int ROUTE_WIRED_OR_EARPIECE = ROUTE_EARPIECE | ROUTE_WIRED_HEADSET;
|
||||||
|
|
||||||
/** Bit mask of all possible audio routes. */
|
/**
|
||||||
private static final int ROUTE_ALL = ROUTE_EARPIECE | ROUTE_BLUETOOTH | ROUTE_WIRED_HEADSET |
|
* Bit mask of all possible audio routes.
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
**/
|
||||||
|
public static final int ROUTE_ALL = ROUTE_EARPIECE | ROUTE_BLUETOOTH | ROUTE_WIRED_HEADSET |
|
||||||
ROUTE_SPEAKER;
|
ROUTE_SPEAKER;
|
||||||
|
|
||||||
private final boolean isMuted;
|
private final boolean isMuted;
|
||||||
|
@ -722,6 +722,7 @@ public abstract class Connection extends Conferenceable {
|
|||||||
public void onDestroyed(Connection c) {}
|
public void onDestroyed(Connection c) {}
|
||||||
public void onConnectionCapabilitiesChanged(Connection c, int capabilities) {}
|
public void onConnectionCapabilitiesChanged(Connection c, int capabilities) {}
|
||||||
public void onConnectionPropertiesChanged(Connection c, int properties) {}
|
public void onConnectionPropertiesChanged(Connection c, int properties) {}
|
||||||
|
public void onSupportedAudioRoutesChanged(Connection c, int supportedAudioRoutes) {}
|
||||||
public void onVideoProviderChanged(
|
public void onVideoProviderChanged(
|
||||||
Connection c, VideoProvider videoProvider) {}
|
Connection c, VideoProvider videoProvider) {}
|
||||||
public void onAudioModeIsVoipChanged(Connection c, boolean isVoip) {}
|
public void onAudioModeIsVoipChanged(Connection c, boolean isVoip) {}
|
||||||
@ -1428,6 +1429,7 @@ public abstract class Connection extends Conferenceable {
|
|||||||
private boolean mRingbackRequested = false;
|
private boolean mRingbackRequested = false;
|
||||||
private int mConnectionCapabilities;
|
private int mConnectionCapabilities;
|
||||||
private int mConnectionProperties;
|
private int mConnectionProperties;
|
||||||
|
private int mSupportedAudioRoutes = CallAudioState.ROUTE_ALL;
|
||||||
private VideoProvider mVideoProvider;
|
private VideoProvider mVideoProvider;
|
||||||
private boolean mAudioModeIsVoip;
|
private boolean mAudioModeIsVoip;
|
||||||
private long mConnectTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;
|
private long mConnectTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;
|
||||||
@ -1707,6 +1709,15 @@ public abstract class Connection extends Conferenceable {
|
|||||||
return mConnectionProperties;
|
return mConnectionProperties;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the connection's supported audio routes.
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public final int getSupportedAudioRoutes() {
|
||||||
|
return mSupportedAudioRoutes;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the value of the {@link #getAddress()} property.
|
* Sets the value of the {@link #getAddress()} property.
|
||||||
*
|
*
|
||||||
@ -1928,6 +1939,28 @@ public abstract class Connection extends Conferenceable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the supported audio routes.
|
||||||
|
*
|
||||||
|
* @param supportedAudioRoutes the supported audio routes as a bitmask.
|
||||||
|
* See {@link CallAudioState}
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public final void setSupportedAudioRoutes(int supportedAudioRoutes) {
|
||||||
|
if ((supportedAudioRoutes
|
||||||
|
& (CallAudioState.ROUTE_EARPIECE | CallAudioState.ROUTE_SPEAKER)) == 0) {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"supported audio routes must include either speaker or earpiece");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mSupportedAudioRoutes != supportedAudioRoutes) {
|
||||||
|
mSupportedAudioRoutes = supportedAudioRoutes;
|
||||||
|
for (Listener l : mListeners) {
|
||||||
|
l.onSupportedAudioRoutesChanged(this, mSupportedAudioRoutes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tears down the Connection object.
|
* Tears down the Connection object.
|
||||||
*/
|
*/
|
||||||
|
@ -776,6 +776,7 @@ public abstract class ConnectionService extends Service {
|
|||||||
connection.getState(),
|
connection.getState(),
|
||||||
connection.getConnectionCapabilities(),
|
connection.getConnectionCapabilities(),
|
||||||
connection.getConnectionProperties(),
|
connection.getConnectionProperties(),
|
||||||
|
connection.getSupportedAudioRoutes(),
|
||||||
connection.getAddress(),
|
connection.getAddress(),
|
||||||
connection.getAddressPresentation(),
|
connection.getAddressPresentation(),
|
||||||
connection.getCallerDisplayName(),
|
connection.getCallerDisplayName(),
|
||||||
@ -1175,6 +1176,7 @@ public abstract class ConnectionService extends Service {
|
|||||||
connection.getState(),
|
connection.getState(),
|
||||||
connection.getConnectionCapabilities(),
|
connection.getConnectionCapabilities(),
|
||||||
connection.getConnectionProperties(),
|
connection.getConnectionProperties(),
|
||||||
|
connection.getSupportedAudioRoutes(),
|
||||||
connection.getAddress(),
|
connection.getAddress(),
|
||||||
connection.getAddressPresentation(),
|
connection.getAddressPresentation(),
|
||||||
connection.getCallerDisplayName(),
|
connection.getCallerDisplayName(),
|
||||||
|
@ -39,6 +39,7 @@ public final class ParcelableCall implements Parcelable {
|
|||||||
private final List<String> mCannedSmsResponses;
|
private final List<String> mCannedSmsResponses;
|
||||||
private final int mCapabilities;
|
private final int mCapabilities;
|
||||||
private final int mProperties;
|
private final int mProperties;
|
||||||
|
private final int mSupportedAudioRoutes;
|
||||||
private final long mConnectTimeMillis;
|
private final long mConnectTimeMillis;
|
||||||
private final Uri mHandle;
|
private final Uri mHandle;
|
||||||
private final int mHandlePresentation;
|
private final int mHandlePresentation;
|
||||||
@ -64,6 +65,7 @@ public final class ParcelableCall implements Parcelable {
|
|||||||
List<String> cannedSmsResponses,
|
List<String> cannedSmsResponses,
|
||||||
int capabilities,
|
int capabilities,
|
||||||
int properties,
|
int properties,
|
||||||
|
int supportedAudioRoutes,
|
||||||
long connectTimeMillis,
|
long connectTimeMillis,
|
||||||
Uri handle,
|
Uri handle,
|
||||||
int handlePresentation,
|
int handlePresentation,
|
||||||
@ -86,6 +88,7 @@ public final class ParcelableCall implements Parcelable {
|
|||||||
mCannedSmsResponses = cannedSmsResponses;
|
mCannedSmsResponses = cannedSmsResponses;
|
||||||
mCapabilities = capabilities;
|
mCapabilities = capabilities;
|
||||||
mProperties = properties;
|
mProperties = properties;
|
||||||
|
mSupportedAudioRoutes = supportedAudioRoutes;
|
||||||
mConnectTimeMillis = connectTimeMillis;
|
mConnectTimeMillis = connectTimeMillis;
|
||||||
mHandle = handle;
|
mHandle = handle;
|
||||||
mHandlePresentation = handlePresentation;
|
mHandlePresentation = handlePresentation;
|
||||||
@ -137,6 +140,11 @@ public final class ParcelableCall implements Parcelable {
|
|||||||
/** Bitmask of properties of the call. */
|
/** Bitmask of properties of the call. */
|
||||||
public int getProperties() { return mProperties; }
|
public int getProperties() { return mProperties; }
|
||||||
|
|
||||||
|
/** Bitmask of supported routes of the call */
|
||||||
|
public int getSupportedAudioRoutes() {
|
||||||
|
return mSupportedAudioRoutes;
|
||||||
|
}
|
||||||
|
|
||||||
/** The time that the call switched to the active state. */
|
/** The time that the call switched to the active state. */
|
||||||
public long getConnectTimeMillis() {
|
public long getConnectTimeMillis() {
|
||||||
return mConnectTimeMillis;
|
return mConnectTimeMillis;
|
||||||
@ -292,6 +300,7 @@ public final class ParcelableCall implements Parcelable {
|
|||||||
source.readList(conferenceableCallIds, classLoader);
|
source.readList(conferenceableCallIds, classLoader);
|
||||||
Bundle intentExtras = source.readBundle(classLoader);
|
Bundle intentExtras = source.readBundle(classLoader);
|
||||||
Bundle extras = source.readBundle(classLoader);
|
Bundle extras = source.readBundle(classLoader);
|
||||||
|
int supportedAudioRoutes = source.readInt();
|
||||||
return new ParcelableCall(
|
return new ParcelableCall(
|
||||||
id,
|
id,
|
||||||
state,
|
state,
|
||||||
@ -299,6 +308,7 @@ public final class ParcelableCall implements Parcelable {
|
|||||||
cannedSmsResponses,
|
cannedSmsResponses,
|
||||||
capabilities,
|
capabilities,
|
||||||
properties,
|
properties,
|
||||||
|
supportedAudioRoutes,
|
||||||
connectTimeMillis,
|
connectTimeMillis,
|
||||||
handle,
|
handle,
|
||||||
handlePresentation,
|
handlePresentation,
|
||||||
@ -355,6 +365,7 @@ public final class ParcelableCall implements Parcelable {
|
|||||||
destination.writeList(mConferenceableCallIds);
|
destination.writeList(mConferenceableCallIds);
|
||||||
destination.writeBundle(mIntentExtras);
|
destination.writeBundle(mIntentExtras);
|
||||||
destination.writeBundle(mExtras);
|
destination.writeBundle(mExtras);
|
||||||
|
destination.writeInt(mSupportedAudioRoutes);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -37,6 +37,7 @@ public final class ParcelableConnection implements Parcelable {
|
|||||||
private final int mState;
|
private final int mState;
|
||||||
private final int mConnectionCapabilities;
|
private final int mConnectionCapabilities;
|
||||||
private final int mConnectionProperties;
|
private final int mConnectionProperties;
|
||||||
|
private final int mSupportedAudioRoutes;
|
||||||
private final Uri mAddress;
|
private final Uri mAddress;
|
||||||
private final int mAddressPresentation;
|
private final int mAddressPresentation;
|
||||||
private final String mCallerDisplayName;
|
private final String mCallerDisplayName;
|
||||||
@ -57,6 +58,7 @@ public final class ParcelableConnection implements Parcelable {
|
|||||||
int state,
|
int state,
|
||||||
int capabilities,
|
int capabilities,
|
||||||
int properties,
|
int properties,
|
||||||
|
int supportedAudioRoutes,
|
||||||
Uri address,
|
Uri address,
|
||||||
int addressPresentation,
|
int addressPresentation,
|
||||||
String callerDisplayName,
|
String callerDisplayName,
|
||||||
@ -74,6 +76,7 @@ public final class ParcelableConnection implements Parcelable {
|
|||||||
mState = state;
|
mState = state;
|
||||||
mConnectionCapabilities = capabilities;
|
mConnectionCapabilities = capabilities;
|
||||||
mConnectionProperties = properties;
|
mConnectionProperties = properties;
|
||||||
|
mSupportedAudioRoutes = supportedAudioRoutes;
|
||||||
mAddress = address;
|
mAddress = address;
|
||||||
mAddressPresentation = addressPresentation;
|
mAddressPresentation = addressPresentation;
|
||||||
mCallerDisplayName = callerDisplayName;
|
mCallerDisplayName = callerDisplayName;
|
||||||
@ -117,6 +120,10 @@ public final class ParcelableConnection implements Parcelable {
|
|||||||
return mConnectionProperties;
|
return mConnectionProperties;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getSupportedAudioRoutes() {
|
||||||
|
return mSupportedAudioRoutes;
|
||||||
|
}
|
||||||
|
|
||||||
public Uri getHandle() {
|
public Uri getHandle() {
|
||||||
return mAddress;
|
return mAddress;
|
||||||
}
|
}
|
||||||
@ -210,12 +217,14 @@ public final class ParcelableConnection implements Parcelable {
|
|||||||
source.readStringList(conferenceableConnectionIds);
|
source.readStringList(conferenceableConnectionIds);
|
||||||
Bundle extras = Bundle.setDefusable(source.readBundle(classLoader), true);
|
Bundle extras = Bundle.setDefusable(source.readBundle(classLoader), true);
|
||||||
int properties = source.readInt();
|
int properties = source.readInt();
|
||||||
|
int supportedAudioRoutes = source.readInt();
|
||||||
|
|
||||||
return new ParcelableConnection(
|
return new ParcelableConnection(
|
||||||
phoneAccount,
|
phoneAccount,
|
||||||
state,
|
state,
|
||||||
capabilities,
|
capabilities,
|
||||||
properties,
|
properties,
|
||||||
|
supportedAudioRoutes,
|
||||||
address,
|
address,
|
||||||
addressPresentation,
|
addressPresentation,
|
||||||
callerDisplayName,
|
callerDisplayName,
|
||||||
@ -264,5 +273,6 @@ public final class ParcelableConnection implements Parcelable {
|
|||||||
destination.writeStringList(mConferenceableConnectionIds);
|
destination.writeStringList(mConferenceableConnectionIds);
|
||||||
destination.writeBundle(mExtras);
|
destination.writeBundle(mExtras);
|
||||||
destination.writeInt(mConnectionProperties);
|
destination.writeInt(mConnectionProperties);
|
||||||
|
destination.writeInt(mSupportedAudioRoutes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,15 +17,6 @@
|
|||||||
package android.telecom;
|
package android.telecom;
|
||||||
|
|
||||||
import android.annotation.SystemApi;
|
import android.annotation.SystemApi;
|
||||||
import android.content.ComponentName;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.pm.PackageManager;
|
|
||||||
import android.content.res.Resources.NotFoundException;
|
|
||||||
import android.graphics.Bitmap;
|
|
||||||
import android.graphics.Color;
|
|
||||||
import android.graphics.drawable.BitmapDrawable;
|
|
||||||
import android.graphics.drawable.ColorDrawable;
|
|
||||||
import android.graphics.drawable.Drawable;
|
|
||||||
import android.graphics.drawable.Icon;
|
import android.graphics.drawable.Icon;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@ -37,7 +28,6 @@ import java.lang.String;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.MissingResourceException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a distinct method to place or receive a phone call. Apps which can place calls and
|
* Represents a distinct method to place or receive a phone call. Apps which can place calls and
|
||||||
@ -217,6 +207,7 @@ public final class PhoneAccount implements Parcelable {
|
|||||||
private final CharSequence mLabel;
|
private final CharSequence mLabel;
|
||||||
private final CharSequence mShortDescription;
|
private final CharSequence mShortDescription;
|
||||||
private final List<String> mSupportedUriSchemes;
|
private final List<String> mSupportedUriSchemes;
|
||||||
|
private final int mSupportedAudioRoutes;
|
||||||
private final Icon mIcon;
|
private final Icon mIcon;
|
||||||
private final Bundle mExtras;
|
private final Bundle mExtras;
|
||||||
private boolean mIsEnabled;
|
private boolean mIsEnabled;
|
||||||
@ -226,10 +217,12 @@ public final class PhoneAccount implements Parcelable {
|
|||||||
* Helper class for creating a {@link PhoneAccount}.
|
* Helper class for creating a {@link PhoneAccount}.
|
||||||
*/
|
*/
|
||||||
public static class Builder {
|
public static class Builder {
|
||||||
|
|
||||||
private PhoneAccountHandle mAccountHandle;
|
private PhoneAccountHandle mAccountHandle;
|
||||||
private Uri mAddress;
|
private Uri mAddress;
|
||||||
private Uri mSubscriptionAddress;
|
private Uri mSubscriptionAddress;
|
||||||
private int mCapabilities;
|
private int mCapabilities;
|
||||||
|
private int mSupportedAudioRoutes = CallAudioState.ROUTE_ALL;
|
||||||
private int mHighlightColor = NO_HIGHLIGHT_COLOR;
|
private int mHighlightColor = NO_HIGHLIGHT_COLOR;
|
||||||
private CharSequence mLabel;
|
private CharSequence mLabel;
|
||||||
private CharSequence mShortDescription;
|
private CharSequence mShortDescription;
|
||||||
@ -266,6 +259,7 @@ public final class PhoneAccount implements Parcelable {
|
|||||||
mIsEnabled = phoneAccount.isEnabled();
|
mIsEnabled = phoneAccount.isEnabled();
|
||||||
mExtras = phoneAccount.getExtras();
|
mExtras = phoneAccount.getExtras();
|
||||||
mGroupId = phoneAccount.getGroupId();
|
mGroupId = phoneAccount.getGroupId();
|
||||||
|
mSupportedAudioRoutes = phoneAccount.getSupportedAudioRoutes();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -410,6 +404,18 @@ public final class PhoneAccount implements Parcelable {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the audio routes supported by this {@link PhoneAccount}.
|
||||||
|
*
|
||||||
|
* @param routes bit mask of available routes.
|
||||||
|
* @return The builder.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public Builder setSupportedAudioRoutes(int routes) {
|
||||||
|
mSupportedAudioRoutes = routes;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an instance of a {@link PhoneAccount} based on the current builder settings.
|
* Creates an instance of a {@link PhoneAccount} based on the current builder settings.
|
||||||
*
|
*
|
||||||
@ -432,6 +438,7 @@ public final class PhoneAccount implements Parcelable {
|
|||||||
mShortDescription,
|
mShortDescription,
|
||||||
mSupportedUriSchemes,
|
mSupportedUriSchemes,
|
||||||
mExtras,
|
mExtras,
|
||||||
|
mSupportedAudioRoutes,
|
||||||
mIsEnabled,
|
mIsEnabled,
|
||||||
mGroupId);
|
mGroupId);
|
||||||
}
|
}
|
||||||
@ -448,6 +455,7 @@ public final class PhoneAccount implements Parcelable {
|
|||||||
CharSequence shortDescription,
|
CharSequence shortDescription,
|
||||||
List<String> supportedUriSchemes,
|
List<String> supportedUriSchemes,
|
||||||
Bundle extras,
|
Bundle extras,
|
||||||
|
int supportedAudioRoutes,
|
||||||
boolean isEnabled,
|
boolean isEnabled,
|
||||||
String groupId) {
|
String groupId) {
|
||||||
mAccountHandle = account;
|
mAccountHandle = account;
|
||||||
@ -460,6 +468,7 @@ public final class PhoneAccount implements Parcelable {
|
|||||||
mShortDescription = shortDescription;
|
mShortDescription = shortDescription;
|
||||||
mSupportedUriSchemes = Collections.unmodifiableList(supportedUriSchemes);
|
mSupportedUriSchemes = Collections.unmodifiableList(supportedUriSchemes);
|
||||||
mExtras = extras;
|
mExtras = extras;
|
||||||
|
mSupportedAudioRoutes = supportedAudioRoutes;
|
||||||
mIsEnabled = isEnabled;
|
mIsEnabled = isEnabled;
|
||||||
mGroupId = groupId;
|
mGroupId = groupId;
|
||||||
}
|
}
|
||||||
@ -532,6 +541,17 @@ public final class PhoneAccount implements Parcelable {
|
|||||||
return (mCapabilities & capability) == capability;
|
return (mCapabilities & capability) == capability;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines if this {@code PhoneAccount} has routes specified by the passed in bit mask.
|
||||||
|
*
|
||||||
|
* @param route The routes to check.
|
||||||
|
* @return {@code true} if the phone account has the routes.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public boolean hasAudioRoutes(int routes) {
|
||||||
|
return (mSupportedAudioRoutes & routes) == routes;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A short label describing a {@code PhoneAccount}.
|
* A short label describing a {@code PhoneAccount}.
|
||||||
*
|
*
|
||||||
@ -571,6 +591,15 @@ public final class PhoneAccount implements Parcelable {
|
|||||||
return mExtras;
|
return mExtras;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The audio routes supported by this {@code PhoneAccount}.
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public int getSupportedAudioRoutes() {
|
||||||
|
return mSupportedAudioRoutes;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The icon to represent this {@code PhoneAccount}.
|
* The icon to represent this {@code PhoneAccount}.
|
||||||
*
|
*
|
||||||
@ -687,6 +716,7 @@ public final class PhoneAccount implements Parcelable {
|
|||||||
out.writeByte((byte) (mIsEnabled ? 1 : 0));
|
out.writeByte((byte) (mIsEnabled ? 1 : 0));
|
||||||
out.writeBundle(mExtras);
|
out.writeBundle(mExtras);
|
||||||
out.writeString(mGroupId);
|
out.writeString(mGroupId);
|
||||||
|
out.writeInt(mSupportedAudioRoutes);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final Creator<PhoneAccount> CREATOR
|
public static final Creator<PhoneAccount> CREATOR
|
||||||
@ -731,6 +761,7 @@ public final class PhoneAccount implements Parcelable {
|
|||||||
mIsEnabled = in.readByte() == 1;
|
mIsEnabled = in.readByte() == 1;
|
||||||
mExtras = in.readBundle();
|
mExtras = in.readBundle();
|
||||||
mGroupId = in.readString();
|
mGroupId = in.readString();
|
||||||
|
mSupportedAudioRoutes = in.readInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -740,7 +771,9 @@ public final class PhoneAccount implements Parcelable {
|
|||||||
.append("] PhoneAccount: ")
|
.append("] PhoneAccount: ")
|
||||||
.append(mAccountHandle)
|
.append(mAccountHandle)
|
||||||
.append(" Capabilities: ")
|
.append(" Capabilities: ")
|
||||||
.append(capabilitiesToString(mCapabilities))
|
.append(capabilitiesToString())
|
||||||
|
.append(" Audio Routes: ")
|
||||||
|
.append(audioRoutesToString())
|
||||||
.append(" Schemes: ");
|
.append(" Schemes: ");
|
||||||
for (String scheme : mSupportedUriSchemes) {
|
for (String scheme : mSupportedUriSchemes) {
|
||||||
sb.append(scheme)
|
sb.append(scheme)
|
||||||
@ -760,7 +793,7 @@ public final class PhoneAccount implements Parcelable {
|
|||||||
* @param capabilities The capabilities bitmask.
|
* @param capabilities The capabilities bitmask.
|
||||||
* @return String representation of the capabilities bitmask.
|
* @return String representation of the capabilities bitmask.
|
||||||
*/
|
*/
|
||||||
private String capabilitiesToString(int capabilities) {
|
private String capabilitiesToString() {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
if (hasCapabilities(CAPABILITY_VIDEO_CALLING)) {
|
if (hasCapabilities(CAPABILITY_VIDEO_CALLING)) {
|
||||||
sb.append("Video ");
|
sb.append("Video ");
|
||||||
@ -794,4 +827,23 @@ public final class PhoneAccount implements Parcelable {
|
|||||||
}
|
}
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String audioRoutesToString() {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
|
if (hasAudioRoutes(CallAudioState.ROUTE_BLUETOOTH)) {
|
||||||
|
sb.append("B");
|
||||||
|
}
|
||||||
|
if (hasAudioRoutes(CallAudioState.ROUTE_EARPIECE)) {
|
||||||
|
sb.append("E");
|
||||||
|
}
|
||||||
|
if (hasAudioRoutes(CallAudioState.ROUTE_SPEAKER)) {
|
||||||
|
sb.append("S");
|
||||||
|
}
|
||||||
|
if (hasAudioRoutes(CallAudioState.ROUTE_WIRED_HEADSET)) {
|
||||||
|
sb.append("W");
|
||||||
|
}
|
||||||
|
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user