Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7ef59a7 authored by Sailesh Nepal's avatar Sailesh Nepal
Browse files

Add Connection.setStatusHints

This CL allows a connection to specify a status hint. The hint
contains a label and icon that can be displayed in the InCallUI.
For example, wifi calling can set a wifi icon and ssid.

Change-Id: I125628b74784d2303b9a429038a9f7ee604f241e
parent 24ae2962
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -27618,6 +27618,7 @@ package android.telecomm {
    method public final android.net.Uri getHandle();
    method public final android.telecomm.Connection getParentConnection();
    method public final int getState();
    method public final android.telecomm.StatusHints getStatusHints();
    method public final boolean isConferenceCapable();
    method public final boolean isConferenceConnection();
    method public final boolean isRequestingRingback();
@@ -27650,6 +27651,7 @@ package android.telecomm {
    method public final void setRequestingRingback(boolean);
    method public final void setRinging();
    method public final void setSignal(android.os.Bundle);
    method public final void setStatusHints(android.telecomm.StatusHints);
    method public static java.lang.String stateToString(int);
  }
@@ -27734,6 +27736,7 @@ package android.telecomm {
    method public android.net.Uri getHandle();
    method public java.lang.String getId();
    method public android.telecomm.CallState getState();
    method public android.telecomm.StatusHints getStatusHints();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator CREATOR;
  }
@@ -27751,7 +27754,7 @@ package android.telecomm {
    method protected abstract void updateCall(android.telecomm.InCallCall);
  }
  public class PhoneAccount implements android.os.Parcelable {
  public final class PhoneAccount implements android.os.Parcelable {
    ctor public PhoneAccount(android.content.ComponentName, java.lang.String, android.net.Uri, java.lang.String, java.lang.String, boolean, boolean);
    method public int describeContents();
    method public android.content.ComponentName getComponentName();
@@ -27802,6 +27805,7 @@ package android.telecomm {
    method public java.lang.String getDisconnectMessage();
    method public int getFeatures();
    method public int getState();
    method public android.telecomm.StatusHints getStatusHints();
    method public void hold();
    method public void playDtmf(char);
    method public void postDialContinue(boolean);
@@ -27819,6 +27823,7 @@ package android.telecomm {
    method public abstract void onPostDialWait(android.telecomm.RemoteConnection, java.lang.String);
    method public abstract void onRequestingRingback(android.telecomm.RemoteConnection, boolean);
    method public abstract void onSetAudioModeIsVoip(android.telecomm.RemoteConnection, boolean);
    method public abstract void onSetStatusHints(android.telecomm.RemoteConnection, android.telecomm.StatusHints);
    method public abstract void onStateChanged(android.telecomm.RemoteConnection, int);
  }
@@ -27832,6 +27837,17 @@ package android.telecomm {
    method public abstract void onResult(IN, OUT);
  }
  public final class StatusHints implements android.os.Parcelable {
    ctor public StatusHints(android.content.ComponentName, java.lang.String, int);
    method public int describeContents();
    method public android.content.ComponentName getComponentName();
    method public android.graphics.drawable.Drawable getIcon(android.content.Context);
    method public int getIconId();
    method public java.lang.String getLabel();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator CREATOR;
  }
  public final class TelecommConstants {
    ctor public TelecommConstants();
    field public static final java.lang.String ACTION_CALL_SERVICE_PROVIDER;
+24 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ public abstract class Connection {
        void onParentConnectionChanged(Connection c, Connection parent);
        void onSetCallVideoProvider(Connection c, CallVideoProvider callVideoProvider);
        void onSetAudioModeIsVoip(Connection c, boolean isVoip);
        void onSetStatusHints(Connection c, StatusHints statusHints);
    }

    /** @hide */
@@ -85,6 +86,9 @@ public abstract class Connection {

        @Override
        public void onSetAudioModeIsVoip(Connection c, boolean isVoip) {}

        @Override
        public void onSetStatusHints(Connection c, StatusHints statusHints) {}
    }

    public final class State {
@@ -109,6 +113,7 @@ public abstract class Connection {
    private boolean mIsConferenceCapable = false;
    private Connection mParentConnection;
    private boolean mAudioModeIsVoip;
    private StatusHints mStatusHints;

    /**
     * Create a new Connection.
@@ -176,6 +181,13 @@ public abstract class Connection {
        return mAudioModeIsVoip;
    }

    /**
     * @return The status hints for this connection.
     */
    public final StatusHints getStatusHints() {
        return mStatusHints;
    }

    /**
     * Assign a listener to be notified of state changes.
     *
@@ -431,6 +443,18 @@ public abstract class Connection {
        }
    }

    /**
     * Sets the label and icon status to display in the in-call UI.
     *
     * @param statusHints The status label and icon to set.
     */
    public final void setStatusHints(StatusHints statusHints) {
        mStatusHints = statusHints;
        for (Listener l : mListeners) {
            l.onSetStatusHints(this, statusHints);
        }
    }

    /**
     * Notifies this Connection and listeners that the {@link #getCallAudioState()} property
     * has a new value.
+6 −0
Original line number Diff line number Diff line
@@ -370,6 +370,12 @@ public abstract class ConnectionService extends Service {
            String id = mIdByConnection.get(c);
            mAdapter.setAudioModeIsVoip(id, isVoip);
        }

        @Override
        public void onSetStatusHints(Connection c, StatusHints statusHints) {
            String id = mIdByConnection.get(c);
            mAdapter.setStatusHints(id, statusHints);
        }
    };

    /** {@inheritDoc} */
+9 −0
Original line number Diff line number Diff line
@@ -335,6 +335,15 @@ final class ConnectionServiceAdapter implements DeathRecipient {
        }
    }

    void setStatusHints(String callId, StatusHints statusHints) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
                adapter.setStatusHints(callId, statusHints);
            } catch (RemoteException e) {
            }
        }
    }

    /**
    * Set the features associated with the given call.
    * Features are defined in {@link android.telecomm.CallFeatures} and are passed in as a
+17 −2
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ public final class InCallCall implements Parcelable {
    private final String mParentCallId;
    private final List<String> mChildCallIds;
    private final int mFeatures;
    private final StatusHints mStatusHints;

    /** @hide */
    public InCallCall(
@@ -65,7 +66,8 @@ public final class InCallCall implements Parcelable {
            ICallVideoProvider callVideoProvider,
            String parentCallId,
            List<String> childCallIds,
            int features) {
            int features,
            StatusHints statusHints) {
        mId = id;
        mState = state;
        mDisconnectCauseCode = disconnectCauseCode;
@@ -81,6 +83,7 @@ public final class InCallCall implements Parcelable {
        mParentCallId = parentCallId;
        mChildCallIds = childCallIds;
        mFeatures = features;
        mStatusHints = statusHints;
    }

    /** The unique ID of the call. */
@@ -188,6 +191,15 @@ public final class InCallCall implements Parcelable {
        return mFeatures;
    }

    /**
     * The status label and icon.
     *
     * @return Status hints.
     */
    public StatusHints getStatusHints() {
        return mStatusHints;
    }

    /** Responsible for creating InCallCall objects for deserialized Parcels. */
    public static final Parcelable.Creator<InCallCall> CREATOR =
            new Parcelable.Creator<InCallCall> () {
@@ -212,9 +224,11 @@ public final class InCallCall implements Parcelable {
            List<String> childCallIds = new ArrayList<>();
            source.readList(childCallIds, classLoader);
            int features = source.readInt();
            StatusHints statusHints = source.readParcelable(classLoader);
            return new InCallCall(id, state, disconnectCauseCode, disconnectCauseMsg,
                    cannedSmsResponses, capabilities, connectTimeMillis, handle, gatewayInfo,
                    account, descriptor, callVideoProvider, parentCallId, childCallIds, features);
                    account, descriptor, callVideoProvider, parentCallId, childCallIds, features,
                    statusHints);
        }

        @Override
@@ -248,6 +262,7 @@ public final class InCallCall implements Parcelable {
        destination.writeString(mParentCallId);
        destination.writeList(mChildCallIds);
        destination.writeInt(mFeatures);
        destination.writeParcelable(mStatusHints, 0);
    }

    @Override
Loading