summaryrefslogtreecommitdiff
path: root/InCallUI
diff options
context:
space:
mode:
authorTyler Gunn <tgunn@google.com>2015-05-06 17:34:51 +0000
committerAndroid Partner Code Review <android-gerrit-partner@google.com>2015-05-06 17:34:52 +0000
commitf335e65ac4bc9ab4eb62be8ea1e0f0d74628139e (patch)
tree452ee96235c8bcf93d6d5094e87b3ae548ab27ab /InCallUI
parentd675ac261cccbb4a0fc95106cb4db77a1a88c84c (diff)
parent139f6e12e3cf37947a5219853c3bbce0621b0677 (diff)
Merge "Fix issue where fast 180 degree landscape rotation is not detected." into m-wireless-dev
Diffstat (limited to 'InCallUI')
-rw-r--r--InCallUI/src/com/android/incallui/CallList.java7
-rw-r--r--InCallUI/src/com/android/incallui/InCallActivity.java63
2 files changed, 46 insertions, 24 deletions
diff --git a/InCallUI/src/com/android/incallui/CallList.java b/InCallUI/src/com/android/incallui/CallList.java
index 02c8fbf08..f7a9e5cc3 100644
--- a/InCallUI/src/com/android/incallui/CallList.java
+++ b/InCallUI/src/com/android/incallui/CallList.java
@@ -513,7 +513,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);
}
}
diff --git a/InCallUI/src/com/android/incallui/InCallActivity.java b/InCallUI/src/com/android/incallui/InCallActivity.java
index 601a5155d..3050dc127 100644
--- a/InCallUI/src/com/android/incallui/InCallActivity.java
+++ b/InCallUI/src/com/android/incallui/InCallActivity.java
@@ -21,22 +21,20 @@ import android.app.Activity;
import android.app.AlertDialog;
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.content.res.Resources;
import android.graphics.Point;
-import android.net.Uri;
+import android.hardware.SensorManager;
import android.os.Bundle;
import android.telecom.DisconnectCause;
import android.telecom.PhoneAccountHandle;
-import android.telecom.TelecomManager;
-import android.telephony.PhoneNumberUtils;
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;
@@ -48,8 +46,6 @@ import android.view.accessibility.AccessibilityEvent;
import com.android.phone.common.animation.AnimUtils;
import com.android.phone.common.animation.AnimationListenerAdapter;
import com.android.contacts.common.interactions.TouchPointManager;
-import com.android.contacts.common.util.MaterialColorMapUtils;
-import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette;
import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment;
import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment.SelectPhoneAccountListener;
import com.android.incallui.Call.State;
@@ -104,10 +100,13 @@ public class InCallActivity extends Activity {
}
};
+ /** 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) {
@@ -172,6 +171,28 @@ public class InCallActivity extends Activity {
mAnimateDialpadOnShow = false;
mDtmfText = icicle.getString(DIALPAD_TEXT_EXTRA);
}
+
+ 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");
}
@@ -192,9 +213,6 @@ public class InCallActivity extends Activity {
// 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();
}
@@ -449,20 +467,19 @@ public class InCallActivity extends Activity {
}
/**
- * 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);
}
}