1

我已经使用 Twilio SDK 实现了 Android 客户端来进行视频通话。它按预期工作,但我发现了一个我无法弄清楚如何修复的边缘情况。这是视频通话代码的本质:

val connectionOptions = ConnectOptions.Builder(accessToken)
                .audioTracks(listOf(audioManager.getLocalAudioTrack()))
                .roomName(roomId)
                .build()
val roomListener = RoomListener()

Video.connect(androidContext, connectOptions, roomListener)

class RoomEventListener : Room.Listener {
    override fun onParticipantDisconnected(room: Room, remoteParticipant: RemoteParticipant) {
       // remove participant from the screen, unsubscribe from events
    }

    override fun onConnectFailure(room: Room, twilioException: TwilioException) {
        exitScreenWithErrorMessage(R.string.video_consult_room_connection_error)
    }

    override fun onReconnected(room: Room) {
        _shouldShowReconnectionActivity.value = false
    }

    override fun onParticipantConnected(room: Room, remoteParticipant: RemoteParticipant) {
        onRemoteParticipantConnected(remoteParticipant)
    }

    override fun onConnected(room: Room) {
        _shouldShowConnectionActivity.value = false
        this@VideoCallViewModel.room = room
        room.remoteParticipants.forEach { onRemoteParticipantConnected(it) }
        determineMainParticipant()
        onLocalParticipantConnected(room)
    }

    override fun onDisconnected(room: Room, twilioException: TwilioException?) {
        exitVideoConsultScreen()
    }

    override fun onReconnecting(room: Room, twilioException: TwilioException) {
        _shouldShowReconnectionActivity.value = true
    }
}

测试用例:

  • Bob 使用 Android 手机加入视频通话
  • Jane 从任何设备(iOS、网络、Android)加入同一个视频通话

当简失去连接时(即关闭互联网)

我不确定为什么在这种情况下 Android 客户端已断开连接(我们在具有 Android 8/9 的不同设备上对其进行了测试)。

更多细节:

  1. 如果 Jane 使用“结束通话”按钮退出房间(因此room.disconnect()已调用 Twilio SDK 中的代码),则 Bob 将留在房间中。
  2. 当 Bob 使用 iOS 设备时(iOS 和 Android 的实现完全一样)然后描述用例通过。
  3. 我们尝试了 5.0.1 和 5.1.0 版本的com.twilio:video-android库。
  4. 我在发行说明中注意到Android Twilio 视频库的已知问题,我不确定它是否会影响所描述的用例:

取消发布和重新发布LocalAudioTrackLocalVideoTrack可能不会被参与者看到。因此,在Room.State.RECONNECTED事件之后发布的曲目可能不会被RemoteParticipant.

4

1 回答 1

1

我在 twilio github repo https://github.com/twilio/video-quickstart-android/issues/454上打开了问题- 这是 twilio video sdk 5.x+ 的预期行为。适用于 Android 和 iOS sdks。

于 2020-03-13T07:54:21.653 回答