diff --git a/app/src/main/java/org/communiquons/android/comunic/client/ui/activities/CallActivity.java b/app/src/main/java/org/communiquons/android/comunic/client/ui/activities/CallActivity.java index e0f277f..f0c8ce5 100644 --- a/app/src/main/java/org/communiquons/android/comunic/client/ui/activities/CallActivity.java +++ b/app/src/main/java/org/communiquons/android/comunic/client/ui/activities/CallActivity.java @@ -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; } diff --git a/app/src/main/res/layout/activity_call.xml b/app/src/main/res/layout/activity_call.xml index 178cd6d..61f6f2f 100644 --- a/app/src/main/res/layout/activity_call.xml +++ b/app/src/main/res/layout/activity_call.xml @@ -20,6 +20,17 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + + + + \ No newline at end of file