RemoteViewの最前面での表示
【発生事象】
Remote ViewとLocal Viewを表示した時、Remote ViewをOverlayして上に表示できない。
【再現手順】
1. SkyWay-Android-Sample の「skyway-android-sdk/examples/p2p-videochat」をAndroidStudioにインポート
2. 以下のコードをMainActivity.javaのsvRemoteViewの後に記述する(同じJavaに2箇所あり
Canvas canvas = (Canvas) findViewById(R.id.svRemoteView);
canvas.setZOrderMediaOverlay(true);
canvas.setZOrderOnTop(true);
canvas.requestLayout();
canvas.invalidate();
3.activity_main.xmlのRemote ViewとLocal Viewの順序をRemote Viewを下に記述する
4.activity_main.xmlのLocal Viewのサイズを縦横それぞれ320dpに変更する(RemoteViewとLocal Viewが重なればOK)
5.ビルドしてインストールし、
【期待される事象】
WebRTCで接続した際に、RemoteViewがLocalViewよりも前面に表示される。
-
以下の方法で解決ができました。
サポート頂いた方、有難うございました。
【解決方法】
MainActivity.javaにてcanvas.setZOrderMediaOverlay(true);メソッドを_remoteStream.addVideoRenderer(canvas,0);の後に呼び出すことで、Remote Viewを最前面に表示することができました。
//
// Set callbacks for MediaConnection.MediaEvents
//
void setMediaCallbacks() {
_mediaConnection.on(MediaConnection.MediaEventEnum.STREAM, new OnCallback() {
@Override
public void onCallback(Object object) {
_remoteStream = (MediaStream) object;
Canvas canvas = (Canvas) findViewById(R.id.svRemoteView);
_remoteStream.addVideoRenderer(canvas,0);
// call setZOrderMediaOverlay(true) if you want put this canvas at the front
canvas.setZOrderMediaOverlay(true);
// no need to call the methods below
// canvas.setZOrderOnTop(true);
// canvas.requestLayout();
// canvas.invalidate();
}
Please sign in to leave a comment.
Comments
2 comments