Allow camera launch also when device is interactive

Bug: 23967648
Change-Id: If91df75e6325b3969dc2351a70af0c160d3eab04
diff --git a/services/core/java/com/android/server/GestureLauncherService.java b/services/core/java/com/android/server/GestureLauncherService.java
index 69f0cef..bd7d4b2 100644
--- a/services/core/java/com/android/server/GestureLauncherService.java
+++ b/services/core/java/com/android/server/GestureLauncherService.java
@@ -101,8 +101,8 @@
      * 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);
@@ -251,23 +251,30 @@
 
     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;
     }
 
     /**