Merge "Support for showing self-managed calls in IncallService." am: 5a33057092 am: 8c7d28f163

am: fd0e1a9d93

Change-Id: I88170e214ca6c142e0445a814ad0e76064e72ba7
This commit is contained in:
Tyler Gunn
2017-03-01 23:40:53 +00:00
committed by android-build-merger
6 changed files with 73 additions and 3 deletions

View File

@@ -372,6 +372,24 @@ public class TelecomManager {
public static final String METADATA_INCLUDE_EXTERNAL_CALLS =
"android.telecom.INCLUDE_EXTERNAL_CALLS";
/**
* A boolean meta-data value indicating whether an {@link InCallService} wants to be informed of
* calls which have the {@link Call.Details#PROPERTY_SELF_MANAGED} property. A self-managed
* call is one which originates from a self-managed {@link ConnectionService} which has chosen
* to implement its own call user interface. An {@link InCallService} implementation which
* would like to be informed of external calls should set this meta-data to {@code true} in the
* manifest registration of their {@link InCallService}. By default, the {@link InCallService}
* will NOT be informed about self-managed calls.
* <p>
* An {@link InCallService} which receives self-managed calls is free to view and control the
* state of calls in the self-managed {@link ConnectionService}. An example use-case is
* exposing these calls to a wearable or automotive device via its companion app.
* <p>
* See also {@link Connection#PROPERTY_SELF_MANAGED}.
*/
public static final String METADATA_INCLUDE_SELF_MANAGED_CALLS =
"android.telecom.INCLUDE_SELF_MANAGED_CALLS";
/**
* The dual tone multi-frequency signaling character sent to indicate the dialing system should
* pause for a predefined period.
@@ -1051,10 +1069,12 @@ public class TelecomManager {
/**
* Returns whether there is an ongoing phone call (can be in dialing, ringing, active or holding
* states).
* states) originating from either a manager or self-managed {@link ConnectionService}.
* <p>
* Requires permission: {@link android.Manifest.permission#READ_PHONE_STATE}
* </p>
*
* @return {@code true} if there is an ongoing call in either a managed or self-managed
* {@link ConnectionService}, {@code false} otherwise.
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
public boolean isInCall() {
@@ -1068,6 +1088,31 @@ public class TelecomManager {
return false;
}
/**
* Returns whether there is an ongoing call originating from a managed
* {@link ConnectionService}. An ongoing call can be in dialing, ringing, active or holding
* states.
* <p>
* If you also need to know if there are ongoing self-managed calls, use {@link #isInCall()}
* instead.
* <p>
* Requires permission: {@link android.Manifest.permission#READ_PHONE_STATE}
*
* @return {@code true} if there is an ongoing call in a managed {@link ConnectionService},
* {@code false} otherwise.
*/
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
public boolean isInManagedCall() {
try {
if (isServiceConnected()) {
return getTelecomService().isInManagedCall(mContext.getOpPackageName());
}
} catch (RemoteException e) {
Log.e(TAG, "RemoteException calling isInManagedCall().", e);
}
return false;
}
/**
* Returns one of the following constants that represents the current state of Telecom:
*
@@ -1079,6 +1124,9 @@ public class TelecomManager {
* {@link android.Manifest.permission#READ_PHONE_STATE} permission. This is intentional, to
* preserve the behavior of {@link TelephonyManager#getCallState()}, which also did not require
* the permission.
*
* Takes into consideration both managed and self-managed calls.
*
* @hide
*/
@SystemApi
@@ -1096,6 +1144,7 @@ public class TelecomManager {
/**
* Returns whether there currently exists is a ringing incoming-call.
*
* @return {@code true} if there is a managed or self-managed ringing call.
* @hide
*/
@SystemApi