@Composable
fun NetworkQualityIndicator(
modifier: Modifier,
networkQuality: NetworkQuality
) {
val color = lerp(Color.Red, Color.Green, networkQuality.quality)
Canvas(modifier = modifier.size(16.dp)) {
drawCircle(color)
}
}Network Quality Indicator
It’s important to indicate to users when the connection quality isn’t good.
Each participants (ParticipantState) includes the connectionQuality attribute.
In addition you can also monitor your own connection using call.state.networkQuality.
You can available the NetworkQualityIndicator composable component and it is integrated into video render components by default:

Customization
Here’s a small compose example to render a custom connection quality icon for each participant:
You can easily swap out the standard connection quality indicator with your own.
CallContent(
modifier = Modifier.background(color = VideoTheme.colors.appBackground),
videoRenderer = { modifier, call, participant, style ->
ParticipantVideo(
modifier = modifier,
call = call,
participant = participant,
style = style,
connectionIndicatorContent = {
NetworkQualityIndicator(
modifier = Modifier
.align(Alignment.BottomEnd)
.padding(8.dp),
networkQuality = it
)
}
)
},
..
)Now, you will see the custom network quality indicator like the result below:

Connection Unstable
In terms of better UX designs, you can display a simple message or snack bar to your users and let them know the network status is unstable.
CallContent(
modifier = Modifier.background(color = VideoTheme.colors.appBackground),
videoRenderer = { modifier, call, participant, style ->
ParticipantVideo(
modifier = modifier,
call = call,
participant = participant,
style = style,
connectionIndicatorContent = { networkQuality ->
val me by call.state.me.collectAsState()
if (me?.sessionId == participant.sessionId && networkQuality is NetworkQuality.Poor) {
Snackbar(
modifier = Modifier
.padding(8.dp)
.fillMaxWidth()
.background(VideoTheme.colors.appBackground)
.align(Alignment.BottomStart),
) {
Text(text = "Please check out your network status!")
}
}
NetworkQualityIndicator(
networkQuality = NetworkQuality.Poor(),
modifier = Modifier.align(Alignment.BottomEnd)
)
}
),
..,
)Now, you will see the custom network quality snack bar like the result below:
