Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

# android.telecom

*** ** * ** ***

The Android Telecom framework is responsible for managing calls on an Android device. This can include SIM-based calls using the `Telephony` framework, VOIP calls using SIP (e.g. the `SipConnectionService`), or via a third-party VOIP `https://developer.android.com/reference/android/telecom/ConnectionService`. Telecom acts as a switchboard, routing calls and audio focus between `https://developer.android.com/reference/android/telecom/Connection`s provided by `https://developer.android.com/reference/android/telecom/ConnectionService` implementations, and `https://developer.android.com/reference/android/telecom/InCallService` implementations which provide a user interface for calls.

Android supports the following calling use cases (with increasing level of complexity):

- Implement the self-managed `https://developer.android.com/reference/android/telecom/ConnectionService` API - this is ideal for developers of standalone calling apps which do not wish to show their calls within the default phone app, and do not wish to have other calls shown in their user interface. Using a self-managed `https://developer.android.com/reference/android/telecom/ConnectionService` implementation within your standalone calling app helps you ensure that your app will interoperate not only with native telephony calling on the device, but also other standalone calling apps implementing this API. It also manages audio routing and focus for you.
- Implement the managed `https://developer.android.com/reference/android/telecom/ConnectionService` API - facilitates development of a calling solution that relies on the existing device phone application (see `https://developer.android.com/reference/android/telecom/TelecomManager#getDefaultDialerPackage()`) to provide the user interface for calls. An example might be a third party implementation of SIP calling, or a VOIP calling service. A `https://developer.android.com/reference/android/telecom/ConnectionService` alone provides only the means of connecting calls, but has no associated user interface.
- Implement the `https://developer.android.com/reference/android/telecom/InCallService` API - facilitates development of a replacement for the device's default Phone/Dialer app. The `https://developer.android.com/reference/android/telecom/InCallService` alone does not have any calling capability and consists of the user-interface side of calling only. An `https://developer.android.com/reference/android/telecom/InCallService` must handle all Calls the Telecom framework is aware of. It must not make assumptions about the nature of the calls (e.g. assuming calls are SIM-based telephony calls), and should not implement calling restrictions based on any one `https://developer.android.com/reference/android/telecom/ConnectionService` (e.g. it should not enforce Telephony restrictions for video calls).
- Implement both the `https://developer.android.com/reference/android/telecom/InCallService` and `https://developer.android.com/reference/android/telecom/ConnectionService` API - ideal if you wish to create your own `https://developer.android.com/reference/android/telecom/ConnectionService` based calling solution, complete with its own full user interface, while showing all other Android calls in the same user interface. Using this approach, you must still ensure that your `https://developer.android.com/reference/android/telecom/InCallService` makes no assumption about the source of the calls it displays. You must also ensure that your `https://developer.android.com/reference/android/telecom/ConnectionService` implementation can still function without the default phone app being set to your custom `https://developer.android.com/reference/android/telecom/InCallService`.

## Interfaces

