summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera')
-rw-r--r--src/com/android/camera/CameraActivity.java35
-rw-r--r--src/com/android/camera/settings/AppUpgrader.java24
-rw-r--r--src/com/android/camera/settings/Keys.java9
3 files changed, 66 insertions, 2 deletions
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index d797aa7b2..a1357b49c 100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -173,7 +173,8 @@ import java.util.List;
public class CameraActivity extends QuickActivity
implements AppController, CameraAgent.CameraOpenCallback,
- ShareActionProvider.OnShareTargetSelectedListener {
+ ShareActionProvider.OnShareTargetSelectedListener,
+ SettingsManager.OnSettingChangedListener {
private static final Log.Tag TAG = new Log.Tag("CameraActivity");
@@ -293,6 +294,9 @@ public class CameraActivity extends QuickActivity
/** First run dialog */
private FirstRunDialog mFirstRunDialog;
+ // Keep track of powershutter state
+ public boolean mPowerShutter;
+
@Override
public CameraAppUI getCameraAppUI() {
return mCameraAppUI;
@@ -565,6 +569,13 @@ public class CameraActivity extends QuickActivity
mFatalErrorHandler.onCameraReconnectFailure();
}
+ @Override
+ public void onSettingChanged(SettingsManager settingsManager, String key) {
+ if (key.equals(Keys.KEY_POWER_SHUTTER)) {
+ initPowerShutter();
+ }
+ }
+
private static class MainHandler extends Handler {
final WeakReference<CameraActivity> mActivity;
@@ -1496,6 +1507,8 @@ public class CameraActivity extends QuickActivity
ModulesInfo.setupModules(mAppContext, mModuleManager, mFeatureConfig);
+ initPowerShutter();
+
AppUpgrader appUpgrader = new AppUpgrader(this);
appUpgrader.upgrade(mSettingsManager);
@@ -2209,9 +2222,25 @@ public class CameraActivity extends QuickActivity
}
}
+ protected void initPowerShutter() {
+ mPowerShutter = Keys.isPowerShutterOn(mSettingsManager);
+ if (mPowerShutter) {
+ getWindow().addPrivateFlags(
+ WindowManager.LayoutParams.PRIVATE_FLAG_PREVENT_POWER_KEY);
+ } else {
+ getWindow().clearPrivateFlags(
+ WindowManager.LayoutParams.PRIVATE_FLAG_PREVENT_POWER_KEY);
+ }
+ }
+
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (!mFilmstripVisible) {
+ if (mPowerShutter && keyCode == KeyEvent.KEYCODE_POWER &&
+ event.getRepeatCount() == 0) {
+ mCurrentModule.onShutterButtonFocus(true);
+ return true;
+ }
if (mCurrentModule.onKeyDown(keyCode, event)) {
return true;
}
@@ -2230,6 +2259,10 @@ public class CameraActivity extends QuickActivity
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (!mFilmstripVisible) {
+ if (mPowerShutter && keyCode == KeyEvent.KEYCODE_POWER) {
+ mCurrentModule.onShutterButtonClick();
+ return true;
+ }
// If a module is in the middle of capture, it should
// consume the key event.
if (mCurrentModule.onKeyUp(keyCode, event)) {
diff --git a/src/com/android/camera/settings/AppUpgrader.java b/src/com/android/camera/settings/AppUpgrader.java
index 92bd953d1..113f4d23b 100644
--- a/src/com/android/camera/settings/AppUpgrader.java
+++ b/src/com/android/camera/settings/AppUpgrader.java
@@ -85,10 +85,16 @@ public class AppUpgrader extends SettingsUpgrader {
* resolution size on the N5 since we stored it with a swapped width/height.
*/
public static final int NEEDS_N5_16by9_RESOLUTION_SWAP = 7;
+
+ /**
+ * With this version, port over power shutter settings.
+ */
+ private static final int CAMERA_SETTINGS_POWER_SHUTTER = 8;
+
/**
* Increment this value whenever new AOSP UpgradeSteps need to be executed.
*/
- public static final int APP_UPGRADE_VERSION = 7;
+ public static final int APP_UPGRADE_VERSION = 8;
private final AppController mAppController;
@@ -160,6 +166,10 @@ public class AppUpgrader extends SettingsUpgrader {
if (lastVersion < NEEDS_N5_16by9_RESOLUTION_SWAP) {
updateN516by9ResolutionIfNeeded(settingsManager);
}
+
+ if (lastVersion < CAMERA_SETTINGS_POWER_SHUTTER) {
+ upgradePowerShutter(settingsManager);
+ }
}
/**
@@ -431,6 +441,18 @@ public class AppUpgrader extends SettingsUpgrader {
}
}
+ private void upgradePowerShutter(SettingsManager settingsManager) {
+ SharedPreferences oldGlobalPreferences =
+ settingsManager.openPreferences(OLD_GLOBAL_PREFERENCES_FILENAME);
+ if (oldGlobalPreferences.contains(Keys.KEY_POWER_SHUTTER)) {
+ String powerShutter = removeString(oldGlobalPreferences, Keys.KEY_POWER_SHUTTER);
+ if (OLD_SETTINGS_VALUE_ON.equals(powerShutter)) {
+ settingsManager.set(SettingsManager.SCOPE_GLOBAL, Keys.KEY_POWER_SHUTTER,
+ true);
+ }
+ }
+ }
+
/**
* The R.integer.camera_mode_* indices were cleaned up, resulting in
* removals and renaming of certain values. In particular camera_mode_gcam
diff --git a/src/com/android/camera/settings/Keys.java b/src/com/android/camera/settings/Keys.java
index 0339ea6c7..31200b30d 100644
--- a/src/com/android/camera/settings/Keys.java
+++ b/src/com/android/camera/settings/Keys.java
@@ -81,6 +81,7 @@ public class Keys {
public static final String KEY_SHOULD_SHOW_SETTINGS_BUTTON_CLING =
"pref_should_show_settings_button_cling";
public static final String KEY_HAS_SEEN_PERMISSIONS_DIALOGS = "pref_has_seen_permissions_dialogs";
+ public static final String KEY_POWER_SHUTTER = "pref_power_shutter";
/**
* Set some number of defaults for the defined keys.
@@ -223,5 +224,13 @@ public class Keys {
return settingsManager.getBoolean(SettingsManager.SCOPE_GLOBAL,
KEY_CAMERA_GRID_LINES);
}
+
+ /**
+ * Returns whether power shutter is set on.
+ */
+ public static boolean isPowerShutterOn(SettingsManager settingsManager) {
+ return settingsManager.getBoolean(SettingsManager.SCOPE_GLOBAL,
+ KEY_POWER_SHUTTER);
+ }
}