diff options
Diffstat (limited to 'core/java/android/view')
-rw-r--r-- | core/java/android/view/KeyEvent.java | 4 | ||||
-rwxr-xr-x | core/java/android/view/OrientationEventListener.java | 20 | ||||
-rw-r--r-- | core/java/android/view/SurfaceHolder.java | 2 | ||||
-rw-r--r-- | core/java/android/view/ViewRoot.java | 11 | ||||
-rw-r--r-- | core/java/android/view/WindowManagerPolicy.java | 17 | ||||
-rwxr-xr-x | core/java/android/view/WindowOrientationListener.java | 20 |
6 files changed, 64 insertions, 10 deletions
diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java index d5434b6..d6ea91c 100644 --- a/core/java/android/view/KeyEvent.java +++ b/core/java/android/view/KeyEvent.java @@ -117,7 +117,8 @@ public class KeyEvent implements Parcelable { public static final int KEYCODE_PREVIOUSSONG = 88; public static final int KEYCODE_REWIND = 89; public static final int KEYCODE_FORWARD = 90; - private static final int LAST_KEYCODE = KEYCODE_FORWARD; + public static final int KEYCODE_MUTE = 91; + private static final int LAST_KEYCODE = KEYCODE_MUTE; // NOTE: If you add a new keycode here you must also add it to: // isSystem() @@ -502,6 +503,7 @@ public class KeyEvent implements Parcelable { case KEYCODE_ENDCALL: case KEYCODE_VOLUME_UP: case KEYCODE_VOLUME_DOWN: + case KEYCODE_MUTE: case KEYCODE_POWER: case KEYCODE_HEADSETHOOK: case KEYCODE_PLAYPAUSE: diff --git a/core/java/android/view/OrientationEventListener.java b/core/java/android/view/OrientationEventListener.java index cddec11..391ba1e 100755 --- a/core/java/android/view/OrientationEventListener.java +++ b/core/java/android/view/OrientationEventListener.java @@ -69,8 +69,11 @@ public abstract class OrientationEventListener { public OrientationEventListener(Context context, int rate) { mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE); mRate = rate; - mSensorEventListener = new SensorEventListenerImpl(); mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); + if (mSensor != null) { + // Create listener only if sensors do exist + mSensorEventListener = new SensorEventListenerImpl(); + } } void registerListener(OrientationListener lis) { @@ -82,6 +85,10 @@ public abstract class OrientationEventListener { * {@link #onOrientationChanged} when the device orientation changes. */ public void enable() { + if (mSensor == null) { + Log.w(TAG, "Cannot detect sensors. Not enabled"); + return; + } if (mEnabled == false) { if (localLOGV) Log.d(TAG, "OrientationEventListener enabled"); mSensorManager.registerListener(mSensorEventListener, mSensor, mRate); @@ -93,6 +100,10 @@ public abstract class OrientationEventListener { * Disables the OrientationEventListener. */ public void disable() { + if (mSensor == null) { + Log.w(TAG, "Cannot detect sensors. Invalid disable"); + return; + } if (mEnabled == true) { if (localLOGV) Log.d(TAG, "OrientationEventListener disabled"); mSensorManager.unregisterListener(mSensorEventListener); @@ -138,6 +149,13 @@ public abstract class OrientationEventListener { } } + + /* + * Returns true if sensor is enabled and false otherwise + */ + public boolean canDetectOrientation() { + return mSensor != null; + } /** * Called when the orientation of the device has changed. diff --git a/core/java/android/view/SurfaceHolder.java b/core/java/android/view/SurfaceHolder.java index 21a72e7..3d0dda3 100644 --- a/core/java/android/view/SurfaceHolder.java +++ b/core/java/android/view/SurfaceHolder.java @@ -240,7 +240,7 @@ public interface SurfaceHolder { * in particular there is no guarantee that the content of the Surface * will remain unchanged when lockCanvas() is called again. * - * @see android.view.SurfaceHolder.lockCanvas + * @see #lockCanvas() * * @param canvas The Canvas previously returned by lockCanvas(). */ diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java index db8829f..3cfaf1b 100644 --- a/core/java/android/view/ViewRoot.java +++ b/core/java/android/view/ViewRoot.java @@ -1817,6 +1817,11 @@ public final class ViewRoot extends Handler implements ViewParent, if (event != null) { event.recycle(); } + // If we reach this, we delivered a trackball event to mView and + // mView consumed it. Because we will not translate the trackball + // event into a key event, touch mode will not exit, so we exit + // touch mode here. + ensureTouchMode(false); //noinspection ReturnInsideFinallyBlock return; } @@ -2140,7 +2145,7 @@ public final class ViewRoot extends Handler implements ViewParent, } boolean keyHandled = mView.dispatchKeyEvent(event); - if ((!keyHandled && isDown) || (action == KeyEvent.ACTION_MULTIPLE)) { + if (!keyHandled && isDown) { int direction = 0; switch (event.getKeyCode()) { case KeyEvent.KEYCODE_DPAD_LEFT: @@ -2541,7 +2546,7 @@ public final class ViewRoot extends Handler implements ViewParent, * for us to consider the user to be doing fast trackball movements, * and thus apply an acceleration. */ - static final long FAST_MOVE_TIME = 100; + static final long FAST_MOVE_TIME = 150; /** * Scaling factor to the time (in milliseconds) between events to how @@ -2549,7 +2554,7 @@ public final class ViewRoot extends Handler implements ViewParent, * is < FAST_MOVE_TIME this multiplies the acceleration; when > * FAST_MOVE_TIME it divides it. */ - static final float ACCEL_MOVE_SCALING_FACTOR = (1.0f/50); + static final float ACCEL_MOVE_SCALING_FACTOR = (1.0f/40); float position; float absPosition; diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java index 051f823..0f15b17 100644 --- a/core/java/android/view/WindowManagerPolicy.java +++ b/core/java/android/view/WindowManagerPolicy.java @@ -129,14 +129,22 @@ public interface WindowManagerPolicy { Rect contentFrame, Rect visibleFrame); /** - * Retrieve the current frame of the window. Must be called with the - * window manager lock held. + * Retrieve the current frame of the window that has been assigned by + * the window manager. Must be called with the window manager lock held. * * @return Rect The rectangle holding the window frame. */ public Rect getFrameLw(); /** + * Retrieve the current frame of the window that is actually shown. + * Must be called with the window manager lock held. + * + * @return Rect The rectangle holding the shown window frame. + */ + public Rect getShownFrameLw(); + + /** * Retrieve the frame of the display that this window was last * laid out in. Must be called with the * window manager lock held. @@ -273,9 +281,12 @@ public interface WindowManagerPolicy { * false, this is based on the currently requested * frame, which any current animation will be moving * towards. + * @param onlyOpaque If true, this will only pass if the window is + * also opaque. * @return Returns true if the window is both full screen and opaque */ - public boolean fillsScreenLw(int width, int height, boolean shownFrame); + public boolean fillsScreenLw(int width, int height, boolean shownFrame, + boolean onlyOpaque); /** * Returns true if this window has been shown on screen at some time in diff --git a/core/java/android/view/WindowOrientationListener.java b/core/java/android/view/WindowOrientationListener.java index 4aa3f7a..5877932 100755 --- a/core/java/android/view/WindowOrientationListener.java +++ b/core/java/android/view/WindowOrientationListener.java @@ -74,8 +74,11 @@ public abstract class WindowOrientationListener { public WindowOrientationListener(Context context, int rate) { mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE); mRate = rate; - mSensorEventListener = new SensorEventListenerImpl(); mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); + if (mSensor != null) { + // Create listener only if sensors do exist + mSensorEventListener = new SensorEventListenerImpl(); + } } /** @@ -83,6 +86,10 @@ public abstract class WindowOrientationListener { * {@link #onOrientationChanged} when the device orientation changes. */ public void enable() { + if (mSensor == null) { + Log.w(TAG, "Cannot detect sensors. Not enabled"); + return; + } if (mEnabled == false) { if (localLOGV) Log.d(TAG, "WindowOrientationListener enabled"); mSensorManager.registerListener(mSensorEventListener, mSensor, mRate); @@ -94,6 +101,10 @@ public abstract class WindowOrientationListener { * Disables the WindowOrientationListener. */ public void disable() { + if (mSensor == null) { + Log.w(TAG, "Cannot detect sensors. Invalid disable"); + return; + } if (mEnabled == true) { if (localLOGV) Log.d(TAG, "WindowOrientationListener disabled"); mSensorManager.unregisterListener(mSensorEventListener); @@ -145,6 +156,13 @@ public abstract class WindowOrientationListener { } } + /* + * Returns true if sensor is enabled and false otherwise + */ + public boolean canDetectOrientation() { + return mSensor != null; + } + /** * Called when the orientation of the device has changed. * orientation parameter is in degrees, ranging from 0 to 359. |