Android Twilio-如何获取已经在聊天室中的用户的视频跟踪?

Android Twilio-如何获取已经在聊天室中的用户的视频跟踪?,android,twilio,Android,Twilio,我使用的是Twilio Android库,当你加入它时,我很难获得已经在那个房间里的partipans视频流。有人请帮忙我已经试了几个小时了 return new Room.Listener() { @Override public void onConnected(Room room) { Log.d(TAG, "Room Listener Connected to " + room.getName()); } 连接到房间后,会调用此方法,我不知道如何获

我使用的是Twilio Android库,当你加入它时,我很难获得已经在那个房间里的partipans视频流。有人请帮忙我已经试了几个小时了

return new Room.Listener() {
    @Override
    public void onConnected(Room room) {
          Log.d(TAG, "Room Listener Connected to " + room.getName());

}

连接到房间后,会调用此方法,我不知道如何获取其他参与者的视频轨迹。

房间连接成功后,您必须从房间中找到远程参与者,并为房间中的每个参与者连接
RemoteParticipant.Listener

要让参与者离开会议室:

 override fun onConnected(room: Room) {
  for (remoteParticipant in room.remoteParticipants) {
                    addRemoteParticipant(remoteParticipant)
  }
}
设置远程参与者的侦听器。

private fun addRemoteParticipant(remoteParticipant: RemoteParticipant) {
        remoteParticipantIdentity = remoteParticipant.identity
        remoteParticipant.setListener(remoteParticipantListener())
}
private fun remoteParticipantListener(): RemoteParticipant.Listener {
        return object : RemoteParticipant.Listener {

override fun onAudioTrackPublished(remoteParticipant:RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication) {
}

override fun onAudioTrackUnpublished(remoteParticipant: RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication) {
}

override fun onDataTrackPublished(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication) {
}

override fun onDataTrackUnpublished(remoteParticipant: RemoteParticipant,
remoteDataTrackPublication: RemoteDataTrackPublication) {
}

override fun onVideoTrackPublished(remoteParticipant: RemoteParticipant,remoteVideoTrackPublication: RemoteVideoTrackPublication) {}

override fun onVideoTrackUnpublished(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication) {}

override fun onAudioTrackSubscribed(remoteParticipant: RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication,remoteAudioTrack: RemoteAudioTrack) {}

override fun onAudioTrackUnsubscribed(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication, remoteAudioTrack: RemoteAudioTrack) {}

override fun onAudioTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication, twilioException: TwilioException) { }

override fun onDataTrackSubscribed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication,remoteDataTrack: RemoteDataTrack) {}

override fun onDataTrackUnsubscribed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication, remoteDataTrack: RemoteDataTrack) {}

override fun onDataTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication,twilioException: TwilioException) {}

override fun onVideoTrackSubscribed(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication, remoteVideoTrack: RemoteVideoTrack) {}

override fun onVideoTrackUnsubscribed(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication,remoteVideoTrack: RemoteVideoTrack) {}

override fun onVideoTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,
                                                      remoteVideoTrackPublication: RemoteVideoTrackPublication, twilioException: TwilioException){}

override fun onAudioTrackEnabled(remoteParticipant: RemoteParticipant,
                                             remoteAudioTrackPublication: RemoteAudioTrackPublication) {}

override fun onAudioTrackDisabled(remoteParticipant: RemoteParticipant,
                                              remoteAudioTrackPublication: RemoteAudioTrackPublication) {}

override fun onVideoTrackEnabled(remoteParticipant: RemoteParticipant,
                                             remoteVideoTrackPublication: RemoteVideoTrackPublication) {}

override fun onVideoTrackDisabled(remoteParticipant: RemoteParticipant,remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
        }
    }
之后,您必须实施获取参与者音频和视频曲目的方法。

