По умолчанию, подложка для отображения видеопотока (SurfaceViewRenderer) имеет черный цвет. При необходимости, подложка может быть сделана прозрачной. Для этого нужно импортировать следующие модули:
import android.graphics.PixelFormat; |
и воспользоваться методами 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():
playStream.stop(); playStream = null; remoteRender.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 невидимым
... } else { playStream.stop(); playStream = null; remoteRender.setVisibility(View.GONE); } ... } |