正在显示
6 个修改的文件
包含
66 行增加
和
1 行删除
| 1 | +<!-- drawable/wifi_strength_1.xml --> | ||
| 2 | +<vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
| 3 | + android:height="24dp" | ||
| 4 | + android:width="24dp" | ||
| 5 | + android:viewportWidth="24" | ||
| 6 | + android:viewportHeight="24"> | ||
| 7 | + <path android:fillColor="#000" android:pathData="M12,3C7.79,3 3.7,4.41 0.38,7C4.41,12.06 7.89,16.37 12,21.5C16.08,16.42 20.24,11.24 23.65,7C20.32,4.41 16.22,3 12,3M12,5C15.07,5 18.09,5.86 20.71,7.45L15.61,13.81C14.5,13.28 13.25,13 12,13C10.75,13 9.5,13.28 8.39,13.8L3.27,7.44C5.91,5.85 8.93,5 12,5Z" /> | ||
| 8 | +</vector> |
| 1 | +<!-- drawable/wifi_strength_2.xml --> | ||
| 2 | +<vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
| 3 | + android:height="24dp" | ||
| 4 | + android:width="24dp" | ||
| 5 | + android:viewportWidth="24" | ||
| 6 | + android:viewportHeight="24"> | ||
| 7 | + <path android:fillColor="#000" android:pathData="M12,3C7.79,3 3.7,4.41 0.38,7C4.41,12.06 7.89,16.37 12,21.5C16.08,16.42 20.24,11.24 23.65,7C20.32,4.41 16.22,3 12,3M12,5C15.07,5 18.09,5.86 20.71,7.45L17.5,11.43C16.26,10.74 14.37,10 12,10C9.62,10 7.74,10.75 6.5,11.43L3.27,7.44C5.91,5.85 8.93,5 12,5Z" /> | ||
| 8 | +</vector> |
| 1 | +<!-- drawable/wifi_strength_3.xml --> | ||
| 2 | +<vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
| 3 | + android:height="24dp" | ||
| 4 | + android:width="24dp" | ||
| 5 | + android:viewportWidth="24" | ||
| 6 | + android:viewportHeight="24"> | ||
| 7 | + <path android:fillColor="#000" android:pathData="M12,3C7.79,3 3.7,4.41 0.38,7C4.41,12.06 7.89,16.37 12,21.5C16.08,16.42 20.24,11.24 23.65,7C20.32,4.41 16.22,3 12,3M12,5C15.07,5 18.09,5.86 20.71,7.45L18.77,9.88C17.26,9 14.88,8 12,8C9,8 6.68,9 5.21,9.84L3.27,7.44C5.91,5.85 8.93,5 12,5Z" /> | ||
| 8 | +</vector> |
| 1 | +<!-- drawable/wifi_strength_4.xml --> | ||
| 2 | +<vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
| 3 | + android:height="24dp" | ||
| 4 | + android:width="24dp" | ||
| 5 | + android:viewportWidth="24" | ||
| 6 | + android:viewportHeight="24"> | ||
| 7 | + <path android:fillColor="#000" android:pathData="M12,3C7.79,3 3.7,4.41 0.38,7C4.41,12.06 7.89,16.37 12,21.5C16.08,16.42 20.24,11.24 23.65,7C20.32,4.41 16.22,3 12,3Z" /> | ||
| 8 | +</vector> |
| 1 | +<!-- drawable/wifi_strength_alert_outline.xml --> | ||
| 2 | +<vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
| 3 | + android:height="24dp" | ||
| 4 | + android:width="24dp" | ||
| 5 | + android:viewportWidth="24" | ||
| 6 | + android:viewportHeight="24"> | ||
| 7 | + <path android:fillColor="#000" android:pathData="M12 3C7.8 3 3.7 4.4 .4 7C4.3 11.8 8.2 16.7 12 21.5C14.3 18.6 16.7 15.7 19 12.8V9.6L12 18.3L3.3 7.4C5.9 5.8 8.9 5 12 5C15.1 5 18.1 5.9 20.7 7.4L20.3 8H22.9C23.2 7.7 23.4 7.3 23.7 7C20.3 4.4 16.2 3 12 3M21 10V16H23V10M21 18V20H23V18" /> | ||
| 8 | +</vector> |
| @@ -10,6 +10,7 @@ import androidx.compose.runtime.Composable | @@ -10,6 +10,7 @@ import androidx.compose.runtime.Composable | ||
| 10 | import androidx.compose.runtime.collectAsState | 10 | import androidx.compose.runtime.collectAsState |
| 11 | import androidx.compose.runtime.getValue | 11 | import androidx.compose.runtime.getValue |
| 12 | import androidx.compose.ui.Modifier | 12 | import androidx.compose.ui.Modifier |
| 13 | +import androidx.compose.ui.draw.alpha | ||
| 13 | import androidx.compose.ui.graphics.Color | 14 | import androidx.compose.ui.graphics.Color |
| 14 | import androidx.compose.ui.res.painterResource | 15 | import androidx.compose.ui.res.painterResource |
| 15 | import androidx.compose.ui.unit.dp | 16 | import androidx.compose.ui.unit.dp |
| @@ -18,6 +19,7 @@ import androidx.constraintlayout.compose.Dimension | @@ -18,6 +19,7 @@ import androidx.constraintlayout.compose.Dimension | ||
| 18 | import io.livekit.android.composesample.ui.theme.BlueMain | 19 | import io.livekit.android.composesample.ui.theme.BlueMain |
| 19 | import io.livekit.android.composesample.ui.theme.NoVideoBackground | 20 | import io.livekit.android.composesample.ui.theme.NoVideoBackground |
| 20 | import io.livekit.android.room.Room | 21 | import io.livekit.android.room.Room |
| 22 | +import io.livekit.android.room.participant.ConnectionQuality | ||
| 21 | import io.livekit.android.room.participant.Participant | 23 | import io.livekit.android.room.participant.Participant |
| 22 | import io.livekit.android.room.track.Track | 24 | import io.livekit.android.room.track.Track |
| 23 | import io.livekit.android.room.track.VideoTrack | 25 | import io.livekit.android.room.track.VideoTrack |
| @@ -48,7 +50,7 @@ fun ParticipantItem( | @@ -48,7 +50,7 @@ fun ParticipantItem( | ||
| 48 | } | 50 | } |
| 49 | } | 51 | } |
| 50 | ) { | 52 | ) { |
| 51 | - val (videoCamOff, identityBar, identityText, muteIndicator) = createRefs() | 53 | + val (videoCamOff, identityBar, identityText, muteIndicator, connectionIndicator) = createRefs() |
| 52 | val videoTrack = participant.getTrackPublication(Track.Source.SCREEN_SHARE)?.track as? VideoTrack | 54 | val videoTrack = participant.getTrackPublication(Track.Source.SCREEN_SHARE)?.track as? VideoTrack |
| 53 | ?: participant.getTrackPublication(Track.Source.CAMERA)?.track as? VideoTrack | 55 | ?: participant.getTrackPublication(Track.Source.CAMERA)?.track as? VideoTrack |
| 54 | ?: videoTracks.values.firstOrNull()?.track as? VideoTrack | 56 | ?: videoTracks.values.firstOrNull()?.track as? VideoTrack |
| @@ -114,5 +116,28 @@ fun ParticipantItem( | @@ -114,5 +116,28 @@ fun ParticipantItem( | ||
| 114 | } | 116 | } |
| 115 | ) | 117 | ) |
| 116 | } | 118 | } |
| 119 | + | ||
| 120 | + val connectionQuality by participant::connectionQuality.flow.collectAsState() | ||
| 121 | + | ||
| 122 | + val connectionIcon = when (connectionQuality) { | ||
| 123 | + ConnectionQuality.EXCELLENT -> R.drawable.wifi_strength_4 | ||
| 124 | + ConnectionQuality.GOOD -> R.drawable.wifi_strength_3 | ||
| 125 | + ConnectionQuality.POOR -> R.drawable.wifi_strength_alert_outline | ||
| 126 | + ConnectionQuality.UNKNOWN -> R.drawable.wifi_strength_alert_outline | ||
| 127 | + } | ||
| 128 | + | ||
| 129 | + if (connectionQuality == ConnectionQuality.POOR) { | ||
| 130 | + Icon( | ||
| 131 | + painter = painterResource(id = connectionIcon), | ||
| 132 | + contentDescription = "", | ||
| 133 | + tint = Color.Red, | ||
| 134 | + modifier = Modifier | ||
| 135 | + .constrainAs(connectionIndicator) { | ||
| 136 | + top.linkTo(parent.top, margin = identityBarPadding) | ||
| 137 | + end.linkTo(parent.end, margin = identityBarPadding) | ||
| 138 | + } | ||
| 139 | + .alpha(0.5f) | ||
| 140 | + ) | ||
| 141 | + } | ||
| 117 | } | 142 | } |
| 118 | } | 143 | } |
-
请 注册 或 登录 后发表评论