1、问题现象
视频通话中,然后Home挂后台,按住Power亮灭屏,通知栏再次进入视频通话界面,视频通话界面卡住,并提示摄像头关闭。
2、Log分析
先从检查AP侧摄像头是否正常打开关闭,如果没问题,再参考Android 视频通话分析总结_android h264extractor-CSDN博客 该文档分析
//下发恢复
06-06 18:01:08.784849 13293 13293 I Dialer : ImsVideoTech.unpause - sending unpause request
06-06 18:01:08.785362 1526 1526 I Telecom-VideoProviderProxy: IC->VP (callId=TC@9): sendSessionModifyRequest: from=[VideoProfile videoState = Audio Tx Rx Pause videoQuality = 0] to=[VideoProfile videoState = Audio Tx Rx videoQuality = 4]
06-06 18:01:08.785792 13293 13293 I Dialer : InCallActivity.onResume
06-06 18:01:08.786509 2171 2171 I ImsVideoCallProviderWrapper: onSendSessionModifyRequest: fromVideoState=Audio Tx Rx Pause, toVideoState=Audio Tx Rx;
//更新状态
06-06 18:01:08.790234 2171 2171 I ImsVideoCallProviderWrapper: onVideoStateChanged: currentVideoState=Audio Tx Rx Pause, newVideoState=Audio Tx Rx, clearing pending pause requests.
//下发暂停
06-06 18:01:08.815420 13293 13293 I Dialer : InCallActivity.onPause
06-06 18:01:08.820021 13293 13293 I Dialer : ImsVideoTech.pause - sending pause request
06-06 18:01:08.821431 1526 1526 I Telecom-VideoProviderProxy: IC->VP (callId=TC@9): sendSessionModifyRequest: from=[VideoProfile videoState = Audio Tx Rx Pause videoQuality = 0] to=[VideoProfile videoState = Audio Tx Rx Pause videoQuality = 4]
06-06 18:01:08.822367 2171 2171 I ImsVideoCallProviderWrapper: onSendSessionModifyRequest: fromVideoState=Audio Tx Rx Pause, toVideoState=Audio Tx Rx Pause;
//下发恢复
06-06 18:01:08.841976 13293 13293 I Dialer : ImsVideoTech.unpause - sending unpause request
06-06 18:01:08.842422 1526 1526 I Telecom-VideoProviderProxy: IC->VP (callId=TC@9): sendSessionModifyRequest: from=[VideoProfile videoState = Audio Tx Rx Pause videoQuality = 0] to=[VideoProfile videoState = Audio Tx Rx videoQuality = 4]
06-06 18:01:08.842504 13293 13293 I Dialer : InCallActivity.onResume
//框架状态还没更新,此消息无法下发
06-06 18:01:08.844998 2171 2171 I ImsVideoCallProviderWrapper: onSendSessionModifyRequest: fromVideoState=Audio Tx Rx Pause, toVideoState=Audio Tx Rx; skipping resume request - already resumed.
06-06 18:01:08.927604 2171 2171 D ImsVideoCallProviderWrapper: onVideoStateChanged: currentVideoState=Audio Tx Rx, newVideoState=Audio Tx Rx Pause
最后导致Camera状态处于关闭状态
3、解決方案
方案1、ImsVideoCallProviderWrapper过滤掉
06-06 18:01:08.822367 2171 2171 I ImsVideoCallProviderWrapper: onSendSessionModifyRequest: fromVideoState=Audio Tx Rx Pause, toVideoState=Audio Tx Rx Pause;
方案2、解决Dialer 短时间onPause onResume 问题