Camera: Handle keys only while in app

Thanks to Lars Greiss (SlimRoms)

Change-Id: I63f757d25260fba4683f494f8b4daf178a2b4e13
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index eee1191..55ff45a 100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -166,6 +166,7 @@
     private long mStorageSpaceBytes = Storage.LOW_STORAGE_THRESHOLD_BYTES;
     private boolean mAutoRotateScreen;
     private boolean mSecureCamera;
+    private boolean mInCameraApp = true;
     // Keep track of powershutter state
     public static boolean mPowerShutter = false;
     // This is a hack to speed up the start of SecureCamera.
@@ -1424,7 +1425,7 @@
         if (!CameraUtil.hasCameraKey()) {
             mPowerShutter = val.equals(CameraSettings.VALUE_ON);
         }
-        if (mPowerShutter /*TODO: && mShowCameraAppView*/) {
+        if (mPowerShutter && mInCameraApp) {
             getWindow().addFlags(WindowManager.LayoutParams.PREVENT_POWER_KEY);
         } else {
             getWindow().clearFlags(WindowManager.LayoutParams.PREVENT_POWER_KEY);
@@ -1454,6 +1455,10 @@
         return mSecureCamera;
     }
 
+    public boolean isInCameraApp() {
+        return mInCameraApp;
+    }
+
     @Override
     public void onModuleSelected(int moduleIndex) {
         if (mCurrentModuleIndex == moduleIndex) {
@@ -1682,6 +1687,10 @@
      */
     private void setPreviewControlsVisibility(boolean showControls) {
         mCurrentModule.onPreviewFocusChanged(showControls);
+
+        // controls are only shown when the camera app is active
+        // so we can assume to fetch this information from here
+        mInCameraApp = showControls;
     }
 
     // Accessor methods for getting latency times used in performance testing
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index 2250e28..e0b7a3f 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -1944,13 +1944,14 @@
 
     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
-        /*TODO: if (!mActivity.mShowCameraAppView) {
+        // Do not handle any key if the activity is
+        // not in active camera/video mode
+        if (!mActivity.isInCameraApp()) {
             return false;
-        }*/
+        }
         switch (keyCode) {
             case KeyEvent.KEYCODE_VOLUME_UP:
-                if (/*TODO: mActivity.isInCameraApp() &&*/ mFirstTimeInitialized
-                    && (mUI.mMenuInitialized)) {
+                if (mFirstTimeInitialized && (mUI.mMenuInitialized)) {
                     if (!CameraActivity.mPowerShutter && !CameraUtil.hasCameraKey()) {
                         onShutterButtonFocus(true);
                     } else {
@@ -1959,8 +1960,7 @@
                 }
                 return true;
             case KeyEvent.KEYCODE_VOLUME_DOWN:
-                if (/*TODO: mActivity.isInCameraApp() &&*/ mFirstTimeInitialized
-                    && (mUI.mMenuInitialized)) {
+                if (mFirstTimeInitialized && (mUI.mMenuInitialized)) {
                    if (!CameraActivity.mPowerShutter && !CameraUtil.hasCameraKey()) {
                         onShutterButtonFocus(true);
                     } else {
@@ -1969,7 +1969,7 @@
                 }
                 return true;
             case KeyEvent.KEYCODE_FOCUS:
-                if (/*TODO: mActivity.isInCameraApp() &&*/ mFirstTimeInitialized) {
+                if (mFirstTimeInitialized) {
                     if (event.getRepeatCount() == 0) {
                         onShutterButtonFocus(true);
                     }
@@ -2005,9 +2005,6 @@
 
     @Override
     public boolean onKeyUp(int keyCode, KeyEvent event) {
-        /*TODO: if (!mActivity.mShowCameraAppView) {
-            return false;
-        }*/
         switch (keyCode) {
             case KeyEvent.KEYCODE_VOLUME_UP:
             case KeyEvent.KEYCODE_VOLUME_DOWN:
diff --git a/src/com/android/camera/WideAnglePanoramaModule.java b/src/com/android/camera/WideAnglePanoramaModule.java
index faacf74..e9acd5a 100644
--- a/src/com/android/camera/WideAnglePanoramaModule.java
+++ b/src/com/android/camera/WideAnglePanoramaModule.java
@@ -1110,6 +1110,14 @@
 
     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
+        // Do not handle any key if the activity is paused
+        // or not in active camera/video mode
+        if (mPaused) {
+            return true;
+        } else if (!mActivity.isInCameraApp()) {
+            return false;
+        }
+
         switch (keyCode) {
             case KeyEvent.KEYCODE_VOLUME_UP:
             case KeyEvent.KEYCODE_VOLUME_DOWN: