使用Google提供的新ConnectionService API,我发现并非所有手机都有用于视频通话的用户界面,这意味着我必须回退到我自己的手机视频通话实施中。
阅读Google的documentation:
当没有更多的实时通话时,电信将解除对话 ConnectionService。
这意味着如果在我自己拦截传入/传出视频呼叫并且我在ConnectionService上调用addExistingConnection时,我的ConnectionService实现没有正在进行的呼叫,则会通知TelecomManager,但是TelecomManager背后的TelecomService不会绑定回我的ConnectionService。这意味着如果我降级为音频并且我调用showInCallScreen,即使我的ConnectionService确实包含正在进行的呼叫,也不会发生任何事情。
在另一个用例中,如果我已经使用ConnectionService进行了正在进行的音频通话,然后我进行了一个我添加到ConnectionService的外出视频通话,那么TelecomManager将会收到通知,我将可以在我的两个通话中切换原生UI。
在addExistingConnection之后是否缺少调用以使TelecomService绑定回我的ConnectionService实现?
if (action.equals(ADD_CALL_ACTION) && isInitialized) {
final String sessionId = myIntent.getStringExtra(EXTRA_SESSION_ID);
final PhoneAccountHandle phoneAccountHandle = TelecomIntegrationHelper.getPhoneAccountHandle(context);
addExistingConnection(phoneAccountHandle, createOngoingConnection(sessionId));
getTelecomManager().showInCallScreen(false);
}