summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Bestas <mikeioannina@gmail.com>2014-01-20 20:40:32 +0200
committerChippa-a <vusal1372@gmail.com>2019-10-25 15:55:25 +0300
commitbfdc1037c805a57dc067a2084e6a20edacbf9e81 (patch)
treedce2ff16df48b7a0317e47b835b714b1c0177f4b
parentf5fcd13376b152d2ddfa5860f49f1ac9d6eb096a (diff)
downloadandroid_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.xml1
-rw-r--r--res/values/cm_arrays.xml27
-rw-r--r--res/values/cm_strings.xml4
-rwxr-xr-xres/xml/camera_preferences.xml6
-rwxr-xr-xres/xml/video_preferences.xml6
-rwxr-xr-xsrc/com/android/camera/CameraActivity.java16
-rwxr-xr-xsrc/com/android/camera/CameraSettings.java4
-rwxr-xr-xsrc/com/android/camera/ComboPreferences.java4
-rw-r--r--src/com/android/camera/PhotoMenu.java5
-rwxr-xr-xsrc/com/android/camera/PhotoModule.java26
-rw-r--r--src/com/android/camera/VideoMenu.java5
-rw-r--r--src/com/android/camera/VideoModule.java10
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);
}
}