diff --git a/InCallUI/res/layout-w500dp-land/call_card_fragment.xml b/InCallUI/res/layout-w500dp-land/call_card_fragment.xml
index 049f41f..343c4da 100644
--- a/InCallUI/res/layout-w500dp-land/call_card_fragment.xml
+++ b/InCallUI/res/layout-w500dp-land/call_card_fragment.xml
@@ -120,6 +120,7 @@
     </RelativeLayout>
 
     <LinearLayout
+        android:id="@+id/manage_conference_call"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="vertical"
@@ -130,16 +131,18 @@
             android:layout_height="wrap_content"
             android:elevation="5dp"
             android:layout_alignParentBottom="true"/>
-
-        <!-- Volume boost and Volume enhancements in-call UI -->
-        <ImageButton android:id="@+id/volumeBoost"
-            android:layout_width="80dp"
-            android:layout_height="80dp"
-            android:visibility="gone"
-            android:soundEffectsEnabled="false"
-            android:background="@drawable/vb_normal"/>
     </LinearLayout>
 
+    <!-- Volume boost and Volume enhancements in-call UI -->
+    <ImageButton android:id="@+id/volumeBoost"
+        android:layout_width="80dp"
+        android:layout_height="80dp"
+        android:layout_toEndOf="@id/primary_call_info_container"
+        android:layout_below="@id/manage_conference_call"
+        android:visibility="gone"
+        android:soundEffectsEnabled="false"
+        android:background="@drawable/vb_normal"/>
+
     <!-- Secondary "Call info" block, for the background ("on hold") call. -->
     <include layout="@layout/secondary_call_info"
              android:id="@+id/secondary_call_info"
@@ -187,14 +190,20 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
 
+    <!-- Margin left and centerHorizontal don't work well together, so use a Space instead. -->
+    <Space
+        android:id="@+id/floating_end_call_action_button_margin_left"
+        android:layout_width="@dimen/end_call_button_margin_left"
+        android:layout_height="wrap_content"
+        android:layout_centerHorizontal="true" />
+
      <FrameLayout
         android:id="@+id/floating_end_call_action_button_container"
         android:layout_width="@dimen/end_call_floating_action_button_diameter"
         android:layout_height="@dimen/end_call_floating_action_button_diameter"
         android:background="@drawable/fab_red"
-        android:layout_alignParentRight="true"
+        android:layout_toRightOf="@id/floating_end_call_action_button_margin_left"
         android:layout_alignParentBottom="true"
-        android:layout_marginRight="@dimen/end_call_button_margin_right"
         android:layout_marginBottom="@dimen/end_call_button_margin_bottom">
         <ImageButton android:id="@+id/floating_end_call_action_button"
             android:layout_width="match_parent"
diff --git a/InCallUI/res/values-w500dp-land/dimens.xml b/InCallUI/res/values-w500dp-land/dimens.xml
index 01cf165..42b0886 100644
--- a/InCallUI/res/values-w500dp-land/dimens.xml
+++ b/InCallUI/res/values-w500dp-land/dimens.xml
@@ -33,5 +33,5 @@
 
     <dimen name="video_preview_margin">20dp</dimen>
 
-    <dimen name="end_call_button_margin_right">80dp</dimen>
+    <dimen name="end_call_button_margin_left">50dp</dimen>
 </resources>
diff --git a/InCallUI/src/com/android/incallui/Call.java b/InCallUI/src/com/android/incallui/Call.java
index 42890f2..feaf5ee 100644
--- a/InCallUI/src/com/android/incallui/Call.java
+++ b/InCallUI/src/com/android/incallui/Call.java
@@ -368,6 +368,12 @@
                     List<android.telecom.Call> conferenceableCalls) {
                 update();
             }
+
+            @Override
+            public void onConnectionEvent(android.telecom.Call call, String event, Bundle extras) {
+                Log.d(this, "TelecomCallCallback onConnectionEvent call=" + call);
+                update();
+            }
     };
 
     boolean mIsActiveSub = false;
