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: