Loading core/api/current.txt +3 −0 Original line number Diff line number Diff line Loading @@ -38498,7 +38498,9 @@ package android.telecom { method public void onStateChanged(int); method public void onStopDtmfTone(); method public void onStopRtt(); method public void onTrackedByNonUiService(boolean); method public void onUnhold(); method public void onUsingAlternativeUi(boolean); method public static String propertiesToString(int); method public final void putExtras(@NonNull android.os.Bundle); method public final void removeExtras(java.util.List<java.lang.String>); Loading Loading @@ -38836,6 +38838,7 @@ package android.telecom { field public static final int CAPABILITY_VIDEO_CALLING = 8; // 0x8 field public static final int CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE = 256; // 0x100 field @NonNull public static final android.os.Parcelable.Creator<android.telecom.PhoneAccount> CREATOR; field public static final String EXTRA_ADD_SELF_MANAGED_CALLS_TO_INCALLSERVICE = "android.telecom.extra.ADD_SELF_MANAGED_CALLS_TO_INCALLSERVICE"; field public static final String EXTRA_ALWAYS_USE_VOIP_AUDIO_MODE = "android.telecom.extra.ALWAYS_USE_VOIP_AUDIO_MODE"; field public static final String EXTRA_CALL_SUBJECT_CHARACTER_ENCODING = "android.telecom.extra.CALL_SUBJECT_CHARACTER_ENCODING"; field public static final String EXTRA_CALL_SUBJECT_MAX_LENGTH = "android.telecom.extra.CALL_SUBJECT_MAX_LENGTH"; telecomm/java/android/telecom/Connection.java +20 −0 Original line number Diff line number Diff line Loading @@ -3004,6 +3004,26 @@ public abstract class Connection extends Conferenceable { */ public void onCallAudioStateChanged(CallAudioState state) {} /** * Inform this Connection when it will or will not be tracked by an {@link InCallService} which * can provide an InCall UI. * This is primarily intended for use by Connections reported by self-managed * {@link ConnectionService} which typically maintain their own UI. * * @param isUsingAlternativeUi Indicates whether an InCallService that can provide InCall UI is * currently tracking the self-managed call. */ public void onUsingAlternativeUi(boolean isUsingAlternativeUi) {} /** * Inform this Conenection when it will or will not be tracked by an non-UI * {@link InCallService}. * * @param isTracked Indicates whether an non-UI InCallService is currently tracking the * self-managed call. */ public void onTrackedByNonUiService(boolean isTracked) {} /** * Notifies this Connection of an internal state change. This method is called after the * state is changed. Loading telecomm/java/android/telecom/ConnectionService.java +85 −4 Original line number Diff line number Diff line Loading @@ -137,6 +137,8 @@ public abstract class ConnectionService extends Service { private static final String SESSION_HOLD = "CS.h"; private static final String SESSION_UNHOLD = "CS.u"; private static final String SESSION_CALL_AUDIO_SC = "CS.cASC"; private static final String SESSION_USING_ALTERNATIVE_UI = "CS.uAU"; private static final String SESSION_TRACKED_BY_NON_UI_SERVICE = "CS.tBNUS"; private static final String SESSION_PLAY_DTMF = "CS.pDT"; private static final String SESSION_STOP_DTMF = "CS.sDT"; private static final String SESSION_CONFERENCE = "CS.c"; Loading Loading @@ -200,6 +202,9 @@ public abstract class ConnectionService extends Service { private static final int MSG_ADD_PARTICIPANT = 39; private static final int MSG_EXPLICIT_CALL_TRANSFER = 40; private static final int MSG_EXPLICIT_CALL_TRANSFER_CONSULTATIVE = 41; private static final int MSG_ON_CALL_FILTERING_COMPLETED = 42; private static final int MSG_ON_USING_ALTERNATIVE_UI = 43; private static final int MSG_ON_TRACKED_BY_NON_UI_SERVICE = 44; private static Connection sNullConnection; Loading Loading @@ -583,6 +588,36 @@ public abstract class ConnectionService extends Service { } } @Override public void onUsingAlternativeUi(String callId, boolean usingAlternativeUiShowing, Session.Info sessionInfo) { Log.startSession(sessionInfo, SESSION_USING_ALTERNATIVE_UI); try { SomeArgs args = SomeArgs.obtain(); args.arg1 = callId; args.arg2 = usingAlternativeUiShowing; args.arg3 = Log.createSubsession(); mHandler.obtainMessage(MSG_ON_USING_ALTERNATIVE_UI, args).sendToTarget(); } finally { Log.endSession(); } } @Override public void onTrackedByNonUiService(String callId, boolean isTracked, Session.Info sessionInfo) { Log.startSession(sessionInfo, SESSION_TRACKED_BY_NON_UI_SERVICE); try { SomeArgs args = SomeArgs.obtain(); args.arg1 = callId; args.arg2 = isTracked; args.arg3 = Log.createSubsession(); mHandler.obtainMessage(MSG_ON_TRACKED_BY_NON_UI_SERVICE, args).sendToTarget(); } finally { Log.endSession(); } } @Override public void playDtmfTone(String callId, char digit, Session.Info sessionInfo) { Log.startSession(sessionInfo, SESSION_PLAY_DTMF); Loading Loading @@ -1226,6 +1261,34 @@ public abstract class ConnectionService extends Service { } break; } case MSG_ON_USING_ALTERNATIVE_UI: { SomeArgs args = (SomeArgs) msg.obj; Log.continueSession((Session) args.arg3, SESSION_HANDLER + SESSION_USING_ALTERNATIVE_UI); try { String callId = (String) args.arg1; boolean isUsingAlternativeUi = (boolean) args.arg2; onUsingAlternativeUi(callId, isUsingAlternativeUi); } finally { args.recycle(); Log.endSession(); } break; } case MSG_ON_TRACKED_BY_NON_UI_SERVICE: { SomeArgs args = (SomeArgs) msg.obj; Log.continueSession((Session) args.arg3, SESSION_HANDLER + SESSION_TRACKED_BY_NON_UI_SERVICE); try { String callId = (String) args.arg1; boolean isTracked = (boolean) args.arg2; onTrackedByNonUiService(callId, isTracked); } finally { args.recycle(); Log.endSession(); } break; } case MSG_PLAY_DTMF_TONE: { SomeArgs args = (SomeArgs) msg.obj; try { Loading Loading @@ -1928,10 +1991,12 @@ public abstract class ConnectionService extends Service { request.getExtras().getBoolean(TelecomManager.EXTRA_IS_HANDOVER, false); boolean isHandover = request.getExtras() != null && request.getExtras().getBoolean( TelecomManager.EXTRA_IS_HANDOVER_CONNECTION, false); Log.d(this, "createConnection, callManagerAccount: %s, callId: %s, request: %s, " + "isIncoming: %b, isUnknown: %b, isLegacyHandover: %b, isHandover: %b", callManagerAccount, callId, request, isIncoming, isUnknown, isLegacyHandover, isHandover); boolean addSelfManaged = request.getExtras() != null && request.getExtras().getBoolean( PhoneAccount.EXTRA_ADD_SELF_MANAGED_CALLS_TO_INCALLSERVICE, false); Log.i(this, "createConnection, callManagerAccount: %s, callId: %s, request: %s, " + "isIncoming: %b, isUnknown: %b, isLegacyHandover: %b, isHandover: %b, " + " addSelfManaged: %b", callManagerAccount, callId, request, isIncoming, isUnknown, isLegacyHandover, isHandover, addSelfManaged); Connection connection = null; if (isHandover) { Loading Loading @@ -2206,6 +2271,22 @@ public abstract class ConnectionService extends Service { } } private void onUsingAlternativeUi(String callId, boolean isUsingAlternativeUi) { Log.i(this, "onUsingAlternativeUi %s %s", callId, isUsingAlternativeUi); if (mConnectionById.containsKey(callId)) { findConnectionForAction(callId, "onUsingAlternativeUi") .onUsingAlternativeUi(isUsingAlternativeUi); } } private void onTrackedByNonUiService(String callId, boolean isTracked) { Log.i(this, "onTrackedByNonUiService %s %s", callId, isTracked); if (mConnectionById.containsKey(callId)) { findConnectionForAction(callId, "onTrackedByNonUiService") .onTrackedByNonUiService(isTracked); } } private void playDtmfTone(String callId, char digit) { Log.i(this, "playDtmfTone %s %c", callId, digit); if (mConnectionById.containsKey(callId)) { Loading telecomm/java/android/telecom/PhoneAccount.java +9 −0 Original line number Diff line number Diff line Loading @@ -187,6 +187,15 @@ public final class PhoneAccount implements Parcelable { public static final String EXTRA_SKIP_CALL_FILTERING = "android.telecom.extra.SKIP_CALL_FILTERING"; /** * Boolean {@link PhoneAccount} extras key (see {@link PhoneAccount#getExtras()}) which * indicates whether a Self-managed {@link PhoneAccount} want to expose its calls to all * {@link InCallService} which declares the metadata * {@link TelecomManager#METADATA_INCLUDE_SELF_MANAGED_CALLS}. */ public static final String EXTRA_ADD_SELF_MANAGED_CALLS_TO_INCALLSERVICE = "android.telecom.extra.ADD_SELF_MANAGED_CALLS_TO_INCALLSERVICE"; /** * Flag indicating that this {@code PhoneAccount} can act as a connection manager for * other connections. The {@link ConnectionService} associated with this {@code PhoneAccount} Loading telecomm/java/com/android/internal/telecom/IConnectionService.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -136,4 +136,9 @@ oneway interface IConnectionService { int error, in Session.Info sessionInfo); void handoverComplete(String callId, in Session.Info sessionInfo); void onUsingAlternativeUi(String callId, boolean isUsingAlternativeUi, in Session.Info sessionInfo); void onTrackedByNonUiService(String callId, boolean isTracked, in Session.Info sessionInfo); } Loading
core/api/current.txt +3 −0 Original line number Diff line number Diff line Loading @@ -38498,7 +38498,9 @@ package android.telecom { method public void onStateChanged(int); method public void onStopDtmfTone(); method public void onStopRtt(); method public void onTrackedByNonUiService(boolean); method public void onUnhold(); method public void onUsingAlternativeUi(boolean); method public static String propertiesToString(int); method public final void putExtras(@NonNull android.os.Bundle); method public final void removeExtras(java.util.List<java.lang.String>); Loading Loading @@ -38836,6 +38838,7 @@ package android.telecom { field public static final int CAPABILITY_VIDEO_CALLING = 8; // 0x8 field public static final int CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE = 256; // 0x100 field @NonNull public static final android.os.Parcelable.Creator<android.telecom.PhoneAccount> CREATOR; field public static final String EXTRA_ADD_SELF_MANAGED_CALLS_TO_INCALLSERVICE = "android.telecom.extra.ADD_SELF_MANAGED_CALLS_TO_INCALLSERVICE"; field public static final String EXTRA_ALWAYS_USE_VOIP_AUDIO_MODE = "android.telecom.extra.ALWAYS_USE_VOIP_AUDIO_MODE"; field public static final String EXTRA_CALL_SUBJECT_CHARACTER_ENCODING = "android.telecom.extra.CALL_SUBJECT_CHARACTER_ENCODING"; field public static final String EXTRA_CALL_SUBJECT_MAX_LENGTH = "android.telecom.extra.CALL_SUBJECT_MAX_LENGTH";
telecomm/java/android/telecom/Connection.java +20 −0 Original line number Diff line number Diff line Loading @@ -3004,6 +3004,26 @@ public abstract class Connection extends Conferenceable { */ public void onCallAudioStateChanged(CallAudioState state) {} /** * Inform this Connection when it will or will not be tracked by an {@link InCallService} which * can provide an InCall UI. * This is primarily intended for use by Connections reported by self-managed * {@link ConnectionService} which typically maintain their own UI. * * @param isUsingAlternativeUi Indicates whether an InCallService that can provide InCall UI is * currently tracking the self-managed call. */ public void onUsingAlternativeUi(boolean isUsingAlternativeUi) {} /** * Inform this Conenection when it will or will not be tracked by an non-UI * {@link InCallService}. * * @param isTracked Indicates whether an non-UI InCallService is currently tracking the * self-managed call. */ public void onTrackedByNonUiService(boolean isTracked) {} /** * Notifies this Connection of an internal state change. This method is called after the * state is changed. Loading
telecomm/java/android/telecom/ConnectionService.java +85 −4 Original line number Diff line number Diff line Loading @@ -137,6 +137,8 @@ public abstract class ConnectionService extends Service { private static final String SESSION_HOLD = "CS.h"; private static final String SESSION_UNHOLD = "CS.u"; private static final String SESSION_CALL_AUDIO_SC = "CS.cASC"; private static final String SESSION_USING_ALTERNATIVE_UI = "CS.uAU"; private static final String SESSION_TRACKED_BY_NON_UI_SERVICE = "CS.tBNUS"; private static final String SESSION_PLAY_DTMF = "CS.pDT"; private static final String SESSION_STOP_DTMF = "CS.sDT"; private static final String SESSION_CONFERENCE = "CS.c"; Loading Loading @@ -200,6 +202,9 @@ public abstract class ConnectionService extends Service { private static final int MSG_ADD_PARTICIPANT = 39; private static final int MSG_EXPLICIT_CALL_TRANSFER = 40; private static final int MSG_EXPLICIT_CALL_TRANSFER_CONSULTATIVE = 41; private static final int MSG_ON_CALL_FILTERING_COMPLETED = 42; private static final int MSG_ON_USING_ALTERNATIVE_UI = 43; private static final int MSG_ON_TRACKED_BY_NON_UI_SERVICE = 44; private static Connection sNullConnection; Loading Loading @@ -583,6 +588,36 @@ public abstract class ConnectionService extends Service { } } @Override public void onUsingAlternativeUi(String callId, boolean usingAlternativeUiShowing, Session.Info sessionInfo) { Log.startSession(sessionInfo, SESSION_USING_ALTERNATIVE_UI); try { SomeArgs args = SomeArgs.obtain(); args.arg1 = callId; args.arg2 = usingAlternativeUiShowing; args.arg3 = Log.createSubsession(); mHandler.obtainMessage(MSG_ON_USING_ALTERNATIVE_UI, args).sendToTarget(); } finally { Log.endSession(); } } @Override public void onTrackedByNonUiService(String callId, boolean isTracked, Session.Info sessionInfo) { Log.startSession(sessionInfo, SESSION_TRACKED_BY_NON_UI_SERVICE); try { SomeArgs args = SomeArgs.obtain(); args.arg1 = callId; args.arg2 = isTracked; args.arg3 = Log.createSubsession(); mHandler.obtainMessage(MSG_ON_TRACKED_BY_NON_UI_SERVICE, args).sendToTarget(); } finally { Log.endSession(); } } @Override public void playDtmfTone(String callId, char digit, Session.Info sessionInfo) { Log.startSession(sessionInfo, SESSION_PLAY_DTMF); Loading Loading @@ -1226,6 +1261,34 @@ public abstract class ConnectionService extends Service { } break; } case MSG_ON_USING_ALTERNATIVE_UI: { SomeArgs args = (SomeArgs) msg.obj; Log.continueSession((Session) args.arg3, SESSION_HANDLER + SESSION_USING_ALTERNATIVE_UI); try { String callId = (String) args.arg1; boolean isUsingAlternativeUi = (boolean) args.arg2; onUsingAlternativeUi(callId, isUsingAlternativeUi); } finally { args.recycle(); Log.endSession(); } break; } case MSG_ON_TRACKED_BY_NON_UI_SERVICE: { SomeArgs args = (SomeArgs) msg.obj; Log.continueSession((Session) args.arg3, SESSION_HANDLER + SESSION_TRACKED_BY_NON_UI_SERVICE); try { String callId = (String) args.arg1; boolean isTracked = (boolean) args.arg2; onTrackedByNonUiService(callId, isTracked); } finally { args.recycle(); Log.endSession(); } break; } case MSG_PLAY_DTMF_TONE: { SomeArgs args = (SomeArgs) msg.obj; try { Loading Loading @@ -1928,10 +1991,12 @@ public abstract class ConnectionService extends Service { request.getExtras().getBoolean(TelecomManager.EXTRA_IS_HANDOVER, false); boolean isHandover = request.getExtras() != null && request.getExtras().getBoolean( TelecomManager.EXTRA_IS_HANDOVER_CONNECTION, false); Log.d(this, "createConnection, callManagerAccount: %s, callId: %s, request: %s, " + "isIncoming: %b, isUnknown: %b, isLegacyHandover: %b, isHandover: %b", callManagerAccount, callId, request, isIncoming, isUnknown, isLegacyHandover, isHandover); boolean addSelfManaged = request.getExtras() != null && request.getExtras().getBoolean( PhoneAccount.EXTRA_ADD_SELF_MANAGED_CALLS_TO_INCALLSERVICE, false); Log.i(this, "createConnection, callManagerAccount: %s, callId: %s, request: %s, " + "isIncoming: %b, isUnknown: %b, isLegacyHandover: %b, isHandover: %b, " + " addSelfManaged: %b", callManagerAccount, callId, request, isIncoming, isUnknown, isLegacyHandover, isHandover, addSelfManaged); Connection connection = null; if (isHandover) { Loading Loading @@ -2206,6 +2271,22 @@ public abstract class ConnectionService extends Service { } } private void onUsingAlternativeUi(String callId, boolean isUsingAlternativeUi) { Log.i(this, "onUsingAlternativeUi %s %s", callId, isUsingAlternativeUi); if (mConnectionById.containsKey(callId)) { findConnectionForAction(callId, "onUsingAlternativeUi") .onUsingAlternativeUi(isUsingAlternativeUi); } } private void onTrackedByNonUiService(String callId, boolean isTracked) { Log.i(this, "onTrackedByNonUiService %s %s", callId, isTracked); if (mConnectionById.containsKey(callId)) { findConnectionForAction(callId, "onTrackedByNonUiService") .onTrackedByNonUiService(isTracked); } } private void playDtmfTone(String callId, char digit) { Log.i(this, "playDtmfTone %s %c", callId, digit); if (mConnectionById.containsKey(callId)) { Loading
telecomm/java/android/telecom/PhoneAccount.java +9 −0 Original line number Diff line number Diff line Loading @@ -187,6 +187,15 @@ public final class PhoneAccount implements Parcelable { public static final String EXTRA_SKIP_CALL_FILTERING = "android.telecom.extra.SKIP_CALL_FILTERING"; /** * Boolean {@link PhoneAccount} extras key (see {@link PhoneAccount#getExtras()}) which * indicates whether a Self-managed {@link PhoneAccount} want to expose its calls to all * {@link InCallService} which declares the metadata * {@link TelecomManager#METADATA_INCLUDE_SELF_MANAGED_CALLS}. */ public static final String EXTRA_ADD_SELF_MANAGED_CALLS_TO_INCALLSERVICE = "android.telecom.extra.ADD_SELF_MANAGED_CALLS_TO_INCALLSERVICE"; /** * Flag indicating that this {@code PhoneAccount} can act as a connection manager for * other connections. The {@link ConnectionService} associated with this {@code PhoneAccount} Loading
telecomm/java/com/android/internal/telecom/IConnectionService.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -136,4 +136,9 @@ oneway interface IConnectionService { int error, in Session.Info sessionInfo); void handoverComplete(String callId, in Session.Info sessionInfo); void onUsingAlternativeUi(String callId, boolean isUsingAlternativeUi, in Session.Info sessionInfo); void onTrackedByNonUiService(String callId, boolean isTracked, in Session.Info sessionInfo); }