Перейти к содержанию

Определение состояния публикуемого аудио/видео: заглушено/не заглушено

В сборке Android SDK 1.0.1.81 добавлена возможность получать при проигрывании потока события от публикующей стороны. Таким образом можно определить, заглушено ли аудио или видео в потоке: если клиент использует функцию muteAduio() или muteVideo(), подписчикам отправляется специальное событие. Чтобы получить это событие при проигрывании потока, необходимо переопределить функцию Stream.onStreamEvent() и проверять значение, возвращаемое методом StreamEvent.getType()

code

@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.0.1.85 добавлена возможность получить состояние потока при подключении подписчика в обработчике события StreamStatusPlaying, используя методы Stream.getAudioState() и Stream.getVideoState()

code

@Override
public void onStreamStatus(final Stream stream, final StreamStatus streamStatus) {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            if (!StreamStatus.PLAYING.equals(streamStatus)) {
                ...
            } else {
                onPlayed(stream);
                ...
            }
            ...
        }
    });
}
...
private void onPlayed(Stream stream) {
    mPlayButton.setText(R.string.action_stop_play);
    mPlayButton.setTag(R.string.action_stop_play);
    mPlayButton.setEnabled(true);

    mAudioMuteStatus.setText(getString(R.string.audio_mute_status) + String.valueOf(stream.getAudioState().isMuted()));
    mVideoMuteStatus.setText(getString(R.string.video_mute_status) + String.valueOf(stream.getVideoState().isMuted()));
}

Определение состояния входящего потока микшера при проигрывании выходного потока

В сборке Android SDK 1.0.1.82 добавлена возможность определения состояния входящего потока микшера, при проигрывании микшированного потока. В этом случае также необходимо определить функцию Stream.onStreamEvent(), в которой проверить элемент StreamEvent.payload, при помощи соответствующего метода и, если он не`пуст, получить имя потока, для которого пришло событие

code

@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");
            }
        }
    });
}