在android的源码中有定义,Phone的状态只有三种:IDLE,OFFHOOK,RINGING,单靠Phone的状态无法判断当前通话的具体状态。因为通话的具体状态包括IDLE,DIALING,ACTIVE,HOLD等等。OFFHOOK包括三种call的状态:DIALING,ACTIVE,HOLD,当电话一拨出去,对方没有接听,此时call的状态是DIALING(正在拨号,还没有接通),所以Phone的状态就是OFFHOOK。当状态是OFFHOOK时,并不能判定电话接通了,电话接通时call的状态是ACTIVE.而android目前提供的接口,不能获取到ACTIVCE的状态。
是这样的,正常状态为CALL_STATE_IDLE,你拨打电话一按拨打键就是CALL_STATE_OFFHOOK,不管对方接不接听,断开后就是CALL_STATE_IDLE,而接听电话是先CALL_STATE_RINGING,你接通后是CALL_STATE_OFFHOOK,断开是CALL_STATE_IDLE,