Определение состояния публикуемого аудио/видео: заглушено/не заглушено¶
В сборке 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.39 добавлена возможность получить состояние потока при подключении подписчика в обработчике события StreamStatusPlaying
, используя методы Stream.getAudioState()
и Stream.getVideoState()
@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.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");
}
}
});
}