diff options
author | Michael Bestas <mikeioannina@gmail.com> | 2014-01-20 20:40:32 +0200 |
---|---|---|
committer | Chippa-a <vusal1372@gmail.com> | 2019-10-25 15:55:25 +0300 |
commit | bfdc1037c805a57dc067a2084e6a20edacbf9e81 (patch) | |
tree | dce2ff16df48b7a0317e47b835b714b1c0177f4b | |
parent | f5fcd13376b152d2ddfa5860f49f1ac9d6eb096a (diff) | |
download | android_packages_apps_Snap-bfdc1037c805a57dc067a2084e6a20edacbf9e81.tar.gz android_packages_apps_Snap-bfdc1037c805a57dc067a2084e6a20edacbf9e81.tar.bz2 android_packages_apps_Snap-bfdc1037c805a57dc067a2084e6a20edacbf9e81.zip |
Camera: Powerkey shutter (2/2)
Ported from cm-10.1
Including cm-10.1 camera commit:
aa4ae80a41fbab763891c5ef6d67a9e5b4bb981b Don't mess around with pref local ID for power shutter initialization.
Includes http://review.cyanogenmod.org/56986
[mikeioannina]: Updates for L
Signed-off-by: Michael Bestas <mikeioannina@gmail.com>
Change-Id: I0992baa558eefd306d00fbece59cb5c512d9448b
-rw-r--r-- | AndroidManifest.xml | 1 | ||||
-rw-r--r-- | res/values/cm_arrays.xml | 27 | ||||
-rw-r--r-- | res/values/cm_strings.xml | 4 | ||||
-rwxr-xr-x | res/xml/camera_preferences.xml | 6 | ||||
-rwxr-xr-x | res/xml/video_preferences.xml | 6 | ||||
-rwxr-xr-x | src/com/android/camera/CameraActivity.java | 16 | ||||
-rwxr-xr-x | src/com/android/camera/CameraSettings.java | 4 | ||||
-rwxr-xr-x | src/com/android/camera/ComboPreferences.java | 4 | ||||
-rw-r--r-- | src/com/android/camera/PhotoMenu.java | 5 | ||||
-rwxr-xr-x | src/com/android/camera/PhotoModule.java | 26 | ||||
-rw-r--r-- | src/com/android/camera/VideoMenu.java | 5 | ||||
-rw-r--r-- | src/com/android/camera/VideoModule.java | 10 |
12 files changed, 111 insertions, 3 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 9db8270ba..3a4aaa9bd 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -24,6 +24,7 @@ <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> + <uses-permission android:name="android.permission.PREVENT_POWER_KEY" /> <supports-screens android:anyDensity="true" diff --git a/res/values/cm_arrays.xml b/res/values/cm_arrays.xml new file mode 100644 index 000000000..b308c083e --- /dev/null +++ b/res/values/cm_arrays.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2013-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"> + <string-array name="pref_switch_entryvalues" translatable="false"> + <item>off</item> + <item>on</item> + </string-array> + + <array name="pref_switch_entries" translatable="false"> + <item>@string/setting_off</item> + <item>@string/setting_on</item> + </array> +</resources> diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index 6b5dbe53d..ea0473bfb 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -82,4 +82,8 @@ <!-- Red eye flash mode title --> <string name="pref_camera_flashmode_entry_redeye">Red eye</string> <string name="pref_camera_flashmode_label_redeye">RED EYE</string> + + <!-- Power shutter --> + <string name="pref_camera_power_shutter_title">Power shutter</string> + <string name="pref_camera_power_shutter_default" translatable="false">off</string> </resources> diff --git a/res/xml/camera_preferences.xml b/res/xml/camera_preferences.xml index bf9263ca4..1de8cb94c 100755 --- a/res/xml/camera_preferences.xml +++ b/res/xml/camera_preferences.xml @@ -414,4 +414,10 @@ camera:entries="@array/pref_camera_zoom_entries" camera:entryValues="@array/pref_camera_zoom_entryvalues" /> + <ListPreference + camera:key="pref_power_shutter" + camera:defaultValue="@string/pref_camera_power_shutter_default" + camera:title="@string/pref_camera_power_shutter_title" + camera:entries="@array/pref_switch_entries" + camera:entryValues="@array/pref_switch_entryvalues" /> </PreferenceGroup> diff --git a/res/xml/video_preferences.xml b/res/xml/video_preferences.xml index 9d0f170bf..151a4f94b 100755 --- a/res/xml/video_preferences.xml +++ b/res/xml/video_preferences.xml @@ -190,4 +190,10 @@ camera:title="@string/pref_camera_zoom_title" camera:entries="@array/pref_camera_zoom_entries" camera:entryValues="@array/pref_camera_zoom_entryvalues" /> + <ListPreference + camera:key="pref_power_shutter" + camera:defaultValue="@string/pref_camera_power_shutter_default" + camera:title="@string/pref_camera_power_shutter_title" + camera:entries="@array/pref_switch_entries" + camera:entryValues="@array/pref_switch_entryvalues" /> </PreferenceGroup> diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java index 9f225d1c7..0bdc60eed 100755 --- a/src/com/android/camera/CameraActivity.java +++ b/src/com/android/camera/CameraActivity.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2012 The Android Open Source Project + * Copyright (C) 2013-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. @@ -221,6 +222,8 @@ public class CameraActivity extends Activity private final Object mStorageSpaceLock = new Object(); private long mStorageSpaceBytes = Storage.LOW_STORAGE_THRESHOLD_BYTES; private boolean mSecureCamera; + // Keep track of powershutter state + public static boolean mPowerShutter = false; private int mLastRawOrientation; private MyOrientationEventListener mOrientationListener; private Handler mMainHandler; @@ -2042,6 +2045,19 @@ public class CameraActivity extends Activity } } + protected void initPowerShutter(ComboPreferences prefs) { + String val = prefs.getString(CameraSettings.KEY_POWER_SHUTTER, + getResources().getString(R.string.pref_camera_power_shutter_default)); + mPowerShutter = val.equals(CameraSettings.VALUE_ON); + if (mPowerShutter /*TODO: && mShowCameraAppView*/) { + getWindow().addPrivateFlags( + WindowManager.LayoutParams.PRIVATE_FLAG_PREVENT_POWER_KEY); + } else { + getWindow().clearPrivateFlags( + WindowManager.LayoutParams.PRIVATE_FLAG_PREVENT_POWER_KEY); + } + } + protected void setResultEx(int resultCode) { mResultCodeForTesting = resultCode; setResult(resultCode); diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java index 9dce35b6a..abad064d5 100755 --- a/src/com/android/camera/CameraSettings.java +++ b/src/com/android/camera/CameraSettings.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2009 The Android Open Source Project + * Copyright (C) 2013-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. @@ -81,6 +82,7 @@ public class CameraSettings { public static final String KEY_PHOTOSPHERE_PICTURESIZE = "pref_photosphere_picturesize_key"; public static final String KEY_STARTUP_MODULE_INDEX = "camera.startup_module"; + public static final String KEY_POWER_SHUTTER = "pref_power_shutter"; public static final String KEY_VIDEO_ENCODER = "pref_camera_videoencoder_key"; public static final String KEY_AUDIO_ENCODER = "pref_camera_audioencoder_key"; public static final String KEY_POWER_MODE = "pref_camera_powermode_key"; @@ -271,6 +273,8 @@ public class CameraSettings { public static final String KEY_SELFIE_FLASH = "pref_selfie_flash_key"; public static final String EXPOSURE_DEFAULT_VALUE = "0"; + public static final String VALUE_ON = "on"; + public static final String VALUE_OFF = "off"; public static final int CURRENT_VERSION = 5; public static final int CURRENT_LOCAL_VERSION = 2; diff --git a/src/com/android/camera/ComboPreferences.java b/src/com/android/camera/ComboPreferences.java index de6db8e9d..107360a55 100755 --- a/src/com/android/camera/ComboPreferences.java +++ b/src/com/android/camera/ComboPreferences.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2010 The Android Open Source Project + * Copyright (C) 2013-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. @@ -157,7 +158,8 @@ public class ComboPreferences implements || key.equals(SettingsManager.KEY_MONO_ONLY) || key.equals(SettingsManager.KEY_MONO_PREVIEW) || key.equals(SettingsManager.KEY_SWITCH_CAMERA) - || key.equals(SettingsManager.KEY_CLEARSIGHT); + || key.equals(SettingsManager.KEY_CLEARSIGHT) + || key.equals(CameraSettings.KEY_POWER_SHUTTER); } @Override diff --git a/src/com/android/camera/PhotoMenu.java b/src/com/android/camera/PhotoMenu.java index 7debfc7ef..c210d5b4c 100644 --- a/src/com/android/camera/PhotoMenu.java +++ b/src/com/android/camera/PhotoMenu.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2012 The Android Open Source Project + * Copyright (C) 2013-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. @@ -195,7 +196,8 @@ public class PhotoMenu extends MenuController CameraSettings.KEY_QC_CHROMA_FLASH, CameraSettings.KEY_REDEYE_REDUCTION, CameraSettings.KEY_SELFIE_MIRROR, - CameraSettings.KEY_SHUTTER_SOUND + CameraSettings.KEY_SHUTTER_SOUND, + CameraSettings.KEY_POWER_SHUTTER }; mOtherKeys2 = new String[] { @@ -214,6 +216,7 @@ public class PhotoMenu extends MenuController CameraSettings.KEY_QC_CHROMA_FLASH, CameraSettings.KEY_FOCUS_MODE, CameraSettings.KEY_REDEYE_REDUCTION, + CameraSettings.KEY_POWER_SHUTTER, CameraSettings.KEY_AUTO_HDR, CameraSettings.KEY_HDR_MODE, CameraSettings.KEY_HDR_NEED_1X, diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index 2938a5c43..8afc9daa2 100755 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2012 The Android Open Source Project + * Copyright (C) 2013-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. @@ -578,6 +579,10 @@ public class PhotoModule CameraSettings.upgradeLocalPreferences(mPreferences.getLocal()); mUI = new PhotoUI(activity, this, parent); + + // Power shutter + mActivity.initPowerShutter(mPreferences); + if (mOpenCameraThread == null) { mOpenCameraThread = new OpenCameraThread(); mOpenCameraThread.start(); @@ -2645,6 +2650,9 @@ public class PhotoModule // (e.g. onResume -> onPause -> onResume). stopPreview(); + // Load the power shutter + mActivity.initPowerShutter(mPreferences); + mNamedImages = null; if (mLocationManager != null) mLocationManager.recordLocation(false); @@ -2794,6 +2802,9 @@ public class PhotoModule @Override public boolean onKeyDown(int keyCode, KeyEvent event) { + /*TODO: if (!mActivity.mShowCameraAppView) { + return false; + }*/ switch (keyCode) { case KeyEvent.KEYCODE_VOLUME_UP: if (/*TODO: mActivity.isInCameraApp() &&*/ mFirstTimeInitialized @@ -2831,12 +2842,21 @@ public class PhotoModule mUI.pressShutterButton(); } return true; + case KeyEvent.KEYCODE_POWER: + if (mFirstTimeInitialized && event.getRepeatCount() == 0 + && CameraActivity.mPowerShutter) { + onShutterButtonFocus(true); + } + return true; } return false; } @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: @@ -2846,6 +2866,11 @@ public class PhotoModule onShutterButtonFocus(false); } return true; + case KeyEvent.KEYCODE_POWER: + if (CameraActivity.mPowerShutter && mFirstTimeInitialized) { + onShutterButtonClick(); + } + return true; } return false; } @@ -4843,6 +4868,7 @@ public class PhotoModule setCameraParametersWhenIdle(UPDATE_PARAM_PREFERENCE); mUI.updateOnScreenIndicators(mParameters, mPreferenceGroup, mPreferences); + mActivity.initPowerShutter(mPreferences); } else { mHandler.sendEmptyMessage(SET_PHOTO_UI_PARAMS); } diff --git a/src/com/android/camera/VideoMenu.java b/src/com/android/camera/VideoMenu.java index e891ce7af..29d22ac85 100644 --- a/src/com/android/camera/VideoMenu.java +++ b/src/com/android/camera/VideoMenu.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2012 The Android Open Source Project + * Copyright (C) 2013-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. @@ -117,7 +118,8 @@ public class VideoMenu extends MenuController CameraSettings.KEY_EXPOSURE, CameraSettings.KEY_WHITE_BALANCE, CameraSettings.KEY_VIDEO_HIGH_FRAME_RATE, - CameraSettings.KEY_DIS + CameraSettings.KEY_DIS, + CameraSettings.KEY_POWER_SHUTTER }; mOtherKeys2 = new String[] { CameraSettings.KEY_VIDEOCAMERA_FLASH_MODE, @@ -128,6 +130,7 @@ public class VideoMenu extends MenuController CameraSettings.KEY_WHITE_BALANCE, CameraSettings.KEY_FACE_DETECTION, CameraSettings.KEY_VIDEO_HIGH_FRAME_RATE, + CameraSettings.KEY_POWER_SHUTTER, CameraSettings.KEY_SEE_MORE, CameraSettings.KEY_NOISE_REDUCTION, CameraSettings.KEY_DIS, diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java index 44bf51351..df436106e 100644 --- a/src/com/android/camera/VideoModule.java +++ b/src/com/android/camera/VideoModule.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2012 The Android Open Source Project + * Copyright (C) 2013-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. @@ -505,6 +506,9 @@ public class VideoModule implements CameraModule, mOrientationManager = new OrientationManager(mActivity); + // Power shutter + mActivity.initPowerShutter(mPreferences); + /* * To reduce startup time, we start the preview in another thread. * We make sure the preview is started at the end of onCreate. @@ -1414,6 +1418,11 @@ public class VideoModule implements CameraModule, case KeyEvent.KEYCODE_CAMERA: mUI.pressShutter(false); return true; + case KeyEvent.KEYCODE_POWER: + if (CameraActivity.mPowerShutter) { + onShutterButtonClick(); + } + return true; } return false; } @@ -2916,6 +2925,7 @@ public class VideoModule implements CameraModule, Storage.setSaveSDCard( mPreferences.getString(CameraSettings.KEY_CAMERA_SAVEPATH, "0").equals("1")); mActivity.updateStorageSpaceAndHint(); + mActivity.initPowerShutter(mPreferences); } } |