summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/values/qcomarrays.xml10
-rw-r--r--res/values/qcomstrings.xml10
-rw-r--r--res/xml/camera_preferences.xml8
-rw-r--r--src/com/android/camera/CameraSettings.java22
-rw-r--r--src/com/android/camera/PhotoMenu.java1
-rw-r--r--src/com/android/camera/PhotoModule.java60
6 files changed, 105 insertions, 6 deletions
diff --git a/res/values/qcomarrays.xml b/res/values/qcomarrays.xml
index e078477ba..c4c7be482 100644
--- a/res/values/qcomarrays.xml
+++ b/res/values/qcomarrays.xml
@@ -831,5 +831,15 @@
<item>@drawable/ic_settings_filter</item>
<item>@drawable/ic_settings_filter_on</item>
</string-array>
+
+ <string-array name="pref_camera_instant_capture_entries" translatable="true">
+ <item>@string/pref_camera_instant_capture_entry_enable</item>
+ <item>@string/pref_camera_instant_capture_entry_disable</item>
+ </string-array>
+
+ <string-array name="pref_camera_instant_capture_entry_values" translatable="false">
+ <item>@string/pref_camera_instant_capture_value_enable</item>
+ <item>@string/pref_camera_instant_capture_value_disable</item>
+ </string-array>
</resources>
diff --git a/res/values/qcomstrings.xml b/res/values/qcomstrings.xml
index 94b89a010..e724dbb8c 100644
--- a/res/values/qcomstrings.xml
+++ b/res/values/qcomstrings.xml
@@ -200,6 +200,16 @@
<string name="pref_camera_manual_focus_value_diopter_mode">diopter-mode</string>
<string name="pref_camera_manual_focus_value_off">off</string>
+ <!-- Instant Capture entry -->
+ <string name="pref_camera_instant_capture_title" translatable="true">Instant Capture</string>
+ <string name="pref_camera_instant_capture_entry_enable" translatable="true">Enable</string>
+ <string name="pref_camera_instant_capture_entry_disable" translatable="true">Disable</string>
+
+ <!-- Instant Capture entry values -->
+ <string name="pref_camera_instant_capture_default" translatable="false">0</string>
+ <string name="pref_camera_instant_capture_value_enable" translatable="false">1</string>
+ <string name="pref_camera_instant_capture_value_disable" translatable="false">0</string>
+
<!-- Settings screen, ZSL location dialog choices -->
<string name="pref_camera_zsl_entry_off">Off</string>
<string name="pref_camera_zsl_entry_on">On</string>
diff --git a/res/xml/camera_preferences.xml b/res/xml/camera_preferences.xml
index 8a0668fa0..a0d06f59f 100644
--- a/res/xml/camera_preferences.xml
+++ b/res/xml/camera_preferences.xml
@@ -358,4 +358,12 @@
camera:title="@string/pref_camera_manual_focus_title"
camera:entries="@array/pref_camera_manual_focus_entries"
camera:entryValues="@array/pref_camera_manual_focus_entry_values" />
+
+ <ListPreference
+ camera:key="pref_camera_instant_capture_key"
+ camera:defaultValue="@string/pref_camera_instant_capture_default"
+ camera:title="@string/pref_camera_instant_capture_title"
+ camera:entries="@array/pref_camera_instant_capture_entries"
+ camera:entryValues="@array/pref_camera_instant_capture_entry_values" />
+
</PreferenceGroup>
diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java
index 180a46097..5ad62b413 100644
--- a/src/com/android/camera/CameraSettings.java
+++ b/src/com/android/camera/CameraSettings.java
@@ -123,6 +123,7 @@ public class CameraSettings {
public static final String KEY_DIS = "pref_camera_dis_key";
public static final String KEY_LONGSHOT = "pref_camera_longshot_key";
+ public static final String KEY_INSTANT_CAPTURE = "pref_camera_instant_capture_key";
private static final String KEY_QC_SUPPORTED_AE_BRACKETING_MODES = "ae-bracket-hdr-values";
private static final String KEY_QC_SUPPORTED_AF_BRACKETING_MODES = "af-bracket-values";
@@ -165,6 +166,7 @@ public class CameraSettings {
public static final String KEY_VIDEO_HSR = "video-hsr";
public static final String KEY_QC_SEE_MORE_MODE = "see-more";
public static final String KEY_QC_NOISE_REDUCTION_MODE = "noise-reduction-mode";
+ public static final String KEY_QC_INSTANT_CAPTURE = "instant-capture";
public static final String KEY_INTERNAL_PREVIEW_RESTART = "internal-restart";
public static final String KEY_QC_ZSL_HDR_SUPPORTED = "zsl-hdr-supported";
@@ -662,6 +664,13 @@ public class CameraSettings {
ListPreference manualFocus = group.findPreference(KEY_MANUAL_FOCUS);
ListPreference manualExposure = group.findPreference(KEY_MANUAL_EXPOSURE);
ListPreference manualWB = group.findPreference(KEY_MANUAL_WB);
+ ListPreference instantCapture = group.findPreference(KEY_INSTANT_CAPTURE);
+
+ if (instantCapture != null) {
+ if (!isInstantCaptureSupported(mParameters)) {
+ removePreference(group, instantCapture.getKey());
+ }
+ }
if (hdr_need_1x != null) {
filterUnsupportedOptions(group,
@@ -1385,4 +1394,17 @@ public class CameraSettings {
return split(str);
}
+ public static boolean isInstantCaptureSupported(Parameters params) {
+ boolean ret = false;
+ if (null != params) {
+ // TODO: need to uncomment this code once get parameter
+ // is supported
+ //String val = params.get(KEY_QC_INSTANT_CAPTURE);
+ //if (null != val) {
+ ret = true;
+ //}
+ }
+ return ret;
+ }
+
}
diff --git a/src/com/android/camera/PhotoMenu.java b/src/com/android/camera/PhotoMenu.java
index 2e90e825b..2309ce988 100644
--- a/src/com/android/camera/PhotoMenu.java
+++ b/src/com/android/camera/PhotoMenu.java
@@ -226,6 +226,7 @@ public class PhotoMenu extends MenuController
CameraSettings.KEY_DENOISE,
CameraSettings.KEY_ADVANCED_FEATURES,
CameraSettings.KEY_AE_BRACKET_HDR,
+ CameraSettings.KEY_INSTANT_CAPTURE,
CameraSettings.KEY_MANUAL_EXPOSURE,
CameraSettings.KEY_MANUAL_WB,
CameraSettings.KEY_MANUAL_FOCUS
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index b844dc833..5a71814a7 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -195,7 +195,7 @@ public class PhotoModule
private boolean mLongshotSave = false;
private boolean mRefocus = false;
private boolean mLastPhotoTakenWithRefocus = false;
-
+ private boolean mInstantCaptureSnapShot = false;
private int mLongShotCaptureCount;
private int mLongShotCaptureCountLimit;
@@ -1248,6 +1248,14 @@ public class PhotoModule
public void onPictureTaken(final byte [] jpegData, CameraProxy camera) {
mUI.stopSelfieFlash();
mUI.enableShutter(true);
+ if (mInstantCaptureSnapShot == true) {
+ Log.v(TAG, "Instant capture picture taken!");
+ mInstantCaptureSnapShot = false;
+
+ // When take picture request is sent before starting preview, onPreviewFrame()
+ // callback doesn't happen so removing preview cover here, instead.
+ mUI.hidePreviewCover();
+ }
if (mPaused) {
return;
}
@@ -2337,7 +2345,7 @@ public class PhotoModule
mInitialParams = mParameters;
if (mFocusManager == null) initializeFocusManager();
initializeCapabilities();
- mHandler.sendEmptyMessageDelayed(CAMERA_OPEN_DONE,100);
+ mHandler.sendEmptyMessageDelayed(CAMERA_OPEN_DONE, 100);
return;
}
@@ -2351,11 +2359,18 @@ public class PhotoModule
if (MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA.equals(action)
|| MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE.equals(action)) {
Log.v(TAG, "On resume, from lock screen.");
+
// Note: onPauseAfterSuper() will delete this runnable, so we will
// at most have 1 copy queued up.
mHandler.postDelayed(new Runnable() {
public void run() {
onResumeTasks();
+
+ // Check if there is a need to take a snapshot without
+ // waiting for the shutter click
+ if (isInstantCaptureEnabled()) {
+ mInstantCaptureSnapShot = true;
+ }
}
}, ON_RESUME_TASKS_DELAY_MSEC);
} else {
@@ -2369,9 +2384,9 @@ public class PhotoModule
mRefocusSound = mSoundPool.load(mActivity, R.raw.camera_click_x5, 1);
}
- mHandler.post(new Runnable(){
+ mHandler.post(new Runnable() {
@Override
- public void run(){
+ public void run() {
mActivity.updateStorageSpaceAndHint();
updateRemainingPhotos();
}
@@ -2825,13 +2840,14 @@ public class PhotoModule
setDisplayOrientation();
- if (!mSnapshotOnIdle) {
+ if (!mSnapshotOnIdle && !mInstantCaptureSnapShot) {
// If the focus mode is continuous autofocus, call cancelAutoFocus to
// resume it because it may have been paused by autoFocus call.
if (CameraUtil.FOCUS_MODE_CONTINUOUS_PICTURE.equals(mFocusManager.getFocusMode())) {
mCameraDevice.cancelAutoFocus();
}
} else {
+ Log.v(TAG, "Trigger snapshot from start preview.");
mHandler.post(mDoSnapRunnable);
}
}
@@ -2897,6 +2913,17 @@ public class PhotoModule
return mRestartPreview;
}
+ private boolean isInstantCaptureEnabled() {
+ String instantCapture = mPreferences.getString(
+ CameraSettings.KEY_INSTANT_CAPTURE,
+ mActivity.getString(R.string.pref_camera_instant_capture_default));
+ if (instantCapture.equals(mActivity.getString(
+ R.string.pref_camera_instant_capture_value_enable))) {
+ return true;
+ }
+ return false;
+ }
+
private void qcomUpdateAdvancedFeatures(String ubiFocus,
String chromaFlash,
String reFocus,
@@ -3177,6 +3204,23 @@ public class PhotoModule
mParameters.set(CameraSettings.KEY_SNAPCAM_HDR_NEED_1X, hdrNeed1x);
}
+ // Set Instant Capture
+ String instantCapture = mPreferences.getString(
+ CameraSettings.KEY_INSTANT_CAPTURE,
+ mActivity.getString(R.string.pref_camera_instant_capture_default));
+
+ if (instantCapture.equals(mActivity.getString(
+ R.string.pref_camera_instant_capture_value_enable))) {
+ if (!mInstantCaptureSnapShot) {
+ // Disable instant capture after first snapshot is taken
+ instantCapture = mActivity.getString(
+ R.string.pref_camera_instant_capture_value_disable);
+ }
+ }
+ Log.v(TAG, "Instant capture = " + instantCapture + ", mInstantCaptureSnapShot = "
+ + mInstantCaptureSnapShot);
+ mParameters.set(CameraSettings.KEY_QC_INSTANT_CAPTURE, instantCapture);
+
// Set Advanced features.
String advancedFeature = mPreferences.getString(
CameraSettings.KEY_ADVANCED_FEATURES,
@@ -3798,7 +3842,11 @@ public class PhotoModule
}
// Set focus mode.
- if ((mManual3AEnabled & MANUAL_FOCUS) == 0) {
+ if (mInstantCaptureSnapShot == true) {
+ Log.v(TAG, "Change the focuse mode to "+ Parameters.FOCUS_MODE_INFINITY);
+ mFocusManager.overrideFocusMode(Parameters.FOCUS_MODE_INFINITY);
+ mParameters.setFocusMode(Parameters.FOCUS_MODE_INFINITY);
+ } else if ((mManual3AEnabled & MANUAL_FOCUS) == 0) {
mFocusManager.overrideFocusMode(null);
mParameters.setFocusMode(mFocusManager.getFocusMode());
}