java.lang.Object | ||||
↳ | android.content.Context | |||
↳ | android.content.ContextWrapper | |||
↳ | android.app.Service | |||
↳ | android.telecom.ConnectionService |
An abstract service that should be implemented by any apps which can make phone calls (VoIP or
otherwise) and want those calls to be integrated into the built-in phone app.
Once implemented, the ConnectionService
needs two additional steps before it will be
integrated into the phone app:
1. Registration in AndroidManifest.xml
<service android:name="com.example.package.MyConnectionService" android:label="@string/some_label_for_my_connection_service" android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE"> <intent-filter> <action android:name="android.telecom.ConnectionService" /> </intent-filter> </service>
2. Registration of PhoneAccount
with TelecomManager
.
See PhoneAccount
and registerPhoneAccount(PhoneAccount)
for more information.
Once registered and enabled by the user in the phone app settings, telecom will bind to a
ConnectionService
implementation when it wants that ConnectionService
to place
a call or the service has indicated that is has an incoming call through
addNewIncomingCall(PhoneAccountHandle, Bundle)
. The ConnectionService
can then expect a call
to onCreateIncomingConnection(PhoneAccountHandle, ConnectionRequest)
or onCreateOutgoingConnection(PhoneAccountHandle, ConnectionRequest)
wherein it
should provide a new instance of a Connection
object. It is through this
Connection
object that telecom receives state updates and the ConnectionService
receives call-commands such as answer, reject, hold and disconnect.
When there are no more live calls, telecom will unbind from the ConnectionService
.
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
String | SERVICE_INTERFACE |
The Intent that must be declared as handled by the service.
|
[Expand]
Inherited Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
android.app.Service
| |||||||||||
From class
android.content.Context
| |||||||||||
From interface
android.content.ComponentCallbacks2
|
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Adds a new conference call.
| |||||||||||
Adds a connection created by the
ConnectionService and informs telecom of the new
connection.
| |||||||||||
Indicates to the relevant
RemoteConnectionService that the specified
RemoteConnection s should be merged into a conference call.
| |||||||||||
Ask some other
ConnectionService to create a RemoteConnection given an
incoming request.
| |||||||||||
Ask some other
ConnectionService to create a RemoteConnection given an
outgoing request.
| |||||||||||
Returns all the active
Connection s for which this ConnectionService
has taken responsibility.
| |||||||||||
Return the communication channel to the service.
| |||||||||||
Conference two specified connections.
| |||||||||||
Create a
Connection given an incoming request.
| |||||||||||
Create a
Connection given an outgoing request.
| |||||||||||
Indicates that a remote conference has been created for existing
RemoteConnection s.
| |||||||||||
Called when an existing connection is added remotely.
| |||||||||||
Called when all clients have disconnected from a particular interface
published by the service.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
android.app.Service
| |||||||||||
From class
android.content.ContextWrapper
| |||||||||||
From class
android.content.Context
| |||||||||||
From class
java.lang.Object
| |||||||||||
From interface
android.content.ComponentCallbacks2
| |||||||||||
From interface
android.content.ComponentCallbacks
|
The Intent
that must be declared as handled by the service.
Adds a new conference call. When a conference call is created either as a result of an
explicit request via onConference(Connection, Connection)
or otherwise, the connection service should supply
an instance of Conference
by invoking this method. A conference call provided by this
method will persist until destroy()
is invoked on the conference instance.
conference | The new conference object. |
---|
Adds a connection created by the ConnectionService
and informs telecom of the new
connection.
phoneAccountHandle | The phone account handle for the connection. |
---|---|
connection | The connection to add. |
Indicates to the relevant RemoteConnectionService
that the specified
RemoteConnection
s should be merged into a conference call.
If the conference request is successful, the method onRemoteConferenceAdded(RemoteConference)
will
be invoked.
remoteConnection1 | The first of the remote connections to conference. |
---|---|
remoteConnection2 | The second of the remote connections to conference. |
Ask some other ConnectionService
to create a RemoteConnection
given an
incoming request. This is used by ConnectionService
s that are registered with
CAPABILITY_CONNECTION_MANAGER
and want to be able to manage
SIM-based incoming calls.
connectionManagerPhoneAccount | See description at
onCreateOutgoingConnection(PhoneAccountHandle, ConnectionRequest) . |
---|---|
request | Details about the incoming call. |
Connection
object to satisfy this call, or null
to
not handle the call.
Ask some other ConnectionService
to create a RemoteConnection
given an
outgoing request. This is used by ConnectionService
s that are registered with
CAPABILITY_CONNECTION_MANAGER
and want to be able to use the
SIM-based ConnectionService
to place its outgoing calls.
connectionManagerPhoneAccount | See description at
onCreateOutgoingConnection(PhoneAccountHandle, ConnectionRequest) . |
---|---|
request | Details about the incoming call. |
Connection
object to satisfy this call, or null
to
not handle the call.
Returns all the active Connection
s for which this ConnectionService
has taken responsibility.
Connection
s created by this ConnectionService
.
Return the communication channel to the service. May return null if
clients can not bind to the service. The returned
IBinder
is usually for a complex interface
that has been described using
aidl.
Note that unlike other application components, calls on to the IBinder interface returned here may not happen on the main thread of the process. More information about the main thread can be found in Processes and Threads.
intent | The Intent that was used to bind to this service,
as given to Context.bindService . Note that any extras that were included with
the Intent at that point will not be seen here. |
---|
Conference two specified connections. Invoked when the user has made a request to merge the
specified connections into a conference call. In response, the connection service should
create an instance of Conference
and pass it into addConference(Conference)
.
connection1 | A connection to merge into a conference call. |
---|---|
connection2 | A connection to merge into a conference call. |
Create a Connection
given an incoming request. This is used to attach to existing
incoming calls.
connectionManagerPhoneAccount | See description at
onCreateOutgoingConnection(PhoneAccountHandle, ConnectionRequest) . |
---|---|
request | Details about the incoming call. |
Connection
object to satisfy this call, or null
to
not handle the call.
Create a Connection
given an outgoing request. This is used to initiate new
outgoing calls.
connectionManagerPhoneAccount | The connection manager account to use for managing
this call.
If this parameter is not
If this parameter is |
---|---|
request | Details about the outgoing call. |
Connection
object to satisfy this call, or the result of an invocation
of createFailedConnection(DisconnectCause)
to not handle the call.
Indicates that a remote conference has been created for existing RemoteConnection
s.
When this method is invoked, this ConnectionService
should create its own
representation of the conference call and send it to telecom using addConference(Conference)
.
This is only relevant to ConnectionService
s which are registered with
CAPABILITY_CONNECTION_MANAGER
.
conference | The remote conference call. |
---|
Called when an existing connection is added remotely.
connection | The existing connection which was added. |
---|
Called when all clients have disconnected from a particular interface published by the service. The default implementation does nothing and returns false.
intent | The Intent that was used to bind to this service,
as given to Context.bindService . Note that any extras that were included with
the Intent at that point will not be seen here. |
---|
onRebind(Intent)
method later called when new clients bind to it.