Kotlin

Visão geral

Agora vamos nos inscrever e registrar os ouvintes, para que possamos receber os callbacks com as estatísticas reais a serem analisadas. O próprio tratamento dos callbacks será feito na próxima etapa

1. Inscrever e cadastrar ouvintes relevantes

Quando um fluxo remoto chegar, crie um Subscriber e anexar os dois ouvintes de estatísticas antes ou após a inscrição (o exemplo define esses valores antes de session.subscribe):

override fun onStreamReceived(session: Session, stream: Stream) {
    if (subscriber == null) {
        subscriber = Subscriber.Builder(this@MainActivity, stream).build()
        subscriber?.setSubscriberListener(subscriberListener)
        subscriber?.setVideoStatsListener(videoStatsListener)
        subscriber?.setMediaLinkStatsListener(mediaLinkStatsListener)
        session.subscribe(subscriber)
    }
}
Ouvinte O que ele oferece
VideoStatsListener Métricas de vídeo do lado do destinatário (bytes, pacotes, perdas, carimbo de data/hora)
MediaLinkStatsListener transport, remotePublisherTransport, networkDegradationSource — veja Estatísticas de links de mídia dos assinantes

2. Limpar o estado de observabilidade quando o fluxo for interrompido:

Quando o participante remoto cancelar a publicação ou se desconectar, libere o assinante e redefina as estatísticas armazenadas para que a sobreposição não exiba valores desatualizados:

override fun onStreamDropped(session: Session, stream: Stream) {
    if (subscriber != null) {
        subscriber = null
        latestObservabilityStats = null
        latestMediaLinkSnapshot = null
    }
}

Além disso, cancele a inscrição ou elimine o assinante caso seu aplicativo permita que ele volte a participar da mesma sessão com um novo stream.

3. Opcional: callbacks do ciclo de vida do assinante

Em SubscriberListener, registro onConnected / onDisconnected para confirmar se a assinatura está ativa antes de esperar ver as estatísticas no Logcat ou na sobreposição.