OSDN Git Service

Add metering mode support.
authorWu-cheng Li <wuchengli@google.com>
Fri, 4 Jun 2010 06:18:16 +0000 (14:18 +0800)
committerWu-cheng Li <wuchengli@google.com>
Fri, 11 Jun 2010 06:57:07 +0000 (14:57 +0800)
Change-Id: I8b964df4534da0b393479baddabfc85ce1b09b2f

res/values/arrays.xml
res/values/strings.xml
res/xml/camera_preferences.xml
src/com/android/camera/Camera.java
src/com/android/camera/CameraSettings.java
src/com/android/camera/ui/CameraHeadUpDisplay.java

index 2299935..473fb47 100644 (file)
     <string-array name="pref_camera_quickcapture_entryvalues" translatable="false">
         <item>off</item>
         <item>on</item>
+      </string-array>
+
+    <!-- Camera Preferences metering mode dialog box entries -->
+    <string-array name="pref_camera_meteringmode_entries" translatable="false">
+        <item>@string/pref_camera_meteringmode_entry_center_weighted</item>
+        <item>@string/pref_camera_meteringmode_entry_spot</item>
+        <item>@string/pref_camera_meteringmode_entry_frame_average</item>
+    </string-array>
+
+    <string-array name="pref_camera_meteringmode_entryvalues" translatable="false">
+        <item>center-weighted</item>
+        <item>frame-average</item>
+        <item>spot</item>
     </string-array>
 </resources>
index 1bfe813..dea9ea5 100644 (file)
     <!-- Settings screen, Flash mode title -->
     <string name="pref_camera_flashmode_title">Flash mode</string>
 
-    <!-- Settings screen, Focue mode dialog radio button choices -->
+    <!-- Settings screen, Flash mode dialog radio button choices -->
     <string name="pref_camera_flashmode_entry_auto">Auto</string>
     <string name="pref_camera_flashmode_entry_on">On</string>
     <string name="pref_camera_flashmode_entry_off">Off</string>
     <string name="pref_exposure_title">Exposure</string>
     <string name="pref_exposure_default" translatable="false">0</string>
 
+    <!-- Default metering mode setting.-->
+    <string name="pref_camera_meteringmode_default" translatable="false">center-weighted</string>
+
+    <!-- Settings screen, Metering mode title -->
+    <string name="pref_camera_meteringmode_title">Metering mode</string>
+
+    <!-- Settings screen, Metering mode dialog radio button choices -->
+    <string name="pref_camera_meteringmode_entry_center_weighted">Center Weighted</string>
+    <string name="pref_camera_meteringmode_entry_frame_average">Frame Average</string>
+    <string name="pref_camera_meteringmode_entry_spot">Spot</string>
+
     <!-- Framing grid settings in preference -->
 
     <!-- Message to show when there's no lat/lng information in the image -->
index c70c253..96eff91 100644 (file)
                 camera:title="@string/pref_camera_quickcapture_title"
                 camera:entries="@array/pref_camera_quickcapture_entries"
                 camera:entryValues="@array/pref_camera_quickcapture_entryvalues" />
+        <ListPreference
+                camera:key="pref_camera_meteringmode_key"
+                camera:defaultValue="@string/pref_camera_meteringmode_default"
+                camera:title="@string/pref_camera_meteringmode_title"
+                camera:entries="@array/pref_camera_meteringmode_entries"
+                camera:entryValues="@array/pref_camera_meteringmode_entryvalues" />
     </PreferenceGroup>
 </PreferenceGroup>
index 1f18dd6..c67f093 100644 (file)
@@ -1871,6 +1871,14 @@ public class Camera extends NoSearchActivity implements View.OnClickListener,
         } else {
             mFocusMode = mParameters.getFocusMode();
         }
+
+        // Set metering mode parameter.
+        String meteringMode = mPreferences.getString(
+                CameraSettings.KEY_METERING_MODE,
+                getString(R.string.pref_camera_meteringmode_default));
+        if (isSupported(meteringMode, mParameters.getSupportedMeteringModes())) {
+            mParameters.setMeteringMode(meteringMode);
+        }
     }
 
     // We separate the parameters into several subsets, so we can update only
index 5abe73c..b32f077 100644 (file)
@@ -47,6 +47,7 @@ public class CameraSettings {
     public static final String KEY_SCENE_MODE = "pref_camera_scenemode_key";
     public static final String KEY_QUICK_CAPTURE = "pref_camera_quickcapture_key";
     public static final String KEY_EXPOSURE = "pref_camera_exposure_key";
+    public static final String KEY_METERING_MODE = "pref_camera_meteringmode_key";
 
     public static final String QUICK_CAPTURE_ON = "on";
     public static final String QUICK_CAPTURE_OFF = "off";
@@ -139,6 +140,8 @@ public class CameraSettings {
         ListPreference exposure = group.findPreference(KEY_EXPOSURE);
         ListPreference videoFlashMode =
                 group.findPreference(KEY_VIDEOCAMERA_FLASH_MODE);
+        ListPreference meteringMode =
+                group.findPreference(KEY_METERING_MODE);
 
         // Since the screen could be loaded from different resources, we need
         // to check if the preference is available here
@@ -186,6 +189,10 @@ public class CameraSettings {
             filterUnsupportedOptions(group,
                     videoFlashMode, mParameters.getSupportedFlashModes());
         }
+        if (meteringMode != null) {
+            filterUnsupportedOptions(group,
+                    meteringMode, mParameters.getSupportedMeteringModes());
+        }
 
         if (exposure != null) {
             buildExposureCompensation(group, exposure);
index 9bdb68f..3b64faa 100644 (file)
@@ -48,7 +48,8 @@ public class CameraHeadUpDisplay extends HeadUpDisplay {
                 CameraSettings.KEY_SCENE_MODE,
                 CameraSettings.KEY_PICTURE_SIZE,
                 CameraSettings.KEY_JPEG_QUALITY,
-                CameraSettings.KEY_COLOR_EFFECT);
+                CameraSettings.KEY_COLOR_EFFECT,
+                CameraSettings.KEY_METERING_MODE);
 
         mOtherSettings = new OtherSettingsIndicator(context, prefs);
         mOtherSettings.setOnRestorePreferencesClickedRunner(new Runnable() {