Simultaneous
Call Tutorial
This tutorial describes how to handle two call with the telephony
API for applications.
This state diagram shows how to dial or answer one or two calls
at a time.
Figure 1. Simultaneous Call State Diagram
The boxes are states. The enumeration value in each box is the status
of the voice line. Voice
line status describes these states and their meaning. The arrows show
events that trigger a change of state. In these events, a word in bold indicates
a CTelephony method that you can call.
check the Voice
line status for other calls
if the line is Idle (CTelephony::EStatusIdle)
then no calls are in progress
if the line is on
hold (CTelephony::EStatusHold) then there is another
call in progress, but it is on hold and you can still dial or answer a second
call. Now go to point four below
if another call is active,
you must wait until it completes before you can dial or receive a call.
Dial a call
while no calls are in progress, the line's status is CTelephony::EStatusIdle.
To dial a call, use CTelephony::DialNewCall(). If dialling
was successful and the remote party answers the call then the line's status
will become CTelephony::EStatusConnected.
Answer a call
while no calls are in progress, the line's status is CTelephony::EStatusIdle.
When a remote party calls your phone, the voice line's status will change
to CTelephony::EStatusRinging.
When the status is CTelephony::EStatusRinging, use CTelephony::AnswerIncomingCall() to
answer the call. The status will change to CTelephony::EStatusConnected and
the phone user can talk to the remote party.
Terminate the
call
detect Remote
Termination of a call
Hold a Call
Resume a call
Send DTMF tones
down the line
Line and call
information
Answer
a second call
at some point, a remote party might try to ring your phone. It is answered
in the same way as the first
The voice line state will change to CTelephony::EStatusRinging.
You can receive notification when this occurs; see Detect
an incoming call. Before answering the second call, you must put the
original call on hold. This is shown in the diagram above.
Dial
a second call
you can also dial a second call in the same way as the first. Once again,
you must put your original call on hold before dialling the second call
a CTelephony::TCallId will be given to you when you
successfully connect a second call. You will also have a CTelephony::TCallId from
the first call. Now you will be the owner of two calls: at any one time, one
will always be active and one will always be on hold.
Now you can: