You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Twilio视频通话结束后“A Call is in Progress”通知不消失问题求助

问题根因

  • 资源释放时序错误:当前代码先释放视频轨、再执行房间断开操作,未等SDK底层完全断开连接就释放资源,不符合Twilio SDK的资源释放规范,Redmi的MIUI系统对音视频资源占用的检测逻辑比原生Android更严格,时序错误就会导致系统误判麦克风仍被占用。
  • 缺失音频轨取消发布逻辑:仅对本地视频轨做了unpublish处理,本地音频轨未从房间取消发布,导致SDK一直持有麦克风资源。
  • 冗余的重复释放逻辑:代码中先后两次判断localVideoTrack是否存在并释放,第一次已经将变量置空,第二次逻辑完全无效,存在隐患。

修复方案

1. 修正资源释放时序及逻辑

首先调整killAllVideoProcess逻辑,先取消发布所有本地轨,再触发房间断开,所有资源释放操作移到房间断开回调中执行:

// 先执行取消发布+触发断开
private fun killAllVideoProcess() {
    localParticipant?.let { participant ->
        localVideoTrack?.let { participant.unpublishTrack(it) }
        localAudioTrack?.let { participant.unpublishTrack(it) } // 新增音频轨取消发布
    }
    
    // 触发房间断开,后续释放在onDisconnected回调执行
    room?.takeIf { it.state != Room.State.DISCONNECTED }?.run {
        disconnect()
        disconnectedFromOnDestroy = true
    }
}

// 在你注册的Room.Listener实现类中添加onDisconnected回调处理
override fun onDisconnected(room: Room, disconnectError: TwilioException?) {
    // 所有资源释放在此处执行
    localVideoTrack?.release()
    localVideoTrack = null
    
    localAudioTrack?.release()
    localAudioTrack = null
    
    // 显式停止Twilio音频设备采集
    DefaultAudioDevice(requireContext()).apply {
        stop()
        release()
    }
    
    // MIUI适配:主动释放音频焦点,通知系统麦克风已停用
    val audioManager = requireContext().getSystemService(Context.AUDIO_SERVICE) as AudioManager
    audioManager.abandonAudioFocus(null)
    
    // 兜底:清除系统通话类通知
    val notificationManager = requireContext().getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
    notificationManager.cancel(12345) // 如果你的通话通知有固定ID就填对应ID,没有可以调用cancelAll()
    
    this.room = null
}

2. MIUI权限补充检查

检查AndroidManifest.xml是否添加了Android 12+ required的通话前台服务权限:

<uses-permission android:name="android.permission.FOREGROUND_SERVICE_PHONE_CALL" />

Redmi的MIUI系统对该权限校验严格,缺失的情况下会出现通话状态无法重置的问题。

验证方法

修改后执行通话-挂断流程,在开发者选项的「权限使用记录」中查看麦克风的占用状态,确认挂断后应用不再占用麦克风即可。

内容的提问来源于stack exchange,提问作者Hascher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 18:36:09