正在显示
3 个修改的文件
包含
12 行增加
和
7 行删除
| @@ -58,7 +58,6 @@ fun ParticipantItem( | @@ -58,7 +58,6 @@ fun ParticipantItem( | ||
| 58 | VideoItemTrackSelector( | 58 | VideoItemTrackSelector( |
| 59 | room = room, | 59 | room = room, |
| 60 | participant = participant, | 60 | participant = participant, |
| 61 | - videoTracks = videoTracks, | ||
| 62 | modifier = Modifier.fillMaxSize() | 61 | modifier = Modifier.fillMaxSize() |
| 63 | ) | 62 | ) |
| 64 | } else { | 63 | } else { |
| @@ -9,9 +9,10 @@ import io.livekit.android.room.Room | @@ -9,9 +9,10 @@ import io.livekit.android.room.Room | ||
| 9 | import io.livekit.android.room.participant.Participant | 9 | import io.livekit.android.room.participant.Participant |
| 10 | import io.livekit.android.room.track.RemoteVideoTrack | 10 | import io.livekit.android.room.track.RemoteVideoTrack |
| 11 | import io.livekit.android.room.track.Track | 11 | import io.livekit.android.room.track.Track |
| 12 | -import io.livekit.android.room.track.TrackPublication | ||
| 13 | import io.livekit.android.room.track.VideoTrack | 12 | import io.livekit.android.room.track.VideoTrack |
| 14 | import io.livekit.android.room.track.video.ComposeVisibility | 13 | import io.livekit.android.room.track.video.ComposeVisibility |
| 14 | +import io.livekit.android.util.flow | ||
| 15 | +import kotlinx.coroutines.flow.map | ||
| 15 | 16 | ||
| 16 | /** | 17 | /** |
| 17 | * Widget for displaying a VideoTrack. Handles the Compose <-> AndroidView interop needed to use | 18 | * Widget for displaying a VideoTrack. Handles the Compose <-> AndroidView interop needed to use |
| @@ -84,13 +85,19 @@ fun VideoItem( | @@ -84,13 +85,19 @@ fun VideoItem( | ||
| 84 | fun VideoItemTrackSelector( | 85 | fun VideoItemTrackSelector( |
| 85 | room: Room, | 86 | room: Room, |
| 86 | participant: Participant, | 87 | participant: Participant, |
| 87 | - videoTracks: Map<String, TrackPublication>, | ||
| 88 | modifier: Modifier = Modifier | 88 | modifier: Modifier = Modifier |
| 89 | ) { | 89 | ) { |
| 90 | 90 | ||
| 91 | - val videoTrack = participant.getTrackPublication(Track.Source.SCREEN_SHARE)?.track as? VideoTrack | ||
| 92 | - ?: participant.getTrackPublication(Track.Source.CAMERA)?.track as? VideoTrack | ||
| 93 | - ?: videoTracks.values.firstOrNull()?.track as? VideoTrack | 91 | + val subscribedVideoTracksFlow by remember(participant) { |
| 92 | + mutableStateOf( | ||
| 93 | + participant::videoTracks.flow | ||
| 94 | + .map { tracks -> tracks.values.filter { pub -> pub.subscribed } } | ||
| 95 | + ) | ||
| 96 | + } | ||
| 97 | + val videoTracks by subscribedVideoTracksFlow.collectAsState(initial = emptyList()) | ||
| 98 | + val videoTrack = videoTracks.firstOrNull { pub -> pub.source == Track.Source.SCREEN_SHARE }?.track as? VideoTrack | ||
| 99 | + ?: videoTracks.firstOrNull { pub -> pub.source == Track.Source.CAMERA }?.track as? VideoTrack | ||
| 100 | + ?: videoTracks.firstOrNull()?.track as? VideoTrack | ||
| 94 | 101 | ||
| 95 | if (videoTrack != null) { | 102 | if (videoTrack != null) { |
| 96 | VideoItem( | 103 | VideoItem( |
-
请 注册 或 登录 后发表评论