安卓重力感应方向旋转不对的时候修改方法如下
Index: frameworks/base/services/core/java/com/android/server/policy/WindowOrientationListener.java
===================================================================
--- frameworks/base/services/core/java/com/android/server/policy/WindowOrientationListener.java (revision 1099)
+++ frameworks/base/services/core/java/com/android/server/policy/WindowOrientationListener.java (working copy)
@@ -30,7 +30,7 @@
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.List;
-
+import android.util.Log;
/**
* A special helper class used by the WindowManager
* for receiving notifications from the SensorManager when
@@ -700,13 +700,13 @@
case 2:
{
if( 45 <= orientationAngle && orientationAngle < 135)
- nearestRotation = 1;
+ nearestRotation = 3;
else if( 135 <= orientationAngle && orientationAngle < 225)
- nearestRotation = 2;
+ nearestRotation = 0;
else if( 225 <= orientationAngle && orientationAngle < 315)
- nearestRotation = 3;
+ nearestRotation = 1;
else
- nearestRotation = 0;
+ nearestRotation = 2;
break;
}
// original is horizontal, rotate 30 to be vertical
@@ -714,13 +714,13 @@
case 3:
{
if( 30 <= orientationAngle && orientationAngle < 135)
- nearestRotation = 1;
+ nearestRotation = 3;
else if( 135 <= orientationAngle && orientationAngle< 225)
- nearestRotation = 2;
+ nearestRotation = 0;
else if( 225 <= orientationAngle && orientationAngle< 330)
- nearestRotation = 3;
+ nearestRotation = 1;
else
- nearestRotation = 0;
+ nearestRotation = 2;
break;
}
default:
@@ -730,7 +730,6 @@
if (nearestRotation == 4) {
nearestRotation = 0;
}
-
// Determine the predicted orientation.
if (isTiltAngleAcceptableLocked(nearestRotation, tiltAngle)
&& isOrientationAngleAcceptableLocked(nearestRotation,
重力感应旋转方向顺时针逆时钟方向修改补丁如下
Index: frameworks/base/services/core/java/com/android/server/policy/WindowOrientationListener.java
===================================================================
--- frameworks/base/services/core/java/com/android/server/policy/WindowOrientationListener.java (revision 1253)
+++ frameworks/base/services/core/java/com/android/server/policy/WindowOrientationListener.java (working copy)
@@ -578,9 +578,9 @@
// The vector given in the SensorEvent points straight up (towards the sky) under
// ideal conditions (the phone is not accelerating). I'll call this up vector
// elsewhere.
- float x = event.values[ACCELEROMETER_DATA_X];
- float y = event.values[ACCELEROMETER_DATA_Y];
- float z = event.values[ACCELEROMETER_DATA_Z];
+ float x = -event.values[ACCELEROMETER_DATA_X];
+ float y = -event.values[ACCELEROMETER_DATA_Y];
+ float z = -event.values[ACCELEROMETER_DATA_Z];
if (LOG) {
Slog.v(TAG, "Raw acceleration vector: "