Interface CallActionListener
- All Known Implementing Classes:
CallActionAdapter
What the system asks of a call, and what it tells the app about one.
Every method arrives on the EDT. CallActionAdapter implements them all
as no-ops, so an app can override only what it needs.
The ...Requested methods are the user acting through the system's own
UI -- the lock screen, the car, a headset button -- rather than through
this app's. Each carries a CallAction; ignoring it fulfills it, which is
the right behaviour for almost every app. See CallAction for the case
where it is not.
-
Method Summary
Modifier and TypeMethodDescriptionvoidanswerRequested(String callId, CallAction action) The user answered.voidaudioSessionActivated(CallAudioSession session) The operating system has activated the audio session.voidaudioSessionDeactivated(String callId) The operating system has taken the audio back.voidcallEnded(String callId, CallEndReason reason) The call ended for a reason that did not come from this app -- the far end hung up, or the system ended it.voiddtmfRequested(String callId, String digits, CallAction action) The user typed on the system keypad.voidendRequested(String callId, CallAction action) The user hung up.voidholdRequested(String callId, boolean held, CallAction action) The user held or resumed the call, or the system did in order to give the audio to something else.voidmuteRequested(String callId, boolean muted, CallAction action) The user muted or unmuted the call.voidEvery call this app had is gone.voidstartCallRequested(String callId, CallHandle handle, boolean video, CallAction action) The system is asking this app to place a call: the user tapped an entry in Recents, or asked a voice assistant to call somebody through this app.
-
Method Details
-
answerRequested
The user answered. Start media whenaudioSessionActivated(CallAudioSession)arrives, not here. -
endRequested
The user hung up. -
holdRequested
The user held or resumed the call, or the system did in order to give the audio to something else. -
muteRequested
The user muted or unmuted the call. -
dtmfRequested
The user typed on the system keypad. -
startCallRequested
The system is asking this app to place a call: the user tapped an entry in Recents, or asked a voice assistant to call somebody through this app. No call exists yet -- report one with
Calls.reportOutgoing(String, CallHandle, String, boolean)using the id carried here.Unlike every other action here, an unanswered request is failed rather than fulfilled, and the system call ends. Nothing else can place the call, so reporting success for a request the app ignored would leave it dialing for ever. An app that does not place calls on the system's behalf can leave this alone; one that does must either report the call or answer the action itself.
-
audioSessionActivated
The operating system has activated the audio session. This is where media starts. SeeCallAudioSessionfor why it is not where the call is answered. -
audioSessionDeactivated
The operating system has taken the audio back. Stop media. -
callEnded
The call ended for a reason that did not come from this app -- the far end hung up, or the system ended it. -
providerReset
void providerReset()Every call this app had is gone.
The system's call provider was reset, which happens when the user switches the app's calling off or the platform recovers from an error. Tear down media and forget every session, but do not call
CallSession.end(CallEndReason)on them: they no longer exist as far as the system is concerned, and ending a call on a reset provider is undefined.An app that does not implement this leaks its media engine and shows calls that are not there.
-