diff --git a/InCallUI/src/com/android/incallui/InCallActivity.java b/InCallUI/src/com/android/incallui/InCallActivity.java
index dd2af36..4598d3c 100644
--- a/InCallUI/src/com/android/incallui/InCallActivity.java
+++ b/InCallUI/src/com/android/incallui/InCallActivity.java
@@ -309,8 +309,8 @@
         InCallPresenter.getInstance().setThemeColors();
         InCallPresenter.getInstance().onUiShowing(true);
 
-        // Clear fullscreen state onResume; the stored value may not match reality.
-        InCallPresenter.getInstance().clearFullscreen();
+        // Exit fullscreen state onResume; the stored value may not match reality.
+        InCallPresenter.getInstance().setFullScreen(false);
 
         // If there is a pending request to show or hide the dialpad, handle that now.
         if (mShowDialpadRequest != DIALPAD_REQUEST_NONE) {
diff --git a/res/values/strings.xml b/res/values/strings.xml
index ce088cd..26e6ea8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1113,11 +1113,9 @@
 
     <string name="speed_dial_unassigned_dialog_title">Key unassigned</string>
 
-    <string name="speed_dial_unassigned_dialog_message">No speed dial action is assigned to number k
-ey \'<xliff:g id="number">%s</xliff:g>\'. Do you want to assign an action now?</string>
+    <string name="speed_dial_unassigned_dialog_message">No speed dial action is assigned to number key \'<xliff:g id="number">%s</xliff:g>\'. Do you want to assign an action now?</string>
 
-    <string name="dialog_speed_dial_airplane_mode_message">To use speed dial, first turn off Airplan
-e mode.</string>
+    <string name="dialog_speed_dial_airplane_mode_message">To use speed dial, please turn off airplane mode firstly.</string>
 
     <!-- Speed Dial can not be set for the key used for Emergency number-->
     <string name="speed_dial_can_not_be_set">Speed Dial Can not be set for this Key</string>
diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java
index b4070cc..85be754 100644
--- a/src/com/android/dialer/dialpad/DialpadFragment.java
+++ b/src/com/android/dialer/dialpad/DialpadFragment.java
@@ -845,7 +845,7 @@
             IntentFilter filter = new IntentFilter(ACTION_WIFI_CALL_READY_STATUS_CHANGE);
             context.registerReceiver(mWifiCallReadyReceiver, filter);
             changeDialpadButton(WifiCallUtils.isWifiCallReadyEnabled(context));
-         }
+        }
         Trace.endSection();
     }
 
@@ -2071,17 +2071,18 @@
     private void dialAfterNetworkCheck() {
         if (ActivityCompat.checkSelfPermission(getContext(),
                 Manifest.permission.ACCESS_COARSE_LOCATION) !=
-            PackageManager.PERMISSION_GRANTED) {
-            requestPermissions(new String[] {Manifest.permission.ACCESS_COARSE_LOCATION},
+                PackageManager.PERMISSION_GRANTED) {
+            requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
                     PERMISSION_REQUEST_CODE_LOCATION);
         } else {
-            if(WifiCallUtils.shallShowWifiCallDialog(getActivity())) {
-                 WifiCallUtils.showWifiCallDialog(getActivity());
-                 WifiCallUtils.showWifiCallNotification(getActivity());
-             } else {
-                 getView().performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
-                 handleDialButtonPressed();
-             }
+            if (!PhoneNumberUtils.isEmergencyNumber(mDigits.getText().toString()) &&
+                    WifiCallUtils.shallShowWifiCallDialog(getActivity())) {
+                WifiCallUtils.showWifiCallDialog(getActivity());
+                WifiCallUtils.showWifiCallNotification(getActivity());
+            } else {
+                getView().performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
+                handleDialButtonPressed();
+            }
         }
     }
 