private fun addRemoteParticipant(remoteParticipant: RemoteParticipant) {
        remoteParticipantIdentity = remoteParticipant.identity
        remoteParticipant.setListener(remoteParticipantListener())
}
private fun remoteParticipantListener(): RemoteParticipant.Listener {
        return object : RemoteParticipant.Listener {

override fun onAudioTrackPublished(remoteParticipant:RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication) {
}

override fun onAudioTrackUnpublished(remoteParticipant: RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication) {
}

override fun onDataTrackPublished(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication) {
}

override fun onDataTrackUnpublished(remoteParticipant: RemoteParticipant,
remoteDataTrackPublication: RemoteDataTrackPublication) {
}

override fun onVideoTrackPublished(remoteParticipant: RemoteParticipant,remoteVideoTrackPublication: RemoteVideoTrackPublication) {}

override fun onVideoTrackUnpublished(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication) {}

override fun onAudioTrackSubscribed(remoteParticipant: RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication,remoteAudioTrack: RemoteAudioTrack) {}

override fun onAudioTrackUnsubscribed(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication, remoteAudioTrack: RemoteAudioTrack) {}

override fun onAudioTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication, twilioException: TwilioException) { }

override fun onDataTrackSubscribed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication,remoteDataTrack: RemoteDataTrack) {}

override fun onDataTrackUnsubscribed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication, remoteDataTrack: RemoteDataTrack) {}

override fun onDataTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication,twilioException: TwilioException) {}

override fun onVideoTrackSubscribed(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication, remoteVideoTrack: RemoteVideoTrack) {}

override fun onVideoTrackUnsubscribed(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication,remoteVideoTrack: RemoteVideoTrack) {}

override fun onVideoTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,
                                                      remoteVideoTrackPublication: RemoteVideoTrackPublication, twilioException: TwilioException){}

override fun onAudioTrackEnabled(remoteParticipant: RemoteParticipant,
                                             remoteAudioTrackPublication: RemoteAudioTrackPublication) {}

override fun onAudioTrackDisabled(remoteParticipant: RemoteParticipant,
                                              remoteAudioTrackPublication: RemoteAudioTrackPublication) {}

override fun onVideoTrackEnabled(remoteParticipant: RemoteParticipant,
                                             remoteVideoTrackPublication: RemoteVideoTrackPublication) {}

override fun onVideoTrackDisabled(remoteParticipant: RemoteParticipant,remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
        }
    }

一旦您的会议室成功连接,您必须从会议室中找到远程参与者,并为会议室中的每个参与者连接
RemoteParticipant.Listener

要让参与者离开会议室:

 override fun onConnected(room: Room) {
  for (remoteParticipant in room.remoteParticipants) {
                    addRemoteParticipant(remoteParticipant)
  }
}
设置远程参与者的侦听器。

private fun addRemoteParticipant(remoteParticipant: RemoteParticipant) {
        remoteParticipantIdentity = remoteParticipant.identity
        remoteParticipant.setListener(remoteParticipantListener())
}
private fun remoteParticipantListener(): RemoteParticipant.Listener {
        return object : RemoteParticipant.Listener {

override fun onAudioTrackPublished(remoteParticipant:RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication) {
}

override fun onAudioTrackUnpublished(remoteParticipant: RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication) {
}

override fun onDataTrackPublished(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication) {
}

override fun onDataTrackUnpublished(remoteParticipant: RemoteParticipant,
remoteDataTrackPublication: RemoteDataTrackPublication) {
}

override fun onVideoTrackPublished(remoteParticipant: RemoteParticipant,remoteVideoTrackPublication: RemoteVideoTrackPublication) {}

override fun onVideoTrackUnpublished(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication) {}

override fun onAudioTrackSubscribed(remoteParticipant: RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication,remoteAudioTrack: RemoteAudioTrack) {}

override fun onAudioTrackUnsubscribed(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication, remoteAudioTrack: RemoteAudioTrack) {}

override fun onAudioTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication, twilioException: TwilioException) { }

override fun onDataTrackSubscribed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication,remoteDataTrack: RemoteDataTrack) {}

override fun onDataTrackUnsubscribed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication, remoteDataTrack: RemoteDataTrack) {}

override fun onDataTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication,twilioException: TwilioException) {}

override fun onVideoTrackSubscribed(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication, remoteVideoTrack: RemoteVideoTrack) {}

override fun onVideoTrackUnsubscribed(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication,remoteVideoTrack: RemoteVideoTrack) {}

override fun onVideoTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,
                                                      remoteVideoTrackPublication: RemoteVideoTrackPublication, twilioException: TwilioException){}