|---|---|
| [CallControlCallback](https://developer.android.com/reference/android/telecom/CallControlCallback) | CallControlCallback relays call updates (that require a response) from the Telecom framework out to the application.This can include operations which the app must implement on a Call due to the presence of other calls on the device, requests relayed from a Bluetooth device, or from another calling surface. |
| [CallEventCallback](https://developer.android.com/reference/android/telecom/CallEventCallback) | CallEventCallback relays call updates (that do not require any action) from the Telecom framework out to the application. |

## Classes

|---|---|
| [Call](https://developer.android.com/reference/android/telecom/Call) | Represents an ongoing phone call that the in-call app should present to the user. |
| [Call.Callback](https://developer.android.com/reference/android/telecom/Call.Callback) | Defines callbacks which inform the `https://developer.android.com/reference/android/telecom/InCallService` of changes to a `https://developer.android.com/reference/android/telecom/Call`. |
| [Call.Details](https://developer.android.com/reference/android/telecom/Call.Details) |   |
| [Call.RttCall](https://developer.android.com/reference/android/telecom/Call.RttCall) | A class that holds the state that describes the state of the RTT channel to the remote party, if it is active. |
| [CallAttributes](https://developer.android.com/reference/android/telecom/CallAttributes) | CallAttributes represents a set of properties that define a new Call. |
| [CallAttributes.Builder](https://developer.android.com/reference/android/telecom/CallAttributes.Builder) | Build an instance of `https://developer.android.com/reference/android/telecom/CallAttributes`. |
| [CallAudioState](https://developer.android.com/reference/android/telecom/CallAudioState) | Encapsulates the telecom audio state, including the current audio routing, supported audio routing and mute. |
| [CallControl](https://developer.android.com/reference/android/telecom/CallControl) | CallControl provides client side control of a call. |
| [CallEndpoint](https://developer.android.com/reference/android/telecom/CallEndpoint) | Encapsulates the endpoint where call media can flow |
| [CallRedirectionService](https://developer.android.com/reference/android/telecom/CallRedirectionService) | This service can be implemented to interact between Telecom and its implementor for making outgoing call with optional redirection/cancellation purposes. |
| [CallScreeningService](https://developer.android.com/reference/android/telecom/CallScreeningService) | This service can be implemented by the default dialer (see `https://developer.android.com/reference/android/telecom/TelecomManager#getDefaultDialerPackage()`) or a third party app to allow or disallow incoming calls before they are shown to a user. |
| [CallScreeningService.CallResponse](https://developer.android.com/reference/android/telecom/CallScreeningService.CallResponse) | Information about how to respond to an incoming call. |
| [CallScreeningService.CallResponse.Builder](https://developer.android.com/reference/android/telecom/CallScreeningService.CallResponse.Builder) |   |
| [Conference](https://developer.android.com/reference/android/telecom/Conference) | Represents a conference call which can contain any number of `https://developer.android.com/reference/android/telecom/Connection` objects. |
| [Conferenceable](https://developer.android.com/reference/android/telecom/Conferenceable) | Interface used to identify entities with which another entity can participate in a conference call with. |
| [Connection](https://developer.android.com/reference/android/telecom/Connection) | Represents a phone call or connection to a remote endpoint that carries voice and/or video traffic. |
| [Connection.RttModifyStatus](https://developer.android.com/reference/android/telecom/Connection.RttModifyStatus) | Provides constants to represent the results of responses to session modify requests sent via `https://developer.android.com/reference/android/telecom/Call#sendRttRequest()` |
| [Connection.RttTextStream](https://developer.android.com/reference/android/telecom/Connection.RttTextStream) | Provides methods to read and write RTT data to/from the in-call app. |
| [Connection.VideoProvider](https://developer.android.com/reference/android/telecom/Connection.VideoProvider) | Provides a means of controlling the video session associated with a `https://developer.android.com/reference/android/telecom/Connection`. |
| [ConnectionRequest](https://developer.android.com/reference/android/telecom/ConnectionRequest) | Simple data container encapsulating a request to some entity to create a new `https://developer.android.com/reference/android/telecom/Connection`. |
| [ConnectionService](https://developer.android.com/reference/android/telecom/ConnectionService) | An abstract service that should be implemented by any apps which either: 1. Can make phone calls (VoIP or otherwise) and want those calls to be integrated into the built-in phone app. |
| [DisconnectCause](https://developer.android.com/reference/android/telecom/DisconnectCause) | Describes the cause of a disconnected call. |
| [GatewayInfo](https://developer.android.com/reference/android/telecom/GatewayInfo) | Encapsulated gateway address information for outgoing call. |
| [InCallService](https://developer.android.com/reference/android/telecom/InCallService) | This service is implemented by an app that wishes to provide functionality for managing phone calls. |
| [InCallService.VideoCall](https://developer.android.com/reference/android/telecom/InCallService.VideoCall) | Used to issue commands to the `https://developer.android.com/reference/android/telecom/Connection.VideoProvider` associated with a `https://developer.android.com/reference/android/telecom/Call`. |
| [InCallService.VideoCall.Callback](https://developer.android.com/reference/android/telecom/InCallService.VideoCall.Callback) | The `https://developer.android.com/reference/android/telecom/InCallService` extends this class to provide a means of receiving callbacks from the `https://developer.android.com/reference/android/telecom/Connection.VideoProvider`. |
| [PhoneAccount](https://developer.android.com/reference/android/telecom/PhoneAccount) | Represents a distinct method to place or receive a phone call. |
| [PhoneAccount.Builder](https://developer.android.com/reference/android/telecom/PhoneAccount.Builder) | Helper class for creating a `https://developer.android.com/reference/android/telecom/PhoneAccount`. |
| [PhoneAccountHandle](https://developer.android.com/reference/android/telecom/PhoneAccountHandle) | The unique identifier for a `https://developer.android.com/reference/android/telecom/PhoneAccount`. |
| [PhoneAccountSuggestion](https://developer.android.com/reference/android/telecom/PhoneAccountSuggestion) |   |
| [RemoteConference](https://developer.android.com/reference/android/telecom/RemoteConference) | A conference provided to a `https://developer.android.com/reference/android/telecom/ConnectionService` by another `ConnectionService` through `https://developer.android.com/reference/android/telecom/ConnectionService#conferenceRemoteConnections(android.telecom.RemoteConnection,%20android.telecom.RemoteConnection)`. |
| [RemoteConference.Callback](https://developer.android.com/reference/android/telecom/RemoteConference.Callback) | Callback base class for `https://developer.android.com/reference/android/telecom/RemoteConference`. |
| [RemoteConnection](https://developer.android.com/reference/android/telecom/RemoteConnection) | A connection provided to a `https://developer.android.com/reference/android/telecom/ConnectionService` by another `ConnectionService` running in a different process. |
| [RemoteConnection.Callback](https://developer.android.com/reference/android/telecom/RemoteConnection.Callback) | Callback base class for `https://developer.android.com/reference/android/telecom/RemoteConnection`. |
| [RemoteConnection.VideoProvider](https://developer.android.com/reference/android/telecom/RemoteConnection.VideoProvider) | `https://developer.android.com/reference/android/telecom/RemoteConnection.VideoProvider` associated with a `https://developer.android.com/reference/android/telecom/RemoteConnection`. |
| [RemoteConnection.VideoProvider.Callback](https://developer.android.com/reference/android/telecom/RemoteConnection.VideoProvider.Callback) | Callback class used by the `https://developer.android.com/reference/android/telecom/RemoteConnection.VideoProvider` to relay events from the `https://developer.android.com/reference/android/telecom/Connection.VideoProvider`. |
| [StatusHints](https://developer.android.com/reference/android/telecom/StatusHints) | Contains status label and icon displayed in the in-call UI. |
| [TelecomManager](https://developer.android.com/reference/android/telecom/TelecomManager) | The Android Telecom framework manages audio and video calls on an Android device. |
| [VideoProfile](https://developer.android.com/reference/android/telecom/VideoProfile) | Represents attributes of video calls. |
| [VideoProfile.CameraCapabilities](https://developer.android.com/reference/android/telecom/VideoProfile.CameraCapabilities) | Represents the camera capabilities important to a Video Telephony provider. |

## Exceptions

|---|---|
| [CallEndpointException](https://developer.android.com/reference/android/telecom/CallEndpointException) | This class represents a set of exceptions that can occur when requesting a `https://developer.android.com/reference/android/telecom/CallEndpoint` change. |
| [CallException](https://developer.android.com/reference/android/telecom/CallException) | This class defines exceptions that can be thrown when using Telecom APIs with `https://developer.android.com/reference/android/os/OutcomeReceiver`s. |
| [QueryLocationException](https://developer.android.com/reference/android/telecom/QueryLocationException) | This class represents a set of exceptions that can occur when requesting a `https://developer.android.com/reference/android/telecom/Connection#queryLocationForEmergency(long,%20java.lang.String,%20java.util.concurrent.Executor,%20android.os.OutcomeReceiver<android.location.Location,android.telecom.QueryLocationException>)` |

-

  ## Interfaces

  - [CallControlCallback](https://developer.android.com/reference/android/telecom/CallControlCallback)
  - [CallEventCallback](https://developer.android.com/reference/android/telecom/CallEventCallback)
-

  ## Classes

  - [Call](https://developer.android.com/reference/android/telecom/Call)
  - [Call.Callback](https://developer.android.com/reference/android/telecom/Call.Callback)
  - [Call.Details](https://developer.android.com/reference/android/telecom/Call.Details)
  - [Call.RttCall](https://developer.android.com/reference/android/telecom/Call.RttCall)
  - [CallAttributes](https://developer.android.com/reference/android/telecom/CallAttributes)
  - [CallAttributes.Builder](https://developer.android.com/reference/android/telecom/CallAttributes.Builder)
  - [CallAudioState](https://developer.android.com/reference/android/telecom/CallAudioState)
  - [CallControl](https://developer.android.com/reference/android/telecom/CallControl)
  - [CallEndpoint](https://developer.android.com/reference/android/telecom/CallEndpoint)
  - [CallRedirectionService](https://developer.android.com/reference/android/telecom/CallRedirectionService)
  - [CallScreeningService](https://developer.android.com/reference/android/telecom/CallScreeningService)
  - [CallScreeningService.CallResponse](https://developer.android.com/reference/android/telecom/CallScreeningService.CallResponse)
  - [CallScreeningService.CallResponse.Builder](https://developer.android.com/reference/android/telecom/CallScreeningService.CallResponse.Builder)
  - [Conference](https://developer.android.com/reference/android/telecom/Conference)
  - [Conferenceable](https://developer.android.com/reference/android/telecom/Conferenceable)
  - [Connection](https://developer.android.com/reference/android/telecom/Connection)
  - [Connection.RttModifyStatus](https://developer.android.com/reference/android/telecom/Connection.RttModifyStatus)
  - [Connection.RttTextStream](https://developer.android.com/reference/android/telecom/Connection.RttTextStream)
  - [Connection.VideoProvider](https://developer.android.com/reference/android/telecom/Connection.VideoProvider)
  - [ConnectionRequest](https://developer.android.com/reference/android/telecom/ConnectionRequest)
  - [ConnectionService](https://developer.android.com/reference/android/telecom/ConnectionService)
  - [DisconnectCause](https://developer.android.com/reference/android/telecom/DisconnectCause)
  - [GatewayInfo](https://developer.android.com/reference/android/telecom/GatewayInfo)
  - [InCallService](https://developer.android.com/reference/android/telecom/InCallService)
  - [InCallService.VideoCall](https://developer.android.com/reference/android/telecom/InCallService.VideoCall)
  - [InCallService.VideoCall.Callback](https://developer.android.com/reference/android/telecom/InCallService.VideoCall.Callback)
  - [PhoneAccount](https://developer.android.com/reference/android/telecom/PhoneAccount)
  - [PhoneAccount.Builder](https://developer.android.com/reference/android/telecom/PhoneAccount.Builder)
  - [PhoneAccountHandle](https://developer.android.com/reference/android/telecom/PhoneAccountHandle)
  - [PhoneAccountSuggestion](https://developer.android.com/reference/android/telecom/PhoneAccountSuggestion)
  - [RemoteConference](https://developer.android.com/reference/android/telecom/RemoteConference)
  - [RemoteConference.Callback](https://developer.android.com/reference/android/telecom/RemoteConference.Callback)
  - [RemoteConnection](https://developer.android.com/reference/android/telecom/RemoteConnection)
  - [RemoteConnection.Callback](https://developer.android.com/reference/android/telecom/RemoteConnection.Callback)
  - [RemoteConnection.VideoProvider](https://developer.android.com/reference/android/telecom/RemoteConnection.VideoProvider)
  - [RemoteConnection.VideoProvider.Callback](https://developer.android.com/reference/android/telecom/RemoteConnection.VideoProvider.Callback)
  - [StatusHints](https://developer.android.com/reference/android/telecom/StatusHints)
  - [TelecomManager](https://developer.android.com/reference/android/telecom/TelecomManager)
  - [VideoProfile](https://developer.android.com/reference/android/telecom/VideoProfile)
  - [VideoProfile.CameraCapabilities](https://developer.android.com/reference/android/telecom/VideoProfile.CameraCapabilities)
-

  ## Exceptions

  - [CallEndpointException](https://developer.android.com/reference/android/telecom/CallEndpointException)
  - [CallException](https://developer.android.com/reference/android/telecom/CallException)
  - [QueryLocationException](https://developer.android.com/reference/android/telecom/QueryLocationException)