summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2014-07-07 14:25:12 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2014-07-07 14:25:12 -0700
commiteeb5e3156844c9e04697641597876a8e63775cc6 (patch)
treeeb6cae2c54e16b7742b4415c47709200846ac7c5 /src
parentef4d2a2a11595417bf078863b1689a80c904cc47 (diff)
parentde5dd90a48875ed84371da6eb4354826a3b429e2 (diff)
downloadandroid_packages_apps_Snap-eeb5e3156844c9e04697641597876a8e63775cc6.tar.gz
android_packages_apps_Snap-eeb5e3156844c9e04697641597876a8e63775cc6.tar.bz2
android_packages_apps_Snap-eeb5e3156844c9e04697641597876a8e63775cc6.zip
Merge "Camera: Initial Refocus support"
Diffstat (limited to 'src')
-rw-r--r--src/com/android/camera/CameraSettings.java13
-rw-r--r--src/com/android/camera/PhotoModule.java41
-rw-r--r--src/com/android/camera/util/CameraUtil.java43
3 files changed, 85 insertions, 12 deletions
diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java
index 481677cc6..5e24ced13 100644
--- a/src/com/android/camera/CameraSettings.java
+++ b/src/com/android/camera/CameraSettings.java
@@ -110,12 +110,16 @@ public class CameraSettings {
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";
+ private static final String KEY_QC_SUPPORTED_RE_FOCUS_MODES = "re-focus-values";
private static final String KEY_QC_SUPPORTED_CF_MODES = "chroma-flash-values";
private static final String KEY_QC_SUPPORTED_OZ_MODES = "opti-zoom-values";
private static final String KEY_QC_SUPPORTED_FACE_RECOGNITION_MODES = "face-recognition-values";
private static final String KEY_QC_SUPPORTED_DIS_MODES = "dis-values";
public static final String KEY_QC_AE_BRACKETING = "ae-bracket-hdr";
public static final String KEY_QC_AF_BRACKETING = "af-bracket";
+ public static final String KEY_QC_RE_FOCUS = "re-focus";
+ public static final int KEY_QC_RE_FOCUS_COUNT = 7;
+ public static final String KEY_QC_LEGACY_BURST = "snapshot-burst-num";
public static final String KEY_QC_CHROMA_FLASH = "chroma-flash";
public static final String KEY_QC_OPTI_ZOOM = "opti-zoom";
public static final String KEY_QC_FACE_RECOGNITION = "face-recognition";
@@ -269,6 +273,7 @@ public class CameraSettings {
str += ',' + params.get(KEY_QC_SUPPORTED_CF_MODES);
str += ',' + params.get(KEY_QC_SUPPORTED_OZ_MODES);
str += ',' + mContext.getString(R.string.pref_camera_advanced_feature_default);
+ str += ',' + params.get(KEY_QC_SUPPORTED_RE_FOCUS_MODES);
return split(str);
}
@@ -296,6 +301,14 @@ public class CameraSettings {
return split(str);
}
+ public static List<String> getSupportedRefocusModes(Parameters params) {
+ String str = params.get(KEY_QC_SUPPORTED_RE_FOCUS_MODES);
+ if (str == null) {
+ return null;
+ }
+ return split(str);
+ }
+
// Splits a comma delimited string to an ArrayList of String.
// Return null if the passing string is null or the size is 0.
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index 456349826..9f0f3aefd 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -185,6 +185,7 @@ public class PhotoModule
private boolean mContinuousFocusSupported;
private boolean mTouchAfAecFlag;
private boolean mLongshotSave = false;
+ private boolean mRefocus = false;
// The degrees of the device rotated clockwise from its natural orientation.
private int mOrientation = OrientationEventListener.ORIENTATION_UNKNOWN;
@@ -1123,7 +1124,7 @@ public class PhotoModule
if (!mIsImageCaptureIntent) {
// Burst snapshot. Generate new image name.
if (mReceivedSnapNum > 1)
- mNamedImages.nameNewImage(mCaptureStartTime);
+ mNamedImages.nameNewImage(mCaptureStartTime, mRefocus);
// Calculate the width and the height of the jpeg.
Size s = mParameters.getPictureSize();
@@ -1326,6 +1327,13 @@ public class PhotoModule
mQueue.add(r);
}
+ public void nameNewImage(long date, boolean refocus) {
+ NamedEntity r = new NamedEntity();
+ r.title = CameraUtil.createJpegName(date, refocus);
+ r.date = date;
+ mQueue.add(r);
+ }
+
public NamedEntity getNextNameEntity() {
synchronized(mQueue) {
if (!mQueue.isEmpty()) {
@@ -1415,6 +1423,14 @@ public class PhotoModule
loc = mLocationManager.getCurrentLocation();
}
CameraUtil.setGpsParameters(mParameters, loc);
+
+ if (mRefocus) {
+ mParameters.set(CameraSettings.KEY_QC_LEGACY_BURST,
+ CameraSettings.KEY_QC_RE_FOCUS_COUNT);
+ } else {
+ mParameters.remove(CameraSettings.KEY_QC_LEGACY_BURST);
+ }
+
mCameraDevice.setParameters(mParameters);
mParameters = mCameraDevice.getParameters();
@@ -1452,7 +1468,7 @@ public class PhotoModule
setCameraState(SNAPSHOT_IN_PROGRESS);
}
- mNamedImages.nameNewImage(mCaptureStartTime);
+ mNamedImages.nameNewImage(mCaptureStartTime, mRefocus);
if (mSnapshotMode != CameraInfo.CAMERA_SUPPORT_MODE_ZSL) {
mFaceDetectionStarted = false;
@@ -2417,6 +2433,7 @@ public class PhotoModule
private void qcomUpdateAdvancedFeatures(String ubiFocus,
String chromaFlash,
+ String reFocus,
String optiZoom) {
if (CameraUtil.isSupported(ubiFocus,
CameraSettings.getSupportedAFBracketingModes(mParameters))) {
@@ -2430,6 +2447,10 @@ public class PhotoModule
CameraSettings.getSupportedOptiZoomModes(mParameters))) {
mParameters.set(CameraSettings.KEY_QC_OPTI_ZOOM, optiZoom);
}
+ if (CameraUtil.isSupported(reFocus,
+ CameraSettings.getSupportedRefocusModes(mParameters))) {
+ mParameters.set(CameraSettings.KEY_QC_RE_FOCUS, reFocus);
+ }
}
private void qcomUpdateCameraParametersPreference() {
//qcom Related Parameter update
@@ -2588,8 +2609,9 @@ public class PhotoModule
String advancedFeature = mPreferences.getString(
CameraSettings.KEY_ADVANCED_FEATURES,
mActivity.getString(R.string.pref_camera_advanced_feature_default));
- Log.v(TAG, " advancedFeature value =" + advancedFeature);
+ Log.e(TAG, " advancedFeature value =" + advancedFeature);
+ mRefocus = false;
if(advancedFeature != null) {
String ubiFocusOff = mActivity.getString(R.string.
pref_camera_advanced_feature_value_ubifocus_off);
@@ -2597,25 +2619,38 @@ public class PhotoModule
pref_camera_advanced_feature_value_chromaflash_off);
String optiZoomOff = mActivity.getString(R.string.
pref_camera_advanced_feature_value_optizoom_off);
+ String reFocusOff = mActivity.getString(R.string.
+ pref_camera_advanced_feature_value_refocus_off);
if (advancedFeature.equals(mActivity.getString(R.string.
pref_camera_advanced_feature_value_ubifocus_on))) {
qcomUpdateAdvancedFeatures(advancedFeature,
chromaFlashOff,
+ reFocusOff,
optiZoomOff);
} else if (advancedFeature.equals(mActivity.getString(R.string.
pref_camera_advanced_feature_value_chromaflash_on))) {
qcomUpdateAdvancedFeatures(ubiFocusOff,
advancedFeature,
+ reFocusOff,
+ optiZoomOff);
+ } else if (advancedFeature.equals(mActivity.getString(R.string.
+ pref_camera_advanced_feature_value_refocus_on))) {
+ qcomUpdateAdvancedFeatures(ubiFocusOff,
+ chromaFlashOff,
+ advancedFeature,
optiZoomOff);
+ mRefocus = true;
} else if (advancedFeature.equals(mActivity.getString(R.string.
pref_camera_advanced_feature_value_optizoom_on))) {
qcomUpdateAdvancedFeatures(ubiFocusOff,
chromaFlashOff,
+ reFocusOff,
advancedFeature);
} else {
qcomUpdateAdvancedFeatures(ubiFocusOff,
chromaFlashOff,
+ reFocusOff,
optiZoomOff);
}
}
diff --git a/src/com/android/camera/util/CameraUtil.java b/src/com/android/camera/util/CameraUtil.java
index d90b52552..bb7639f9f 100644
--- a/src/com/android/camera/util/CameraUtil.java
+++ b/src/com/android/camera/util/CameraUtil.java
@@ -720,9 +720,15 @@ public class CameraUtil {
matrix.setConcat(mapping, matrix);
}
+ public static String createJpegName(long dateTaken, boolean refocus) {
+ synchronized (sImageFileNamer) {
+ return sImageFileNamer.generateName(dateTaken, refocus);
+ }
+ }
+
public static String createJpegName(long dateTaken) {
synchronized (sImageFileNamer) {
- return sImageFileNamer.generateName(dateTaken);
+ return sImageFileNamer.generateName(dateTaken, false);
}
}
@@ -903,6 +909,12 @@ public class CameraUtil {
private static class ImageFileNamer {
private final SimpleDateFormat mFormat;
+ private final int REFOCUS_DEPTHMAP_IDX = 5;
+ private final String REFOCUS_DEPTHMAP_SUFFIX = "DepthMap";
+ private final int REFOCUS_ALLFOCUS_IDX = 6;
+ private final String REFOCUS_ALLFOCUS_SUFFIX = "Allfocus";
+ private int mRefocusIdx = 0;
+
// The date (in milliseconds) used to generate the last name.
private long mLastDate;
@@ -913,18 +925,31 @@ public class CameraUtil {
mFormat = new SimpleDateFormat(format);
}
- public String generateName(long dateTaken) {
+ public String generateName(long dateTaken, boolean refocus) {
Date date = new Date(dateTaken);
String result = mFormat.format(date);
- // If the last name was generated for the same second,
- // we append _1, _2, etc to the name.
- if (dateTaken / 1000 == mLastDate / 1000) {
- mSameSecondCount++;
- result += "_" + mSameSecondCount;
+ if (refocus) {
+ if (mRefocusIdx == REFOCUS_DEPTHMAP_IDX) {
+ result += "_" + REFOCUS_DEPTHMAP_SUFFIX;
+ mRefocusIdx++;
+ } else if (mRefocusIdx == REFOCUS_ALLFOCUS_IDX) {
+ result += "_" + REFOCUS_ALLFOCUS_SUFFIX;
+ mRefocusIdx = 0;
+ } else {
+ result += "_" + mRefocusIdx;
+ mRefocusIdx++;
+ }
} else {
- mLastDate = dateTaken;
- mSameSecondCount = 0;
+ // If the last name was generated for the same second,
+ // we append _1, _2, etc to the name.
+ if (dateTaken / 1000 == mLastDate / 1000) {
+ mSameSecondCount++;
+ result += "_" + mSameSecondCount;
+ } else {
+ mLastDate = dateTaken;
+ mSameSecondCount = 0;
+ }
}
return result;