diff options
author | Tyler Gunn <tgunn@google.com> | 2016-03-14 15:18:07 -0700 |
---|---|---|
committer | Tyler Gunn <tgunn@google.com> | 2016-03-14 23:26:34 +0000 |
commit | 876dbfb4767da4a2ba5459d5b78fb6eb55e4516f (patch) | |
tree | 163ef4c1fc05a90706df68b25d02ac51489bd6ec /telecomm/java/android/telecom/RemoteConnection.java | |
parent | 791a1546484f643e98a4bb245c3b7c302b894f78 (diff) |
Add API support for multi-endpoint.
This CL includes changes required to support multi-endpoint (see the
design doc linked off the bug).
Main changes include:
- support for indicating if a call/connection is "external" to the device.
- support for indicating if an external call can be pulled from the
remote device to the local device.
- API used to initiate a pull of a call external to the current device to
the current device.
- Made the "connection event" API public (was previously @hide); this will
be used to support passing some error events involving pulling calls to
the incall ui.
- Added new InCallService metadata which will be used to determine if an
InCallService wants to be informed of external calls.
- New disconnect causes which will be used to expose the fact that a
multi-endpoint call was answered elsewhere and that a call ended because
it was pulled to another device.
- New call log call types to indicate if calls were answered elsewhere
or pulled to another device.
Bug: 27458894
Change-Id: I423f64ff965b5e50194635a51868c327782db2a1
Diffstat (limited to 'telecomm/java/android/telecom/RemoteConnection.java')
-rw-r--r-- | telecomm/java/android/telecom/RemoteConnection.java | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/telecomm/java/android/telecom/RemoteConnection.java b/telecomm/java/android/telecom/RemoteConnection.java index 01858080d7d7..5b602eb49dca 100644 --- a/telecomm/java/android/telecom/RemoteConnection.java +++ b/telecomm/java/android/telecom/RemoteConnection.java @@ -212,12 +212,14 @@ public final class RemoteConnection { /** * Handles a connection event propagated to this {@link RemoteConnection}. + * <p> + * Connection events originate from {@link Connection#sendConnectionEvent(String, Bundle)}. * * @param connection The {@code RemoteConnection} invoking this method. * @param event The connection event. - * @hide + * @param extras Extras associated with the event. */ - public void onConnectionEvent(RemoteConnection connection, String event) {} + public void onConnectionEvent(RemoteConnection connection, String event, Bundle extras) {} } /** @@ -962,6 +964,20 @@ public final class RemoteConnection { } /** + * Instructs this {@link RemoteConnection} to pull itself to the local device. + * <p> + * See {@link Call#pullExternalCall()} for more information. + */ + public void pullExternalCall() { + try { + if (mConnected) { + mConnectionService.pullExternalCall(mConnectionId); + } + } catch (RemoteException ignored) { + } + } + + /** * Set the audio state of this {@code RemoteConnection}. * * @param state The audio state of this {@code RemoteConnection}. @@ -1301,14 +1317,14 @@ public final class RemoteConnection { } /** @hide */ - void onConnectionEvent(final String event) { + void onConnectionEvent(final String event, final Bundle extras) { for (CallbackRecord record : mCallbackRecords) { final RemoteConnection connection = this; final Callback callback = record.getCallback(); record.getHandler().post(new Runnable() { @Override public void run() { - callback.onConnectionEvent(connection, event); + callback.onConnectionEvent(connection, event, extras); } }); } |