Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a528f138 authored by Tyler Gunn's avatar Tyler Gunn Committed by Android Git Automerger
Browse files

am e7face97: Fix issue where fast 180 degree landscape rotation is not detected.

* commit 'e7face9767de504ebae1e4615e810bf0d3af1b62':
  Fix issue where fast 180 degree landscape rotation is not detected.
parents 3f7ca2e8 d078826f
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -516,7 +516,12 @@ public class CallList {
     */
    public void notifyCallsOfDeviceRotation(int rotation) {
        for (Call call : mCallById.values()) {
            if (call.getVideoCall() != null) {
            // First, ensure a VideoCall is set on the call so that the change can be sent to the
            // provider (a VideoCall can be present for a call that does not currently have video,
            // but can be upgraded to video).
            // Second, ensure that the call videoState has video enabled (there is no need to set
            // device orientation on a voice call which has not yet been upgraded to video).
            if (call.getVideoCall() != null && CallUtils.isVideoCall(call)) {
                call.getVideoCall().setDeviceOrientation(rotation);
            }
        }
+40 −17
Original line number Diff line number Diff line
@@ -24,19 +24,21 @@ import android.app.DialogFragment;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnCancelListener;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Point;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Trace;
import android.telecom.DisconnectCause;
import android.telecom.PhoneAccountHandle;
import android.text.TextUtils;
import android.view.Display;
import android.view.MenuItem;
import android.view.OrientationEventListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.KeyEvent;
@@ -122,10 +124,13 @@ public class InCallActivity extends Activity implements FragmentDisplayManager {
        }
    };

    /** Listener for orientation changes. */
    private OrientationEventListener mOrientationEventListener;

    /**
     * Used to determine if a change in orientation has occurred.
     * Used to determine if a change in rotation has occurred.
     */
    private static int sCurrentOrientation = Configuration.ORIENTATION_UNDEFINED;
    private static int sPreviousRotation = -1;

    @Override
    protected void onCreate(Bundle icicle) {
@@ -193,6 +198,28 @@ public class InCallActivity extends Activity implements FragmentDisplayManager {
                dialogFragment.setListener(mSelectAcctListener);
            }
        }

        mOrientationEventListener = new OrientationEventListener(this,
                SensorManager.SENSOR_DELAY_NORMAL) {
            @Override
            public void onOrientationChanged(int orientation) {
                // Orientation is the current device orientation in degrees.  Ultimately we want
                // the rotation (in fixed 90 degree intervals).
                Display display = getWindowManager().getDefaultDisplay();
                int newRotation = display.getRotation();
                if (newRotation != sPreviousRotation) {
                    doOrientationChanged(newRotation);
                }
            }
        };

        if (mOrientationEventListener.canDetectOrientation()) {
            Log.v(this, "Orientation detection enabled.");
            mOrientationEventListener.enable();
        } else {
            Log.v(this, "Orientation detection disabled.");
            mOrientationEventListener.disable();
        }
        Log.d(this, "onCreate(): exit");
    }

@@ -215,9 +242,6 @@ public class InCallActivity extends Activity implements FragmentDisplayManager {
        // setting activity should be last thing in setup process
        InCallPresenter.getInstance().setActivity(this);

        // It is possible that the activity restarted because orientation changed.
        // Notify listeners if orientation changed.
        doOrientationChanged(getResources().getConfiguration().orientation);
        InCallPresenter.getInstance().onActivityStarted();
    }

@@ -474,20 +498,19 @@ public class InCallActivity extends Activity implements FragmentDisplayManager {
    }

    /**
     * Handles changes in device orientation.
     * Handles changes in device rotation.
     *
     * @param orientation The new device orientation.
     * @param rotation The new device rotation.
     */
    private void doOrientationChanged(int orientation) {
        Log.d(this, "doOrientationChanged prevOrientation=" + sCurrentOrientation +
                " newOrientation=" + orientation);
        // Check to see if the orientation changed to prevent triggering orientation change events
    private void doOrientationChanged(int rotation) {
        Log.d(this, "doOrientationChanged prevOrientation=" + sPreviousRotation +
                " newOrientation=" + rotation);
        // Check to see if the rotation changed to prevent triggering rotation change events
        // for other configuration changes.
        if (orientation != sCurrentOrientation) {
            sCurrentOrientation = orientation;
            InCallPresenter.getInstance().onDeviceRotationChange(
                    getWindowManager().getDefaultDisplay().getRotation());
            InCallPresenter.getInstance().onDeviceOrientationChange(sCurrentOrientation);
        if (rotation != sPreviousRotation) {
            sPreviousRotation = rotation;
            InCallPresenter.getInstance().onDeviceRotationChange(rotation);
            InCallPresenter.getInstance().onDeviceOrientationChange(sPreviousRotation);
        }
    }