1.通话状态
State {
IDLE,//待机,没有连接
ACTIVE,//通话
HOLDING,//挂断通话
DIALING,//响铃
ALERTING,//提醒
INCOMING,//来电
WAITING,//等待接通
DISCONNECTED,//连接断开后
DISCONNECTING;//连接断开工程中
}
在 GSMCallTracker中维护着通话列表:connections。顺序记录了正连接上的通话,这些通话包 括:ACTIVE,DIALING,ALERTING,HOLDING,INCOMING,WAITING等状态的连接。GSMCallTracker将 这些连接分为了三类别进行管理:
RingingCall: INCOMING ,WAITING
ForegourndCall: ACTIVE, DIALING ,ALERTING
BackgroundCall: HOLDING
2.通话失败的原因
CallFailCause {
// Unassigned/Unobtainable number未分配的号码
static final int UNOBTAINABLE_NUMBER = 1;
static final int NORMAL_CLEARING = 16;
// Busy Tone对方正在通话
static final int USER_BUSY = 17;
// No Tone
static final int NUMBER_CHANGED = 22;
static final int STATUS_ENQUIRY = 30;
static final int NORMAL_UNSPECIFIED = 31;
// Congestion Tone
static final int NO_CIRCUIT_AVAIL = 34;
static final int TEMPORARY_FAILURE = 41;
static final int SWITCHING_CONGESTION = 42;
static final int CHANNEL_NOT_AVAIL = 44;
static final int QOS_NOT_AVAIL = 49;
static final int BEARER_NOT_AVAIL = 58;
// others
static final int ACM_LIMIT_EXCEEDED = 68;
static final int CALL_BARRED = 240;
static final int FDN_BLOCKED = 241;
static final int ERROR_UNSPECIFIED = 0xffff;
static final int IMSI_UNKNOWN_IN_VLR = 242;
static final int IMEI_NOT_ACCEPTED = 243;
}
3.连接取消的原因
DisconnectCause {
NOT_DISCONNECTED,/* has not yet disconnected 连接失败/
INCOMING_MISSED,/ an incoming call that was missed and never answered 错过了来电/
NORMAL,/ normal; remote 对方挂断电话/
LOCAL,/ normal; local hangup 自己挂断电话/
BUSY,/ outgoing call to busy line 拨打的号码正在通话/
CONGESTION,/ outgoing call to congested network 网络拥挤/
MMI