summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2015-03-23 00:01:41 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2015-03-23 00:01:41 -0700
commit296f7e3ba95b666f5a0ba25aabbf070ae7adeef8 (patch)
tree64fb83d09cc1c4e72e2eb3fb520b496ad9441f7b /src
parent401ee1b3bb27ddb1dbc09e2a0d3b49d43f194457 (diff)
parentd4fb8ede04ff4a45301d3f6ea5fc2b271d464ab0 (diff)
downloadandroid_packages_apps_Snap-296f7e3ba95b666f5a0ba25aabbf070ae7adeef8.tar.gz
android_packages_apps_Snap-296f7e3ba95b666f5a0ba25aabbf070ae7adeef8.tar.bz2
android_packages_apps_Snap-296f7e3ba95b666f5a0ba25aabbf070ae7adeef8.zip
Merge "SnapdragonCamera: Add beautification feature to SnapdragonCamera."
Diffstat (limited to 'src')
-rw-r--r--src/com/android/camera/CameraSettings.java8
-rw-r--r--src/com/android/camera/ListPreference.java5
-rw-r--r--src/com/android/camera/PhotoMenu.java209
-rw-r--r--src/com/android/camera/PhotoModule.java88
-rw-r--r--src/com/android/camera/PhotoUI.java31
-rw-r--r--src/com/android/camera/ui/CameraControls.java123
6 files changed, 423 insertions, 41 deletions
diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java
index 5a4012a5f..fd7274e52 100644
--- a/src/com/android/camera/CameraSettings.java
+++ b/src/com/android/camera/CameraSettings.java
@@ -231,6 +231,14 @@ public class CameraSettings {
public static final String KEY_QC_SUPPORTED_MANUAL_EXPOSURE_MODES = "manual-exposure-modes";
public static final String KEY_QC_SUPPORTED_MANUAL_WB_MODES = "manual-wb-modes";
+ public static final String KEY_TS_MAKEUP_UILABLE = "pref_camera_tsmakeup_key";
+ public static final String KEY_TS_MAKEUP_PARAM = "tsmakeup"; // on/of
+ public static final String KEY_TS_MAKEUP_PARAM_WHITEN = "tsmakeup_whiten"; // 0~100
+ public static final String KEY_TS_MAKEUP_PARAM_CLEAN = "tsmakeup_clean"; // 0~100
+ public static final String KEY_TS_MAKEUP_LEVEL = "pref_camera_tsmakeup_level_key";
+ public static final String KEY_TS_MAKEUP_LEVEL_WHITEN = "pref_camera_tsmakeup_whiten";
+ public static final String KEY_TS_MAKEUP_LEVEL_CLEAN = "pref_camera_tsmakeup_clean";
+
public static final String EXPOSURE_DEFAULT_VALUE = "0";
public static final int CURRENT_VERSION = 5;
diff --git a/src/com/android/camera/ListPreference.java b/src/com/android/camera/ListPreference.java
index b856d460e..c79d18c1a 100644
--- a/src/com/android/camera/ListPreference.java
+++ b/src/com/android/camera/ListPreference.java
@@ -135,6 +135,11 @@ public class ListPreference extends CameraPreference {
persistStringValue(value);
}
+ public void setMakeupSeekBarValue(String value) {
+ mValue = value;
+ persistStringValue(value);
+ }
+
public void setValueIndex(int index) {
setValue(mEntryValues[index].toString());
}
diff --git a/src/com/android/camera/PhotoMenu.java b/src/com/android/camera/PhotoMenu.java
index 3bf0b3a88..1c8815845 100644
--- a/src/com/android/camera/PhotoMenu.java
+++ b/src/com/android/camera/PhotoMenu.java
@@ -20,12 +20,18 @@ import java.util.Locale;
import android.animation.Animator;
import android.animation.Animator.AnimatorListener;
+import android.app.Activity;
+import android.app.AlertDialog;
import android.content.Context;
+import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.hardware.Camera.Parameters;
import android.graphics.Rect;
+import android.os.Handler;
+import android.os.Message;
import android.preference.PreferenceManager;
+import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
@@ -42,6 +48,7 @@ import android.widget.FrameLayout;
import android.widget.FrameLayout.LayoutParams;
import com.android.camera.CameraPreference.OnPreferenceChangedListener;
+import com.android.camera.TsMakeupManager.MakeupLevelListener;
import com.android.camera.ui.CameraControls;
import com.android.camera.ui.CountdownTimerPopup;
import com.android.camera.ui.ListSubMenu;
@@ -74,14 +81,17 @@ public class PhotoMenu extends MenuController
private static final int POPUP_SECOND_LEVEL = 2;
private static final int POPUP_IN_ANIMATION_SLIDE = 3;
private static final int POPUP_IN_ANIMATION_FADE = 4;
+ private static final int POPUP_IN_MAKEUP = 5;
private static final int PREVIEW_MENU_NONE = 0;
private static final int PREVIEW_MENU_IN_ANIMATION = 1;
private static final int PREVIEW_MENU_ON = 2;
private static final int MODE_SCENE = 0;
private static final int MODE_FILTER = 1;
+ private static final int MODE_MAKEUP = 2;
private static final int DEVELOPER_MENU_TOUCH_COUNT = 10;
private int mSceneStatus;
private View mHdrSwitcher;
+ private View mTsMakeupSwitcher;
private View mFrontBackSwitcher;
private View mSceneModeSwitcher;
private View mFilterModeSwitcher;
@@ -97,8 +107,12 @@ public class PhotoMenu extends MenuController
private static final int ANIMATION_DURATION = 300;
private static final int CLICK_THRESHOLD = 200;
private int previewMenuSize;
+ private TsMakeupManager mTsMakeupManager;
+ private MakeupLevelListener mMakeupListener;
+ private MakeupHandler mHandler = new MakeupHandler();
+ private static final int MAKEUP_MESSAGE_ID = 0;
- public PhotoMenu(CameraActivity activity, PhotoUI ui) {
+ public PhotoMenu(CameraActivity activity, PhotoUI ui, MakeupLevelListener makeupListener) {
super(activity);
mUI = ui;
mSettingOff = activity.getString(R.string.setting_off_value);
@@ -106,8 +120,10 @@ public class PhotoMenu extends MenuController
mActivity = activity;
mFrontBackSwitcher = ui.getRootView().findViewById(R.id.front_back_switcher);
mHdrSwitcher = ui.getRootView().findViewById(R.id.hdr_switcher);
+ mTsMakeupSwitcher = ui.getRootView().findViewById(R.id.ts_makeup_switcher);
mSceneModeSwitcher = ui.getRootView().findViewById(R.id.scene_mode_switcher);
mFilterModeSwitcher = ui.getRootView().findViewById(R.id.filter_mode_switcher);
+ mMakeupListener = makeupListener;
}
public void initialize(PreferenceGroup group) {
@@ -120,19 +136,36 @@ public class PhotoMenu extends MenuController
Locale locale = res.getConfiguration().locale;
// The order is from left to right in the menu.
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ if(mTsMakeupManager != null) {
+ mTsMakeupManager.removeAllViews();
+ mTsMakeupManager = null;
+ }
+ if(mTsMakeupManager == null) {
+ mTsMakeupManager = new TsMakeupManager(mActivity, this, mUI, mPreferenceGroup, mTsMakeupSwitcher);
+ mTsMakeupManager.setMakeupLevelListener(mMakeupListener);
+ }
+ }
+
initSceneModeButton(mSceneModeSwitcher);
initFilterModeButton(mFilterModeSwitcher);
- mHdrSwitcher.setVisibility(View.INVISIBLE);
-
- mFrontBackSwitcher.setVisibility(View.INVISIBLE);
- // HDR.
- if (group.findPreference(CameraSettings.KEY_CAMERA_HDR) != null) {
- mHdrSwitcher.setVisibility(View.VISIBLE);
- initSwitchItem(CameraSettings.KEY_CAMERA_HDR, mHdrSwitcher);
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ initMakeupModeButton(mTsMakeupSwitcher);
} else {
mHdrSwitcher.setVisibility(View.INVISIBLE);
}
+ mFrontBackSwitcher.setVisibility(View.INVISIBLE);
+ if(!TsMakeupManager.HAS_TS_MAKEUP) {
+ // HDR.
+ if (group.findPreference(CameraSettings.KEY_CAMERA_HDR) != null) {
+ mHdrSwitcher.setVisibility(View.VISIBLE);
+ initSwitchItem(CameraSettings.KEY_CAMERA_HDR, mHdrSwitcher);
+ } else {
+ mHdrSwitcher.setVisibility(View.INVISIBLE);
+ }
+ }
+
mOtherKeys1 = new String[] {
CameraSettings.KEY_FLASH_MODE,
CameraSettings.KEY_RECORD_LOCATION,
@@ -191,6 +224,18 @@ public class PhotoMenu extends MenuController
initSwitchItem(CameraSettings.KEY_CAMERA_ID, mFrontBackSwitcher);
}
+ protected class MakeupHandler extends Handler {
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case MAKEUP_MESSAGE_ID:
+ mTsMakeupManager.showMakeupView();
+ mUI.adjustOrientation();
+ break;
+ }
+ }
+ }
+
@Override
// Hit when an item in a popup gets selected
public void onListPrefChanged(ListPreference pref) {
@@ -200,6 +245,14 @@ public class PhotoMenu extends MenuController
}
public boolean handleBackKey() {
+ if(TsMakeupManager.HAS_TS_MAKEUP && mTsMakeupManager.isShowMakeup()) {
+ mTsMakeupManager.dismissMakeupUI();
+ closeMakeupMode(true);
+ mTsMakeupManager.resetMakeupUIStatus();
+ mPopupStatus = POPUP_NONE;
+ mPreviewMenuStatus = PREVIEW_MENU_NONE;
+ return true;
+ }
if (mPreviewMenuStatus == PREVIEW_MENU_ON) {
animateSlideOut(mPreviewMenu);
return true;
@@ -219,6 +272,10 @@ public class PhotoMenu extends MenuController
mUI.removeSceneModeMenu();
}
+ public void closeMakeupMode(boolean isMakeup) {
+ mUI.removeSceneModeMenu();
+ }
+
public void tryToCloseSubList() {
if (mListMenu != null)
((ListMenu) mListMenu).resetHighlight();
@@ -379,6 +436,13 @@ public class PhotoMenu extends MenuController
}
public void animateSlideOutPreviewMenu() {
+ if(TsMakeupManager.HAS_TS_MAKEUP && mTsMakeupManager.isShowMakeup()) {
+ mPreviewMenuStatus = PREVIEW_MENU_NONE;
+ mTsMakeupManager.dismissMakeupUI();
+ closeMakeupMode(true);
+ mTsMakeupManager.resetMakeupUIStatus();
+ }
+
if (mPreviewMenu == null)
return;
animateSlideOut(mPreviewMenu);
@@ -601,8 +665,10 @@ public class PhotoMenu extends MenuController
mActivity.getString(R.string.pref_camera_advanced_feature_default));
popup1.setPreferenceEnabled(CameraSettings.KEY_ADVANCED_FEATURES, false);
- if (mHdrSwitcher.getVisibility() == View.VISIBLE) {
- buttonSetEnabled(mHdrSwitcher, true);
+ if(!TsMakeupManager.HAS_TS_MAKEUP) {
+ if (mHdrSwitcher.getVisibility() == View.VISIBLE) {
+ buttonSetEnabled(mHdrSwitcher, true);
+ }
}
} else {
if ((advancedFeatures != null) && (advancedFeatures.equals(ubiFocusOn) ||
@@ -622,12 +688,16 @@ public class PhotoMenu extends MenuController
popup1.setPreferenceEnabled(CameraSettings.KEY_SCENE_MODE, false);
setPreference(CameraSettings.KEY_CAMERA_HDR, mSettingOff);
- if (mHdrSwitcher.getVisibility() == View.VISIBLE) {
- buttonSetEnabled(mHdrSwitcher, false);
+ if(!TsMakeupManager.HAS_TS_MAKEUP) {
+ if (mHdrSwitcher.getVisibility() == View.VISIBLE) {
+ buttonSetEnabled(mHdrSwitcher, false);
+ }
}
} else {
- if (mHdrSwitcher.getVisibility() == View.VISIBLE) {
- buttonSetEnabled(mHdrSwitcher, true);
+ if(!TsMakeupManager.HAS_TS_MAKEUP) {
+ if (mHdrSwitcher.getVisibility() == View.VISIBLE) {
+ buttonSetEnabled(mHdrSwitcher, true);
+ }
}
}
}
@@ -688,6 +758,101 @@ public class PhotoMenu extends MenuController
});
}
+ public void initMakeupModeButton(View button) {
+ if(!TsMakeupManager.HAS_TS_MAKEUP) {
+ return;
+ }
+ button.setVisibility(View.INVISIBLE);
+ final IconListPreference pref = (IconListPreference) mPreferenceGroup
+ .findPreference(CameraSettings.KEY_TS_MAKEUP_UILABLE);
+ if (pref == null)
+ return;
+
+ int[] iconIds = pref.getLargeIconIds();
+ int resid = -1;
+ int index = pref.findIndexOfValue(pref.getValue());
+ if (!pref.getUseSingleIcon() && iconIds != null) {
+ // Each entry has a corresponding icon.
+ resid = iconIds[index];
+ } else {
+ // The preference only has a single icon to represent it.
+ resid = pref.getSingleIcon();
+ }
+ ImageView iv = (ImageView) mTsMakeupSwitcher;
+ iv.setImageResource(resid);
+
+ button.setVisibility(View.VISIBLE);
+
+ String makeupOn = pref.getValue();
+ Log.d(TAG, "PhotoMenu.initMakeupModeButton():current init makeupOn is " + makeupOn);
+
+ button.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ ListPreference faceDetectPref = mPreferenceGroup.findPreference(CameraSettings.KEY_FACE_DETECTION);
+ String faceDetection = (faceDetectPref != null) ? faceDetectPref.getValue() : null;
+ Log.d(TAG, "initMakeupModeButton().onClick(): faceDetection is " + faceDetection);
+ if ((faceDetection != null) && Parameters.FACE_DETECTION_OFF.equals(faceDetection)) {
+ showAlertDialog(faceDetectPref);
+ } else {
+ toggleMakeupSettings();
+ }
+ }
+ });
+ }
+
+ private void initMakeupMenu() {
+ if(!TsMakeupManager.HAS_TS_MAKEUP) {
+ return;
+ }
+ mPopupStatus = POPUP_NONE;
+ mHandler.removeMessages(MAKEUP_MESSAGE_ID);
+ mSceneStatus = MODE_MAKEUP;
+ mPreviewMenuStatus = PREVIEW_MENU_ON;
+ mHandler.sendEmptyMessageDelayed(MAKEUP_MESSAGE_ID, ANIMATION_DURATION);
+ }
+
+ private void showAlertDialog(final ListPreference faceDetectPref) {
+ if(mActivity.isFinishing()) {
+ return;
+ }
+ new AlertDialog.Builder(mActivity)
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .setMessage(R.string.text_tsmakeup_alert_msg)
+ .setPositiveButton(R.string.text_tsmakeup_alert_continue, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ toggleMakeupSettings();
+
+ faceDetectPref.setValue(Parameters.FACE_DETECTION_ON);
+ onSettingChanged(faceDetectPref);
+ }
+ })
+ .setNegativeButton(R.string.text_tsmakeup_alert_quit, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ }
+ })
+ .show();
+ }
+
+ private void toggleMakeupSettings() {
+ mUI.hideUI();
+ initMakeupMenu();
+ }
+
+ private void closeMakeup() {
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ if(mTsMakeupManager.isShowMakeup()) {
+ mTsMakeupManager.hideMakeupUI();
+ closeMakeupMode(false);
+ mPreviewMenuStatus = PREVIEW_MENU_NONE;
+ } else {
+ mTsMakeupManager.hideMakeupUI();
+ }
+ }
+ }
+
public void initSceneModeButton(View button) {
button.setVisibility(View.INVISIBLE);
final IconListPreference pref = (IconListPreference) mPreferenceGroup
@@ -850,6 +1015,8 @@ public class PhotoMenu extends MenuController
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
+ closeMakeup();
+
addFilterMode();
ViewGroup menuLayout = mUI.getPreviewMenuLayout();
if (menuLayout != null) {
@@ -963,14 +1130,24 @@ public class PhotoMenu extends MenuController
}
public void openFirstLevel() {
- if (isMenuBeingShown() || CameraControls.isAnimating())
+ if (isMenuBeingShown() || CameraControls.isAnimating()) {
return;
+ }
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ if(mTsMakeupManager.isShowMakeup()) {
+ mTsMakeupManager.dismissMakeupUI();
+ closeMakeupMode(false);
+ mPreviewMenuStatus = PREVIEW_MENU_NONE;
+ } else {
+ mTsMakeupManager.dismissMakeupUI();
+ }
+ mTsMakeupManager.resetMakeupUIStatus();
+ }
if (mListMenu == null || mPopupStatus != POPUP_FIRST_LEVEL) {
initializePopup();
mPopupStatus = POPUP_FIRST_LEVEL;
}
mUI.showPopup(mListMenu, 1, true);
-
}
public void popupDismissed(boolean dismissAll) {
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index 2a19306f7..3361187f6 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -66,6 +66,7 @@ import com.android.camera.CameraManager.CameraPictureCallback;
import com.android.camera.CameraManager.CameraProxy;
import com.android.camera.CameraManager.CameraShutterCallback;
import com.android.camera.PhotoModule.NamedImages.NamedEntity;
+import com.android.camera.TsMakeupManager.MakeupLevelListener;
import com.android.camera.exif.ExifInterface;
import com.android.camera.exif.ExifTag;
import com.android.camera.exif.Rational;
@@ -82,6 +83,7 @@ import android.widget.EditText;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.text.InputType;
+import android.text.TextUtils;
import com.android.internal.util.MemInfoReader;
import android.app.ActivityManager;
@@ -110,7 +112,7 @@ public class PhotoModule
ShutterButton.OnShutterButtonListener,
MediaSaveService.Listener,
OnCountDownFinishedListener,
- SensorEventListener {
+ SensorEventListener, MakeupLevelListener {
private static final String TAG = "CAM_PhotoModule";
@@ -688,7 +690,7 @@ public class PhotoModule
private void openCameraCommon() {
loadCameraPreferences();
- mUI.onCameraOpened(mPreferenceGroup, mPreferences, mParameters, this);
+ mUI.onCameraOpened(mPreferenceGroup, mPreferences, mParameters, this, this);
if (mIsImageCaptureIntent) {
mUI.overrideSettings(CameraSettings.KEY_CAMERA_HDR_PLUS,
mActivity.getString(R.string.setting_off_value));
@@ -3567,6 +3569,21 @@ public class PhotoModule
if (mContinuousFocusSupported && ApiHelper.HAS_AUTO_FOCUS_MOVE_CALLBACK) {
updateAutoFocusMoveCallback();
}
+
+ String makeupParamValue = mPreferences.getString(CameraSettings.KEY_TS_MAKEUP_UILABLE,
+ mActivity.getString(R.string.pref_camera_tsmakeup_default));
+ mParameters.set(CameraSettings.KEY_TS_MAKEUP_PARAM, makeupParamValue);
+ Log.v(TAG,"updateCameraParametersPreference(): TSMakeup " + CameraSettings.KEY_TS_MAKEUP_PARAM +" value = " + makeupParamValue);
+
+ if(TsMakeupManager.MAKEUP_ON.equals(makeupParamValue)) {
+ String makeupWhitenValue = mPreferences.getString(CameraSettings.KEY_TS_MAKEUP_LEVEL_WHITEN,
+ mActivity.getString(R.string.pref_camera_tsmakeup_level_default));
+ String makeupCleanValue = mPreferences.getString(CameraSettings.KEY_TS_MAKEUP_LEVEL_CLEAN,
+ mActivity.getString(R.string.pref_camera_tsmakeup_level_default));
+ mParameters.set(CameraSettings.KEY_TS_MAKEUP_PARAM_WHITEN, makeupWhitenValue);
+ mParameters.set(CameraSettings.KEY_TS_MAKEUP_PARAM_CLEAN, makeupCleanValue);
+ }
+
//QCom related parameters updated here.
qcomUpdateCameraParametersPreference();
return doGcamModeSwitch;
@@ -4355,6 +4372,73 @@ public class PhotoModule
public boolean isRefocus() {
return mLastPhotoTakenWithRefocus;
}
+
+ @Override
+ public void onMakeupLevel(String key, String value) {
+ Log.d(TAG, "PhotoModule.onMakeupLevel(): key is " + key + ", value is " + value);
+
+ if(TextUtils.isEmpty(value)) {
+ return;
+ }
+
+ String prefValue = TsMakeupManager.MAKEUP_ON;
+ if(TsMakeupManager.MAKEUP_OFF.equals(value)) {
+ prefValue = TsMakeupManager.MAKEUP_OFF;
+ }
+
+ Log.d(TAG, "onMakeupLevel(): prefValue is " + prefValue);
+ mParameters.set(CameraSettings.KEY_TS_MAKEUP_PARAM, prefValue);
+
+ if(!TextUtils.isDigitsOnly(value)) {
+ if(TsMakeupManager.MAKEUP_NONE.equals(value)) {
+ ListPreference pref = mPreferenceGroup.findPreference(CameraSettings.KEY_TS_MAKEUP_LEVEL_WHITEN);
+ if(pref != null) {
+ String whitenValue = pref.getValue();
+ if(TextUtils.isEmpty(whitenValue)) {
+ whitenValue = mActivity.getString(R.string.pref_camera_tsmakeup_level_default);
+ }
+ pref.setMakeupSeekBarValue(whitenValue);
+ mParameters.set(CameraSettings.KEY_TS_MAKEUP_PARAM_WHITEN, Integer.parseInt(whitenValue));
+ }
+
+ pref = mPreferenceGroup.findPreference(CameraSettings.KEY_TS_MAKEUP_LEVEL_CLEAN);
+ if(pref != null) {
+ String cleanValue = pref.getValue();
+ if(TextUtils.isEmpty(cleanValue)) {
+ cleanValue = mActivity.getString(R.string.pref_camera_tsmakeup_level_default);
+ }
+ pref.setMakeupSeekBarValue(cleanValue);
+ mParameters.set(CameraSettings.KEY_TS_MAKEUP_PARAM_CLEAN, Integer.parseInt(cleanValue));
+ }
+ }
+ } else {
+ if(CameraSettings.KEY_TS_MAKEUP_LEVEL.equals(key)) {
+ if(mParameters != null) {
+ mParameters.set(CameraSettings.KEY_TS_MAKEUP_PARAM_WHITEN, Integer.parseInt(value));
+ mParameters.set(CameraSettings.KEY_TS_MAKEUP_PARAM_CLEAN, Integer.parseInt(value));
+ }
+ ListPreference pref = mPreferenceGroup.findPreference(CameraSettings.KEY_TS_MAKEUP_LEVEL_WHITEN);
+ if(pref != null) {
+ pref.setMakeupSeekBarValue(value);
+ }
+ pref = mPreferenceGroup.findPreference(CameraSettings.KEY_TS_MAKEUP_LEVEL_CLEAN);
+ if(pref != null) {
+ pref.setMakeupSeekBarValue(value);
+ }
+ } else if(CameraSettings.KEY_TS_MAKEUP_LEVEL_WHITEN.equals(key)) {
+ if(mParameters != null) {
+ mParameters.set(CameraSettings.KEY_TS_MAKEUP_PARAM_WHITEN, Integer.parseInt(value));
+ }
+ } else if(CameraSettings.KEY_TS_MAKEUP_LEVEL_CLEAN.equals(key)) {
+ if(mParameters != null) {
+ mParameters.set(CameraSettings.KEY_TS_MAKEUP_PARAM_CLEAN, Integer.parseInt(value));
+ }
+ }
+ }
+
+ mCameraDevice.setParameters(mParameters);
+ mParameters = mCameraDevice.getParameters();
+ }
}
/* Below is no longer needed, except to get rid of compile error
diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java
index 3f2000cd9..65a822d74 100644
--- a/src/com/android/camera/PhotoUI.java
+++ b/src/com/android/camera/PhotoUI.java
@@ -56,6 +56,7 @@ import android.graphics.drawable.AnimationDrawable;
import com.android.camera.CameraPreference.OnPreferenceChangedListener;
import com.android.camera.FocusOverlayManager.FocusUI;
+import com.android.camera.TsMakeupManager.MakeupLevelListener;
import com.android.camera.ui.AbstractSettingPopup;
import com.android.camera.ui.CameraControls;
import com.android.camera.ui.CameraRootView;
@@ -144,6 +145,7 @@ public class PhotoUI implements PieListener,
private RotateLayout mMenuLayout;
private RotateLayout mSubMenuLayout;
private LinearLayout mPreviewMenuLayout;
+ private LinearLayout mMakeupMenuLayout;
private boolean mUIhidden = false;
private int mPreviewOrientation = -1;
@@ -471,7 +473,7 @@ public class PhotoUI implements PieListener,
}
public void onCameraOpened(PreferenceGroup prefGroup, ComboPreferences prefs,
- Camera.Parameters params, OnPreferenceChangedListener listener) {
+ Camera.Parameters params, OnPreferenceChangedListener listener, MakeupLevelListener makeupListener) {
if (mPieRenderer == null) {
mPieRenderer = new PieRenderer(mActivity);
mPieRenderer.setPieListener(this);
@@ -479,7 +481,7 @@ public class PhotoUI implements PieListener,
}
if (mMenu == null) {
- mMenu = new PhotoMenu(mActivity, this);
+ mMenu = new PhotoMenu(mActivity, this, makeupListener);
mMenu.setListener(listener);
}
mMenu.initialize(prefGroup);
@@ -798,6 +800,10 @@ public class PhotoUI implements PieListener,
return mPreviewMenuLayout;
}
+ public void setMakeupMenuLayout(LinearLayout layout) {
+ mMakeupMenuLayout = layout;
+ }
+
public void showPopup(ListView popup, int level, boolean animate) {
FrameLayout.LayoutParams params;
hideUI();
@@ -1267,6 +1273,27 @@ public class PhotoUI implements PieListener,
}
}
}
+ if(mMakeupMenuLayout != null) {
+ View view = mMakeupMenuLayout.getChildAt(0);
+ if(view instanceof RotateLayout) {
+ for(int i = mMakeupMenuLayout.getChildCount() -1; i >= 0; --i) {
+ RotateLayout l = (RotateLayout) mMakeupMenuLayout.getChildAt(i);
+ l.setOrientation(orientation, animation);
+ }
+ } else {
+ ViewGroup vg = (ViewGroup) mMakeupMenuLayout.getChildAt(1);
+ if(vg != null) {
+ for (int i = vg.getChildCount() - 1; i >= 0; --i) {
+ ViewGroup vewiGroup = (ViewGroup) vg.getChildAt(i);
+ if(vewiGroup instanceof RotateLayout) {
+ RotateLayout l = (RotateLayout) vewiGroup;
+ l.setOrientation(orientation, animation);
+ }
+ }
+ }
+ }
+
+ }
if (mCountDownView != null)
mCountDownView.setOrientation(orientation);
RotateTextToast.setOrientation(orientation);
diff --git a/src/com/android/camera/ui/CameraControls.java b/src/com/android/camera/ui/CameraControls.java
index 59222b929..c0defea06 100644
--- a/src/com/android/camera/ui/CameraControls.java
+++ b/src/com/android/camera/ui/CameraControls.java
@@ -42,6 +42,7 @@ import com.android.camera.ui.ModuleSwitcher;
import com.android.camera.ui.RotateImageView;
import com.android.camera.ShutterButton;
import com.android.camera.util.CameraUtil;
+import com.android.camera.TsMakeupManager;
public class CameraControls extends RotatableLayout {
@@ -53,6 +54,7 @@ public class CameraControls extends RotatableLayout {
private View mMenu;
private View mFrontBackSwitcher;
private View mHdrSwitcher;
+ private View mTsMakeupSwitcher;
private View mIndicators;
private View mPreview;
private View mSceneModeSwitcher;
@@ -66,6 +68,7 @@ public class CameraControls extends RotatableLayout {
private ArrayList<View> mViewList;
private static final int FRONT_BACK_INDEX = 0;
private static final int HDR_INDEX = 1;
+ private static final int TS_MAKEUP_INDEX = 1;
private static final int SCENE_MODE_INDEX = 2;
private static final int FILTER_MODE_INDEX = 3;
private static final int MENU_INDEX = 4;
@@ -104,7 +107,11 @@ public class CameraControls extends RotatableLayout {
resetLocation(0, 0);
mFrontBackSwitcher.setVisibility(View.INVISIBLE);
- mHdrSwitcher.setVisibility(View.INVISIBLE);
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ mTsMakeupSwitcher.setVisibility(View.INVISIBLE);
+ } else {
+ mHdrSwitcher.setVisibility(View.INVISIBLE);
+ }
mSceneModeSwitcher.setVisibility(View.INVISIBLE);
mFilterModeSwitcher.setVisibility(View.INVISIBLE);
@@ -122,7 +129,11 @@ public class CameraControls extends RotatableLayout {
resetLocation(0, 0);
mFrontBackSwitcher.setVisibility(View.INVISIBLE);
- mHdrSwitcher.setVisibility(View.INVISIBLE);
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ mTsMakeupSwitcher.setVisibility(View.INVISIBLE);
+ } else {
+ mHdrSwitcher.setVisibility(View.INVISIBLE);
+ }
mSceneModeSwitcher.setVisibility(View.INVISIBLE);
mFilterModeSwitcher.setVisibility(View.INVISIBLE);
@@ -188,7 +199,11 @@ public class CameraControls extends RotatableLayout {
mSwitcher.setPressed(false);
mMenu.setPressed(false);
mFrontBackSwitcher.setPressed(false);
- mHdrSwitcher.setPressed(false);
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ mTsMakeupSwitcher.setPressed(false);
+ } else {
+ mHdrSwitcher.setPressed(false);
+ }
mSceneModeSwitcher.setPressed(false);
mFilterModeSwitcher.setPressed(false);
} else {
@@ -198,7 +213,11 @@ public class CameraControls extends RotatableLayout {
((ModuleSwitcher) mSwitcher).enableTouch(enable);
mMenu.setEnabled(enable);
mFrontBackSwitcher.setEnabled(enable);
- mHdrSwitcher.setEnabled(enable);
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ mTsMakeupSwitcher.setEnabled(enable);
+ } else {
+ mHdrSwitcher.setEnabled(enable);
+ }
mSceneModeSwitcher.setEnabled(enable);
mPreview.setEnabled(enable);
mFilterModeSwitcher.setEnabled(enable && mTempEnabled[FILTER_MODE_INDEX]);
@@ -208,8 +227,13 @@ public class CameraControls extends RotatableLayout {
mViewList = new ArrayList<View>();
if (mFrontBackSwitcher.getVisibility() == View.VISIBLE)
mViewList.add(mFrontBackSwitcher);
- if (mHdrSwitcher.getVisibility() == View.VISIBLE)
- mViewList.add(mHdrSwitcher);
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ if (mTsMakeupSwitcher.getVisibility() == View.VISIBLE)
+ mViewList.add(mTsMakeupSwitcher);
+ } else {
+ if (mHdrSwitcher.getVisibility() == View.VISIBLE)
+ mViewList.add(mHdrSwitcher);
+ }
if (mSceneModeSwitcher.getVisibility() == View.VISIBLE)
mViewList.add(mSceneModeSwitcher);
if (mFilterModeSwitcher.getVisibility() == View.VISIBLE)
@@ -229,7 +253,11 @@ public class CameraControls extends RotatableLayout {
mSwitcher = findViewById(R.id.camera_switcher);
mShutter = findViewById(R.id.shutter_button);
mFrontBackSwitcher = findViewById(R.id.front_back_switcher);
- mHdrSwitcher = findViewById(R.id.hdr_switcher);
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ mTsMakeupSwitcher = findViewById(R.id.ts_makeup_switcher);
+ } else {
+ mHdrSwitcher = findViewById(R.id.hdr_switcher);
+ }
mMenu = findViewById(R.id.menu);
mIndicators = findViewById(R.id.on_screen_indicators);
mPreview = findViewById(R.id.preview_thumb);
@@ -307,7 +335,11 @@ public class CameraControls extends RotatableLayout {
toIndex(mIndicators, w, h, rotation, 0, 6, INDICATOR_INDEX);
toIndex(mFrontBackSwitcher, w, h, rotation, 2, 0, FRONT_BACK_INDEX);
toIndex(mPreview, w, h, rotation, 0, 6, PREVIEW_INDEX);
- toIndex(mHdrSwitcher, w, h, rotation, 3, 0, HDR_INDEX);
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ toIndex(mTsMakeupSwitcher, w, h, rotation, 3, 0, TS_MAKEUP_INDEX);
+ } else {
+ toIndex(mHdrSwitcher, w, h, rotation, 3, 0, HDR_INDEX);
+ }
toIndex(mFilterModeSwitcher, w, h, rotation, 1, 0, FILTER_MODE_INDEX);
toIndex(mSceneModeSwitcher, w, h, rotation, 0, 0, SCENE_MODE_INDEX);
layoutToast(mRefocusToast, w, h, rotation);
@@ -401,7 +433,11 @@ public class CameraControls extends RotatableLayout {
int idx1 = rotation / 90;
mFrontBackSwitcher.setX(mLocX[idx1][FRONT_BACK_INDEX] + x);
- mHdrSwitcher.setX(mLocX[idx1][HDR_INDEX] + x);
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ mTsMakeupSwitcher.setX(mLocX[idx1][TS_MAKEUP_INDEX] + x);
+ } else {
+ mHdrSwitcher.setX(mLocX[idx1][HDR_INDEX] + x);
+ }
mSceneModeSwitcher.setX(mLocX[idx1][SCENE_MODE_INDEX] + x);
mFilterModeSwitcher.setX(mLocX[idx1][FILTER_MODE_INDEX] + x);
mMenu.setX(mLocX[idx1][MENU_INDEX] + x);
@@ -411,7 +447,11 @@ public class CameraControls extends RotatableLayout {
mPreview.setX(mLocX[idx1][PREVIEW_INDEX] - x);
mFrontBackSwitcher.setY(mLocY[idx1][FRONT_BACK_INDEX] + y);
- mHdrSwitcher.setY(mLocY[idx1][HDR_INDEX] + y);
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ mTsMakeupSwitcher.setY(mLocY[idx1][TS_MAKEUP_INDEX] + y);
+ } else {
+ mHdrSwitcher.setY(mLocY[idx1][HDR_INDEX] + y);
+ }
mSceneModeSwitcher.setY(mLocY[idx1][SCENE_MODE_INDEX] + y);
mFilterModeSwitcher.setY(mLocY[idx1][FILTER_MODE_INDEX] + y);
mMenu.setY(mLocY[idx1][MENU_INDEX] + y);
@@ -426,7 +466,11 @@ public class CameraControls extends RotatableLayout {
enableTouch(false);
int rotation = getUnifiedRotation();
mFrontBackSwitcher.animate().cancel();
- mHdrSwitcher.animate().cancel();
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ mTsMakeupSwitcher.animate().cancel();
+ } else {
+ mHdrSwitcher.animate().cancel();
+ }
mSceneModeSwitcher.animate().cancel();
mFilterModeSwitcher.animate().cancel();
mSwitcher.animate().cancel();
@@ -441,7 +485,11 @@ public class CameraControls extends RotatableLayout {
switch (rotation) {
case 0:
mFrontBackSwitcher.animate().translationYBy(-mSize).setDuration(ANIME_DURATION);
- mHdrSwitcher.animate().translationYBy(-mSize).setDuration(ANIME_DURATION);
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ mTsMakeupSwitcher.animate().translationYBy(-mSize).setDuration(ANIME_DURATION);
+ } else {
+ mHdrSwitcher.animate().translationYBy(-mSize).setDuration(ANIME_DURATION);
+ }
mSceneModeSwitcher.animate().translationYBy(-mSize).setDuration(ANIME_DURATION);
mFilterModeSwitcher.animate().translationYBy(-mSize).setDuration(ANIME_DURATION);
mMenu.animate().translationYBy(-mSize).setDuration(ANIME_DURATION);
@@ -453,7 +501,11 @@ public class CameraControls extends RotatableLayout {
break;
case 90:
mFrontBackSwitcher.animate().translationXBy(-mSize).setDuration(ANIME_DURATION);
- mHdrSwitcher.animate().translationXBy(-mSize).setDuration(ANIME_DURATION);
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ mTsMakeupSwitcher.animate().translationXBy(-mSize).setDuration(ANIME_DURATION);
+ } else {
+ mHdrSwitcher.animate().translationXBy(-mSize).setDuration(ANIME_DURATION);
+ }
mSceneModeSwitcher.animate().translationXBy(-mSize).setDuration(ANIME_DURATION);
mFilterModeSwitcher.animate().translationXBy(-mSize).setDuration(ANIME_DURATION);
mMenu.animate().translationXBy(-mSize).setDuration(ANIME_DURATION);
@@ -465,7 +517,11 @@ public class CameraControls extends RotatableLayout {
break;
case 180:
mFrontBackSwitcher.animate().translationYBy(mSize).setDuration(ANIME_DURATION);
- mHdrSwitcher.animate().translationYBy(mSize).setDuration(ANIME_DURATION);
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ mTsMakeupSwitcher.animate().translationYBy(mSize).setDuration(ANIME_DURATION);
+ } else {
+ mHdrSwitcher.animate().translationYBy(mSize).setDuration(ANIME_DURATION);
+ }
mSceneModeSwitcher.animate().translationYBy(mSize).setDuration(ANIME_DURATION);
mFilterModeSwitcher.animate().translationYBy(mSize).setDuration(ANIME_DURATION);
mMenu.animate().translationYBy(mSize).setDuration(ANIME_DURATION);
@@ -477,7 +533,11 @@ public class CameraControls extends RotatableLayout {
break;
case 270:
mFrontBackSwitcher.animate().translationXBy(mSize).setDuration(ANIME_DURATION);
- mHdrSwitcher.animate().translationXBy(mSize).setDuration(ANIME_DURATION);
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ mTsMakeupSwitcher.animate().translationXBy(mSize).setDuration(ANIME_DURATION);
+ } else {
+ mHdrSwitcher.animate().translationXBy(mSize).setDuration(ANIME_DURATION);
+ }
mSceneModeSwitcher.animate().translationXBy(mSize).setDuration(ANIME_DURATION);
mFilterModeSwitcher.animate().translationXBy(mSize).setDuration(ANIME_DURATION);
mMenu.animate().translationXBy(mSize).setDuration(ANIME_DURATION);
@@ -497,7 +557,11 @@ public class CameraControls extends RotatableLayout {
enableTouch(false);
int rotation = getUnifiedRotation();
mFrontBackSwitcher.animate().cancel();
- mHdrSwitcher.animate().cancel();
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ mTsMakeupSwitcher.animate().cancel();
+ } else {
+ mHdrSwitcher.animate().cancel();
+ }
mSceneModeSwitcher.animate().cancel();
mFilterModeSwitcher.animate().cancel();
mSwitcher.animate().cancel();
@@ -524,7 +588,11 @@ public class CameraControls extends RotatableLayout {
resetLocation(0, -mSize);
mFrontBackSwitcher.animate().translationYBy(mSize).setDuration(ANIME_DURATION);
- mHdrSwitcher.animate().translationYBy(mSize).setDuration(ANIME_DURATION);
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ mTsMakeupSwitcher.animate().translationYBy(mSize).setDuration(ANIME_DURATION);
+ } else {
+ mHdrSwitcher.animate().translationYBy(mSize).setDuration(ANIME_DURATION);
+ }
mSceneModeSwitcher.animate().translationYBy(mSize).setDuration(ANIME_DURATION);
mFilterModeSwitcher.animate().translationYBy(mSize).setDuration(ANIME_DURATION);
mMenu.animate().translationYBy(mSize).setDuration(ANIME_DURATION);
@@ -538,7 +606,11 @@ public class CameraControls extends RotatableLayout {
resetLocation(-mSize, 0);
mFrontBackSwitcher.animate().translationXBy(mSize).setDuration(ANIME_DURATION);
- mHdrSwitcher.animate().translationXBy(mSize).setDuration(ANIME_DURATION);
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ mTsMakeupSwitcher.animate().translationXBy(mSize).setDuration(ANIME_DURATION);
+ } else {
+ mHdrSwitcher.animate().translationXBy(mSize).setDuration(ANIME_DURATION);
+ }
mSceneModeSwitcher.animate().translationXBy(mSize).setDuration(ANIME_DURATION);
mFilterModeSwitcher.animate().translationXBy(mSize).setDuration(ANIME_DURATION);
mMenu.animate().translationXBy(mSize).setDuration(ANIME_DURATION);
@@ -552,7 +624,11 @@ public class CameraControls extends RotatableLayout {
resetLocation(0, mSize);
mFrontBackSwitcher.animate().translationYBy(-mSize).setDuration(ANIME_DURATION);
- mHdrSwitcher.animate().translationYBy(-mSize).setDuration(ANIME_DURATION);
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ mTsMakeupSwitcher.animate().translationYBy(-mSize).setDuration(ANIME_DURATION);
+ } else {
+ mHdrSwitcher.animate().translationYBy(-mSize).setDuration(ANIME_DURATION);
+ }
mSceneModeSwitcher.animate().translationYBy(-mSize).setDuration(ANIME_DURATION);
mFilterModeSwitcher.animate().translationYBy(-mSize).setDuration(ANIME_DURATION);
mMenu.animate().translationYBy(-mSize).setDuration(ANIME_DURATION);
@@ -566,7 +642,11 @@ public class CameraControls extends RotatableLayout {
resetLocation(mSize, 0);
mFrontBackSwitcher.animate().translationXBy(-mSize).setDuration(ANIME_DURATION);
- mHdrSwitcher.animate().translationXBy(-mSize).setDuration(ANIME_DURATION);
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ mTsMakeupSwitcher.animate().translationXBy(-mSize).setDuration(ANIME_DURATION);
+ } else {
+ mHdrSwitcher.animate().translationXBy(-mSize).setDuration(ANIME_DURATION);
+ }
mSceneModeSwitcher.animate().translationXBy(-mSize).setDuration(ANIME_DURATION);
mFilterModeSwitcher.animate().translationXBy(-mSize).setDuration(ANIME_DURATION);
mMenu.animate().translationXBy(-mSize).setDuration(ANIME_DURATION);
@@ -827,7 +907,8 @@ public class CameraControls extends RotatableLayout {
mOrientation = orientation;
View[] views = {
mSceneModeSwitcher, mFilterModeSwitcher, mFrontBackSwitcher,
- mHdrSwitcher, mMenu, mShutter, mPreview, mSwitcher
+ TsMakeupManager.HAS_TS_MAKEUP ? mTsMakeupSwitcher : mHdrSwitcher,
+ mMenu, mShutter, mPreview, mSwitcher
};
for (View v : views) {
((RotateImageView) v).setOrientation(orientation, animation);