|
@@ -36,6 +36,8 @@ import android.view.View;
|
|
import android.view.Window;
|
|
import android.view.Window;
|
|
import android.view.WindowManager;
|
|
import android.view.WindowManager;
|
|
import android.widget.LinearLayout;
|
|
import android.widget.LinearLayout;
|
|
|
|
+import android.widget.RelativeLayout;
|
|
|
|
+import android.widget.TextView;
|
|
|
|
|
|
import com.bluelinelabs.logansquare.LoganSquare;
|
|
import com.bluelinelabs.logansquare.LoganSquare;
|
|
import com.nextcloud.talk.R;
|
|
import com.nextcloud.talk.R;
|
|
@@ -128,7 +130,6 @@ public class CallActivity extends AppCompatActivity {
|
|
AudioTrack localAudioTrack;
|
|
AudioTrack localAudioTrack;
|
|
VideoCapturer videoCapturer;
|
|
VideoCapturer videoCapturer;
|
|
VideoRenderer localRenderer;
|
|
VideoRenderer localRenderer;
|
|
- HashMap<String, VideoRenderer> videoRendererHashMap = new HashMap<>();
|
|
|
|
EglBase rootEglBase;
|
|
EglBase rootEglBase;
|
|
boolean leavingCall = false;
|
|
boolean leavingCall = false;
|
|
BooleanSupplier booleanSupplier = () -> leavingCall;
|
|
BooleanSupplier booleanSupplier = () -> leavingCall;
|
|
@@ -565,8 +566,13 @@ public class CallActivity extends AppCompatActivity {
|
|
videoCapturer.dispose();
|
|
videoCapturer.dispose();
|
|
}
|
|
}
|
|
|
|
|
|
- localMediaStream.removeTrack(localMediaStream.videoTracks.get(0));
|
|
|
|
- localMediaStream.removeTrack(localMediaStream.audioTracks.get(0));
|
|
|
|
|
|
+ if (localMediaStream.videoTracks.size() > 0) {
|
|
|
|
+ localMediaStream.removeTrack(localMediaStream.videoTracks.get(0));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (localMediaStream.audioTracks.size() > 0) {
|
|
|
|
+ localMediaStream.removeTrack(localMediaStream.audioTracks.get(0));
|
|
|
|
+ }
|
|
localMediaStream = null;
|
|
localMediaStream = null;
|
|
|
|
|
|
pipVideoView.release();
|
|
pipVideoView.release();
|
|
@@ -622,6 +628,14 @@ public class CallActivity extends AppCompatActivity {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private void gotNick(String sessionId, String nick) {
|
|
|
|
+ RelativeLayout relativeLayout = remoteRenderersLayout.findViewWithTag(sessionId);
|
|
|
|
+ if (relativeLayout != null) {
|
|
|
|
+ TextView textView = relativeLayout.findViewById(R.id.peer_nick_text_view);
|
|
|
|
+ textView.setText(nick);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
private void gotRemoteStream(MediaStream stream, String session) {
|
|
private void gotRemoteStream(MediaStream stream, String session) {
|
|
//we have remote video stream. add to the renderer.
|
|
//we have remote video stream. add to the renderer.
|
|
removeMediaStream(session);
|
|
removeMediaStream(session);
|
|
@@ -634,11 +648,11 @@ public class CallActivity extends AppCompatActivity {
|
|
public void run() {
|
|
public void run() {
|
|
if (stream.videoTracks.size() == 1) {
|
|
if (stream.videoTracks.size() == 1) {
|
|
try {
|
|
try {
|
|
- LinearLayout linearLayout = (LinearLayout)
|
|
|
|
|
|
+ RelativeLayout relativeLayout = (RelativeLayout)
|
|
getLayoutInflater().inflate(R.layout.surface_renderer, remoteRenderersLayout,
|
|
getLayoutInflater().inflate(R.layout.surface_renderer, remoteRenderersLayout,
|
|
false);
|
|
false);
|
|
- linearLayout.setTag(session);
|
|
|
|
- SurfaceViewRenderer surfaceViewRenderer = linearLayout.findViewById(R.id
|
|
|
|
|
|
+ relativeLayout.setTag(session);
|
|
|
|
+ SurfaceViewRenderer surfaceViewRenderer = relativeLayout.findViewById(R.id
|
|
.surface_view);
|
|
.surface_view);
|
|
surfaceViewRenderer.setMirror(false);
|
|
surfaceViewRenderer.setMirror(false);
|
|
surfaceViewRenderer.init(rootEglBase.getEglBaseContext(), null);
|
|
surfaceViewRenderer.init(rootEglBase.getEglBaseContext(), null);
|
|
@@ -646,10 +660,10 @@ public class CallActivity extends AppCompatActivity {
|
|
surfaceViewRenderer.setEnableHardwareScaler(true);
|
|
surfaceViewRenderer.setEnableHardwareScaler(true);
|
|
surfaceViewRenderer.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FIT);
|
|
surfaceViewRenderer.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FIT);
|
|
VideoRenderer remoteRenderer = new VideoRenderer(surfaceViewRenderer);
|
|
VideoRenderer remoteRenderer = new VideoRenderer(surfaceViewRenderer);
|
|
- videoRendererHashMap.put(session, remoteRenderer);
|
|
|
|
videoTrack.addRenderer(remoteRenderer);
|
|
videoTrack.addRenderer(remoteRenderer);
|
|
- remoteRenderersLayout.addView(linearLayout);
|
|
|
|
- linearLayout.invalidate();
|
|
|
|
|
|
+ remoteRenderersLayout.addView(relativeLayout);
|
|
|
|
+ relativeLayout.invalidate();
|
|
|
|
+ gotNick(session, getPeerConnectionWrapperForSessionId(session).getNick());
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
@@ -816,7 +830,7 @@ public class CallActivity extends AppCompatActivity {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void onConfigurationChanged(Configuration newConfig) {
|
|
public void onConfigurationChanged(Configuration newConfig) {
|
|
-
|
|
|
|
|
|
+
|
|
// Checks the orientation of the screen
|
|
// Checks the orientation of the screen
|
|
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
|
|
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
|
|
remoteRenderersLayout.setOrientation(LinearLayout.HORIZONTAL);
|
|
remoteRenderersLayout.setOrientation(LinearLayout.HORIZONTAL);
|