AI 145679: Add picture size settings.
BUG=1761248
Automated import of CL 145679
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index b23d54f..c83124f 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -80,4 +80,18 @@
<item>mosaic</item>
</string-array>
+ <!-- Camera Preferences Picture size dialog box entries -->
+ <string-array name="pref_camera_picturesize_entries">
+ <item>@string/pref_camera_picturesize_entry_2048x1536</item>
+ <item>@string/pref_camera_picturesize_entry_1600x1200</item>
+ <item>@string/pref_camera_picturesize_entry_1024x768</item>
+ </string-array>
+
+ <!-- Do not localize entryvalues -->
+ <string-array name="pref_camera_picturesize_entryvalues">
+ <item>2048x1536</item>
+ <item>1600x1200</item>
+ <item>1024x768</item>
+ </string-array>
+
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1277e2b..f035219 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -321,7 +321,7 @@
<!-- Settings screen, Picture setting category title -->
<string name="pref_camera_picture_settings_category">Picture settings</string>
- <!-- Default video quality setting. Do not translate. -->
+ <!-- Default white balance setting. Do not translate. -->
<string name="pref_camera_whitebalance_default">auto</string>
<!-- Settings screen, Select White balance title -->
@@ -339,7 +339,7 @@
<!-- Settings screen, white balance dialog title -->
<string name="pref_camera_whitebalance_dialogtitle">White balance</string>
- <!-- Default video quality setting. Do not translate. -->
+ <!-- Default effect setting. Do not translate. -->
<string name="pref_camera_effect_default">off</string>
<!-- Settings screen, Select Effect title -->
@@ -361,6 +361,20 @@
<!-- Settings screen, effect dialog title -->
<string name="pref_camera_effect_dialogtitle">Effect</string>
+ <!-- Default picture size setting. Do not translate. -->
+ <string name="pref_camera_picturesize_default">2048x1536</string>
+
+ <!-- Settings screen, Select Picture size title -->
+ <string name="pref_camera_picturesize_title">Select picture size</string>
+
+ <!-- Settings screen, Picture size dialog radio button choices -->
+ <string name="pref_camera_picturesize_entry_2048x1536">3M (2048x1536)</string>
+ <string name="pref_camera_picturesize_entry_1600x1200">2M (1600x1200)</string>
+ <string name="pref_camera_picturesize_entry_1024x768">1M (1024x768)</string>
+
+ <!-- Settings screen, picture size dialog title -->
+ <string name="pref_camera_picturesize_dialogtitle">Picture size</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 28deff7..fe1b013 100644
--- a/res/xml/camera_preferences.xml
+++ b/res/xml/camera_preferences.xml
@@ -42,19 +42,24 @@
<PreferenceCategory
android:title="@string/pref_camera_picture_settings_category">
- <!-- android:summary, entries, entryValues are filled in by CameraSettings -->
+ <!-- summary, entries, entryValues are filled in by CameraSettings -->
<ListPreference
android:key="pref_camera_whitebalance_key"
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" />
+
+ <ListPreference
+ android:key="pref_camera_picturesize_key"
+ android:defaultValue="@string/pref_camera_picturesize_default"
+ android:title="@string/pref_camera_picturesize_title"
+ android:dialogTitle="@string/pref_camera_picturesize_dialogtitle" />
</PreferenceCategory>
</PreferenceScreen>
diff --git a/src/com/android/camera/Camera.java b/src/com/android/camera/Camera.java
index 4542029..b919f63 100644
--- a/src/com/android/camera/Camera.java
+++ b/src/com/android/camera/Camera.java
@@ -114,6 +114,7 @@
// 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_PICTURE_SIZE = "picture-size";
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";
@@ -122,6 +123,7 @@
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";
+ public static final String SUPPORTED_PICTURE_SIZE = "picture-size-values";
private OrientationEventListener mOrientationListener;
private int mLastOrientation = OrientationEventListener.ORIENTATION_UNKNOWN;
@@ -1388,6 +1390,12 @@
getString(R.string.pref_camera_effect_default));
mParameters.set(PARM_EFFECT, effect);
+ // Set picture size parameter.
+ String pictureSize = mPreferences.getString(
+ CameraSettings.KEY_PICTURE_SIZE,
+ getString(R.string.pref_camera_picturesize_default));
+ mParameters.set(PARM_PICTURE_SIZE, pictureSize);
+
try {
mCameraDevice.setParameters(mParameters);
} catch (IllegalArgumentException e) {
diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java
index fc87524..8d0075a 100644
--- a/src/com/android/camera/CameraSettings.java
+++ b/src/com/android/camera/CameraSettings.java
@@ -37,11 +37,13 @@
public static final String KEY_WHITE_BALANCE =
"pref_camera_whitebalance_key";
public static final String KEY_EFFECT = "pref_camera_effect_key";
+ public static final String KEY_PICTURE_SIZE = "pref_camera_picturesize_key";
public static final boolean DEFAULT_VIDEO_QUALITY_VALUE = true;
private ListPreference mVideoQuality;
private ListPreference mWhiteBalance;
private ListPreference mEffect;
+ private ListPreference mPictureSize;
private Parameters mParameters;
@Override
@@ -59,12 +61,14 @@
updateVideoQualitySummary();
updateWhiteBalanceSummary();
updateEffectSummary();
+ updatePictureSizeSummary();
}
private void initUI() {
mVideoQuality = (ListPreference) findPreference(KEY_VIDEO_QUALITY);
mWhiteBalance = (ListPreference) findPreference(KEY_WHITE_BALANCE);
mEffect = (ListPreference) findPreference(KEY_EFFECT);
+ mPictureSize = (ListPreference) findPreference(KEY_PICTURE_SIZE);
getPreferenceScreen().getSharedPreferences().
registerOnSharedPreferenceChangeListener(this);
@@ -82,13 +86,24 @@
createSettings(mEffect, Camera.SUPPORTED_EFFECT,
R.array.pref_camera_effect_entries,
R.array.pref_camera_effect_entryvalues);
+
+ // Create picture size settings.
+ createSettings(mPictureSize, Camera.SUPPORTED_PICTURE_SIZE,
+ R.array.pref_camera_picturesize_entries,
+ R.array.pref_camera_picturesize_entryvalues);
}
private void createSettings(
ListPreference pref, String paramName, int prefEntriesResId,
int prefEntryValuesResId) {
- // Get the supported parameter settings.
+ // Disable the preference if the parameter is not supported.
String supportedParamStr = mParameters.get(paramName);
+ if (supportedParamStr == null) {
+ pref.setEnabled(false);
+ return;
+ }
+
+ // Get the supported parameter settings.
StringTokenizer tokenizer = new StringTokenizer(supportedParamStr, ",");
ArrayList<CharSequence> supportedParam = new ArrayList<CharSequence>();
while (tokenizer.hasMoreElements()) {
@@ -127,15 +142,17 @@
}
private void updateWhiteBalanceSummary() {
- // Set preference summary.
mWhiteBalance.setSummary(mWhiteBalance.getEntry());
}
private void updateEffectSummary() {
- // Set preference summary.
mEffect.setSummary(mEffect.getEntry());
}
+ private void updatePictureSizeSummary() {
+ mPictureSize.setSummary(mPictureSize.getEntry());
+ }
+
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if (key.equals(KEY_VIDEO_QUALITY)) {
@@ -144,6 +161,8 @@
updateWhiteBalanceSummary();
} else if (key.equals(KEY_EFFECT)) {
updateEffectSummary();
+ } else if (key.equals(KEY_PICTURE_SIZE)) {
+ updatePictureSizeSummary();
}
}
}