summaryrefslogtreecommitdiffstats
path: root/telecomm
diff options
context:
space:
mode:
authorSuchand Ghosh <suchan@codeaurora.org>2014-09-22 11:38:22 +0530
committerLinux Build Service Account <lnxbuild@localhost>2015-10-06 03:28:24 -0600
commiteb4fa8cd3f2fa5a0181d4711e458d4e0e64c1ee1 (patch)
treed6caabb9efc043a1aa7afeb9255e009a2f981e5e /telecomm
parentf654a16191c0daf0e5d6d2a2cd7eed5cd2d70b93 (diff)
downloadframeworks_base-eb4fa8cd3f2fa5a0181d4711e458d4e0e64c1ee1.zip
frameworks_base-eb4fa8cd3f2fa5a0181d4711e458d4e0e64c1ee1.tar.gz
frameworks_base-eb4fa8cd3f2fa5a0181d4711e458d4e0e64c1ee1.tar.bz2
IMS: Conference URI support.
Add Telephony extras EXTRAS_IS_CONFERENCE_URI, EXTRA_DIAL_CONFERENCE_URI which will require by Telecomm, TeleService, Telephony, Framework, IMS framework etc. IMS: Allow placeCall with complete uri Add extra "org.codeaurora.extra.SKIP_SCHEMA_PARSING". Application need to set the intent extra to dial with complete uri. IMS: Add participant support. Add Phone Capabilities ADD_PARTICIPANT and Telephony Property ADD_PARTICIPANT_KEY. IMS: Allow add participant with normal IMS call We should allow add participant with normal IMS call to make it conference. Send add participant through existing connection of normal IMS call. IMS: Add Participant support. Do not create new connection while add participant with existing call. Rather send add participant request through IMSConference. Change-Id: I5052710a2d11a57331bdfbe64247e6a39bf9147a
Diffstat (limited to 'telecomm')
-rw-r--r--telecomm/java/android/telecom/Call.java9
-rw-r--r--telecomm/java/android/telecom/Conference.java8
-rw-r--r--telecomm/java/android/telecom/Connection.java7
-rw-r--r--telecomm/java/android/telecom/ConnectionService.java45
-rw-r--r--telecomm/java/com/android/internal/telecom/IConnectionService.aidl2
5 files changed, 71 insertions, 0 deletions
diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java
index b2fccb4..5301a98 100644
--- a/telecomm/java/android/telecom/Call.java
+++ b/telecomm/java/android/telecom/Call.java
@@ -212,6 +212,12 @@ public final class Call {
*/
public static final int CAPABILITY_VOICE_PRIVACY = 0x00400000;
+ /**
+ * Add participant in an active or conference call option
+ * @hide
+ */
+ public static final int CAPABILITY_ADD_PARTICIPANT = 0x02000000;
+
//******************************************************************************************
// Next CAPABILITY value: 0x00004000
//******************************************************************************************
@@ -342,6 +348,9 @@ public final class Call {
if (can(capabilities, CAPABILITY_VOICE_PRIVACY)) {
builder.append(" CAPABILITY_VOICE_PRIVACY");
}
+ if (can(capabilities, CAPABILITY_ADD_PARTICIPANT)) {
+ builder.append(" CAPABILITY_ADD_PARTICIPANT");
+ }
builder.append("]");
return builder.toString();
}
diff --git a/telecomm/java/android/telecom/Conference.java b/telecomm/java/android/telecom/Conference.java
index 79fad93..1f9ceee 100644
--- a/telecomm/java/android/telecom/Conference.java
+++ b/telecomm/java/android/telecom/Conference.java
@@ -228,6 +228,14 @@ public abstract class Conference extends Conferenceable {
public void onSeparate(Connection connection) {}
/**
+ * Invoked when the conference adds a participant to the conference call.
+ *
+ * @param participant The participant to be added with conference call.
+ * @hide
+ */
+ public void onAddParticipant(String participant) {}
+
+ /**
* Invoked when the specified {@link Connection} should merged with the conference call.
*
* @param connection The {@code Connection} to merge.
diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java
index dce47c9..7267f15 100644
--- a/telecomm/java/android/telecom/Connection.java
+++ b/telecomm/java/android/telecom/Connection.java
@@ -227,6 +227,13 @@ public abstract class Connection extends Conferenceable {
public static final int CAPABILITY_CAN_PAUSE_VIDEO = 0x00100000;
/**
+ * Add participant in an active or conference call option
+ *
+ * @hide
+ */
+ public static final int CAPABILITY_ADD_PARTICIPANT = 0x02000000;
+
+ /**
* For a conference, indicates the conference will not have child connections.
* <p>
* An example of a conference with child connections is a GSM conference call, where the radio
diff --git a/telecomm/java/android/telecom/ConnectionService.java b/telecomm/java/android/telecom/ConnectionService.java
index fe399b4..13497d7 100644
--- a/telecomm/java/android/telecom/ConnectionService.java
+++ b/telecomm/java/android/telecom/ConnectionService.java
@@ -102,6 +102,8 @@ public abstract class ConnectionService extends Service {
private static final int MSG_MERGE_CONFERENCE = 18;
private static final int MSG_SWAP_CONFERENCE = 19;
private static final int MSG_SET_LOCAL_HOLD = 20;
+ //Proprietary values starts after this.
+ private static final int MSG_ADD_PARTICIPANT_WITH_CONFERENCE = 30;
private static Connection sNullConnection;
@@ -221,6 +223,14 @@ public abstract class ConnectionService extends Service {
}
@Override
+ public void addParticipantWithConference(String callId, String participant) {
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = participant;
+ mHandler.obtainMessage(MSG_ADD_PARTICIPANT_WITH_CONFERENCE, args).sendToTarget();
+ }
+
+ @Override
public void mergeConference(String callId) {
mHandler.obtainMessage(MSG_MERGE_CONFERENCE, callId).sendToTarget();
}
@@ -356,6 +366,17 @@ public abstract class ConnectionService extends Service {
case MSG_SPLIT_FROM_CONFERENCE:
splitFromConference((String) msg.obj);
break;
+ case MSG_ADD_PARTICIPANT_WITH_CONFERENCE: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ try {
+ String callId = (String) args.arg1;
+ String participant = (String) args.arg2;
+ addParticipantWithConference(callId, participant);
+ } finally {
+ args.recycle();
+ }
+ break;
+ }
case MSG_MERGE_CONFERENCE:
mergeConference((String) msg.obj);
break;
@@ -824,6 +845,17 @@ public abstract class ConnectionService extends Service {
}
}
+ private void addParticipantWithConference(String callId, String participant) {
+ Log.d(this, "ConnectionService addParticipantWithConference(%s, %s)", participant, callId);
+ Conference conference = findConferenceForAction(callId, "addParticipantWithConference");
+ Connection connection = findConnectionForAction(callId, "addParticipantWithConnection");
+ if (connection != getNullConnection()) {
+ onAddParticipant(connection, participant);
+ } else if (conference != getNullConference()) {
+ conference.onAddParticipant(participant);
+ }
+ }
+
private void mergeConference(String callId) {
Log.d(this, "mergeConference(%s)", callId);
Conference conference = findConferenceForAction(callId, "mergeConference");
@@ -1110,6 +1142,19 @@ public abstract class ConnectionService extends Service {
public void onConference(Connection connection1, Connection connection2) {}
/**
+ * Add participant with connection. Invoked when user has made a request to add
+ * participant with specified connection. In response, the participant should add with
+ * the connection.
+ *
+ * @param connection A connection where participant need to add.
+ * @param participant Address of participant which will be added.
+ * @return
+ *
+ * @hide
+ */
+ public void onAddParticipant(Connection connection, String participant) {}
+
+ /**
* Indicates that a remote conference has been created for existing {@link RemoteConnection}s.
* When this method is invoked, this {@link ConnectionService} should create its own
* representation of the conference call and send it to telecom using {@link #addConference}.
diff --git a/telecomm/java/com/android/internal/telecom/IConnectionService.aidl b/telecomm/java/com/android/internal/telecom/IConnectionService.aidl
index 7dc062af..23d70d5 100644
--- a/telecomm/java/com/android/internal/telecom/IConnectionService.aidl
+++ b/telecomm/java/com/android/internal/telecom/IConnectionService.aidl
@@ -73,4 +73,6 @@ oneway interface IConnectionService {
void onPostDialContinue(String callId, boolean proceed);
void setLocalCallHold(String callId, boolean lchState);
+
+ void addParticipantWithConference(String callId, String recipients);
}