Loading telecomm/java/android/telecom/Conference.java +30 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,7 @@ public abstract class Conference extends Conferenceable { public void onConnectionEvent(Conference c, String event, Bundle extras) {} public void onCallerDisplayNameChanged( Conference c, String callerDisplayName, int presentation) {} public void onCallDirectionChanged(Conference c, int callDirection) {} public void onRingbackRequested(Conference c, boolean ringback) {} } Loading Loading @@ -103,6 +104,7 @@ public abstract class Conference extends Conferenceable { private int mAddressPresentation; private String mCallerDisplayName; private int mCallerDisplayNamePresentation; private int mCallDirection; private boolean mRingbackRequested = false; private final Connection.Listener mConnectionDeathListener = new Connection.Listener() { Loading Loading @@ -1023,6 +1025,25 @@ public abstract class Conference extends Conferenceable { } } /** * Sets the call direction of this {@link Conference}. By default, all {@link Conference}s have * a direction of {@link android.telecom.Call.Details.CallDirection#DIRECTION_UNKNOWN}. The * direction of a {@link Conference} is only applicable to the case where * {@link #setConferenceState(boolean)} has been set to {@code false}, otherwise the direction * will be ignored. * @param callDirection The direction of the conference. * @hide */ @RequiresPermission(MODIFY_PHONE_STATE) public final void setCallDirection(@Call.Details.CallDirection int callDirection) { Log.d(this, "setDirection %d", callDirection); mCallDirection = callDirection; for (Listener l : mListeners) { l.onCallDirectionChanged(this, callDirection); } } /** * Sets the address of this {@link Conference}. Used when {@link #setConferenceState(boolean)} * is called to mark a conference temporarily as NOT a conference. Loading Loading @@ -1101,6 +1122,15 @@ public abstract class Conference extends Conferenceable { return mCallerDisplayNamePresentation; } /** * @return The call direction of this conference. Only applicable when * {@link #setConferenceState(boolean)} is set to false. * @hide */ public final @Call.Details.CallDirection int getCallDirection() { return mCallDirection; } /** * Sets the caller display name (CNAP) of this {@link Conference}. Used when * {@link #setConferenceState(boolean)} is called to mark a conference temporarily as NOT a Loading telecomm/java/android/telecom/ConnectionService.java +8 −0 Original line number Diff line number Diff line Loading @@ -1553,6 +1553,14 @@ public abstract class ConnectionService extends Service { } } @Override public void onCallDirectionChanged(Conference c, int direction) { String id = mIdByConference.get(c); if (id != null) { mAdapter.setCallDirection(id, direction); } } @Override public void onAddressChanged(Conference c, Uri newAddress, int presentation) { String id = mIdByConference.get(c); Loading telecomm/java/android/telecom/ConnectionServiceAdapter.java +16 −0 Original line number Diff line number Diff line Loading @@ -693,4 +693,20 @@ final class ConnectionServiceAdapter implements DeathRecipient { } } } /** * Sets the direction of a call. Setting a new direction of an existing call is usually only * applicable during single caller emulation during conferencing, see * {@link Conference#setConferenceState(boolean)} for more information. * @param callId The identifier of the call. * @param direction The new direction of the call. */ void setCallDirection(String callId, @Call.Details.CallDirection int direction) { for (IConnectionServiceAdapter a : mAdapters) { try { a.setCallDirection(callId, direction, Log.getExternalSession()); } catch (RemoteException e) { } } } } telecomm/java/android/telecom/ConnectionServiceAdapterServant.java +23 −1 Original line number Diff line number Diff line Loading @@ -76,6 +76,7 @@ final class ConnectionServiceAdapterServant { private static final int MSG_CONNECTION_SERVICE_FOCUS_RELEASED = 35; private static final int MSG_SET_CONFERENCE_STATE = 36; private static final int MSG_HANDLE_CREATE_CONFERENCE_COMPLETE = 37; private static final int MSG_SET_CALL_DIRECTION = 38; private final IConnectionServiceAdapter mDelegate; Loading Loading @@ -353,7 +354,7 @@ final class ConnectionServiceAdapterServant { case MSG_CONNECTION_SERVICE_FOCUS_RELEASED: mDelegate.onConnectionServiceFocusReleased(null /*Session.Info*/); break; case MSG_SET_CONFERENCE_STATE: case MSG_SET_CONFERENCE_STATE: { SomeArgs args = (SomeArgs) msg.obj; try { mDelegate.setConferenceState((String) args.arg1, (Boolean) args.arg2, Loading @@ -361,6 +362,17 @@ final class ConnectionServiceAdapterServant { } finally { args.recycle(); } break; } case MSG_SET_CALL_DIRECTION: { SomeArgs args = (SomeArgs) msg.obj; try { mDelegate.setCallDirection((String) args.arg1, args.argi1, (Session.Info) args.arg2); } finally { args.recycle(); } } } } }; Loading Loading @@ -670,6 +682,16 @@ final class ConnectionServiceAdapterServant { args.arg3 = sessionInfo; mHandler.obtainMessage(MSG_SET_CONFERENCE_STATE, args).sendToTarget(); } @Override public void setCallDirection(String callId, int direction, Session.Info sessionInfo) { SomeArgs args = SomeArgs.obtain(); args.arg1 = callId; args.argi1 = direction; args.arg2 = sessionInfo; mHandler.obtainMessage(MSG_SET_CALL_DIRECTION, args).sendToTarget(); } }; public ConnectionServiceAdapterServant(IConnectionServiceAdapter delegate) { Loading telecomm/java/android/telecom/RemoteConnectionService.java +5 −0 Original line number Diff line number Diff line Loading @@ -485,6 +485,11 @@ final class RemoteConnectionService { Session.Info sessionInfo) { // Do nothing } @Override public void setCallDirection(String callId, int direction, Session.Info sessionInfo) { // Do nothing } }; private final ConnectionServiceAdapterServant mServant = Loading Loading
telecomm/java/android/telecom/Conference.java +30 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,7 @@ public abstract class Conference extends Conferenceable { public void onConnectionEvent(Conference c, String event, Bundle extras) {} public void onCallerDisplayNameChanged( Conference c, String callerDisplayName, int presentation) {} public void onCallDirectionChanged(Conference c, int callDirection) {} public void onRingbackRequested(Conference c, boolean ringback) {} } Loading Loading @@ -103,6 +104,7 @@ public abstract class Conference extends Conferenceable { private int mAddressPresentation; private String mCallerDisplayName; private int mCallerDisplayNamePresentation; private int mCallDirection; private boolean mRingbackRequested = false; private final Connection.Listener mConnectionDeathListener = new Connection.Listener() { Loading Loading @@ -1023,6 +1025,25 @@ public abstract class Conference extends Conferenceable { } } /** * Sets the call direction of this {@link Conference}. By default, all {@link Conference}s have * a direction of {@link android.telecom.Call.Details.CallDirection#DIRECTION_UNKNOWN}. The * direction of a {@link Conference} is only applicable to the case where * {@link #setConferenceState(boolean)} has been set to {@code false}, otherwise the direction * will be ignored. * @param callDirection The direction of the conference. * @hide */ @RequiresPermission(MODIFY_PHONE_STATE) public final void setCallDirection(@Call.Details.CallDirection int callDirection) { Log.d(this, "setDirection %d", callDirection); mCallDirection = callDirection; for (Listener l : mListeners) { l.onCallDirectionChanged(this, callDirection); } } /** * Sets the address of this {@link Conference}. Used when {@link #setConferenceState(boolean)} * is called to mark a conference temporarily as NOT a conference. Loading Loading @@ -1101,6 +1122,15 @@ public abstract class Conference extends Conferenceable { return mCallerDisplayNamePresentation; } /** * @return The call direction of this conference. Only applicable when * {@link #setConferenceState(boolean)} is set to false. * @hide */ public final @Call.Details.CallDirection int getCallDirection() { return mCallDirection; } /** * Sets the caller display name (CNAP) of this {@link Conference}. Used when * {@link #setConferenceState(boolean)} is called to mark a conference temporarily as NOT a Loading
telecomm/java/android/telecom/ConnectionService.java +8 −0 Original line number Diff line number Diff line Loading @@ -1553,6 +1553,14 @@ public abstract class ConnectionService extends Service { } } @Override public void onCallDirectionChanged(Conference c, int direction) { String id = mIdByConference.get(c); if (id != null) { mAdapter.setCallDirection(id, direction); } } @Override public void onAddressChanged(Conference c, Uri newAddress, int presentation) { String id = mIdByConference.get(c); Loading
telecomm/java/android/telecom/ConnectionServiceAdapter.java +16 −0 Original line number Diff line number Diff line Loading @@ -693,4 +693,20 @@ final class ConnectionServiceAdapter implements DeathRecipient { } } } /** * Sets the direction of a call. Setting a new direction of an existing call is usually only * applicable during single caller emulation during conferencing, see * {@link Conference#setConferenceState(boolean)} for more information. * @param callId The identifier of the call. * @param direction The new direction of the call. */ void setCallDirection(String callId, @Call.Details.CallDirection int direction) { for (IConnectionServiceAdapter a : mAdapters) { try { a.setCallDirection(callId, direction, Log.getExternalSession()); } catch (RemoteException e) { } } } }
telecomm/java/android/telecom/ConnectionServiceAdapterServant.java +23 −1 Original line number Diff line number Diff line Loading @@ -76,6 +76,7 @@ final class ConnectionServiceAdapterServant { private static final int MSG_CONNECTION_SERVICE_FOCUS_RELEASED = 35; private static final int MSG_SET_CONFERENCE_STATE = 36; private static final int MSG_HANDLE_CREATE_CONFERENCE_COMPLETE = 37; private static final int MSG_SET_CALL_DIRECTION = 38; private final IConnectionServiceAdapter mDelegate; Loading Loading @@ -353,7 +354,7 @@ final class ConnectionServiceAdapterServant { case MSG_CONNECTION_SERVICE_FOCUS_RELEASED: mDelegate.onConnectionServiceFocusReleased(null /*Session.Info*/); break; case MSG_SET_CONFERENCE_STATE: case MSG_SET_CONFERENCE_STATE: { SomeArgs args = (SomeArgs) msg.obj; try { mDelegate.setConferenceState((String) args.arg1, (Boolean) args.arg2, Loading @@ -361,6 +362,17 @@ final class ConnectionServiceAdapterServant { } finally { args.recycle(); } break; } case MSG_SET_CALL_DIRECTION: { SomeArgs args = (SomeArgs) msg.obj; try { mDelegate.setCallDirection((String) args.arg1, args.argi1, (Session.Info) args.arg2); } finally { args.recycle(); } } } } }; Loading Loading @@ -670,6 +682,16 @@ final class ConnectionServiceAdapterServant { args.arg3 = sessionInfo; mHandler.obtainMessage(MSG_SET_CONFERENCE_STATE, args).sendToTarget(); } @Override public void setCallDirection(String callId, int direction, Session.Info sessionInfo) { SomeArgs args = SomeArgs.obtain(); args.arg1 = callId; args.argi1 = direction; args.arg2 = sessionInfo; mHandler.obtainMessage(MSG_SET_CALL_DIRECTION, args).sendToTarget(); } }; public ConnectionServiceAdapterServant(IConnectionServiceAdapter delegate) { Loading
telecomm/java/android/telecom/RemoteConnectionService.java +5 −0 Original line number Diff line number Diff line Loading @@ -485,6 +485,11 @@ final class RemoteConnectionService { Session.Info sessionInfo) { // Do nothing } @Override public void setCallDirection(String callId, int direction, Session.Info sessionInfo) { // Do nothing } }; private final ConnectionServiceAdapterServant mServant = Loading