summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/values/arrays.xml34
-rw-r--r--res/values/strings.xml24
-rw-r--r--res/xml/camera_preferences.xml7
-rw-r--r--src/com/android/camera/Camera.java9
-rw-r--r--src/com/android/camera/CameraSettings.java143
5 files changed, 141 insertions, 76 deletions
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 6e1b69a..b23d54f 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -32,8 +32,8 @@
<string-array name="pref_camera_whitebalance_entries">
<item>@string/pref_camera_whitebalance_entry_auto</item>
<item>@string/pref_camera_whitebalance_entry_incandescent</item>
- <item>@string/pref_camera_whitebalance_entry_fluorescent</item>
<item>@string/pref_camera_whitebalance_entry_daylight</item>
+ <item>@string/pref_camera_whitebalance_entry_fluorescent</item>
<item>@string/pref_camera_whitebalance_entry_cloudy</item>
<item>@string/pref_camera_whitebalance_entry_twilight</item>
<item>@string/pref_camera_whitebalance_entry_shade</item>
@@ -43,11 +43,41 @@
<string-array name="pref_camera_whitebalance_entryvalues">
<item>auto</item>
<item>incandescent</item>
- <item>fluorescent</item>
<item>daylight</item>
+ <item>fluorescent</item>
<item>cloudy</item>
<item>twilight</item>
<item>shade</item>
</string-array>
+ <!-- Camera Preferences Effect dialog box entries -->
+ <string-array name="pref_camera_effect_entries">
+ <item>@string/pref_camera_effect_entry_off</item>
+ <item>@string/pref_camera_effect_entry_mono</item>
+ <item>@string/pref_camera_effect_entry_sepia</item>
+ <item>@string/pref_camera_effect_entry_negative</item>
+ <item>@string/pref_camera_effect_entry_solarize</item>
+ <item>@string/pref_camera_effect_entry_posterize</item>
+ <item>@string/pref_camera_effect_entry_whiteboard</item>
+ <item>@string/pref_camera_effect_entry_blackboard</item>
+ <item>@string/pref_camera_effect_entry_aqua</item>
+ <item>@string/pref_camera_effect_entry_pastel</item>
+ <item>@string/pref_camera_effect_entry_mosaic</item>
+ </string-array>
+
+ <!-- Do not localize entryvalues -->
+ <string-array name="pref_camera_effect_entryvalues">
+ <item>off</item>
+ <item>mono</item>
+ <item>sepia</item>
+ <item>negative</item>
+ <item>solarize</item>
+ <item>posterize</item>
+ <item>whiteboard</item>
+ <item>blackboard</item>
+ <item>aqua</item>
+ <item>pastel</item>
+ <item>mosaic</item>
+ </string-array>
+
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index eac2129..1277e2b 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -330,8 +330,8 @@
<!-- Settings screen, White balance dialog radio button choices -->
<string name="pref_camera_whitebalance_entry_auto">Auto</string>
<string name="pref_camera_whitebalance_entry_incandescent">Incandescent</string>
- <string name="pref_camera_whitebalance_entry_fluorescent">Fluorescent</string>
<string name="pref_camera_whitebalance_entry_daylight">Daylight</string>
+ <string name="pref_camera_whitebalance_entry_fluorescent">Fluorescent</string>
<string name="pref_camera_whitebalance_entry_cloudy">Cloudy</string>
<string name="pref_camera_whitebalance_entry_twilight">Twilight</string>
<string name="pref_camera_whitebalance_entry_shade">Shade</string>
@@ -339,6 +339,28 @@
<!-- Settings screen, white balance dialog title -->
<string name="pref_camera_whitebalance_dialogtitle">White balance</string>
+ <!-- Default video quality setting. Do not translate. -->
+ <string name="pref_camera_effect_default">off</string>
+
+ <!-- Settings screen, Select Effect title -->
+ <string name="pref_camera_effect_title">Select effect</string>
+
+ <!-- Settings screen, Effect dialog radio button choices -->
+ <string name="pref_camera_effect_entry_off">Off</string>
+ <string name="pref_camera_effect_entry_mono">Mono</string>
+ <string name="pref_camera_effect_entry_sepia">Sepia</string>
+ <string name="pref_camera_effect_entry_negative">Negative</string>
+ <string name="pref_camera_effect_entry_solarize">Solarize</string>
+ <string name="pref_camera_effect_entry_posterize">Posterize</string>
+ <string name="pref_camera_effect_entry_whiteboard">Whiteboard</string>
+ <string name="pref_camera_effect_entry_blackboard">Blackboard</string>
+ <string name="pref_camera_effect_entry_aqua">Aqua</string>
+ <string name="pref_camera_effect_entry_pastel">Pastel</string>
+ <string name="pref_camera_effect_entry_mosaic">Mosaic</string>
+
+ <!-- Settings screen, effect dialog title -->
+ <string name="pref_camera_effect_dialogtitle">Effect</string>
+
<!-- Menu item to go to the settings screen -->
<string name="camerasettings">Settings</string>
diff --git a/res/xml/camera_preferences.xml b/res/xml/camera_preferences.xml
index 7716562..28deff7 100644
--- a/res/xml/camera_preferences.xml
+++ b/res/xml/camera_preferences.xml
@@ -48,6 +48,13 @@
android:defaultValue="@string/pref_camera_whitebalance_default"
android:title="@string/pref_camera_whitebalance_title"
android:dialogTitle="@string/pref_camera_whitebalance_dialogtitle" />
+
+ <!-- android:summary, entries, entryValues are filled in by CameraSettings -->
+ <ListPreference
+ android:key="pref_camera_effect_key"
+ android:defaultValue="@string/pref_camera_effect_default"
+ android:title="@string/pref_camera_effect_title"
+ android:dialogTitle="@string/pref_camera_effect_dialogtitle" />
</PreferenceCategory>
</PreferenceScreen>
diff --git a/src/com/android/camera/Camera.java b/src/com/android/camera/Camera.java
index 767f80b..85a0884 100644
--- a/src/com/android/camera/Camera.java
+++ b/src/com/android/camera/Camera.java
@@ -105,12 +105,15 @@ public class Camera extends Activity implements View.OnClickListener,
// The parameter strings to communicate with camera driver.
public static final String PARM_WHITE_BALANCE = "whitebalance";
+ public static final String PARM_EFFECT = "effect";
public static final String PARM_JPEG_QUALITY = "jpeg-quality";
public static final String PARM_ROTATION = "rotation";
public static final String PARM_GPS_LATITUDE = "gps-latitude";
public static final String PARM_GPS_LONGITUDE = "gps-longitude";
public static final String PARM_GPS_ALTITUDE = "gps-altitude";
public static final String PARM_GPS_TIMESTAMP = "gps-timestamp";
+ public static final String SUPPORTED_WHITE_BALANCE = "whitebalance-values";
+ public static final String SUPPORTED_EFFECT = "effect-values";
private OrientationEventListener mOrientationListener;
private int mLastOrientation = OrientationEventListener.ORIENTATION_UNKNOWN;
@@ -1320,6 +1323,12 @@ public class Camera extends Activity implements View.OnClickListener,
getString(R.string.pref_camera_whitebalance_default));
mParameters.set(PARM_WHITE_BALANCE, whiteBalance);
+ // Set effect parameter.
+ String effect = mPreferences.getString(
+ CameraSettings.KEY_EFFECT,
+ getString(R.string.pref_camera_effect_default));
+ mParameters.set(PARM_EFFECT, effect);
+
try {
mCameraDevice.setParameters(mParameters);
} catch (IllegalArgumentException e) {
diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java
index 13952b8..4d0ca21 100644
--- a/src/com/android/camera/CameraSettings.java
+++ b/src/com/android/camera/CameraSettings.java
@@ -16,138 +16,135 @@
package com.android.camera;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
-import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.PreferenceActivity;
-
-import java.util.ArrayList;
-import java.util.StringTokenizer;
+import android.util.Log;
/**
* CameraSettings
*/
public class CameraSettings extends PreferenceActivity
- implements OnSharedPreferenceChangeListener
-{
- public static final String KEY_VIDEO_QUALITY = "pref_camera_videoquality_key";
- public static final String KEY_WHITE_BALANCE = "pref_camera_whitebalance_key";
+ implements OnSharedPreferenceChangeListener {
+ public static final String KEY_VIDEO_QUALITY =
+ "pref_camera_videoquality_key";
+ public static final String KEY_WHITE_BALANCE =
+ "pref_camera_whitebalance_key";
+ public static final String KEY_EFFECT = "pref_camera_effect_key";
public static final boolean DEFAULT_VIDEO_QUALITY_VALUE = true;
private ListPreference mVideoQuality;
private ListPreference mWhiteBalance;
+ private ListPreference mEffect;
private Parameters mParameters;
- public CameraSettings()
- {
- }
-
/** Called with the activity is first created. */
@Override
- public void onCreate(Bundle icicle)
- {
+ public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.camera_preferences);
initUI();
-
- // Get parameters.
- android.hardware.Camera device = android.hardware.Camera.open();
- mParameters = device.getParameters();
- device.release();
-
- createWhiteBalanceSettings();
}
@Override
protected void onResume() {
super.onResume();
- updateVideoQuality();
- updateWhiteBalance();
+ updateVideoQualitySummary();
+ updateWhiteBalanceSummary();
+ updateEffectSummary();
}
private void initUI() {
mVideoQuality = (ListPreference) findPreference(KEY_VIDEO_QUALITY);
mWhiteBalance = (ListPreference) findPreference(KEY_WHITE_BALANCE);
- getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
- }
+ mEffect = (ListPreference) findPreference(KEY_EFFECT);
+ getPreferenceScreen().getSharedPreferences().
+ registerOnSharedPreferenceChangeListener(this);
+
+ // Get parameters.
+ android.hardware.Camera device = android.hardware.Camera.open();
+ mParameters = device.getParameters();
+ device.release();
+
+ // Create white balance settings.
+ createSettings(mWhiteBalance, Camera.SUPPORTED_WHITE_BALANCE,
+ R.array.pref_camera_whitebalance_entries,
+ R.array.pref_camera_whitebalance_entryvalues);
- private void updateVideoQuality() {
- boolean vidQualityValue = getBooleanPreference(mVideoQuality, DEFAULT_VIDEO_QUALITY_VALUE);
- int vidQualityIndex = vidQualityValue ? 1 : 0;
- String[] vidQualities =
- getResources().getStringArray(R.array.pref_camera_videoquality_entries);
- String vidQuality = vidQualities[vidQualityIndex];
- mVideoQuality.setSummary(vidQuality);
+ // Create effect settings.
+ createSettings(mEffect, Camera.SUPPORTED_EFFECT,
+ R.array.pref_camera_effect_entries,
+ R.array.pref_camera_effect_entryvalues);
}
- private void createWhiteBalanceSettings() {
- // Get the supported white balance settings.
- String supportedWbStr = mParameters.get("whitebalance-values");
- StringTokenizer tokenizer = new StringTokenizer(supportedWbStr, ",");
- ArrayList<CharSequence> supportedWb = new ArrayList<CharSequence>();
+ private void createSettings(
+ ListPreference pref, String paramName, int prefEntriesResId,
+ int prefEntryValuesResId) {
+ // Get the supported parameter settings.
+ String supportedParamStr = mParameters.get(paramName);
+ StringTokenizer tokenizer = new StringTokenizer(supportedParamStr, ",");
+ ArrayList<CharSequence> supportedParam = new ArrayList<CharSequence>();
while (tokenizer.hasMoreElements()) {
- supportedWb.add(tokenizer.nextToken());
+ supportedParam.add(tokenizer.nextToken());
}
- // Prepare white balance entries and entry values.
- String[] allWbEntries = getResources().getStringArray(
- R.array.pref_camera_whitebalance_entries);
- String[] allWbEntryValues = getResources().getStringArray(
- R.array.pref_camera_whitebalance_entryvalues);
- ArrayList<CharSequence> wbEntries = new ArrayList<CharSequence>();
- ArrayList<CharSequence> wbEntryValues = new ArrayList<CharSequence>();
- for (int i = 0, len = allWbEntryValues.length; i < len; i++) {
- int found = supportedWb.indexOf(allWbEntryValues[i]);
+ // Prepare setting entries and entry values.
+ String[] allEntries = getResources().getStringArray(prefEntriesResId);
+ String[] allEntryValues = getResources().getStringArray(
+ prefEntryValuesResId);
+ ArrayList<CharSequence> entries = new ArrayList<CharSequence>();
+ ArrayList<CharSequence> entryValues = new ArrayList<CharSequence>();
+ for (int i = 0, len = allEntryValues.length; i < len; i++) {
+ int found = supportedParam.indexOf(allEntryValues[i]);
if (found != -1) {
- wbEntries.add(allWbEntries[i]);
- wbEntryValues.add(allWbEntryValues[i]);
+ entries.add(allEntries[i]);
+ entryValues.add(allEntryValues[i]);
}
}
- // Set white balance entries and entry values to list preference.
- mWhiteBalance.setEntries(wbEntries.toArray(
- new CharSequence[wbEntries.size()]));
- mWhiteBalance.setEntryValues(wbEntryValues.toArray(
- new CharSequence[wbEntryValues.size()]));
+ // Set entries and entry values to list preference.
+ pref.setEntries(entries.toArray(new CharSequence[entries.size()]));
+ pref.setEntryValues(entryValues.toArray(
+ new CharSequence[entryValues.size()]));
- String value = mWhiteBalance.getValue();
- int index = mWhiteBalance.findIndexOfValue(value);
+ // Set the value to the first entry if it is invalid.
+ String value = pref.getValue();
+ int index = pref.findIndexOfValue(value);
if (index == -1) {
- mWhiteBalance.setValueIndex(0);
+ pref.setValueIndex(0);
}
}
- private void updateWhiteBalance() {
- // Set preference summary.
- mWhiteBalance.setSummary(mWhiteBalance.getEntry());
+ private void updateVideoQualitySummary() {
+ mVideoQuality.setSummary(mVideoQuality.getEntry());
}
- private static int getIntPreference(ListPreference preference, int defaultValue) {
- String s = preference.getValue();
- int result = defaultValue;
- try {
- result = Integer.parseInt(s);
- } catch (NumberFormatException e) {
- // Ignore, result is already the default value.
- }
- return result;
+ private void updateWhiteBalanceSummary() {
+ // Set preference summary.
+ mWhiteBalance.setSummary(mWhiteBalance.getEntry());
}
- private boolean getBooleanPreference(ListPreference preference, boolean defaultValue) {
- return getIntPreference(preference, defaultValue ? 1 : 0) != 0;
+ private void updateEffectSummary() {
+ // Set preference summary.
+ mEffect.setSummary(mEffect.getEntry());
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if (key.equals(KEY_VIDEO_QUALITY)) {
- updateVideoQuality();
+ updateVideoQualitySummary();
} else if (key.equals(KEY_WHITE_BALANCE)) {
- updateWhiteBalance();
+ updateWhiteBalanceSummary();
+ } else if (key.equals(KEY_EFFECT)) {
+ updateEffectSummary();
}
}
}