What does the different Call states in the Android

2020-02-28 09:43发布

问题:

The internal Android class com.android.internal.telephony.Call contains an enum called State and defined as follows:

public enum State {
    IDLE, ACTIVE, HOLDING, DIALING, ALERTING, INCOMING, WAITING, DISCONNECTED, DISCONNECTING;

    public boolean isAlive() {
        return !(this == IDLE || this == DISCONNECTED || this == DISCONNECTING);
    }

    public boolean isRinging() {
        return this == INCOMING || this == WAITING;
    }

    public boolean isDialing() {
        return this == DIALING || this == ALERTING;
    }
}

What does the different states represent?

回答1:

Okay, this is my own attempt at answering the question:

/** Call is idle. */
IDLE,
/** Call is active i.e. audio paths are connected. */
ACTIVE,
/** We have placed the call on hold. */
HOLDING,
/** Outgoing dialling call initiated. */
DIALING,
/** Outgoing call is alerting receiving party. */
ALERTING,
/** Incoming call ready for pickup. */ 
INCOMING,
/** Incoming call is waiting for pickup, while another call is in progress. */
WAITING,
/** Call is disconnected, by either party. */
DISCONNECTED,
/** Call is currently being disconnected. */
DISCONNECTING;


回答2:

3GPP TS 27.007 version 13.5.0 Release 13

List current calls +CLCC

Command 
+CLCC

Possible response(s)
[+CLCC: <ccid1>,<dir>,<stat>,<mode>,<mpty>[,<number>
,<type>[,<alpha>[,<priority>[,<CLI validity>]]]]
[<CR><LF>+CLCC: <ccid2>,<dir>,<stat>,<mode>,<mpty>[,
<number>,<type>[,<alpha>[,<priority>[,<CLI validity>
]]]]
[...]]]
+CME ERROR: <err>

<stat>: integer type (state of the call)
0 active
1 held
2 dialing (MO call)
3 alerting (MO call)
4 incoming (MT call)
5 waiting (MT call) 

My interpretation:

0 active: call in progress (setup was successful)
1 held: call on hold
2 dialing (MO call): number dialed
3 alerting (MO call): number dialed and the called party is alerted
4 incoming (MT call): incoming call, ringtone played (AT RING notification)
5 waiting (MT call): call waiting notification while another call is active (if call waiting feature enabled)