Display remote peer video

This commit is contained in:
Pierre HUBERT 2019-02-27 09:11:08 +01:00
parent 9e559ed568
commit ce409d3713
2 changed files with 32 additions and 9 deletions

View File

@ -9,7 +9,9 @@ import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.Toast;
@ -111,6 +113,7 @@ public class CallActivity extends BaseActivity implements SignalExchangerCallbac
*/
private ProgressBar mProgressBar;
private ImageButton mHangUpButton;
private LinearLayout mRemoteVideosLayout;
@Override
@ -195,14 +198,11 @@ public class CallActivity extends BaseActivity implements SignalExchangerCallbac
mProgressBar = findViewById(R.id.progressBar);
mHangUpButton = findViewById(R.id.hangUp);
mHangUpButton.setOnClickListener(v -> hangUp());
mRemoteVideosLayout = findViewById(R.id.remoteVideosLayout);
}
private void initVideos(){
rootEglBase = EglBase.create();
}
@ -321,10 +321,12 @@ public class CallActivity extends BaseActivity implements SignalExchangerCallbac
CallPeerConnection callPeer = new CallPeerConnection(member);
mList.add(callPeer);
EglBase eglBase = EglBase.create();
//Create peer connection
PeerConnectionClient peerConnectionClient = new PeerConnectionClient(
getApplicationContext(),
rootEglBase,
eglBase,
new PeerConnectionClient.PeerConnectionParameters(
true,
false,
@ -369,15 +371,18 @@ public class CallActivity extends BaseActivity implements SignalExchangerCallbac
//Initialize video view
SurfaceViewRenderer localView = new SurfaceViewRenderer(this);
localView.init(rootEglBase.getEglBaseContext(), null);
localView.init(eglBase.getEglBaseContext(), null);
localView.setZOrderMediaOverlay(true);
callPeer.setLocalVideoView(localView);
SurfaceViewRenderer remoteView = new SurfaceViewRenderer(this);
remoteView.init(rootEglBase.getEglBaseContext(), null);
remoteView.init(eglBase.getEglBaseContext(), null);
remoteView.setZOrderMediaOverlay(false);
callPeer.setRemoteViewView(remoteView);
mRemoteVideosLayout.addView(remoteView, new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, 0, 1));
ProxyVideoSink localProxyVideoSink = new ProxyVideoSink();
localProxyVideoSink.setTarget(callPeer.getLocalVideoView());
@ -414,8 +419,8 @@ public class CallActivity extends BaseActivity implements SignalExchangerCallbac
if(mSignalExchangerClient != null)
mSignalExchangerClient.close();
for (CallPeerConnection client : mList)
disconnectFromPeer(client.getMember());
while(mList.size() > 0)
disconnectFromPeer(mList.get(0).getMember());
HangUpCallTask hangUpCallTask = new HangUpCallTask(getApplicationContext());
hangUpCallTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, mCallID);
@ -439,6 +444,9 @@ public class CallActivity extends BaseActivity implements SignalExchangerCallbac
callPeer.getPeerConnectionClient().close();
//Remove the views
mRemoteVideosLayout.removeView(callPeer.getRemoteViewView());
mList.remove(callPeer);
}
@ -473,6 +481,8 @@ public class CallActivity extends BaseActivity implements SignalExchangerCallbac
}
}
Log.e(TAG, "Could not get user camera!");
return null;
}

View File

@ -20,6 +20,17 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:id="@+id/remoteVideosLayout"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageButton
android:id="@+id/hangUp"
android:layout_width="wrap_content"
@ -35,4 +46,6 @@
app:layout_constraintStart_toStartOf="parent"
android:contentDescription="@string/action_hang_up"/>
</android.support.constraint.ConstraintLayout>