Android Sipdroid 对外通话建立过程分析,以及监听通话接通时刻

此文不完善,无需浪费时间阅读,谢谢。

感谢博友 @我闹 问题(怎么获得通话建立的时间点,不用广播)的提出,才促使我继续写这篇分析文章。

这篇文是上一篇Sipdorid的分析,进一步说明对外呼出的建立过程,如有错误,请指出。

CallCard中有两类注意一下,一个是更新通话界面的方法

//对外暴露的方法:更新如通话时间,通话状态
public void displayMainCallStatus(Phone phone, Call call){}

第二个私有

/**
* Updates the "upper" and "lower" titles based on the
* current state of this call.
*/

private void updateCardTitleWidgets(Phone phone, Call call){}

在私有方法里面你可以看到Call.State state = call.getState();通话状态的判断,当Call.State.ACTIVE时,计时器mElapsedTime开始计时,从某种状态来说,这个已经算正式接通的状态。所以,更进一步是要对Call状态的实时监听。

调用处:
这里写图片描述

CallCard的displayMainCallStatus:
CallCard的displayMainCallStatus

CallCard的updateCardTitleWidgets:
CallCard的updateCardTitleWidgets

Call通话状态枚举

IDLE, ACTIVE, HOLDING, DIALING, ALERTING, INCOMING, WAITING, DISCONNECTED

我们只注意ACTIVE(通话中)这个。

在管理器Receiver中,你可以查看到这里有对Call状态的设置ccCall.setState(...),在我们向外拨打电话同时会发送OFFHOLD广播(摘机)过程,你也可以通过这个广播同时判断Call状态即可获取对外通话正式接通的时刻。
注:OFFHOLD广播会发送两个,一次是开始拨打电话(按了拨号键)状态为Call.State.DIALING

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值