Merge changes from topic "add_participant" am: fdfc58fcd9 am: ac4f7edbd3
Change-Id: Id85e15e5977feac7db367340817460a23d5ff97e
This commit is contained in:
@@ -17,6 +17,7 @@
|
|||||||
package android.telecom;
|
package android.telecom;
|
||||||
|
|
||||||
import android.annotation.IntDef;
|
import android.annotation.IntDef;
|
||||||
|
import android.annotation.NonNull;
|
||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
import android.annotation.SystemApi;
|
import android.annotation.SystemApi;
|
||||||
import android.annotation.TestApi;
|
import android.annotation.TestApi;
|
||||||
@@ -458,8 +459,14 @@ public final class Call {
|
|||||||
/** Call supports the deflect feature. */
|
/** Call supports the deflect feature. */
|
||||||
public static final int CAPABILITY_SUPPORT_DEFLECT = 0x01000000;
|
public static final int CAPABILITY_SUPPORT_DEFLECT = 0x01000000;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Call supports adding participants to the call via
|
||||||
|
* {@link #addConferenceParticipants(List)}.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public static final int CAPABILITY_ADD_PARTICIPANT = 0x02000000;
|
||||||
//******************************************************************************************
|
//******************************************************************************************
|
||||||
// Next CAPABILITY value: 0x02000000
|
// Next CAPABILITY value: 0x04000000
|
||||||
//******************************************************************************************
|
//******************************************************************************************
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -689,6 +696,9 @@ public final class Call {
|
|||||||
if (can(capabilities, CAPABILITY_SUPPORT_DEFLECT)) {
|
if (can(capabilities, CAPABILITY_SUPPORT_DEFLECT)) {
|
||||||
builder.append(" CAPABILITY_SUPPORT_DEFLECT");
|
builder.append(" CAPABILITY_SUPPORT_DEFLECT");
|
||||||
}
|
}
|
||||||
|
if (can(capabilities, CAPABILITY_ADD_PARTICIPANT)) {
|
||||||
|
builder.append(" CAPABILITY_ADD_PARTICIPANT");
|
||||||
|
}
|
||||||
builder.append("]");
|
builder.append("]");
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
@@ -1702,6 +1712,17 @@ public final class Call {
|
|||||||
mInCallAdapter.swapConference(mTelecomCallId);
|
mInCallAdapter.swapConference(mTelecomCallId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pulls participants to existing call by forming a conference call.
|
||||||
|
* See {@link Details#CAPABILITY_ADD_PARTICIPANT}.
|
||||||
|
*
|
||||||
|
* @param participants participants to be pulled to existing call.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public void addConferenceParticipants(@NonNull List<Uri> participants) {
|
||||||
|
mInCallAdapter.addConferenceParticipants(mTelecomCallId, participants);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initiates a request to the {@link ConnectionService} to pull an external call to the local
|
* Initiates a request to the {@link ConnectionService} to pull an external call to the local
|
||||||
* device.
|
* device.
|
||||||
|
|||||||
@@ -318,6 +318,13 @@ public abstract class Conference extends Conferenceable {
|
|||||||
*/
|
*/
|
||||||
public void onConnectionAdded(Connection connection) {}
|
public void onConnectionAdded(Connection connection) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notifies the {@link Conference} of a request to add a new participants to the conference call
|
||||||
|
* @param participants that will be added to this conference call
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public void onAddConferenceParticipants(@NonNull List<Uri> participants) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notifies this Conference, which is in {@code STATE_RINGING}, of
|
* Notifies this Conference, which is in {@code STATE_RINGING}, of
|
||||||
* a request to accept.
|
* a request to accept.
|
||||||
|
|||||||
@@ -376,8 +376,14 @@ public abstract class Connection extends Conferenceable {
|
|||||||
/** Call supports the deflect feature. */
|
/** Call supports the deflect feature. */
|
||||||
public static final int CAPABILITY_SUPPORT_DEFLECT = 0x02000000;
|
public static final int CAPABILITY_SUPPORT_DEFLECT = 0x02000000;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When set, indicates that this {@link Connection} supports initiation of a conference call
|
||||||
|
* by directly adding participants using {@link #onAddConferenceParticipants(List)}.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public static final int CAPABILITY_ADD_PARTICIPANT = 0x04000000;
|
||||||
//**********************************************************************************************
|
//**********************************************************************************************
|
||||||
// Next CAPABILITY value: 0x04000000
|
// Next CAPABILITY value: 0x08000000
|
||||||
//**********************************************************************************************
|
//**********************************************************************************************
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -953,7 +959,9 @@ public abstract class Connection extends Conferenceable {
|
|||||||
if ((capabilities & CAPABILITY_SUPPORT_DEFLECT) == CAPABILITY_SUPPORT_DEFLECT) {
|
if ((capabilities & CAPABILITY_SUPPORT_DEFLECT) == CAPABILITY_SUPPORT_DEFLECT) {
|
||||||
builder.append(isLong ? " CAPABILITY_SUPPORT_DEFLECT" : " sup_def");
|
builder.append(isLong ? " CAPABILITY_SUPPORT_DEFLECT" : " sup_def");
|
||||||
}
|
}
|
||||||
|
if ((capabilities & CAPABILITY_ADD_PARTICIPANT) == CAPABILITY_ADD_PARTICIPANT) {
|
||||||
|
builder.append(isLong ? " CAPABILITY_ADD_PARTICIPANT" : " add_participant");
|
||||||
|
}
|
||||||
builder.append("]");
|
builder.append("]");
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
@@ -2952,6 +2960,14 @@ public abstract class Connection extends Conferenceable {
|
|||||||
*/
|
*/
|
||||||
public void onSeparate() {}
|
public void onSeparate() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Supports initiation of a conference call by directly adding participants to an ongoing call.
|
||||||
|
*
|
||||||
|
* @param participants with which conference call will be formed.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public void onAddConferenceParticipants(@NonNull List<Uri> participants) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notifies this Connection of a request to abort.
|
* Notifies this Connection of a request to abort.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -142,6 +142,7 @@ public abstract class ConnectionService extends Service {
|
|||||||
private static final String SESSION_SPLIT_CONFERENCE = "CS.sFC";
|
private static final String SESSION_SPLIT_CONFERENCE = "CS.sFC";
|
||||||
private static final String SESSION_MERGE_CONFERENCE = "CS.mC";
|
private static final String SESSION_MERGE_CONFERENCE = "CS.mC";
|
||||||
private static final String SESSION_SWAP_CONFERENCE = "CS.sC";
|
private static final String SESSION_SWAP_CONFERENCE = "CS.sC";
|
||||||
|
private static final String SESSION_ADD_PARTICIPANT = "CS.aP";
|
||||||
private static final String SESSION_POST_DIAL_CONT = "CS.oPDC";
|
private static final String SESSION_POST_DIAL_CONT = "CS.oPDC";
|
||||||
private static final String SESSION_PULL_EXTERNAL_CALL = "CS.pEC";
|
private static final String SESSION_PULL_EXTERNAL_CALL = "CS.pEC";
|
||||||
private static final String SESSION_SEND_CALL_EVENT = "CS.sCE";
|
private static final String SESSION_SEND_CALL_EVENT = "CS.sCE";
|
||||||
@@ -195,6 +196,7 @@ public abstract class ConnectionService extends Service {
|
|||||||
private static final int MSG_CREATE_CONFERENCE_COMPLETE = 36;
|
private static final int MSG_CREATE_CONFERENCE_COMPLETE = 36;
|
||||||
private static final int MSG_CREATE_CONFERENCE_FAILED = 37;
|
private static final int MSG_CREATE_CONFERENCE_FAILED = 37;
|
||||||
private static final int MSG_REJECT_WITH_REASON = 38;
|
private static final int MSG_REJECT_WITH_REASON = 38;
|
||||||
|
private static final int MSG_ADD_PARTICIPANT = 39;
|
||||||
|
|
||||||
private static Connection sNullConnection;
|
private static Connection sNullConnection;
|
||||||
|
|
||||||
@@ -626,6 +628,21 @@ public abstract class ConnectionService extends Service {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addConferenceParticipants(String callId, List<Uri> participants,
|
||||||
|
Session.Info sessionInfo) {
|
||||||
|
Log.startSession(sessionInfo, SESSION_ADD_PARTICIPANT);
|
||||||
|
try {
|
||||||
|
SomeArgs args = SomeArgs.obtain();
|
||||||
|
args.arg1 = callId;
|
||||||
|
args.arg2 = participants;
|
||||||
|
args.arg3 = Log.createSubsession();
|
||||||
|
mHandler.obtainMessage(MSG_ADD_PARTICIPANT, args).sendToTarget();
|
||||||
|
} finally {
|
||||||
|
Log.endSession();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPostDialContinue(String callId, boolean proceed, Session.Info sessionInfo) {
|
public void onPostDialContinue(String callId, boolean proceed, Session.Info sessionInfo) {
|
||||||
Log.startSession(sessionInfo, SESSION_POST_DIAL_CONT);
|
Log.startSession(sessionInfo, SESSION_POST_DIAL_CONT);
|
||||||
@@ -1224,6 +1241,19 @@ public abstract class ConnectionService extends Service {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case MSG_ADD_PARTICIPANT: {
|
||||||
|
SomeArgs args = (SomeArgs) msg.obj;
|
||||||
|
try {
|
||||||
|
Log.continueSession((Session) args.arg3,
|
||||||
|
SESSION_HANDLER + SESSION_ADD_PARTICIPANT);
|
||||||
|
addConferenceParticipants((String) args.arg1, (List<Uri>)args.arg2);
|
||||||
|
} finally {
|
||||||
|
args.recycle();
|
||||||
|
Log.endSession();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case MSG_ON_POST_DIAL_CONTINUE: {
|
case MSG_ON_POST_DIAL_CONTINUE: {
|
||||||
SomeArgs args = (SomeArgs) msg.obj;
|
SomeArgs args = (SomeArgs) msg.obj;
|
||||||
try {
|
try {
|
||||||
@@ -2152,6 +2182,17 @@ public abstract class ConnectionService extends Service {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addConferenceParticipants(String callId, List<Uri> participants) {
|
||||||
|
Log.d(this, "addConferenceParticipants(%s)", callId);
|
||||||
|
if (mConnectionById.containsKey(callId)) {
|
||||||
|
findConnectionForAction(callId, "addConferenceParticipants")
|
||||||
|
.onAddConferenceParticipants(participants);
|
||||||
|
} else {
|
||||||
|
findConferenceForAction(callId, "addConferenceParticipants")
|
||||||
|
.onAddConferenceParticipants(participants);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notifies a {@link Connection} of a request to pull an external call.
|
* Notifies a {@link Connection} of a request to pull an external call.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -282,6 +282,20 @@ public final class InCallAdapter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instructs Telecom to pull participants to existing call
|
||||||
|
*
|
||||||
|
* @param callId The unique ID of the call.
|
||||||
|
* @param participants participants to be pulled to existing call.
|
||||||
|
*/
|
||||||
|
public void addConferenceParticipants(String callId, List<Uri> participants) {
|
||||||
|
try {
|
||||||
|
mAdapter.addConferenceParticipants(callId, participants);
|
||||||
|
} catch (RemoteException ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instructs Telecom to split the specified call from any conference call with which it may be
|
* Instructs Telecom to split the specified call from any conference call with which it may be
|
||||||
* connected.
|
* connected.
|
||||||
|
|||||||
@@ -104,6 +104,9 @@ oneway interface IConnectionService {
|
|||||||
|
|
||||||
void swapConference(String conferenceCallId, in Session.Info sessionInfo);
|
void swapConference(String conferenceCallId, in Session.Info sessionInfo);
|
||||||
|
|
||||||
|
void addConferenceParticipants(String CallId, in List<Uri> participants,
|
||||||
|
in Session.Info sessionInfo);
|
||||||
|
|
||||||
void onPostDialContinue(String callId, boolean proceed, in Session.Info sessionInfo);
|
void onPostDialContinue(String callId, boolean proceed, in Session.Info sessionInfo);
|
||||||
|
|
||||||
void pullExternalCall(String callId, in Session.Info sessionInfo);
|
void pullExternalCall(String callId, in Session.Info sessionInfo);
|
||||||
|
|||||||
@@ -67,6 +67,8 @@ oneway interface IInCallAdapter {
|
|||||||
|
|
||||||
void swapConference(String callId);
|
void swapConference(String callId);
|
||||||
|
|
||||||
|
void addConferenceParticipants(String callId, in List<Uri> participants);
|
||||||
|
|
||||||
void turnOnProximitySensor();
|
void turnOnProximitySensor();
|
||||||
|
|
||||||
void turnOffProximitySensor(boolean screenOnImmediately);
|
void turnOffProximitySensor(boolean screenOnImmediately);
|
||||||
|
|||||||
@@ -1088,6 +1088,14 @@ public class CarrierConfigManager {
|
|||||||
public static final String KEY_SUPPORT_ADHOC_CONFERENCE_CALLS_BOOL =
|
public static final String KEY_SUPPORT_ADHOC_CONFERENCE_CALLS_BOOL =
|
||||||
"support_adhoc_conference_calls_bool";
|
"support_adhoc_conference_calls_bool";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines whether conference participants can be added to existing call. When {@code true},
|
||||||
|
* adding conference participants to existing call is supported, {@code false otherwise}.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public static final String KEY_SUPPORT_ADD_CONFERENCE_PARTICIPANTS_BOOL =
|
||||||
|
"support_add_conference_participants_bool";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines whether conference calls are supported by a carrier. When {@code true},
|
* Determines whether conference calls are supported by a carrier. When {@code true},
|
||||||
* conference calling is supported, {@code false otherwise}.
|
* conference calling is supported, {@code false otherwise}.
|
||||||
@@ -3571,6 +3579,7 @@ public class CarrierConfigManager {
|
|||||||
sDefaults.putBoolean(KEY_IGNORE_RTT_MODE_SETTING_BOOL, false);
|
sDefaults.putBoolean(KEY_IGNORE_RTT_MODE_SETTING_BOOL, false);
|
||||||
sDefaults.putInt(KEY_CDMA_3WAYCALL_FLASH_DELAY_INT , 0);
|
sDefaults.putInt(KEY_CDMA_3WAYCALL_FLASH_DELAY_INT , 0);
|
||||||
sDefaults.putBoolean(KEY_SUPPORT_ADHOC_CONFERENCE_CALLS_BOOL, false);
|
sDefaults.putBoolean(KEY_SUPPORT_ADHOC_CONFERENCE_CALLS_BOOL, false);
|
||||||
|
sDefaults.putBoolean(KEY_SUPPORT_ADD_CONFERENCE_PARTICIPANTS_BOOL, false);
|
||||||
sDefaults.putBoolean(KEY_SUPPORT_CONFERENCE_CALL_BOOL, true);
|
sDefaults.putBoolean(KEY_SUPPORT_CONFERENCE_CALL_BOOL, true);
|
||||||
sDefaults.putBoolean(KEY_SUPPORT_IMS_CONFERENCE_CALL_BOOL, true);
|
sDefaults.putBoolean(KEY_SUPPORT_IMS_CONFERENCE_CALL_BOOL, true);
|
||||||
sDefaults.putBoolean(KEY_SUPPORT_MANAGE_IMS_CONFERENCE_CALL_BOOL, true);
|
sDefaults.putBoolean(KEY_SUPPORT_MANAGE_IMS_CONFERENCE_CALL_BOOL, true);
|
||||||
|
|||||||
Reference in New Issue
Block a user