summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanesh M <daneshm90@gmail.com>2015-02-03 20:05:13 -0800
committerMichael Bestas <mkbestas@lineageos.org>2019-10-07 22:04:10 +0300
commitad766ebab2d86afc88254c79224b1eb881714be0 (patch)
tree58db4b6cfb33aa191dd52f799e6b9f1d1835dea4
parentbd5e729ccee7e9a2fd8b4a5c2e1e99c0e24b6c02 (diff)
downloadandroid_packages_apps_Camera2-ad766ebab2d86afc88254c79224b1eb881714be0.tar.gz
android_packages_apps_Camera2-ad766ebab2d86afc88254c79224b1eb881714be0.tar.bz2
android_packages_apps_Camera2-ad766ebab2d86afc88254c79224b1eb881714be0.zip
Camera: Powerkey shutter (2/2)
Change-Id: I70c5cd4dad547e2a9a96541b3104d52af5b5dd5c
-rw-r--r--Android.mk4
-rw-r--r--AndroidManifest.xml1
-rw-r--r--res/values/cm_strings.xml20
-rw-r--r--res/xml/camera_preferences.xml4
-rw-r--r--src/com/android/camera/CameraActivity.java37
-rw-r--r--src/com/android/camera/settings/AppUpgrader.java24
-rw-r--r--src/com/android/camera/settings/Keys.java9
7 files changed, 96 insertions, 3 deletions
diff --git a/Android.mk b/Android.mk
index b24a2df57..9901d509d 100644
--- a/Android.mk
+++ b/Android.mk
@@ -33,8 +33,10 @@ LOCAL_AAPT_FLAGS := \
LOCAL_USE_AAPT2 := true
LOCAL_PACKAGE_NAME := Camera2
+LOCAL_CERTIFICATE := platform
-LOCAL_SDK_VERSION := current
+LOCAL_PRIVATE_PLATFORM_APIS := true
+LOCAL_PRIVILEGED_MODULE := true
LOCAL_PRODUCT_MODULE := true
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 0eddac76d..6da5c1d94 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -29,6 +29,7 @@
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
+ <uses-permission android:name="android.permission.PREVENT_POWER_KEY" />
<supports-screens
android:anyDensity="true"
diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml
new file mode 100644
index 000000000..7440bcaf2
--- /dev/null
+++ b/res/values/cm_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2015 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- More Settings screen, power button title -->
+ <string name="pref_camera_power_shutter_title">Power shutter</string>
+</resources>
diff --git a/res/xml/camera_preferences.xml b/res/xml/camera_preferences.xml
index 771396742..3ac01ad20 100644
--- a/res/xml/camera_preferences.xml
+++ b/res/xml/camera_preferences.xml
@@ -69,6 +69,10 @@
android:defaultValue="false"
android:key="pref_camera_exposure_compensation_key"
android:title="@string/pref_camera_exposure_compensation" />
+ <com.android.camera.settings.ManagedSwitchPreference
+ android:key="pref_power_shutter"
+ android:defaultValue="false"
+ android:title="@string/pref_camera_power_shutter_title" />
</PreferenceScreen>
<!-- Google Help and feedback launcher -->
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index 8c0b5bf54..ec81fe21f 100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -175,7 +175,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");
@@ -295,6 +296,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;
@@ -567,6 +571,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;
@@ -1498,6 +1509,10 @@ public class CameraActivity extends QuickActivity
ModulesInfo.setupModules(mAppContext, mModuleManager, mFeatureConfig);
+ mSettingsManager.addListener(this);
+
+ initPowerShutter();
+
AppUpgrader appUpgrader = new AppUpgrader(this);
appUpgrader.upgrade(mSettingsManager);
@@ -2244,9 +2259,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;
}
@@ -2265,6 +2296,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 930c3e24d..856190e4c 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;
@@ -161,6 +167,10 @@ public class AppUpgrader extends SettingsUpgrader {
if (lastVersion < NEEDS_N5_16by9_RESOLUTION_SWAP) {
updateN516by9ResolutionIfNeeded(settingsManager);
}
+
+ if (lastVersion < CAMERA_SETTINGS_POWER_SHUTTER) {
+ upgradePowerShutter(settingsManager);
+ }
}
/**
@@ -432,6 +442,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);
+ }
}