diff options
author | Danesh M <daneshm90@gmail.com> | 2015-02-03 20:05:13 -0800 |
---|---|---|
committer | Michael Bestas <mkbestas@lineageos.org> | 2019-10-07 22:04:10 +0300 |
commit | ad766ebab2d86afc88254c79224b1eb881714be0 (patch) | |
tree | 58db4b6cfb33aa191dd52f799e6b9f1d1835dea4 | |
parent | bd5e729ccee7e9a2fd8b4a5c2e1e99c0e24b6c02 (diff) | |
download | android_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.mk | 4 | ||||
-rw-r--r-- | AndroidManifest.xml | 1 | ||||
-rw-r--r-- | res/values/cm_strings.xml | 20 | ||||
-rw-r--r-- | res/xml/camera_preferences.xml | 4 | ||||
-rw-r--r-- | src/com/android/camera/CameraActivity.java | 37 | ||||
-rw-r--r-- | src/com/android/camera/settings/AppUpgrader.java | 24 | ||||
-rw-r--r-- | src/com/android/camera/settings/Keys.java | 9 |
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); + } } |