Merge "Creating connections for conference event package participants." into lmp-mr1-dev automerge: 450f904
automerge: 2257fe8
* commit '2257fe8a7597c3a0133514691ac872c2b6ac3dc5':
Creating connections for conference event package participants.
This commit is contained in:
@@ -28093,6 +28093,7 @@ package android.telecom {
|
|||||||
method public final java.util.List<android.telecom.Connection> getConferenceableConnections();
|
method public final java.util.List<android.telecom.Connection> getConferenceableConnections();
|
||||||
method public final java.util.List<android.telecom.Connection> getConnections();
|
method public final java.util.List<android.telecom.Connection> getConnections();
|
||||||
method public final android.telecom.PhoneAccountHandle getPhoneAccountHandle();
|
method public final android.telecom.PhoneAccountHandle getPhoneAccountHandle();
|
||||||
|
method public android.telecom.Connection getPrimaryConnection();
|
||||||
method public final int getState();
|
method public final int getState();
|
||||||
method public void onAudioStateChanged(android.telecom.AudioState);
|
method public void onAudioStateChanged(android.telecom.AudioState);
|
||||||
method public void onDisconnect();
|
method public void onDisconnect();
|
||||||
@@ -28182,6 +28183,7 @@ package android.telecom {
|
|||||||
public abstract class ConnectionService extends android.app.Service {
|
public abstract class ConnectionService extends android.app.Service {
|
||||||
ctor public ConnectionService();
|
ctor public ConnectionService();
|
||||||
method public final void addConference(android.telecom.Conference);
|
method public final void addConference(android.telecom.Conference);
|
||||||
|
method public final void addExistingConnection(android.telecom.PhoneAccountHandle, android.telecom.Connection);
|
||||||
method public final void conferenceRemoteConnections(android.telecom.RemoteConnection, android.telecom.RemoteConnection);
|
method public final void conferenceRemoteConnections(android.telecom.RemoteConnection, android.telecom.RemoteConnection);
|
||||||
method public final android.telecom.RemoteConnection createRemoteIncomingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
method public final android.telecom.RemoteConnection createRemoteIncomingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||||
method public final android.telecom.RemoteConnection createRemoteOutgoingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
method public final android.telecom.RemoteConnection createRemoteOutgoingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||||
@@ -28191,6 +28193,7 @@ package android.telecom {
|
|||||||
method public android.telecom.Connection onCreateIncomingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
method public android.telecom.Connection onCreateIncomingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||||
method public android.telecom.Connection onCreateOutgoingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
method public android.telecom.Connection onCreateOutgoingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest);
|
||||||
method public void onRemoteConferenceAdded(android.telecom.RemoteConference);
|
method public void onRemoteConferenceAdded(android.telecom.RemoteConference);
|
||||||
|
method public void onRemoteExistingConnectionAdded(android.telecom.RemoteConnection);
|
||||||
field public static final java.lang.String SERVICE_INTERFACE = "android.telecom.ConnectionService";
|
field public static final java.lang.String SERVICE_INTERFACE = "android.telecom.ConnectionService";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -333,6 +333,19 @@ public abstract class Conference {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the primary connection associated with the conference. The primary connection is
|
||||||
|
* the connection from which the conference will retrieve its current state.
|
||||||
|
*
|
||||||
|
* @return The primary connection.
|
||||||
|
*/
|
||||||
|
public Connection getPrimaryConnection() {
|
||||||
|
if (mUnmodifiableChildConnections == null || mUnmodifiableChildConnections.isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return mUnmodifiableChildConnections.get(0);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inform this Conference that the state of its audio output has been changed externally.
|
* Inform this Conference that the state of its audio output has been changed externally.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -821,6 +821,40 @@ public abstract class ConnectionService extends Service {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a connection created by the {@link ConnectionService} and informs telecom of the new
|
||||||
|
* connection.
|
||||||
|
*
|
||||||
|
* @param phoneAccountHandle The phone account handle for the connection.
|
||||||
|
* @param connection The connection to add.
|
||||||
|
*/
|
||||||
|
public final void addExistingConnection(PhoneAccountHandle phoneAccountHandle,
|
||||||
|
Connection connection) {
|
||||||
|
|
||||||
|
String id = addExistingConnectionInternal(connection);
|
||||||
|
if (id != null) {
|
||||||
|
List<String> emptyList = new ArrayList<>(0);
|
||||||
|
|
||||||
|
ParcelableConnection parcelableConnection = new ParcelableConnection(
|
||||||
|
phoneAccountHandle,
|
||||||
|
connection.getState(),
|
||||||
|
connection.getCallCapabilities(),
|
||||||
|
connection.getAddress(),
|
||||||
|
connection.getAddressPresentation(),
|
||||||
|
connection.getCallerDisplayName(),
|
||||||
|
connection.getCallerDisplayNamePresentation(),
|
||||||
|
connection.getVideoProvider() == null ?
|
||||||
|
null : connection.getVideoProvider().getInterface(),
|
||||||
|
connection.getVideoState(),
|
||||||
|
connection.isRingbackRequested(),
|
||||||
|
connection.getAudioModeIsVoip(),
|
||||||
|
connection.getStatusHints(),
|
||||||
|
connection.getDisconnectCause(),
|
||||||
|
emptyList);
|
||||||
|
mAdapter.addExistingConnection(id, parcelableConnection);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns all the active {@code Connection}s for which this {@code ConnectionService}
|
* Returns all the active {@code Connection}s for which this {@code ConnectionService}
|
||||||
* has taken responsibility.
|
* has taken responsibility.
|
||||||
@@ -905,6 +939,12 @@ public abstract class ConnectionService extends Service {
|
|||||||
|
|
||||||
public void onRemoteConferenceAdded(RemoteConference conference) {}
|
public void onRemoteConferenceAdded(RemoteConference conference) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when an existing connection is added remotely.
|
||||||
|
* @param connection The existing connection which was added.
|
||||||
|
*/
|
||||||
|
public void onRemoteExistingConnectionAdded(RemoteConnection connection) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@@ -917,6 +957,11 @@ public abstract class ConnectionService extends Service {
|
|||||||
onRemoteConferenceAdded(remoteConference);
|
onRemoteConferenceAdded(remoteConference);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** {@hide} */
|
||||||
|
void addRemoteExistingConnection(RemoteConnection remoteConnection) {
|
||||||
|
onRemoteExistingConnectionAdded(remoteConnection);
|
||||||
|
}
|
||||||
|
|
||||||
private void onAccountsInitialized() {
|
private void onAccountsInitialized() {
|
||||||
mAreAccountsInitialized = true;
|
mAreAccountsInitialized = true;
|
||||||
for (Runnable r : mPreInitializationConnectionRequests) {
|
for (Runnable r : mPreInitializationConnectionRequests) {
|
||||||
@@ -925,6 +970,18 @@ public abstract class ConnectionService extends Service {
|
|||||||
mPreInitializationConnectionRequests.clear();
|
mPreInitializationConnectionRequests.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds an existing connection to the list of connections, identified by a new UUID.
|
||||||
|
*
|
||||||
|
* @param connection The connection.
|
||||||
|
* @return The UUID of the connection (e.g. the call-id).
|
||||||
|
*/
|
||||||
|
private String addExistingConnectionInternal(Connection connection) {
|
||||||
|
String id = UUID.randomUUID().toString();
|
||||||
|
addConnection(id, connection);
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
private void addConnection(String callId, Connection connection) {
|
private void addConnection(String callId, Connection connection) {
|
||||||
mConnectionById.put(callId, connection);
|
mConnectionById.put(callId, connection);
|
||||||
mIdByConnection.put(connection, callId);
|
mIdByConnection.put(connection, callId);
|
||||||
|
|||||||
@@ -344,4 +344,20 @@ final class ConnectionServiceAdapter implements DeathRecipient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Informs telecom of an existing connection which was added by the {@link ConnectionService}.
|
||||||
|
*
|
||||||
|
* @param callId The unique ID of the call being added.
|
||||||
|
* @param connection The connection.
|
||||||
|
*/
|
||||||
|
void addExistingConnection(String callId, ParcelableConnection connection) {
|
||||||
|
Log.v(this, "addExistingConnection: %s", callId);
|
||||||
|
for (IConnectionServiceAdapter adapter : mAdapters) {
|
||||||
|
try {
|
||||||
|
adapter.addExistingConnection(callId, connection);
|
||||||
|
} catch (RemoteException ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ final class ConnectionServiceAdapterServant {
|
|||||||
private static final int MSG_SET_ADDRESS = 18;
|
private static final int MSG_SET_ADDRESS = 18;
|
||||||
private static final int MSG_SET_CALLER_DISPLAY_NAME = 19;
|
private static final int MSG_SET_CALLER_DISPLAY_NAME = 19;
|
||||||
private static final int MSG_SET_CONFERENCEABLE_CONNECTIONS = 20;
|
private static final int MSG_SET_CONFERENCEABLE_CONNECTIONS = 20;
|
||||||
|
private static final int MSG_ADD_EXISTING_CONNECTION = 21;
|
||||||
|
|
||||||
private final IConnectionServiceAdapter mDelegate;
|
private final IConnectionServiceAdapter mDelegate;
|
||||||
|
|
||||||
@@ -199,6 +200,16 @@ final class ConnectionServiceAdapterServant {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case MSG_ADD_EXISTING_CONNECTION: {
|
||||||
|
SomeArgs args = (SomeArgs) msg.obj;
|
||||||
|
try {
|
||||||
|
mDelegate.addExistingConnection(
|
||||||
|
(String) args.arg1, (ParcelableConnection) args.arg2);
|
||||||
|
} finally {
|
||||||
|
args.recycle();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -345,6 +356,15 @@ final class ConnectionServiceAdapterServant {
|
|||||||
args.arg2 = conferenceableConnectionIds;
|
args.arg2 = conferenceableConnectionIds;
|
||||||
mHandler.obtainMessage(MSG_SET_CONFERENCEABLE_CONNECTIONS, args).sendToTarget();
|
mHandler.obtainMessage(MSG_SET_CONFERENCEABLE_CONNECTIONS, args).sendToTarget();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final void addExistingConnection(
|
||||||
|
String connectionId, ParcelableConnection connection) {
|
||||||
|
SomeArgs args = SomeArgs.obtain();
|
||||||
|
args.arg1 = connectionId;
|
||||||
|
args.arg2 = connection;
|
||||||
|
mHandler.obtainMessage(MSG_ADD_EXISTING_CONNECTION, args).sendToTarget();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
public ConnectionServiceAdapterServant(IConnectionServiceAdapter delegate) {
|
public ConnectionServiceAdapterServant(IConnectionServiceAdapter delegate) {
|
||||||
|
|||||||
@@ -406,6 +406,29 @@ public final class RemoteConnection {
|
|||||||
mState = Connection.STATE_INITIALIZING;
|
mState = Connection.STATE_INITIALIZING;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
RemoteConnection(String callId, IConnectionService connectionService,
|
||||||
|
ParcelableConnection connection) {
|
||||||
|
mConnectionId = callId;
|
||||||
|
mConnectionService = connectionService;
|
||||||
|
mConnected = true;
|
||||||
|
mState = connection.getState();
|
||||||
|
mDisconnectCause = connection.getDisconnectCause();
|
||||||
|
mRingbackRequested = connection.isRingbackRequested();
|
||||||
|
mCallCapabilities = connection.getCapabilities();
|
||||||
|
mVideoState = connection.getVideoState();
|
||||||
|
mVideoProvider = new RemoteConnection.VideoProvider(connection.getVideoProvider());
|
||||||
|
mIsVoipAudioMode = connection.getIsVoipAudioMode();
|
||||||
|
mStatusHints = connection.getStatusHints();
|
||||||
|
mAddress = connection.getHandle();
|
||||||
|
mAddressPresentation = connection.getHandlePresentation();
|
||||||
|
mCallerDisplayName = connection.getCallerDisplayName();
|
||||||
|
mCallerDisplayNamePresentation = connection.getCallerDisplayNamePresentation();
|
||||||
|
mConference = null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a RemoteConnection which is used for failed connections. Note that using it for any
|
* Create a RemoteConnection which is used for failed connections. Note that using it for any
|
||||||
* "real" purpose will almost certainly fail. Callers should note the failure and act
|
* "real" purpose will almost certainly fail. Callers should note the failure and act
|
||||||
@@ -415,7 +438,7 @@ public final class RemoteConnection {
|
|||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
RemoteConnection(DisconnectCause disconnectCause) {
|
RemoteConnection(DisconnectCause disconnectCause) {
|
||||||
this("NULL", null, null);
|
mConnectionId = "NULL";
|
||||||
mConnected = false;
|
mConnected = false;
|
||||||
mState = Connection.STATE_DISCONNECTED;
|
mState = Connection.STATE_DISCONNECTED;
|
||||||
mDisconnectCause = disconnectCause;
|
mDisconnectCause = disconnectCause;
|
||||||
|
|||||||
@@ -41,8 +41,9 @@ import java.util.UUID;
|
|||||||
*/
|
*/
|
||||||
final class RemoteConnectionService {
|
final class RemoteConnectionService {
|
||||||
|
|
||||||
|
// Note: Casting null to avoid ambiguous constructor reference.
|
||||||
private static final RemoteConnection NULL_CONNECTION =
|
private static final RemoteConnection NULL_CONNECTION =
|
||||||
new RemoteConnection("NULL", null, null);
|
new RemoteConnection("NULL", null, (ConnectionRequest) null);
|
||||||
|
|
||||||
private static final RemoteConference NULL_CONFERENCE =
|
private static final RemoteConference NULL_CONFERENCE =
|
||||||
new RemoteConference("NULL", null);
|
new RemoteConference("NULL", null);
|
||||||
@@ -286,6 +287,15 @@ final class RemoteConnectionService {
|
|||||||
.setConferenceableConnections(conferenceable);
|
.setConferenceableConnections(conferenceable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addExistingConnection(String callId, ParcelableConnection connection) {
|
||||||
|
// TODO: add contents of this method
|
||||||
|
RemoteConnection remoteConnction = new RemoteConnection(callId,
|
||||||
|
mOutgoingConnectionServiceRpc, connection);
|
||||||
|
|
||||||
|
mOurConnectionServiceImpl.addRemoteExistingConnection(remoteConnction);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private final ConnectionServiceAdapterServant mServant =
|
private final ConnectionServiceAdapterServant mServant =
|
||||||
|
|||||||
@@ -77,4 +77,6 @@ oneway interface IConnectionServiceAdapter {
|
|||||||
void setCallerDisplayName(String callId, String callerDisplayName, int presentation);
|
void setCallerDisplayName(String callId, String callerDisplayName, int presentation);
|
||||||
|
|
||||||
void setConferenceableConnections(String callId, in List<String> conferenceableCallIds);
|
void setConferenceableConnections(String callId, in List<String> conferenceableCallIds);
|
||||||
|
|
||||||
|
void addExistingConnection(String callId, in ParcelableConnection connection);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user