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
This commit is contained in:
Tyler Gunn
2016-03-14 15:18:07 -07:00
parent 791a154648
commit 876dbfb476
20 changed files with 493 additions and 22 deletions

View File

@@ -17,6 +17,7 @@
package android.telecom;
import android.annotation.SystemApi;
import android.os.Bundle;
import android.util.ArrayMap;
import java.util.Collections;
@@ -190,6 +191,13 @@ public final class Phone {
fireSilenceRinger();
}
final void internalOnConnectionEvent(String telecomId, String event, Bundle extras) {
Call call = mCallByTelecomCallId.get(telecomId);
if (call != null) {
call.internalOnConnectionEvent(event, extras);
}
}
/**
* Called to destroy the phone and cleanup any lingering calls.
*/