添加预览尺寸:
--- a/packages/apps/Camera2/res/values-en-rGB/strings.xml
+++ b/packages/apps/Camera2/res/values-en-rGB/strings.xml
@@ -94,6 +94,7 @@
<string name="pref_camera_settings_category" msgid="4274141528139077830">"Camera settings"</string>
<string name="pref_camcorder_settings_category" msgid="3553148484755353397">"Camcorder settings"</string>
<string name="pref_camera_picturesize_title" msgid="686045304547541815">"Picture size"</string>
+ <string name="pref_camera_previewsize_title" msgid="686045304547541816">"Preview size"</string>
<string name="pref_camera_picturesize_entry_large" msgid="9014447075089601575">"Large"</string>
<string name="pref_camera_picturesize_entry_medium" msgid="7708839551627003154">"Medium"</string>
<string name="pref_camera_picturesize_entry_small" msgid="2991239656622539068">"Small"</string>
--- a/packages/apps/Camera2/res/values-zh-rCN/strings.xml
+++ b/packages/apps/Camera2/res/values-zh-rCN/strings.xml
@@ -94,6 +94,7 @@
<string name="pref_camera_settings_category" msgid="4274141528139077830">"相机设置"</string>
<string name="pref_camcorder_settings_category" msgid="3553148484755353397">"摄像机设置"</string>
<string name="pref_camera_picturesize_title" msgid="686045304547541815">"照片尺寸"</string>
+ <string name="pref_camera_previewsize_title" msgid="686045304547541816">"预览尺寸"</string>
<string name="pref_camera_picturesize_entry_large" msgid="9014447075089601575">"大"</string>
<string name="pref_camera_picturesize_entry_medium" msgid="7708839551627003154">"中"</string>
<string name="pref_camera_picturesize_entry_small" msgid="2991239656622539068">"小"</string>
--- a/packages/apps/Camera2/res/values/arrays.xml
+++ b/packages/apps/Camera2/res/values/arrays.xml
@@ -664,4 +664,27 @@
<item>@string/pref_media_save_path_flash</item>
<item>@string/pref_media_save_path_external_sd</item>
</string-array>
+
+ <string-array name="pref_camera_previewsize_entries" translatable="false">
+ <item>320x240</item>
+ <item>352x288</item>
+ <item>640x480</item>
+ <item>800x600</item>
+ <item>1024x768</item>
+ <item>1280x720</item>
+ <item>1280x1024</item>
+ <item>1920x1080</item>
+ </string-array>
+
+ <string-array name="pref_camera_previewsize_entryvalues" translatable="false">
+ <item>320x240</item>
+ <item>352x288</item>
+ <item>640x480</item>
+ <item>800x600</item>
+ <item>1024x768</item>
+ <item>1280x720</item>
+ <item>1280x1024</item>
+ <item>1920x1080</item>
+ </string-array>
+
--- a/packages/apps/Camera2/res/values/strings.xml
+++ b/packages/apps/Camera2/res/values/strings.xml
@@ -236,6 +236,7 @@
<!-- Settings screen, Picture size title -->
<string name="pref_camera_picturesize_title">Picture size</string>
+ <string name="pref_camera_previewsize_title">Preview size</string>
<!-- Settings screen, dialog choice for "large" picture size [CHAR LIMIT=20] -->
<string name="pref_camera_picturesize_entry_large">Large</string>
diff --git a/packages/apps/Camera2/res/xml/camera_preferences.xml b/packages/apps/Camera2/res/xml/camera_preferences.xml
index 71ce62f4bc..7630cb9340 100644
--- a/packages/apps/Camera2/res/xml/camera_preferences.xml
+++ b/packages/apps/Camera2/res/xml/camera_preferences.xml
@@ -36,6 +36,11 @@
android:entryValues="@array/pref_camera_picturesize_entryvalues"
android:key="pref_camera_picturesize_front_key"
android:title="@string/setting_front_camera_photo" />
+ <ListPreference
+ android:key="pref_camera_previewsize_key"
+ android:title="@string/pref_camera_previewsize_title"
+ android:entries="@array/pref_camera_previewsize_entries"
+ android:entryValues="@array/pref_camera_previewsize_entryvalues" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/mode_video" >
--- a/packages/apps/Camera2/src/com/android/camera/PhotoModule.java
+++ b/packages/apps/Camera2/src/com/android/camera/PhotoModule.java
@@ -43,6 +43,8 @@ import android.view.OrientationEventListener;
import android.view.View;
import android.widget.Toast;
+import android.content.Context;
+import android.content.SharedPreferences;
import com.android.camera.PhotoModule.NamedImages.NamedEntity;
import com.android.camera.app.AppController;
import com.android.camera.app.CameraAppUI;
@@ -135,6 +137,7 @@ public class PhotoModule
private CameraActivity mActivity;
private CameraProxy mCameraDevice;
+ private Context context;
private int mCameraId;
private CameraCapabilities mCameraCapabilities;
private List<String> mSupportedColorEffects;
@@ -3218,8 +3221,20 @@ public class PhotoModule
// Set a preview size that is closest to the viewfinder height and has
// the right aspect ratio.
List<Size> sizes = Size.convert(mCameraCapabilities.getSupportedPreviewSizes());
- Size optimalSize = CameraUtil.getOptimalPreviewSize(sizes,
- (double) pictureSize.width() / pictureSize.height());
+ //Size optimalSize = CameraUtil.getOptimalPreviewSize(sizes,
+ // (double) pictureSize.width() / pictureSize.height());
+ context = mActivity;
+ int width = 640, height = 480;
+ SharedPreferences cameraSetting= context.getSharedPreferences("camera_setting", Context.MODE_PRIVATE);
+ String value=cameraSetting.getString("preview_size", null);
+ if (value != null) {
+ int index = value.indexOf('x');
+ if (index != -1) {
+ width = Integer.parseInt(value.substring(0, index));
+ height = Integer.parseInt(value.substring(index + 1));
+ }
+ }
+ Size optimalSize = new Size(width, height);
Size original = new Size(mCameraSettings.getCurrentPreviewSize());
if (!optimalSize.equals(original)) {
Log.v(TAG, "setting preview size. optimal: " + optimalSize + "original: " + original);
--- a/packages/apps/Camera2/src/com/android/camera/VideoUI.java
+++ b/packages/apps/Camera2/src/com/android/camera/VideoUI.java
@@ -30,6 +30,9 @@ import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
+import android.preference.ListPreference;
+import android.preference.Preference;
+import android.preference.Preference.OnPreferenceClickListener;
import com.android.camera.app.OrientationManager;
import com.android.camera.debug.Log;
--- a/packages/apps/Camera2/src/com/android/camera/settings/CameraSettingsActivity.java
+++ b/packages/apps/Camera2/src/com/android/camera/settings/CameraSettingsActivity.java
@@ -148,7 +148,7 @@ public class CameraSettingsActivity extends FragmentActivity {
}
public static class CameraSettingsFragment extends PreferenceFragment implements
- OnSharedPreferenceChangeListener {
+ OnSharedPreferenceChangeListener ,Preference.OnPreferenceChangeListener{
public static final String PREF_CATEGORY_RESOLUTION = "pref_category_resolution";
public static final String PREF_CATEGORY_ADVANCED = "pref_category_advanced";
@@ -178,6 +178,10 @@ public class CameraSettingsActivity extends FragmentActivity {
private String FLASH;
private OneCameraManager mOneCameraManager;
+ private ListPreference previewSize;
+ private SharedPreferences sharedPreferences;
+ private SharedPreferences.Editor editor;
+ private Context context;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -187,8 +191,14 @@ public class CameraSettingsActivity extends FragmentActivity {
mPrefKey = arguments.getString(PREF_SCREEN_EXTRA);
mHideAdvancedScreen = arguments.getBoolean(HIDE_ADVANCED_SCREEN);
}
- Context context = this.getActivity().getApplicationContext();
+ context = this.getActivity().getApplicationContext();
addPreferencesFromResource(R.xml.camera_preferences);
+ previewSize = (ListPreference) findPreference(Keys.KEY_PREVIEW_SIZE);
+ previewSize.setOnPreferenceChangeListener(this);
+ //previewSize.setOnPreferenceClickListener(this);
+ SharedPreferences cameraSetting= context.getSharedPreferences("camera_setting", Context.MODE_PRIVATE);
+ editor = cameraSetting.edit();
+
PreferenceScreen advancedScreen =
(PreferenceScreen) findPreference(PREF_CATEGORY_ADVANCED);
@@ -231,6 +241,13 @@ public class CameraSettingsActivity extends FragmentActivity {
super.onResume();
final Activity activity = this.getActivity();
+ SharedPreferences cameraSetting= context.getSharedPreferences("camera_setting", Context.MODE_PRIVATE);
+ String value=cameraSetting.getString("preview_size", null);
+ if(value != null)
+ previewSize.setValue(value);
+ else
+ previewSize.setValue("640x480");
+
// Load the camera sizes.
loadSizes();
@@ -308,6 +325,16 @@ public class CameraSettingsActivity extends FragmentActivity {
restoreMediaSavePath();
}
+ public boolean onPreferenceChange(Preference preference, Object obj) {
+ String key = preference.getKey();
+
+ if(preference == previewSize){
+ editor.putString("preview_size", (String) obj);
+ editor.commit();
+ }
+ return true;
+ }
+
private void setDefaultPicturesize(CameraId cameraId, Facing cameraFacing) {
if (cameraId == null) return;
final String pictureSizeSettingKey = cameraFacing == OneCamera.Facing.FRONT ?
--- a/packages/apps/Camera2/src/com/android/camera/settings/Keys.java
+++ b/packages/apps/Camera2/src/com/android/camera/settings/Keys.java
@@ -41,6 +41,7 @@ public class Keys {
public static final String KEY_VIDEO_QUALITY_FRONT = "pref_video_quality_front_key";
public static final String KEY_PICTURE_SIZE_BACK = "pref_camera_picturesize_back_key";
public static final String KEY_PICTURE_SIZE_FRONT = "pref_camera_picturesize_front_key";
+ public static final String KEY_PREVIEW_SIZE = "pref_camera_previewsize_key";
public static final String KEY_JPEG_QUALITY = "pref_camera_jpegquality_key";
public static final String KEY_FOCUS_MODE = "pref_camera_focusmode_key";
public static final String KEY_FLASH_MODE = "pref_camera_flashmode_key";
@@ -194,6 +195,14 @@ public class Keys {
Keys.KEY_PICTURE_SIZE_FRONT);
}
+ settingsManager.setDefaults(KEY_PREVIEW_SIZE,
+ context.getString(R.string.pref_camera_picturesize_default),
+ context.getResources().getStringArray(R.array.pref_camera_picturesize_entryvalues));
+ if (!settingsManager.isSet(SettingsManager.SCOPE_GLOBAL, Keys.KEY_PREVIEW_SIZE)) {
+ settingsManager.setToDefault(SettingsManager.SCOPE_GLOBAL,
+ Keys.KEY_PREVIEW_SIZE);
+ }
+
settingsManager.setDefaults(KEY_JPEG_QUALITY,
context.getString(R.string.pref_camera_jpeg_quality_normal),
context.getResources().getStringArray(
@@ -373,6 +382,10 @@ public class Keys {
settingsManager.setToDefault(SettingsManager.SCOPE_GLOBAL,
KEY_PICTURE_SIZE_FRONT);
+ if (settingsManager.isSet(SettingsManager.SCOPE_GLOBAL, KEY_PREVIEW_SIZE))
+ settingsManager.setToDefault(SettingsManager.SCOPE_GLOBAL,
+ KEY_PREVIEW_SIZE);
+
if (settingsManager.isSet(SettingsManager.SCOPE_GLOBAL, KEY_STARTUP_MODULE_INDEX))
settingsManager.setToDefault(SettingsManager.SCOPE_GLOBAL,
KEY_STARTUP_MODULE_INDEX);