Loading packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +17 −0 Original line number Diff line number Diff line Loading @@ -155,6 +155,7 @@ public class KeyguardViewMediator extends SystemUI { private static final int NOTIFY_STARTED_WAKING_UP = 21; private static final int NOTIFY_SCREEN_TURNED_ON = 22; private static final int NOTIFY_SCREEN_TURNED_OFF = 23; private static final int NOTIFY_STARTED_GOING_TO_SLEEP = 24; /** * The default amount of time we stay awake (used for all key input) Loading Loading @@ -677,6 +678,7 @@ public class KeyguardViewMediator extends SystemUI { playSounds(true); } } notifyStartedGoingToSleep(); } public void onFinishedGoingToSleep(int why) { Loading Loading @@ -1098,6 +1100,11 @@ public class KeyguardViewMediator extends SystemUI { mHandler.sendEmptyMessage(VERIFY_UNLOCK); } private void notifyStartedGoingToSleep() { if (DEBUG) Log.d(TAG, "notifyStartedGoingToSleep"); mHandler.sendEmptyMessage(NOTIFY_STARTED_GOING_TO_SLEEP); } private void notifyFinishedGoingToSleep() { if (DEBUG) Log.d(TAG, "notifyFinishedGoingToSleep"); mHandler.sendEmptyMessage(NOTIFY_FINISHED_GOING_TO_SLEEP); Loading Loading @@ -1209,6 +1216,9 @@ public class KeyguardViewMediator extends SystemUI { case VERIFY_UNLOCK: handleVerifyUnlock(); break; case NOTIFY_STARTED_GOING_TO_SLEEP: handleNotifyStartedGoingToSleep(); break; case NOTIFY_FINISHED_GOING_TO_SLEEP: handleNotifyFinishedGoingToSleep(); break; Loading Loading @@ -1546,6 +1556,13 @@ public class KeyguardViewMediator extends SystemUI { } } private void handleNotifyStartedGoingToSleep() { synchronized (KeyguardViewMediator.this) { if (DEBUG) Log.d(TAG, "handleNotifyStartedGoingToSleep"); mStatusBarKeyguardViewManager.onStartedGoingToSleep(); } } /** * Handle message sent by {@link #notifyFinishedGoingToSleep()} * @see #NOTIFY_FINISHED_GOING_TO_SLEEP Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +29 −1 Original line number Diff line number Diff line Loading @@ -491,12 +491,18 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, private boolean mLaunchTransitionFadingAway; private ExpandableNotificationRow mDraggedDownRow; private boolean mLaunchCameraOnScreenTurningOn; private boolean mLaunchCameraOnFinishedGoingToSleep; private PowerManager.WakeLock mGestureWakeLock; private Vibrator mVibrator; // Fingerprint (as computed by getLoggingFingerprint() of the last logged state. private int mLastLoggedStateFingerprint; /** * If set, the device has started going to sleep but isn't fully non-interactive yet. */ protected boolean mStartedGoingToSleep; private static final int VISIBLE_LOCATIONS = StackViewState.LOCATION_FIRST_CARD | StackViewState.LOCATION_MAIN_AREA; Loading Loading @@ -3963,16 +3969,33 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, disable(mDisabledUnmodified1, mDisabledUnmodified2, true /* animate */); } public void onStartedGoingToSleep() { mStartedGoingToSleep = true; } public void onFinishedGoingToSleep() { mNotificationPanel.onAffordanceLaunchEnded(); releaseGestureWakeLock(); mLaunchCameraOnScreenTurningOn = false; mStartedGoingToSleep = false; mDeviceInteractive = false; mWakeUpComingFromTouch = false; mWakeUpTouchLocation = null; mLockedPhoneAnalytics.onScreenOff(); mStackScroller.setAnimationsEnabled(false); updateVisibleToUser(); if (mLaunchCameraOnFinishedGoingToSleep) { mLaunchCameraOnFinishedGoingToSleep = false; // This gets executed before we will show Keyguard, so post it in order that the state // is correct. mHandler.post(new Runnable() { @Override public void run() { onCameraLaunchGestureDetected(); } }); } } public void onStartedWakingUp() { Loading @@ -3993,7 +4016,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } private void vibrateForCameraGesture() { mVibrator.vibrate(750L); // Make sure to pass -1 for repeat so VibratorService doesn't stop us when going to sleep. mVibrator.vibrate(new long[] { 0, 750L }, -1 /* repeat */); } public void onScreenTurnedOn() { Loading Loading @@ -4153,6 +4177,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, @Override public void onCameraLaunchGestureDetected() { if (mStartedGoingToSleep) { mLaunchCameraOnFinishedGoingToSleep = true; return; } if (!mNotificationPanel.canCameraGestureBeLaunched( mStatusBarKeyguardViewManager.isShowing() && mExpandedVisible)) { return; Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +4 −0 Original line number Diff line number Diff line Loading @@ -164,6 +164,10 @@ public class StatusBarKeyguardViewManager { } } public void onStartedGoingToSleep() { mPhoneStatusBar.onStartedGoingToSleep(); } public void onFinishedGoingToSleep() { mDeviceInteractive = false; mPhoneStatusBar.onFinishedGoingToSleep(); Loading services/core/java/com/android/server/GestureLauncherService.java +10 −3 Original line number Diff line number Diff line Loading @@ -101,8 +101,8 @@ public class GestureLauncherService extends SystemService { * Whether camera double tap power button gesture is currently enabled; */ private boolean mCameraDoubleTapPowerEnabled; private long mLastPowerDownWhileNonInteractive = 0; private long mLastPowerDownWhileNonInteractive; private long mLastPowerDownWhileInteractive; public GestureLauncherService(Context context) { super(context); Loading Loading @@ -251,23 +251,30 @@ public class GestureLauncherService extends SystemService { public boolean interceptPowerKeyDown(KeyEvent event, boolean interactive) { boolean launched = false; boolean intercept = false; synchronized (this) { if (!mCameraDoubleTapPowerEnabled) { mLastPowerDownWhileNonInteractive = 0; mLastPowerDownWhileInteractive = 0; return false; } if (event.getEventTime() - mLastPowerDownWhileNonInteractive < CAMERA_POWER_DOUBLE_TAP_TIME_MS) { launched = true; intercept = true; } else if (event.getEventTime() - mLastPowerDownWhileInteractive < CAMERA_POWER_DOUBLE_TAP_TIME_MS) { launched = true; } mLastPowerDownWhileNonInteractive = interactive ? 0 : event.getEventTime(); mLastPowerDownWhileInteractive = interactive ? event.getEventTime() : 0; } if (launched) { Slog.i(TAG, "Power button double tap gesture detected, launching camera."); launched = handleCameraLaunchGesture(false /* useWakelock */, MetricsLogger.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE); } return launched; return intercept && launched; } /** Loading services/core/java/com/android/server/VibratorService.java +3 −1 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ public class VibratorService extends IVibratorService.Stub implements InputManager.InputDeviceListener { private static final String TAG = "VibratorService"; private static final boolean DEBUG = false; private static final String SYSTEM_UI_PACKAGE = "com.android.systemui"; private final LinkedList<Vibration> mVibrations; private final LinkedList<VibrationInfo> mPreviousVibrations; Loading Loading @@ -147,7 +148,8 @@ public class VibratorService extends IVibratorService.Stub } public boolean isSystemHapticFeedback() { return (mUid == Process.SYSTEM_UID || mUid == 0) && mRepeat < 0; return (mUid == Process.SYSTEM_UID || mUid == 0 || SYSTEM_UI_PACKAGE.equals(mOpPkg)) && mRepeat < 0; } } Loading Loading
packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +17 −0 Original line number Diff line number Diff line Loading @@ -155,6 +155,7 @@ public class KeyguardViewMediator extends SystemUI { private static final int NOTIFY_STARTED_WAKING_UP = 21; private static final int NOTIFY_SCREEN_TURNED_ON = 22; private static final int NOTIFY_SCREEN_TURNED_OFF = 23; private static final int NOTIFY_STARTED_GOING_TO_SLEEP = 24; /** * The default amount of time we stay awake (used for all key input) Loading Loading @@ -677,6 +678,7 @@ public class KeyguardViewMediator extends SystemUI { playSounds(true); } } notifyStartedGoingToSleep(); } public void onFinishedGoingToSleep(int why) { Loading Loading @@ -1098,6 +1100,11 @@ public class KeyguardViewMediator extends SystemUI { mHandler.sendEmptyMessage(VERIFY_UNLOCK); } private void notifyStartedGoingToSleep() { if (DEBUG) Log.d(TAG, "notifyStartedGoingToSleep"); mHandler.sendEmptyMessage(NOTIFY_STARTED_GOING_TO_SLEEP); } private void notifyFinishedGoingToSleep() { if (DEBUG) Log.d(TAG, "notifyFinishedGoingToSleep"); mHandler.sendEmptyMessage(NOTIFY_FINISHED_GOING_TO_SLEEP); Loading Loading @@ -1209,6 +1216,9 @@ public class KeyguardViewMediator extends SystemUI { case VERIFY_UNLOCK: handleVerifyUnlock(); break; case NOTIFY_STARTED_GOING_TO_SLEEP: handleNotifyStartedGoingToSleep(); break; case NOTIFY_FINISHED_GOING_TO_SLEEP: handleNotifyFinishedGoingToSleep(); break; Loading Loading @@ -1546,6 +1556,13 @@ public class KeyguardViewMediator extends SystemUI { } } private void handleNotifyStartedGoingToSleep() { synchronized (KeyguardViewMediator.this) { if (DEBUG) Log.d(TAG, "handleNotifyStartedGoingToSleep"); mStatusBarKeyguardViewManager.onStartedGoingToSleep(); } } /** * Handle message sent by {@link #notifyFinishedGoingToSleep()} * @see #NOTIFY_FINISHED_GOING_TO_SLEEP Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +29 −1 Original line number Diff line number Diff line Loading @@ -491,12 +491,18 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, private boolean mLaunchTransitionFadingAway; private ExpandableNotificationRow mDraggedDownRow; private boolean mLaunchCameraOnScreenTurningOn; private boolean mLaunchCameraOnFinishedGoingToSleep; private PowerManager.WakeLock mGestureWakeLock; private Vibrator mVibrator; // Fingerprint (as computed by getLoggingFingerprint() of the last logged state. private int mLastLoggedStateFingerprint; /** * If set, the device has started going to sleep but isn't fully non-interactive yet. */ protected boolean mStartedGoingToSleep; private static final int VISIBLE_LOCATIONS = StackViewState.LOCATION_FIRST_CARD | StackViewState.LOCATION_MAIN_AREA; Loading Loading @@ -3963,16 +3969,33 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, disable(mDisabledUnmodified1, mDisabledUnmodified2, true /* animate */); } public void onStartedGoingToSleep() { mStartedGoingToSleep = true; } public void onFinishedGoingToSleep() { mNotificationPanel.onAffordanceLaunchEnded(); releaseGestureWakeLock(); mLaunchCameraOnScreenTurningOn = false; mStartedGoingToSleep = false; mDeviceInteractive = false; mWakeUpComingFromTouch = false; mWakeUpTouchLocation = null; mLockedPhoneAnalytics.onScreenOff(); mStackScroller.setAnimationsEnabled(false); updateVisibleToUser(); if (mLaunchCameraOnFinishedGoingToSleep) { mLaunchCameraOnFinishedGoingToSleep = false; // This gets executed before we will show Keyguard, so post it in order that the state // is correct. mHandler.post(new Runnable() { @Override public void run() { onCameraLaunchGestureDetected(); } }); } } public void onStartedWakingUp() { Loading @@ -3993,7 +4016,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } private void vibrateForCameraGesture() { mVibrator.vibrate(750L); // Make sure to pass -1 for repeat so VibratorService doesn't stop us when going to sleep. mVibrator.vibrate(new long[] { 0, 750L }, -1 /* repeat */); } public void onScreenTurnedOn() { Loading Loading @@ -4153,6 +4177,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, @Override public void onCameraLaunchGestureDetected() { if (mStartedGoingToSleep) { mLaunchCameraOnFinishedGoingToSleep = true; return; } if (!mNotificationPanel.canCameraGestureBeLaunched( mStatusBarKeyguardViewManager.isShowing() && mExpandedVisible)) { return; Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +4 −0 Original line number Diff line number Diff line Loading @@ -164,6 +164,10 @@ public class StatusBarKeyguardViewManager { } } public void onStartedGoingToSleep() { mPhoneStatusBar.onStartedGoingToSleep(); } public void onFinishedGoingToSleep() { mDeviceInteractive = false; mPhoneStatusBar.onFinishedGoingToSleep(); Loading
services/core/java/com/android/server/GestureLauncherService.java +10 −3 Original line number Diff line number Diff line Loading @@ -101,8 +101,8 @@ public class GestureLauncherService extends SystemService { * Whether camera double tap power button gesture is currently enabled; */ private boolean mCameraDoubleTapPowerEnabled; private long mLastPowerDownWhileNonInteractive = 0; private long mLastPowerDownWhileNonInteractive; private long mLastPowerDownWhileInteractive; public GestureLauncherService(Context context) { super(context); Loading Loading @@ -251,23 +251,30 @@ public class GestureLauncherService extends SystemService { public boolean interceptPowerKeyDown(KeyEvent event, boolean interactive) { boolean launched = false; boolean intercept = false; synchronized (this) { if (!mCameraDoubleTapPowerEnabled) { mLastPowerDownWhileNonInteractive = 0; mLastPowerDownWhileInteractive = 0; return false; } if (event.getEventTime() - mLastPowerDownWhileNonInteractive < CAMERA_POWER_DOUBLE_TAP_TIME_MS) { launched = true; intercept = true; } else if (event.getEventTime() - mLastPowerDownWhileInteractive < CAMERA_POWER_DOUBLE_TAP_TIME_MS) { launched = true; } mLastPowerDownWhileNonInteractive = interactive ? 0 : event.getEventTime(); mLastPowerDownWhileInteractive = interactive ? event.getEventTime() : 0; } if (launched) { Slog.i(TAG, "Power button double tap gesture detected, launching camera."); launched = handleCameraLaunchGesture(false /* useWakelock */, MetricsLogger.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE); } return launched; return intercept && launched; } /** Loading
services/core/java/com/android/server/VibratorService.java +3 −1 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ public class VibratorService extends IVibratorService.Stub implements InputManager.InputDeviceListener { private static final String TAG = "VibratorService"; private static final boolean DEBUG = false; private static final String SYSTEM_UI_PACKAGE = "com.android.systemui"; private final LinkedList<Vibration> mVibrations; private final LinkedList<VibrationInfo> mPreviousVibrations; Loading Loading @@ -147,7 +148,8 @@ public class VibratorService extends IVibratorService.Stub } public boolean isSystemHapticFeedback() { return (mUid == Process.SYSTEM_UID || mUid == 0) && mRepeat < 0; return (mUid == Process.SYSTEM_UID || mUid == 0 || SYSTEM_UI_PACKAGE.equals(mOpPkg)) && mRepeat < 0; } } Loading