From cea0604f347b07d51d48b14b6c6b7d43ba1b0377 Mon Sep 17 00:00:00 2001 From: Michael Bestas Date: Tue, 28 Jan 2014 00:44:30 +0200 Subject: Camera: Handle keys only while in app Thanks to Lars Greiss (SlimRoms) Change-Id: I63f757d25260fba4683f494f8b4daf178a2b4e13 --- src/com/android/camera/CameraActivity.java | 11 ++++++++++- src/com/android/camera/PhotoModule.java | 17 +++++++---------- src/com/android/camera/WideAnglePanoramaModule.java | 8 ++++++++ 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java index 36505b132..21481585b 100644 --- a/src/com/android/camera/CameraActivity.java +++ b/src/com/android/camera/CameraActivity.java @@ -199,6 +199,7 @@ public class CameraActivity extends Activity private OnScreenHint mStorageHint; private long mStorageSpaceBytes = Storage.LOW_STORAGE_THRESHOLD_BYTES; 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. @@ -1782,7 +1783,7 @@ public class CameraActivity extends Activity if (!CameraUtil.hasCameraKey()) { mPowerShutter = val.equals(CameraSettings.VALUE_ON); } - if (mPowerShutter /*TODO: && mShowCameraAppView*/) { + if (mPowerShutter && mInCameraApp) { getWindow().addPrivateFlags( WindowManager.LayoutParams.PRIVATE_FLAG_PREVENT_POWER_KEY); } else { @@ -1814,6 +1815,10 @@ public class CameraActivity extends Activity return mSecureCamera; } + public boolean isInCameraApp() { + return mInCameraApp; + } + @Override public void onModuleSelected(int moduleIndex) { if (mCurrentModuleIndex == moduleIndex) { @@ -2043,6 +2048,10 @@ public class CameraActivity extends Activity */ 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 02f45b459..8865d54cd 100644 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -2474,13 +2474,14 @@ public class PhotoModule @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 { @@ -2489,8 +2490,7 @@ public class PhotoModule } 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 { @@ -2499,7 +2499,7 @@ public class PhotoModule } return true; case KeyEvent.KEYCODE_FOCUS: - if (/*TODO: mActivity.isInCameraApp() &&*/ mFirstTimeInitialized) { + if (mFirstTimeInitialized) { if (event.getRepeatCount() == 0) { onShutterButtonFocus(true); } @@ -2534,9 +2534,6 @@ public class PhotoModule @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 30fda16f5..e9090b72e 100644 --- a/src/com/android/camera/WideAnglePanoramaModule.java +++ b/src/com/android/camera/WideAnglePanoramaModule.java @@ -1173,6 +1173,14 @@ public class WideAnglePanoramaModule @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: -- cgit v1.2.3