记录一个融云音视频比较坑的问题

本文探讨了使用RongCallClient.getInstance().getCallSession()方法判断通话状态的问题,指出仅检查是否为null不够严谨。通过测试发现,在快速挂断或未接通情况下,该方法返回非空结果,提出结合activeTime字段进行更准确的通话状态判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看知识库里面的工单,融云的人说用

RongCallClient.getInstance().getCallSession()

上面这个可以判断是否通话中,嗯,先当他说的是正确的

后来发现,只是判断null 不 null 这样的并不严谨,有时候很快的挂断通话或者对方没有接通直接挂断通话,RongCallClient.getInstance().getCallSession()这个是不为空的,

其实我的需求是,如果有通话中的会话,当点击音视频通话的入口或者正处于悬浮音视频通话时,就给出适当的提示,先让其关闭现有的才能再做相应的操作。

第一波测试:正常通话几秒钟,正常挂断,可以用getCallSession判断

 

第二波测试:A拨打B,之后A很快挂断, 此时 getCallSession 是不为空的

第三波测试:A拨打B,之后B直接挂断A,此时getCallSession是不为空的

 

第四波测试:A拨打B,正常通话,A点击缩小窗口通话,此时getCallSession不为空,这个是正常的

 

经过比对分析:activeTime这个字段,正常在通话中的时候是不为0,挂断通话的时候的是为0的

于是,判断是否真正通话中的做法是

 if (RongCallClient.getInstance().getCallSession() != null && RongCallClient.getInstance().getCallSession().getActiveTime() != 0) {
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值