1 AP侧
通话主要是针对拨出的电话。想要在接通的时候给出震动提示那么就需要知道通话何时是被接通的,这样才能在进入该状态后给出提示。但SDK中并没有直接获得这种状态的方式。SDK中的TelephonyManager类提供了3种电话的状态.
CALL_STATE_IDLE 空闲状态
CALL_STATE_OFFHOOK 摘机状态
CALL_STATE_RINGING 响铃状态
拨出电话的时候,会输入这么几条log,拨号->提醒->活动
拨号:GET_CURRENT_CALLS id=1,DIALING
提醒:GET_CURRENT_CALLS id=1,ALERTING
活动:GET_CURRENT_CALLS id=1,ACTIVE
电话接通时会进入活动状态,并会输出:GET_CURRENT_CALLS id=1,ACTIVE 这条log。
在拨号开始到电话接通这段时间内会经过多次的拨号->提醒->活动,仅当话筒中嘟声响起后GET_CURRENT_CALLS这条日志会锁定在ALERTING,在通话接通之前会出现多次的GET_CURRENT_CALLS ACTIVE 这样的日志,而仅有一次是电话接通产生的。不能只是单纯的抓取GET_CURRENT_CALLS ACTIVE 这样的信息来判断。
1.1 主动打电话,主动挂断
//处于4G制式
Line 10337: 08-13 18:16:49.865 2310 2560 D RILJ : [5233]> VOICE_REGISTRATION_STATE [SUB0]
Line 10409: 08-13 18:16:49.935 2310 2396 D RILJ : [5233]< VOICE_REGISTRATION_STATE {.regState = REG_HOME, .rat = 14, .cssSupported = false, .roamingIndicator = 1, .systemIsInPrl = -1, .defaultRoamingIndicator = -1, .reasonForDenial = 0, .cellIdentity = {.cellInfoType = LTE, .cellIdentityGsm = [], .cellIdentityWcdma = [], .cellIdentityCdma = [], .cellIdentityLte = [{.base = {.mcc = 460, .mnc = 01, .ci = 196186673, .pci = 186, .tac = 37147, .earfcn = 1650}, .operatorNames = {.alphaLong = CHN-UNICOM, .alphaShort = UNICOM}, .bandwidth = 2147483647}], .cellIdentityTdscdma = []}} [SUB0]
//modem主动上报状态
Line 10494: 08-13 18:17:23.938 2310 2396 D RILJ : [UNSL]< UNSOL_DATA_CALL_LIST_CHANGED [{.status = NONE, .suggestedRetryTime = -1, .cid = 0, .active = 1, .type = IPV4V6, .ifname = rmnet_data1, .addresses = 10.62.170.136/28, .dnses = 221.11.1.67 221.11.1.68, .gateways = 10.62.170.137, .pcscf = , .mtu = 1500}] [SUB0]
Line 10659: 08-13 18:17:31.808 2310 2310 D GsmCdmaCallTracker: [0] update phone state, old=IDLE new=IDLE
Line 10667: 08-13 18:17:31.809 2310 2310 D GsmCdmaConnection: [GsmCdmaConn] acquireWakeLock
//拨号
Line 10669: 08-13 18:17:31.811 2310 2310 D RILJ : [5241]> DIAL [SUB0]
Line 10670: 08-13 18:17:31.811 2310 2310 D GsmCdmaCallTracker: [0] update phone state, old=IDLE new=OFFHOOK
Line 10685: 08-13 18:17:31.821 2310 2396 D RILJ : [UNSL]< UNSOL_RESPONSE_CALL_STATE_CHANGED [SUB0]
Line 10700: 08-13 18:17:31.843 2310 2396 D RILJ : [5241]< DIAL [SUB0]
Line 10701: 08-13 18:17:31.844 2310 2310 D RILJ : [5244]> GET_CURRENT_CALLS [SUB0]
Line 10703: 08-13 18:17:31.845 2310 2396 D RILJ : [UNSL]< UNSOL_RESPONSE_CALL_STATE_CHANGED [SUB0]
Line 10707: 08-13 18:17:32.085 2310 2396 D RILJ : [5244]< GET_CURRENT_CALLS {[id=1,DIALING,toa=129,norm,mo,0,voc,noevp,,cli=1,,3,audioQuality=0] } [SUB0]
Line 10708: 08-13 18:17:32.085 2310 2310 D GsmCdmaCallTracker: Event EVENT_POLL_CALLS_RESULT Received
Line 10713: 08-13 18:17:32.090 2310 2310 D GsmCdmaConnection: [GsmCdmaConn] parent= DIALING, newParent= DIALING
Line 10716: 08-13 18:17:32.090 2310 2310 D GsmCdmaConnection: [GsmCdmaConn] update: parent=DIALING, hasNewParent=false, wasConnectingInOrOut=true, wasHolding=false, isConnectingInOrOut=true, changed=true
Line 10717: 08-13 18:17:32.091 2310 2310 D GsmCdmaCallTracker: [0] update phone state, old=OFFHOOK new=OFFHOOK
//变为制式回落
Line 11048: 08-13 18:17:33.184 2310 2560 D RILJ : [5273]> VOI