diff options
author | Eric Erfanian <erfanian@google.com> | 2017-04-06 23:10:13 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-04-06 23:10:13 +0000 |
commit | 01a86435499d66b267765f89b7dd9c83c158ddfe (patch) | |
tree | 8d08d4f2292aa84dc435d455891e7ab633d95a25 /java/com/android/incallui/video/impl | |
parent | a21467406351a08813a3fedbdd361fcc18a51d89 (diff) | |
parent | d8046e520a866b9948ee9ba47cf642b441ca8e23 (diff) |
Update AOSP Dialer source from internal google3 repository at cl/152373142.
am: d8046e520a
Change-Id: I1155c69ffb6c96513e5820df18d1ecdcdaea8582
Diffstat (limited to 'java/com/android/incallui/video/impl')
5 files changed, 188 insertions, 212 deletions
diff --git a/java/com/android/incallui/video/impl/CameraPermissionDialogFragment.java b/java/com/android/incallui/video/impl/CameraPermissionDialogFragment.java index 291fce4a0..9e5ab3c5e 100644 --- a/java/com/android/incallui/video/impl/CameraPermissionDialogFragment.java +++ b/java/com/android/incallui/video/impl/CameraPermissionDialogFragment.java @@ -43,9 +43,9 @@ public class CameraPermissionDialogFragment extends DialogFragment { new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - VideoCallFragment fragment = + CameraPermissionDialogCallback fragment = FragmentUtils.getParentUnsafe( - CameraPermissionDialogFragment.this, VideoCallFragment.class); + CameraPermissionDialogFragment.this, CameraPermissionDialogCallback.class); fragment.onCameraPermissionGranted(); } }) @@ -59,4 +59,9 @@ public class CameraPermissionDialogFragment extends DialogFragment { }) .create(); } + + /** Callback for being granted camera permission. */ + public interface CameraPermissionDialogCallback { + void onCameraPermissionGranted(); + } } diff --git a/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java b/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java index c969fb05a..a65274276 100644 --- a/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java +++ b/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java @@ -19,7 +19,6 @@ package com.android.incallui.video.impl; import android.Manifest.permission; import android.content.Context; import android.content.pm.PackageManager; -import android.content.res.Resources; import android.graphics.Point; import android.graphics.drawable.Animatable; import android.os.Bundle; @@ -44,9 +43,8 @@ import android.view.ViewTreeObserver; import android.view.accessibility.AccessibilityEvent; import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.Interpolator; +import android.widget.FrameLayout; import android.widget.ImageButton; -import android.widget.ImageView; -import android.widget.RelativeLayout; import android.widget.TextView; import com.android.dialer.common.Assert; import com.android.dialer.common.FragmentUtils; @@ -67,6 +65,7 @@ import com.android.incallui.incall.protocol.InCallScreenDelegateFactory; import com.android.incallui.incall.protocol.PrimaryCallState; import com.android.incallui.incall.protocol.PrimaryInfo; import com.android.incallui.incall.protocol.SecondaryInfo; +import com.android.incallui.video.impl.CameraPermissionDialogFragment.CameraPermissionDialogCallback; import com.android.incallui.video.impl.CheckableImageButton.OnCheckedChangeListener; import com.android.incallui.video.protocol.VideoCallScreen; import com.android.incallui.video.protocol.VideoCallScreenDelegate; @@ -86,7 +85,8 @@ public class SurfaceViewVideoCallFragment extends Fragment OnClickListener, OnCheckedChangeListener, AudioRouteSelectorPresenter, - OnSystemUiVisibilityChangeListener { + OnSystemUiVisibilityChangeListener, + CameraPermissionDialogCallback { @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) static final String ARG_CALL_ID = "call_id"; @@ -112,13 +112,13 @@ public class SurfaceViewVideoCallFragment extends Fragment private TextView remoteVideoOff; private View mutePreviewOverlay; private View previewOffOverlay; - private ImageView previewOffBlurredImageView; private View controls; private View controlsContainer; private SurfaceView previewSurfaceView; private SurfaceView remoteSurfaceView; private View greenScreenBackgroundView; private View fullscreenBackgroundView; + private FrameLayout previewRoot; private boolean shouldShowRemote; private boolean shouldShowPreview; private boolean isInFullscreenMode; @@ -132,7 +132,8 @@ public class SurfaceViewVideoCallFragment extends Fragment @Override public void run() { if (videoCallScreenDelegate.shouldShowCameraPermissionDialog()) { - LogUtil.i("VideoCallFragment.cameraPermissionDialogRunnable", "showing dialog"); + LogUtil.i( + "SurfaceViewVideoCallFragment.cameraPermissionDialogRunnable", "showing dialog"); checkCameraPermission(); } } @@ -150,7 +151,7 @@ public class SurfaceViewVideoCallFragment extends Fragment @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - LogUtil.i("VideoCallFragment.onCreate", null); + LogUtil.i("SurfaceViewVideoCallFragment.onCreate", null); inCallButtonUiDelegate = FragmentUtils.getParent(this, InCallButtonUiDelegateFactory.class) @@ -165,10 +166,13 @@ public class SurfaceViewVideoCallFragment extends Fragment int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == CAMERA_PERMISSION_REQUEST_CODE) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - LogUtil.i("VideoCallFragment.onRequestPermissionsResult", "Camera permission granted."); + LogUtil.i( + "SurfaceViewVideoCallFragment.onRequestPermissionsResult", + "Camera permission granted."); videoCallScreenDelegate.onCameraPermissionGranted(); } else { - LogUtil.i("VideoCallFragment.onRequestPermissionsResult", "Camera permission denied."); + LogUtil.i( + "SurfaceViewVideoCallFragment.onRequestPermissionsResult", "Camera permission denied."); } } super.onRequestPermissionsResult(requestCode, permissions, grantResults); @@ -178,7 +182,7 @@ public class SurfaceViewVideoCallFragment extends Fragment @Override public View onCreateView( LayoutInflater layoutInflater, @Nullable ViewGroup viewGroup, @Nullable Bundle bundle) { - LogUtil.i("VideoCallFragment.onCreateView", null); + LogUtil.i("SurfaceViewVideoCallFragment.onCreateView", null); View view = layoutInflater.inflate( @@ -201,8 +205,6 @@ public class SurfaceViewVideoCallFragment extends Fragment cameraOffButton = (CheckableImageButton) view.findViewById(R.id.videocall_mute_video); cameraOffButton.setOnCheckedChangeListener(this); previewOffOverlay = view.findViewById(R.id.videocall_video_preview_off_overlay); - previewOffBlurredImageView = - (ImageView) view.findViewById(R.id.videocall_preview_off_blurred_image_view); swapCameraButton = (ImageButton) view.findViewById(R.id.videocall_switch_video); swapCameraButton.setOnClickListener(this); view.findViewById(R.id.videocall_switch_controls) @@ -215,7 +217,7 @@ public class SurfaceViewVideoCallFragment extends Fragment endCallButton = view.findViewById(R.id.videocall_end_call); endCallButton.setOnClickListener(this); previewSurfaceView = (SurfaceView) view.findViewById(R.id.videocall_video_preview); - previewSurfaceView.setClipToOutline(true); + previewSurfaceView.setZOrderMediaOverlay(true); previewOffOverlay.setOnClickListener( new OnClickListener() { @Override @@ -224,8 +226,20 @@ public class SurfaceViewVideoCallFragment extends Fragment } }); remoteSurfaceView = (SurfaceView) view.findViewById(R.id.videocall_video_remote); + remoteSurfaceView.setOnClickListener( + surfaceView -> { + videoCallScreenDelegate.resetAutoFullscreenTimer(); + if (isInFullscreenMode) { + updateFullscreenAndGreenScreenMode( + false /* shouldShowFullscreen */, false /* shouldShowGreenScreen */); + } else { + updateFullscreenAndGreenScreenMode( + true /* shouldShowFullscreen */, false /* shouldShowGreenScreen */); + } + }); greenScreenBackgroundView = view.findViewById(R.id.videocall_green_screen_background); fullscreenBackgroundView = view.findViewById(R.id.videocall_fullscreen_background); + previewRoot = (FrameLayout) view.findViewById(R.id.videocall_preview_root); // We need the texture view size to be able to scale the remote video. At this point the view // layout won't be complete so add a layout listener. @@ -234,7 +248,7 @@ public class SurfaceViewVideoCallFragment extends Fragment new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { - LogUtil.i("VideoCallFragment.onGlobalLayout", null); + LogUtil.i("SurfaceViewVideoCallFragment.onGlobalLayout", null); updateVideoOffViews(); // Remove the listener so we don't continually re-layout. ViewTreeObserver observer = remoteSurfaceView.getViewTreeObserver(); @@ -250,7 +264,7 @@ public class SurfaceViewVideoCallFragment extends Fragment @Override public void onViewCreated(View view, @Nullable Bundle bundle) { super.onViewCreated(view, bundle); - LogUtil.i("VideoCallFragment.onViewCreated", null); + LogUtil.i("SurfaceViewVideoCallFragment.onViewCreated", null); inCallScreenDelegate = FragmentUtils.getParentUnsafe(this, InCallScreenDelegateFactory.class) @@ -283,7 +297,7 @@ public class SurfaceViewVideoCallFragment extends Fragment @Override public void onDestroyView() { super.onDestroyView(); - LogUtil.i("VideoCallFragment.onDestroyView", null); + LogUtil.i("SurfaceViewVideoCallFragment.onDestroyView", null); inCallButtonUiDelegate.onInCallButtonUiUnready(); inCallScreenDelegate.onInCallScreenUnready(); } @@ -299,7 +313,7 @@ public class SurfaceViewVideoCallFragment extends Fragment @Override public void onStart() { super.onStart(); - LogUtil.i("VideoCallFragment.onStart", null); + LogUtil.i("SurfaceViewVideoCallFragment.onStart", null); onVideoScreenStart(); } @@ -313,20 +327,20 @@ public class SurfaceViewVideoCallFragment extends Fragment @Override public void onResume() { super.onResume(); - LogUtil.i("VideoCallFragment.onResume", null); + LogUtil.i("SurfaceViewVideoCallFragment.onResume", null); inCallScreenDelegate.onInCallScreenResumed(); } @Override public void onPause() { super.onPause(); - LogUtil.i("VideoCallFragment.onPause", null); + LogUtil.i("SurfaceViewVideoCallFragment.onPause", null); } @Override public void onStop() { super.onStop(); - LogUtil.i("VideoCallFragment.onStop", null); + LogUtil.i("SurfaceViewVideoCallFragment.onStop", null); onVideoScreenStop(); } @@ -337,10 +351,10 @@ public class SurfaceViewVideoCallFragment extends Fragment } private void exitFullscreenMode() { - LogUtil.i("VideoCallFragment.exitFullscreenMode", null); + LogUtil.i("SurfaceViewVideoCallFragment.exitFullscreenMode", null); if (!getView().isAttachedToWindow()) { - LogUtil.i("VideoCallFragment.exitFullscreenMode", "not attached"); + LogUtil.i("SurfaceViewVideoCallFragment.exitFullscreenMode", "not attached"); return; } @@ -486,9 +500,7 @@ public class SurfaceViewVideoCallFragment extends Fragment } private View[] getAllPreviewRelatedViews() { - return new View[] { - previewSurfaceView, previewOffOverlay, previewOffBlurredImageView, mutePreviewOverlay, - }; + return new View[] {previewRoot}; } private int getOffsetTop(View view) { @@ -516,7 +528,7 @@ public class SurfaceViewVideoCallFragment extends Fragment } private void enterFullscreenMode() { - LogUtil.i("VideoCallFragment.enterFullscreenMode", null); + LogUtil.i("SurfaceViewVideoCallFragment.enterFullscreenMode", null); hideSystemUI(); @@ -590,7 +602,7 @@ public class SurfaceViewVideoCallFragment extends Fragment @Override public void onClick(View v) { if (v == endCallButton) { - LogUtil.i("VideoCallFragment.onClick", "end call button clicked"); + LogUtil.i("SurfaceViewVideoCallFragment.onClick", "end call button clicked"); inCallButtonUiDelegate.onEndCallClicked(); videoCallScreenDelegate.resetAutoFullscreenTimer(); } else if (v == swapCameraButton) { @@ -606,7 +618,7 @@ public class SurfaceViewVideoCallFragment extends Fragment public void onCheckedChanged(CheckableImageButton button, boolean isChecked) { if (button == cameraOffButton) { if (!isChecked && !VideoUtils.hasCameraPermissionAndAllowedByUser(getContext())) { - LogUtil.i("VideoCallFragment.onCheckedChanged", "show camera permission dialog"); + LogUtil.i("SurfaceViewVideoCallFragment.onCheckedChanged", "show camera permission dialog"); checkCameraPermission(); } else { inCallButtonUiDelegate.pauseVideoClicked(isChecked); @@ -622,14 +634,23 @@ public class SurfaceViewVideoCallFragment extends Fragment public void showVideoViews( boolean shouldShowPreview, boolean shouldShowRemote, boolean isRemotelyHeld) { LogUtil.i( - "VideoCallFragment.showVideoViews", + "SurfaceViewVideoCallFragment.showVideoViews", "showPreview: %b, shouldShowRemote: %b", shouldShowPreview, shouldShowRemote); + + if (this.shouldShowPreview == shouldShowPreview + && this.shouldShowRemote == shouldShowRemote + && this.isRemotelyHeld == isRemotelyHeld) { + return; + } + this.shouldShowPreview = shouldShowPreview; this.shouldShowRemote = shouldShowRemote; this.isRemotelyHeld = isRemotelyHeld; + previewSurfaceView.setVisibility(shouldShowPreview ? View.VISIBLE : View.INVISIBLE); + videoCallScreenDelegate.setSurfaceViews(previewSurfaceView, remoteSurfaceView); updateVideoOffViews(); } @@ -642,31 +663,33 @@ public class SurfaceViewVideoCallFragment extends Fragment */ @Override public void onLocalVideoDimensionsChanged() { - LogUtil.i("VideoCallFragment.onLocalVideoDimensionsChanged", null); + LogUtil.i("SurfaceViewVideoCallFragment.onLocalVideoDimensionsChanged", null); } @Override public void onLocalVideoOrientationChanged() { - LogUtil.i("VideoCallFragment.onLocalVideoOrientationChanged", null); + LogUtil.i("SurfaceViewVideoCallFragment.onLocalVideoOrientationChanged", null); } /** Called when the remote video's dimensions change. */ @Override public void onRemoteVideoDimensionsChanged() { - LogUtil.i("VideoCallFragment.onRemoteVideoDimensionsChanged", null); + LogUtil.i("SurfaceViewVideoCallFragment.onRemoteVideoDimensionsChanged", null); } @Override public void updateFullscreenAndGreenScreenMode( boolean shouldShowFullscreen, boolean shouldShowGreenScreen) { LogUtil.i( - "VideoCallFragment.updateFullscreenAndGreenScreenMode", + "SurfaceViewVideoCallFragment.updateFullscreenAndGreenScreenMode", "shouldShowFullscreen: %b, shouldShowGreenScreen: %b", shouldShowFullscreen, shouldShowGreenScreen); if (getActivity() == null) { - LogUtil.i("VideoCallFragment.updateFullscreenAndGreenScreenMode", "not attached to activity"); + LogUtil.i( + "SurfaceViewVideoCallFragment.updateFullscreenAndGreenScreenMode", + "not attached to activity"); return; } @@ -678,7 +701,8 @@ public class SurfaceViewVideoCallFragment extends Fragment && shouldShowGreenScreen == isInGreenScreenMode && shouldShowFullscreen == isInFullscreenMode) { LogUtil.i( - "VideoCallFragment.updateFullscreenAndGreenScreenMode", "no change to screen modes"); + "SurfaceViewVideoCallFragment.updateFullscreenAndGreenScreenMode", + "no change to screen modes"); return; } hasInitializedScreenModes = true; @@ -722,7 +746,7 @@ public class SurfaceViewVideoCallFragment extends Fragment @Override public void showButton(@InCallButtonIds int buttonId, boolean show) { LogUtil.v( - "VideoCallFragment.showButton", + "SurfaceViewVideoCallFragment.showButton", "buttonId: %s, show: %b", InCallButtonIdsExtension.toString(buttonId), show); @@ -742,7 +766,7 @@ public class SurfaceViewVideoCallFragment extends Fragment @Override public void enableButton(@InCallButtonIds int buttonId, boolean enable) { LogUtil.v( - "VideoCallFragment.setEnabled", + "SurfaceViewVideoCallFragment.setEnabled", "buttonId: %s, enable: %b", InCallButtonIdsExtension.toString(buttonId), enable); @@ -759,7 +783,7 @@ public class SurfaceViewVideoCallFragment extends Fragment @Override public void setEnabled(boolean enabled) { - LogUtil.v("VideoCallFragment.setEnabled", "enabled: " + enabled); + LogUtil.v("SurfaceViewVideoCallFragment.setEnabled", "enabled: " + enabled); speakerButtonController.setEnabled(enabled); muteButton.setEnabled(enabled); cameraOffButton.setEnabled(enabled); @@ -768,23 +792,25 @@ public class SurfaceViewVideoCallFragment extends Fragment @Override public void setHold(boolean value) { - LogUtil.i("VideoCallFragment.setHold", "value: " + value); + LogUtil.i("SurfaceViewVideoCallFragment.setHold", "value: " + value); } @Override public void setCameraSwitched(boolean isBackFacingCamera) { - LogUtil.i("VideoCallFragment.setCameraSwitched", "isBackFacingCamera: " + isBackFacingCamera); + LogUtil.i( + "SurfaceViewVideoCallFragment.setCameraSwitched", + "isBackFacingCamera: " + isBackFacingCamera); } @Override public void setVideoPaused(boolean isPaused) { - LogUtil.i("VideoCallFragment.setVideoPaused", "isPaused: " + isPaused); + LogUtil.i("SurfaceViewVideoCallFragment.setVideoPaused", "isPaused: " + isPaused); cameraOffButton.setChecked(isPaused); } @Override public void setAudioState(CallAudioState audioState) { - LogUtil.i("VideoCallFragment.setAudioState", "audioState: " + audioState); + LogUtil.i("SurfaceViewVideoCallFragment.setAudioState", "audioState: " + audioState); speakerButtonController.setAudioState(audioState); muteButton.setChecked(audioState.isMuted()); updateMutePreviewOverlayVisibility(); @@ -792,7 +818,7 @@ public class SurfaceViewVideoCallFragment extends Fragment @Override public void updateButtonStates() { - LogUtil.i("VideoCallFragment.updateButtonState", null); + LogUtil.i("SurfaceViewVideoCallFragment.updateButtonState", null); speakerButtonController.updateButtonState(); switchOnHoldCallController.updateButtonState(); } @@ -807,26 +833,26 @@ public class SurfaceViewVideoCallFragment extends Fragment @Override public void showAudioRouteSelector() { - LogUtil.i("VideoCallFragment.showAudioRouteSelector", null); + LogUtil.i("SurfaceViewVideoCallFragment.showAudioRouteSelector", null); AudioRouteSelectorDialogFragment.newInstance(inCallButtonUiDelegate.getCurrentAudioState()) .show(getChildFragmentManager(), null); } @Override public void onAudioRouteSelected(int audioRoute) { - LogUtil.i("VideoCallFragment.onAudioRouteSelected", "audioRoute: " + audioRoute); + LogUtil.i("SurfaceViewVideoCallFragment.onAudioRouteSelected", "audioRoute: " + audioRoute); inCallButtonUiDelegate.setAudioRoute(audioRoute); } @Override public void setPrimary(@NonNull PrimaryInfo primaryInfo) { - LogUtil.i("VideoCallFragment.setPrimary", primaryInfo.toString()); + LogUtil.i("SurfaceViewVideoCallFragment.setPrimary", primaryInfo.toString()); contactGridManager.setPrimary(primaryInfo); } @Override public void setSecondary(@NonNull SecondaryInfo secondaryInfo) { - LogUtil.i("VideoCallFragment.setSecondary", secondaryInfo.toString()); + LogUtil.i("SurfaceViewVideoCallFragment.setSecondary", secondaryInfo.toString()); if (!isAdded()) { savedSecondaryInfo = secondaryInfo; return; @@ -851,23 +877,23 @@ public class SurfaceViewVideoCallFragment extends Fragment @Override public void setCallState(@NonNull PrimaryCallState primaryCallState) { - LogUtil.i("VideoCallFragment.setCallState", primaryCallState.toString()); + LogUtil.i("SurfaceViewVideoCallFragment.setCallState", primaryCallState.toString()); contactGridManager.setCallState(primaryCallState); } @Override public void setEndCallButtonEnabled(boolean enabled, boolean animate) { - LogUtil.i("VideoCallFragment.setEndCallButtonEnabled", "enabled: " + enabled); + LogUtil.i("SurfaceViewVideoCallFragment.setEndCallButtonEnabled", "enabled: " + enabled); } @Override public void showManageConferenceCallButton(boolean visible) { - LogUtil.i("VideoCallFragment.showManageConferenceCallButton", "visible: " + visible); + LogUtil.i("SurfaceViewVideoCallFragment.showManageConferenceCallButton", "visible: " + visible); } @Override public boolean isManageConferenceVisible() { - LogUtil.i("VideoCallFragment.isManageConferenceVisible", null); + LogUtil.i("SurfaceViewVideoCallFragment.isManageConferenceVisible", null); return false; } @@ -878,17 +904,17 @@ public class SurfaceViewVideoCallFragment extends Fragment @Override public void showNoteSentToast() { - LogUtil.i("VideoCallFragment.showNoteSentToast", null); + LogUtil.i("SurfaceViewVideoCallFragment.showNoteSentToast", null); } @Override public void updateInCallScreenColors() { - LogUtil.i("VideoCallFragment.updateColors", null); + LogUtil.i("SurfaceViewVideoCallFragment.updateColors", null); } @Override public void onInCallScreenDialpadVisibilityChange(boolean isShowing) { - LogUtil.i("VideoCallFragment.onInCallScreenDialpadVisibilityChange", null); + LogUtil.i("SurfaceViewVideoCallFragment.onInCallScreenDialpadVisibilityChange", null); } @Override @@ -908,7 +934,8 @@ public class SurfaceViewVideoCallFragment extends Fragment @Override public void showLocationUi(Fragment locationUi) { - LogUtil.e("VideoCallFragment.showLocationUi", "Emergency video calling not supported"); + LogUtil.e( + "SurfaceViewVideoCallFragment.showLocationUi", "Emergency video calling not supported"); // Do nothing } @@ -919,47 +946,17 @@ public class SurfaceViewVideoCallFragment extends Fragment } private void enterGreenScreenMode() { - LogUtil.i("VideoCallFragment.enterGreenScreenMode", null); - RelativeLayout.LayoutParams params = - new RelativeLayout.LayoutParams( - RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); - params.addRule(RelativeLayout.ALIGN_PARENT_START); - params.addRule(RelativeLayout.ALIGN_PARENT_TOP); - previewSurfaceView.setLayoutParams(params); - previewSurfaceView.setOutlineProvider(null); + LogUtil.i("SurfaceViewVideoCallFragment.enterGreenScreenMode", null); updateOverlayBackground(); contactGridManager.setIsMiddleRowVisible(true); updateMutePreviewOverlayVisibility(); - - previewOffBlurredImageView.setLayoutParams(params); - previewOffBlurredImageView.setOutlineProvider(null); - previewOffBlurredImageView.setClipToOutline(false); } private void exitGreenScreenMode() { - LogUtil.i("VideoCallFragment.exitGreenScreenMode", null); - Resources resources = getResources(); - RelativeLayout.LayoutParams params = - new RelativeLayout.LayoutParams( - (int) resources.getDimension(R.dimen.videocall_preview_width), - (int) resources.getDimension(R.dimen.videocall_preview_height)); - params.setMargins( - 0, 0, 0, (int) resources.getDimension(R.dimen.videocall_preview_margin_bottom)); - if (isLandscape()) { - params.addRule(RelativeLayout.ALIGN_PARENT_END); - params.setMarginEnd((int) resources.getDimension(R.dimen.videocall_preview_margin_end)); - } else { - params.addRule(RelativeLayout.ALIGN_PARENT_START); - params.setMarginStart((int) resources.getDimension(R.dimen.videocall_preview_margin_start)); - } - params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); - previewSurfaceView.setLayoutParams(params); + LogUtil.i("SurfaceViewVideoCallFragment.exitGreenScreenMode", null); updateOverlayBackground(); contactGridManager.setIsMiddleRowVisible(false); updateMutePreviewOverlayVisibility(); - - previewOffBlurredImageView.setLayoutParams(params); - previewOffBlurredImageView.setClipToOutline(true); } private void updateVideoOffViews() { @@ -1056,9 +1053,17 @@ public class SurfaceViewVideoCallFragment extends Fragment public void onSystemUiVisibilityChange(int visibility) { boolean navBarVisible = (visibility & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0; videoCallScreenDelegate.onSystemUiVisibilityChange(navBarVisible); + if (navBarVisible) { + updateFullscreenAndGreenScreenMode( + false /* shouldShowFullscreen */, false /* shouldShowGreenScreen */); + } else { + updateFullscreenAndGreenScreenMode( + true /* shouldShowFullscreen */, false /* shouldShowGreenScreen */); + } } - protected void onCameraPermissionGranted() { + @Override + public void onCameraPermissionGranted() { videoCallScreenDelegate.onCameraPermissionGranted(); } diff --git a/java/com/android/incallui/video/impl/VideoCallFragment.java b/java/com/android/incallui/video/impl/VideoCallFragment.java index e2850ccdf..96059375f 100644 --- a/java/com/android/incallui/video/impl/VideoCallFragment.java +++ b/java/com/android/incallui/video/impl/VideoCallFragment.java @@ -75,6 +75,7 @@ import com.android.incallui.incall.protocol.InCallScreenDelegateFactory; import com.android.incallui.incall.protocol.PrimaryCallState; import com.android.incallui.incall.protocol.PrimaryInfo; import com.android.incallui.incall.protocol.SecondaryInfo; +import com.android.incallui.video.impl.CameraPermissionDialogFragment.CameraPermissionDialogCallback; import com.android.incallui.video.impl.CheckableImageButton.OnCheckedChangeListener; import com.android.incallui.video.protocol.VideoCallScreen; import com.android.incallui.video.protocol.VideoCallScreenDelegate; @@ -84,6 +85,7 @@ import com.android.incallui.videosurface.protocol.VideoSurfaceTexture; import com.android.incallui.videotech.utils.VideoUtils; /** Contains UI elements for a video call. */ +// LINT.IfChange public class VideoCallFragment extends Fragment implements InCallScreen, InCallButtonUi, @@ -91,7 +93,8 @@ public class VideoCallFragment extends Fragment OnClickListener, OnCheckedChangeListener, AudioRouteSelectorPresenter, - OnSystemUiVisibilityChangeListener { + OnSystemUiVisibilityChangeListener, + CameraPermissionDialogCallback { @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) static final String ARG_CALL_ID = "call_id"; @@ -1221,7 +1224,8 @@ public class VideoCallFragment extends Fragment videoCallScreenDelegate.onSystemUiVisibilityChange(navBarVisible); } - protected void onCameraPermissionGranted() { + @Override + public void onCameraPermissionGranted() { videoCallScreenDelegate.onCameraPermissionGranted(); } @@ -1242,3 +1246,4 @@ public class VideoCallFragment extends Fragment } } } +//LINT.ThenChange(//depot/google3/third_party/java_src/android_app/dialer/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java) diff --git a/java/com/android/incallui/video/impl/res/layout/frag_videocall_land_surfaceview.xml b/java/com/android/incallui/video/impl/res/layout/frag_videocall_land_surfaceview.xml index 45a9c3392..4cafd68c6 100644 --- a/java/com/android/incallui/video/impl/res/layout/frag_videocall_land_surfaceview.xml +++ b/java/com/android/incallui/video/impl/res/layout/frag_videocall_land_surfaceview.xml @@ -1,32 +1,23 @@ <?xml version="1.0" encoding="utf-8"?> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@android:color/black"> + android:background="@android:color/black" + android:keepScreenOn="true"> <SurfaceView android:id="@+id/videocall_video_remote" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_alignParentStart="true" - android:layout_alignParentTop="true" android:importantForAccessibility="no"/> - <ImageView - android:id="@+id/videocall_remote_off_blurred_image_view" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_alignParentStart="true" - android:layout_alignParentTop="true" - android:scaleType="fitCenter"/> - <TextView android:gravity="center" android:id="@+id/videocall_remote_video_off" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_centerInParent="true" + android:layout_gravity="center" android:accessibilityTraversalBefore="@+id/videocall_speaker_button" android:drawablePadding="8dp" android:drawableTop="@drawable/quantum_ic_videocam_off_white_36" @@ -40,63 +31,54 @@ android:id="@+id/videocall_fullscreen_background" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_alignParentBottom="true" - android:layout_alignParentStart="true" android:background="@color/videocall_overlay_background_color"/> - <SurfaceView - android:id="@+id/videocall_video_preview" + <FrameLayout + android:id="@+id/videocall_preview_root" android:layout_width="@dimen/videocall_preview_width" android:layout_height="@dimen/videocall_preview_height" + android:layout_marginBottom="@dimen/videocall_preview_margin_bottom" android:layout_marginEnd="@dimen/videocall_preview_margin_end" - android:layout_alignParentBottom="true" - android:layout_alignParentEnd="true" - android:importantForAccessibility="no"/> + android:background="@android:color/black" + android:layout_gravity="bottom|end"> - <ImageView - android:id="@+id/videocall_preview_off_blurred_image_view" - android:layout_width="@dimen/videocall_preview_width" - android:layout_height="@dimen/videocall_preview_height" - android:layout_marginEnd="@dimen/videocall_preview_margin_end" - android:layout_alignParentBottom="true" - android:layout_alignParentEnd="true" - android:scaleType="center"/> + <SurfaceView + android:id="@+id/videocall_video_preview" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:importantForAccessibility="no"/> + + <ImageView + android:id="@+id/videocall_video_preview_off_overlay" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:scaleType="center" + android:src="@drawable/quantum_ic_videocam_off_white_36" + android:visibility="gone" + android:importantForAccessibility="no" + tools:visibility="visible"/> + + <ImageView + android:id="@+id/videocall_video_preview_mute_overlay" + android:layout_width="32dp" + android:layout_height="32dp" + android:layout_gravity="center" + android:background="@drawable/videocall_background_circle_white" + android:contentDescription="@string/incall_content_description_muted" + android:scaleType="center" + android:src="@drawable/quantum_ic_mic_off_black_24" + android:visibility="gone" + tools:visibility="visible"/> + + </FrameLayout> <View android:id="@+id/videocall_green_screen_background" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_alignParentBottom="true" - android:layout_alignParentStart="true" android:background="@color/videocall_overlay_background_color"/> - <ImageView - android:id="@+id/videocall_video_preview_off_overlay" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignBottom="@+id/videocall_video_preview" - android:layout_alignLeft="@+id/videocall_video_preview" - android:layout_alignRight="@+id/videocall_video_preview" - android:layout_alignTop="@+id/videocall_video_preview" - android:scaleType="center" - android:src="@drawable/quantum_ic_videocam_off_white_36" - android:visibility="gone" - android:importantForAccessibility="no" - tools:visibility="visible"/> - - <ImageView - android:id="@+id/videocall_video_preview_mute_overlay" - android:layout_width="32dp" - android:layout_height="32dp" - android:layout_alignBottom="@+id/videocall_video_preview" - android:layout_alignRight="@+id/videocall_video_preview" - android:background="@drawable/videocall_background_circle_white" - android:contentDescription="@string/incall_content_description_muted" - android:scaleType="center" - android:src="@drawable/quantum_ic_mic_off_black_24" - android:visibility="gone" - tools:visibility="visible"/> - <include layout="@layout/videocall_controls_land" android:layout_width="match_parent" @@ -108,4 +90,4 @@ android:layout_height="wrap_content" android:layout_alignParentTop="true"/> -</RelativeLayout> +</FrameLayout> diff --git a/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml b/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml index 1b7a9301a..fa4aaef1c 100644 --- a/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml +++ b/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml @@ -1,33 +1,24 @@ <?xml version="1.0" encoding="utf-8"?> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/black" - android:orientation="vertical"> + android:orientation="vertical" + android:keepScreenOn="true"> <SurfaceView android:id="@+id/videocall_video_remote" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_alignParentStart="true" - android:layout_alignParentTop="true" android:importantForAccessibility="no"/> - <ImageView - android:id="@+id/videocall_remote_off_blurred_image_view" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_alignParentStart="true" - android:layout_alignParentTop="true" - android:scaleType="fitCenter"/> - <TextView android:gravity="center" android:id="@+id/videocall_remote_video_off" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_centerInParent="true" + android:layout_gravity="center" android:accessibilityTraversalBefore="@+id/videocall_speaker_button" android:drawablePadding="8dp" android:drawableTop="@drawable/quantum_ic_videocam_off_white_36" @@ -42,69 +33,57 @@ android:id="@+id/videocall_fullscreen_background" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_alignParentBottom="true" - android:layout_alignParentStart="true" android:background="@color/videocall_overlay_background_color" tools:visibility="gone"/> - <SurfaceView - android:id="@+id/videocall_video_preview" + <FrameLayout + android:id="@+id/videocall_preview_root" android:layout_width="@dimen/videocall_preview_width" android:layout_height="@dimen/videocall_preview_height" android:layout_marginBottom="@dimen/videocall_preview_margin_bottom" android:layout_marginStart="@dimen/videocall_preview_margin_start" - android:layout_alignParentBottom="true" - android:layout_alignParentStart="true" - android:importantForAccessibility="no"/> + android:background="@android:color/black" + android:layout_gravity="bottom|start"> - <ImageView - android:id="@+id/videocall_preview_off_blurred_image_view" - android:layout_width="@dimen/videocall_preview_width" - android:layout_height="@dimen/videocall_preview_height" - android:layout_marginBottom="@dimen/videocall_preview_margin_bottom" - android:layout_marginStart="@dimen/videocall_preview_margin_start" - android:layout_alignParentBottom="true" - android:layout_alignParentStart="true" - android:scaleType="center"/> + <SurfaceView + android:id="@+id/videocall_video_preview" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:importantForAccessibility="no"/> + + <ImageView + android:id="@+id/videocall_video_preview_off_overlay" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:scaleType="center" + android:src="@drawable/quantum_ic_videocam_off_white_24" + android:tint="@color/videocall_camera_off_tint" + android:tintMode="src_in" + android:visibility="gone" + android:importantForAccessibility="no" + tools:visibility="visible"/> + + <ImageView + android:id="@+id/videocall_video_preview_mute_overlay" + android:layout_width="32dp" + android:layout_height="32dp" + android:layout_gravity="center" + android:background="@drawable/videocall_background_circle_white" + android:contentDescription="@string/incall_content_description_muted" + android:scaleType="center" + android:src="@drawable/quantum_ic_mic_off_black_24" + android:visibility="gone" + tools:visibility="visible"/> + </FrameLayout> <View android:id="@+id/videocall_green_screen_background" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_alignParentBottom="true" - android:layout_alignParentStart="true" android:background="@color/videocall_overlay_background_color" tools:visibility="gone"/> - <ImageView - android:id="@+id/videocall_video_preview_off_overlay" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignBottom="@+id/videocall_video_preview" - android:layout_alignLeft="@+id/videocall_video_preview" - android:layout_alignRight="@+id/videocall_video_preview" - android:layout_alignTop="@+id/videocall_video_preview" - android:scaleType="center" - android:src="@drawable/quantum_ic_videocam_off_white_24" - android:tint="@color/videocall_camera_off_tint" - android:tintMode="src_in" - android:visibility="gone" - android:importantForAccessibility="no" - tools:visibility="visible"/> - - <ImageView - android:id="@+id/videocall_video_preview_mute_overlay" - android:layout_width="32dp" - android:layout_height="32dp" - android:layout_alignBottom="@+id/videocall_video_preview" - android:layout_alignRight="@+id/videocall_video_preview" - android:background="@drawable/videocall_background_circle_white" - android:contentDescription="@string/incall_content_description_muted" - android:scaleType="center" - android:src="@drawable/quantum_ic_mic_off_black_24" - android:visibility="gone" - tools:visibility="visible"/> - <include layout="@layout/videocall_controls" android:layout_width="match_parent" @@ -114,6 +93,6 @@ android:id="@+id/videocall_on_hold_banner" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_alignParentTop="true"/> + android:layout_gravity="top"/> -</RelativeLayout> +</FrameLayout> |