summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/CameraSettings.java
diff options
context:
space:
mode:
authorWu-cheng Li <wuchengli@google.com>2010-09-08 16:37:55 -0700
committerWu-cheng Li <wuchengli@google.com>2010-09-08 17:35:28 -0700
commit7add00693c1ec910bc8700fe046ee18cbe4e1148 (patch)
treea9554e92997bd8803ae35fc8352b3a242b6960e3 /src/com/android/camera/CameraSettings.java
parent72569f22ad072666ff313d5eecfd25e8b653bd54 (diff)
downloadLegacyCamera-7add00693c1ec910bc8700fe046ee18cbe4e1148.tar.gz
LegacyCamera-7add00693c1ec910bc8700fe046ee18cbe4e1148.tar.bz2
LegacyCamera-7add00693c1ec910bc8700fe046ee18cbe4e1148.zip
Add switch camera on-screen button.
Change-Id: I1564fdf0f7f70f15278bdbdee6d9b5c8a6e683e0
Diffstat (limited to 'src/com/android/camera/CameraSettings.java')
-rw-r--r--src/com/android/camera/CameraSettings.java53
1 files changed, 45 insertions, 8 deletions
diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java
index fa05aa73..6e0c7e14 100644
--- a/src/com/android/camera/CameraSettings.java
+++ b/src/com/android/camera/CameraSettings.java
@@ -20,6 +20,7 @@ import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
+import android.hardware.Camera.CameraInfo;
import android.hardware.Camera.Parameters;
import android.hardware.Camera.Size;
import android.media.CamcorderProfile;
@@ -48,7 +49,7 @@ public class CameraSettings {
public static final String KEY_WHITE_BALANCE = "pref_camera_whitebalance_key";
public static final String KEY_SCENE_MODE = "pref_camera_scenemode_key";
public static final String KEY_EXPOSURE = "pref_camera_exposure_key";
- public static final String KEY_CAMERA_ID = "pref_camera_id";
+ public static final String KEY_CAMERA_ID = "pref_camera_id_key";
private static final String VIDEO_QUALITY_HIGH = "high";
private static final String VIDEO_QUALITY_MMS = "mms";
@@ -85,10 +86,13 @@ public class CameraSettings {
private final Context mContext;
private final Parameters mParameters;
+ private final CameraInfo[] mCameraInfo;
- public CameraSettings(Activity activity, Parameters parameters) {
+ public CameraSettings(Activity activity, Parameters parameters,
+ CameraInfo[] cameraInfo) {
mContext = activity;
mParameters = parameters;
+ mCameraInfo = cameraInfo;
}
public PreferenceGroup getPreferenceGroup(int preferenceRes) {
@@ -148,6 +152,8 @@ public class CameraSettings {
ListPreference flashMode = group.findPreference(KEY_FLASH_MODE);
ListPreference focusMode = group.findPreference(KEY_FOCUS_MODE);
ListPreference exposure = group.findPreference(KEY_EXPOSURE);
+ IconListPreference cameraId =
+ (IconListPreference)group.findPreference(KEY_CAMERA_ID);
ListPreference videoFlashMode =
group.findPreference(KEY_VIDEOCAMERA_FLASH_MODE);
@@ -197,10 +203,8 @@ public class CameraSettings {
filterUnsupportedOptions(group,
videoFlashMode, mParameters.getSupportedFlashModes());
}
-
- if (exposure != null) {
- buildExposureCompensation(group, exposure);
- }
+ if (exposure != null) buildExposureCompensation(group, exposure);
+ if (cameraId != null) buildCameraId(group, cameraId);
}
private void buildExposureCompensation(
@@ -228,6 +232,38 @@ public class CameraSettings {
exposure.setEntryValues(entryValues);
}
+ private void buildCameraId(
+ PreferenceGroup group, IconListPreference cameraId) {
+ int numOfCameras = mCameraInfo.length;
+ if (numOfCameras < 2) {
+ removePreference(group, cameraId.getKey());
+ return;
+ }
+
+ CharSequence entries[] = new CharSequence[numOfCameras];
+ CharSequence entryValues[] = new CharSequence[numOfCameras];
+ int[] iconIds = new int[numOfCameras];
+ int[] largeIconIds = new int[numOfCameras];
+ for (int i = 0; i < numOfCameras; i++) {
+ entryValues[i] = Integer.toString(i);
+ if (mCameraInfo[i].mFacing == CameraInfo.CAMERA_FACING_FRONT) {
+ entries[i] = mContext.getString(
+ R.string.pref_camera_id_entry_front);
+ iconIds[i] = R.drawable.ic_menuselect_camera_facing_front;
+ largeIconIds[i] = R.drawable.ic_viewfinder_camera_facing_front;
+ } else {
+ entries[i] = mContext.getString(
+ R.string.pref_camera_id_entry_back);
+ iconIds[i] = R.drawable.ic_menuselect_camera_facing_back;
+ largeIconIds[i] = R.drawable.ic_viewfinder_camera_facing_back;
+ }
+ }
+ cameraId.setEntries(entries);
+ cameraId.setEntryValues(entryValues);
+ cameraId.setIconIds(iconIds);
+ cameraId.setLargeIconIds(largeIconIds);
+ }
+
private static boolean removePreference(PreferenceGroup group, String key) {
for (int i = 0, n = group.size(); i < n; i++) {
CameraPreference child = group.get(i);
@@ -366,13 +402,14 @@ public class CameraSettings {
}
public static int readPreferredCameraId(SharedPreferences pref) {
- return pref.getInt(KEY_CAMERA_ID, 0);
+ String id = Integer.toString(android.hardware.Camera.CAMERA_ID_DEFAULT);
+ return Integer.parseInt(pref.getString(KEY_CAMERA_ID, id));
}
public static void writePreferredCameraId(SharedPreferences pref,
int cameraId) {
Editor editor = pref.edit();
- editor.putInt(KEY_CAMERA_ID, cameraId);
+ editor.putString(KEY_CAMERA_ID, Integer.toString(cameraId));
editor.apply();
}
}