use different aspect ratio for landscape

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java           | 20 
src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java |  3 
src/main/res/layout/activity_rtp_session.xml                              | 10 
src/main/res/values-land/dimens.xml                                       |  4 
src/main/res/values/dimens.xml                                            | 76 
5 files changed, 69 insertions(+), 44 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java 🔗

@@ -304,7 +304,7 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
             putScreenInCallMode();
         }
         binding.with.setText(getWith().getDisplayName());
-        updateVideoViews();
+        updateVideoViews(currentState);
         updateStateDisplay(currentState);
         updateButtonConfiguration(currentState);
     }
@@ -508,7 +508,14 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
         this.binding.inCallActionLeft.setVisibility(View.VISIBLE);
     }
 
-    private void updateVideoViews() {
+    private void updateVideoViews(final RtpEndUserState state) {
+        if (END_CARD.contains(state) || state == RtpEndUserState.ENDING_CALL) {
+            binding.localVideo.setVisibility(View.GONE);
+            binding.remoteVideo.setVisibility(View.GONE);
+            binding.appBarLayout.setVisibility(View.VISIBLE);
+            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+            return;
+        }
         final Optional<VideoTrack> localVideoTrack = requireRtpConnection().geLocalVideoTrack();
         if (localVideoTrack.isPresent()) {
             ensureSurfaceViewRendererIsSetup(binding.localVideo);
@@ -523,7 +530,10 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
         if (remoteVideoTrack.isPresent()) {
             ensureSurfaceViewRendererIsSetup(binding.remoteVideo);
             remoteVideoTrack.get().addSink(binding.remoteVideo);
+            binding.appBarLayout.setVisibility(View.GONE);
+            getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
         } else {
+            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
             binding.remoteVideo.setVisibility(View.GONE);
         }
     }
@@ -590,6 +600,10 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
             return;
         }
         if (this.rtpConnectionReference == null) {
+            if (END_CARD.contains(state)) {
+                Log.d(Config.LOGTAG,"not reinitializing session");
+                return;
+            }
             //this happens when going from proposed session to actual session
             reInitializeActivityWithRunningRapSession(account, with, sessionId);
             return;
@@ -607,7 +621,7 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
                 updateStateDisplay(state);
                 updateButtonConfiguration(state);
                 //TODO kill video when in final or error stages
-                updateVideoViews();
+                updateVideoViews(state);
             });
         } else {
             Log.d(Config.LOGTAG, "received update for other rtp session");

src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java 🔗

@@ -910,7 +910,6 @@ public class JingleRtpConnection extends AbstractJingleConnection implements Web
     @Override
     public void onConnectionChange(final PeerConnection.PeerConnectionState newState) {
         Log.d(Config.LOGTAG, id.account.getJid().asBareJid() + ": PeerConnectionState changed to " + newState);
-        updateEndUserState();
         if (newState == PeerConnection.PeerConnectionState.CONNECTED && this.rtpConnectionStarted == 0) {
             this.rtpConnectionStarted = SystemClock.elapsedRealtime();
         }
@@ -920,6 +919,8 @@ public class JingleRtpConnection extends AbstractJingleConnection implements Web
                 return;
             }
             sendSessionTerminate(Reason.CONNECTIVITY_ERROR);
+        } else {
+            updateEndUserState();
         }
     }
 

src/main/res/layout/activity_rtp_session.xml 🔗

@@ -11,7 +11,8 @@
         <android.support.design.widget.AppBarLayout
             android:id="@+id/app_bar_layout"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content">
+            android:layout_height="wrap_content"
+            android:visibility="visible">
 
             <android.support.v7.widget.Toolbar
                 android:id="@+id/toolbar"
@@ -36,9 +37,10 @@
         </android.support.design.widget.AppBarLayout>
 
         <org.webrtc.SurfaceViewRenderer
+            app:elevation="4dp"
             android:id="@+id/local_video"
-            android:layout_width="80dp"
-            android:layout_height="128dp"
+            android:layout_width="@dimen/local_video_preview_width"
+            android:layout_height="@dimen/local_video_preview_height"
             android:layout_below="@+id/app_bar_layout"
             android:layout_alignParentEnd="true"
             android:layout_alignParentRight="true"
@@ -50,7 +52,7 @@
         <org.webrtc.SurfaceViewRenderer
             android:id="@+id/remote_video"
             android:layout_width="match_parent"
-            android:layout_height="100dp"
+            android:layout_height="match_parent"
             android:layout_below="@+id/app_bar_layout"
             android:layout_alignParentStart="true"
             android:layout_alignParentLeft="true"

