Set focus mode to camera driver and add macro focus.
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 6d25637..4687088 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -72,11 +72,13 @@
<string-array name="pref_camera_focusmode_entries" translatable="false">
<item>@string/pref_camera_focusmode_entry_auto</item>
<item>@string/pref_camera_focusmode_entry_infinity</item>
+ <item>@string/pref_camera_focusmode_entry_macro</item>
</string-array>
<string-array name="pref_camera_focusmode_entryvalues" translatable="false">
<item>auto</item>
<item>infinity</item>
+ <item>macro</item>
</string-array>
<!-- Camera Preferences flash mode dialog box entries -->
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 96ae1aa..ecdd5f5 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -394,6 +394,7 @@
<!-- Settings screen, Focue mode dialog radio button choices -->
<string name="pref_camera_focusmode_entry_auto">Auto</string>
<string name="pref_camera_focusmode_entry_infinity">Infinity</string>
+ <string name="pref_camera_focusmode_entry_macro">Macro</string>
<!-- Settings screen, focus mode dialog title -->
<string name="pref_camera_focusmode_dialogtitle">Focus mode</string>
diff --git a/src/com/android/camera/Camera.java b/src/com/android/camera/Camera.java
index fd50cd3..5b543df 100644
--- a/src/com/android/camera/Camera.java
+++ b/src/com/android/camera/Camera.java
@@ -1398,8 +1398,8 @@
}
private void doFocus(boolean pressed) {
- // Do the focus if the mode is auto. No focus needed in infinity mode.
- if (mFocusMode.equals(CameraSettings.VALUE_FOCUS_AUTO)) {
+ // Do the focus if the mode is not infinity.
+ if (!mFocusMode.equals(CameraSettings.VALUE_FOCUS_INFINITY)) {
if (pressed) { // Focus key down.
autoFocus();
} else { // Focus key up.
@@ -1623,7 +1623,8 @@
// Set flash mode.
if (mParameters.getSupportedFlashModes() != null) {
String flashMode = mPreferences.getString(
- CameraSettings.KEY_FLASH_MODE, "auto");
+ CameraSettings.KEY_FLASH_MODE,
+ getString(R.string.pref_camera_flashmode_default));
mParameters.setFlashMode(flashMode);
}
@@ -1651,6 +1652,15 @@
mParameters.setSceneMode(sceneMode);
}
+ // Set focus mode.
+ // TODO: use camera parameters API after it is finished.
+ if (mParameters.get("focus-mode-values") != null) {
+ mFocusMode = mPreferences.getString(
+ CameraSettings.KEY_FOCUS_MODE,
+ getString(R.string.pref_camera_focusmode_default));
+ mParameters.set("focus-mode", mFocusMode);
+ }
+
mCameraDevice.setParameters(mParameters);
}
@@ -1839,44 +1849,17 @@
// ignore the events after "onPause()"
if (mPausing) return;
- if (CameraSettings.KEY_FLASH_MODE.equals(key)) {
- mParameters.setFlashMode(preferences.getString(key, "auto"));
- mCameraDevice.setParameters(mParameters);
- } else if (CameraSettings.KEY_FOCUS_MODE.equals(key)) {
- mFocusMode = preferences.getString(key,
- getString(R.string.pref_camera_focusmode_default));
- } else if (CameraSettings.KEY_PICTURE_SIZE.equals(key)) {
- String pictureSize = preferences.getString(key,
- getString(R.string.pref_camera_picturesize_default));
- setCameraPictureSizeIfSupported(pictureSize);
- mCameraDevice.setParameters(mParameters);
- } else if (CameraSettings.KEY_JPEG_QUALITY.equals(key)) {
- String jpegQuality = preferences.getString(key,
- getString(R.string.pref_camera_jpegquality_default));
- mParameters.setJpegQuality(Integer.parseInt(jpegQuality));
- mCameraDevice.setParameters(mParameters);
- } else if (CameraSettings.KEY_RECORD_LOCATION.equals(key)) {
+ if (CameraSettings.KEY_RECORD_LOCATION.equals(key)) {
mRecordLocation = preferences.getBoolean(key, false);
if (mRecordLocation) {
startReceivingLocationUpdates();
} else {
stopReceivingLocationUpdates();
}
- } else if (CameraSettings.KEY_COLOR_EFFECT.equals(key)) {
- String colorEffect = preferences.getString(key,
- getString(R.string.pref_camera_coloreffect_default));
- mParameters.setColorEffect(colorEffect);
- mCameraDevice.setParameters(mParameters);
- } else if (CameraSettings.KEY_WHITE_BALANCE.equals(key)) {
- String whiteBalance = preferences.getString(key,
- getString(R.string.pref_camera_whitebalance_default));
- mParameters.setWhiteBalance(whiteBalance);
- mCameraDevice.setParameters(mParameters);
- } else if (CameraSettings.KEY_SCENE_MODE.equals(key)) {
- String sceneMode = preferences.getString(key,
- getString(R.string.pref_camera_scenemode_default));
- mParameters.setSceneMode(sceneMode);
- mCameraDevice.setParameters(mParameters);
+ } else {
+ // All preferences except RECORD_LOCATION are camera parameters.
+ // Call setCameraParameters to take effect now.
+ setCameraParameters();
}
}
diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java
index d26a801..905c134 100644
--- a/src/com/android/camera/CameraSettings.java
+++ b/src/com/android/camera/CameraSettings.java
@@ -35,6 +35,7 @@
"pref_camera_whitebalance_key";
public static final String KEY_SCENE_MODE = "pref_camera_scenemode_key";
+ // TODO: use camera parameters API after it is finished.
public static final String VALUE_FOCUS_INFINITY = "infinity";
public static final String VALUE_FOCUS_AUTO = "auto";