В сборке Android SDK 1.1.0.29 добавлена возможность получать при проигрывании потока события от публикующей стороны. Таким образом можно определить, заглушено ли аудио или видео в потоке: если клиент использует функцию muteAduio() или muteVideo(), подписчикам отправляется специальное событие. Чтобы получить это событие при проигрывании потока, необходимо переопределить функцию Stream.onStreamEvent() и проверять значение, возвращаемое методом StreamEvent.getType()
@Override public void onStreamEvent(StreamEvent streamEvent) { runOnUiThread(new Runnable() { @Override public void run() { switch (streamEvent.getType()) { case audioMuted: mAudioMuteStatus.setText(getString(R.string.audio_mute_status)+"true"); break; case audioUnmuted: mAudioMuteStatus.setText(getString(R.string.audio_mute_status)+"false"); break; case videoMuted: mVideoMuteStatus.setText(getString(R.string.video_mute_status)+"true"); break; case videoUnmuted: mVideoMuteStatus.setText(getString(R.string.video_mute_status)+"false"); } } }); }
Определение состояния входящего потока микшера при проигрывании выходного потока
В сборке Android SDK 1.1.0.32 добавлена возможность определения состояния входящего потока микшера, при проигрывании микшированного потока. В этом случае также необходимо определить функцию Stream.onStreamEvent(), в которой проверить элемент StreamEvent.payload, при помощи соответствующего метода и, если он не пуст, получить имя потока, для которого пришло событие
@Override public void onStreamEvent(StreamEvent streamEvent) { runOnUiThread(new Runnable() { @Override public void run() { if (streamEvent.getPayload() != null) { mMutedName.setText(getString(R.string.muted_name) + streamEvent.getPayload().getStreamName()); } switch (streamEvent.getType()) { case audioMuted: mAudioMuteStatus.setText(getString(R.string.audio_mute_status)+"true"); break; case audioUnmuted: mAudioMuteStatus.setText(getString(R.string.audio_mute_status)+"false"); break; case videoMuted: mVideoMuteStatus.setText(getString(R.string.video_mute_status)+"true"); break; case videoUnmuted: mVideoMuteStatus.setText(getString(R.string.video_mute_status)+"false"); } } }); }