Управление подложкой при отображении потока в Android¶
Изменение цвета и прозрачности подложки¶
По умолчанию, подложка для отображения видеопотока SurfaceViewRenderer
имеет черный цвет. При необходимости, подложка может быть сделана прозрачной. Для этого нужно импортировать следующие модули:
и воспользоваться методами setZOrderOnTop()
и setFormat()
:
localRender = (SurfaceViewRenderer) findViewById(R.id.local_video_view);
localRender.setZOrderOnTop(true);
localRender.getHolder().setFormat(PixelFormat.TRANSPARENT);
Для того, чтобы задать цвет подложки, необходимо вызвать метод setBackgroundColor()
:
remoteRender = (SurfaceViewRenderer) findViewById(R.id.remote_video_view);
remoteRender.setZOrderOnTop(true);
remoteRender.getHolder().setFormat(PixelFormat.TRANSLUCENT);
remoteRender.setBackgroundColor(0xFFFF8800); //orange in RGB
Очистка последнего кадра¶
По окончании воспроизведения видео, на подложке остается последний кадр. При необходимости, кадр может быть очищен, при этом подложка будет залита черным цветом. Для этого нужно импортировать следующие модули:
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.graphics.PorterDuff;
и вызвать метод release()
:
После вызова данного метода никакие операции с подложкой невозможны.
Если этот способ не работает, или подложка должна быть использована повторно, SurfaceViewRenderer
может быть скрыт. Например, при нажатии кнопки Play
делаем remoteRender
видимым
mPlayButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
mPlayButton.setEnabled(false);
if (mPlayButton.getTag() == null || Integer.valueOf(R.string.action_play).equals(mPlayButton.getTag())) {
remoteRender.setVisibility(View.VISIBLE);
...
playStream = session.createStream(streamOptions);
...
Затем, когда нажата кнопка Stop
, останавливаем воспроизведение и делаем remoteRender
невидимым