src/main/res/values-land/dimens.xml 🔗

@@ -0,0 +1,4 @@
+<resources>
+    <dimen name="local_video_preview_height">96dp</dimen>
+    <dimen name="local_video_preview_width">128dp</dimen>
+</resources>

src/main/res/values/dimens.xml 🔗

@@ -1,38 +1,42 @@
 <resources>
-	<!-- Default screen margins, per the Android Design guidelines. -->
-	<dimen name="activity_horizontal_margin">8dp</dimen>
-	<dimen name="activity_vertical_margin">8dp</dimen>
-	<dimen name="card_padding_regular">16dp</dimen>
-	<dimen name="card_padding_list">8dp</dimen> <!-- card_padding_regular minus list_padding -->
-	<dimen name="list_padding">8dp</dimen>
-	<dimen name="image_button_padding">12dp</dimen>
-	<dimen name="key_action_width">48dp</dimen>  <!-- icon width (24dp) + 2 * image button padding -->
-	<dimen name="fineprint_size">11sp</dimen>
-	<dimen name="audio_player_width">224dp</dimen>
-	<dimen name="avatar_item_distance">16dp</dimen>
-
-	<dimen name="media_preview_size">80dp</dimen>
-	<dimen name="media_size">56dp</dimen> <!-- ideally not larger than avatar_on_details_screen -->
-	<dimen name="browser_media_size">96dp</dimen>
-	<dimen name="toolbar_elevation">4dp</dimen>
-
-	<dimen name="publish_avatar_top_margin">8dp</dimen>
-	<dimen name="publish_avatar_size">96dp</dimen>
-	<dimen name="avatar_on_status_message">32dp</dimen>
-	<dimen name="avatar">48dp</dimen>
-	<dimen name="avatar_on_details_screen_size">56dp</dimen>
-	<dimen name="avatar_on_conversation_overview">56dp</dimen>
-
-	<dimen name="input_label_vertical_spacing">4dp</dimen>
-	<dimen name="input_label_horizontal_spacing">4dp</dimen>
-
-	<!-- scanner -->
-	<dimen name="scan_laser_width">4dp</dimen>
-	<dimen name="scan_dot_size">8dp</dimen>
-
-	<dimen name="swipe_escape_velocity">1200dp</dimen> <!-- android default is 120dp -->
-
-	<dimen name="background_image_opacity">0.12</dimen>
-
-	<dimen name="sd_label_max_width">256dp</dimen>
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="activity_horizontal_margin">8dp</dimen>
+    <dimen name="activity_vertical_margin">8dp</dimen>
+    <dimen name="card_padding_regular">16dp</dimen>
+    <dimen name="card_padding_list">8dp</dimen> <!-- card_padding_regular minus list_padding -->
+    <dimen name="list_padding">8dp</dimen>
+    <dimen name="image_button_padding">12dp</dimen>
+    <dimen name="key_action_width">48dp
+    </dimen>  <!-- icon width (24dp) + 2 * image button padding -->
+    <dimen name="fineprint_size">11sp</dimen>
+    <dimen name="audio_player_width">224dp</dimen>
+    <dimen name="avatar_item_distance">16dp</dimen>
+
+    <dimen name="media_preview_size">80dp</dimen>
+    <dimen name="media_size">56dp</dimen> <!-- ideally not larger than avatar_on_details_screen -->
+    <dimen name="browser_media_size">96dp</dimen>
+    <dimen name="toolbar_elevation">4dp</dimen>
+
+    <dimen name="publish_avatar_top_margin">8dp</dimen>
+    <dimen name="publish_avatar_size">96dp</dimen>
+    <dimen name="avatar_on_status_message">32dp</dimen>
+    <dimen name="avatar">48dp</dimen>
+    <dimen name="avatar_on_details_screen_size">56dp</dimen>
+    <dimen name="avatar_on_conversation_overview">56dp</dimen>
+
+    <dimen name="input_label_vertical_spacing">4dp</dimen>
+    <dimen name="input_label_horizontal_spacing">4dp</dimen>
+
+    <!-- scanner -->
+    <dimen name="scan_laser_width">4dp</dimen>
+    <dimen name="scan_dot_size">8dp</dimen>
+
+    <dimen name="swipe_escape_velocity">1200dp</dimen> <!-- android default is 120dp -->
+
+    <dimen name="background_image_opacity">0.12</dimen>
+
+    <dimen name="sd_label_max_width">256dp</dimen>
+
+    <dimen name="local_video_preview_height">128dp</dimen>
+    <dimen name="local_video_preview_width">96dp</dimen>
 </resources>