override fun onAudioTrackEnabled(remoteParticipant: RemoteParticipant,
                                             remoteAudioTrackPublication: RemoteAudioTrackPublication) {}

override fun onAudioTrackDisabled(remoteParticipant: RemoteParticipant,
                                              remoteAudioTrackPublication: RemoteAudioTrackPublication) {}

override fun onVideoTrackEnabled(remoteParticipant: RemoteParticipant,
                                             remoteVideoTrackPublication: RemoteVideoTrackPublication) {}

override fun onVideoTrackDisabled(remoteParticipant: RemoteParticipant,remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
        }
    }
之后,您必须实施获取参与者音频和视频曲目的方法。

private fun addRemoteParticipant(remoteParticipant: RemoteParticipant) {
        remoteParticipantIdentity = remoteParticipant.identity
        remoteParticipant.setListener(remoteParticipantListener())
}
private fun remoteParticipantListener(): RemoteParticipant.Listener {
        return object : RemoteParticipant.Listener {

override fun onAudioTrackPublished(remoteParticipant:RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication) {
}

override fun onAudioTrackUnpublished(remoteParticipant: RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication) {
}

override fun onDataTrackPublished(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication) {
}

override fun onDataTrackUnpublished(remoteParticipant: RemoteParticipant,
remoteDataTrackPublication: RemoteDataTrackPublication) {
}

override fun onVideoTrackPublished(remoteParticipant: RemoteParticipant,remoteVideoTrackPublication: RemoteVideoTrackPublication) {}

override fun onVideoTrackUnpublished(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication) {}

override fun onAudioTrackSubscribed(remoteParticipant: RemoteParticipant,remoteAudioTrackPublication: RemoteAudioTrackPublication,remoteAudioTrack: RemoteAudioTrack) {}

override fun onAudioTrackUnsubscribed(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication, remoteAudioTrack: RemoteAudioTrack) {}

override fun onAudioTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,
remoteAudioTrackPublication: RemoteAudioTrackPublication, twilioException: TwilioException) { }

override fun onDataTrackSubscribed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication,remoteDataTrack: RemoteDataTrack) {}

override fun onDataTrackUnsubscribed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication, remoteDataTrack: RemoteDataTrack) {}

override fun onDataTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,remoteDataTrackPublication: RemoteDataTrackPublication,twilioException: TwilioException) {}

override fun onVideoTrackSubscribed(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication, remoteVideoTrack: RemoteVideoTrack) {}

override fun onVideoTrackUnsubscribed(remoteParticipant: RemoteParticipant, remoteVideoTrackPublication: RemoteVideoTrackPublication,remoteVideoTrack: RemoteVideoTrack) {}

override fun onVideoTrackSubscriptionFailed(remoteParticipant: RemoteParticipant,
                                                      remoteVideoTrackPublication: RemoteVideoTrackPublication, twilioException: TwilioException){}

override fun onAudioTrackEnabled(remoteParticipant: RemoteParticipant,
                                             remoteAudioTrackPublication: RemoteAudioTrackPublication) {}

override fun onAudioTrackDisabled(remoteParticipant: RemoteParticipant,
                                              remoteAudioTrackPublication: RemoteAudioTrackPublication) {}

override fun onVideoTrackEnabled(remoteParticipant: RemoteParticipant,
                                             remoteVideoTrackPublication: RemoteVideoTrackPublication) {}

override fun onVideoTrackDisabled(remoteParticipant: RemoteParticipant,remoteVideoTrackPublication: RemoteVideoTrackPublication) {}
        }
    }

非常感谢你,伙计。我已经试了好几个小时了,没有你的帮助是不可能做到的。嘿,很抱歉再次打扰你,但是你如何关闭视频和音频曲目?我的应用程序关闭后,它仍在录制音频。您可以使用
room.disconnect()
来断开与房间的连接。您还可以使用
track.stop()
来停止视频和音频曲目。非常感谢您。我已经试了好几个小时了,没有你的帮助是不可能做到的。嘿,很抱歉再次打扰你,但是你如何关闭视频和音频曲目?我的应用程序关闭后,它仍在录制音频。您可以使用
room.disconnect()
来断开与房间的连接。您还可以使用
track.stop()
来停止视频和音频曲目。