--- a/packages/apps/Camera2/res/values-en-rGB/strings.xml
+++ b/packages/apps/Camera2/res/values-en-rGB/strings.xml
@@ -95,6 +95,7 @@
<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_previeworientation_title" msgid="686045304547541817">"Preview orientation"</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>
diff --git a/packages/apps/Camera2/res/values-zh-rCN/strings.xml b/packages/apps/Camera2/res/values-zh-rCN/strings.xml
index cc023cdd03..d49e2537f9 100644
--- a/packages/apps/Camera2/res/values-zh-rCN/strings.xml
+++ b/packages/apps/Camera2/res/values-zh-rCN/strings.xml
@@ -95,6 +95,7 @@
<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_previeworientation_title" msgid="686045304547541817">"预览方向"</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
@@ -687,4 +687,22 @@
<item>1920x1080</item>
</string-array>
+ <!-- Camera Preferences Preview orientation dialog box entries -->
+ <string-array name="pref_camera_previeworientation_entries" translatable="false">
+ <item>0</item>
+ <item>90</item>
+ <item>180</item>
+ <item>270</item>
+ </string-array>
+
+ <!-- When launching the camera app first time, we will set the picture
+ size to the first one in the list that is also supported by the
+ driver -->
+ <string-array name="pref_camera_previeworientation_entryvalues" translatable="false">
+ <item>0</item>
+ <item>90</item>
+ <item>180</item>
+ <item>270</item>
+ </string-array>
+
</resources>
diff --git a/packages/apps/Camera2/res/values/strings.xml b/packages/apps/Camera2/res/values/strings.xml
index f34c20b26f..b7880bbad5 100644
--- a/packages/apps/Camera2/res/values/strings.xml
+++ b/packages/apps/Camera2/res/values/strings.xml
@@ -237,6 +237,7 @@
<!-- Settings screen, Picture size title -->
<string name="pref_camera_picturesize_title">Picture size</string>
<string name="pref_camera_previewsize_title">Preview size</string>
+ <string name="pref_camera_previeworientation_title">Preview orientation</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 7630cb9340..f5297186ec 100644
--- a/packages/apps/Camera2/res/xml/camera_preferences.xml
+++ b/packages/apps/Camera2/res/xml/camera_preferences.xml
@@ -41,6 +41,11 @@
android:title="@string/pref_camera_previewsize_title"
android:entries="@array/pref_camera_previewsize_entries"
android:entryValues="@array/pref_camera_previewsize_entryvalues" />
+ <ListPreference
+ android:key="pref_camera_previeworientation_key"
+ android:title="@string/pref_camera_previeworientation_title"
+ android:entries="@array/pref_camera_previeworientation_entries"
+ android:entryValues="@array/pref_camera_previeworientation_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
@@ -2810,10 +2810,25 @@ public class PhotoModule
}
// Change the camera display orientation
if (mCameraDevice != null) {
- mCameraDevice.setDisplayOrientation(mDisplayRotation);
+ context = mActivity;
+ SharedPreferences cameraSetting= context.getSharedPreferences("camera_setting", Context.MODE_PRIVATE);
+ String orientation = cameraSetting.getString("preview_orientation", null);
+ if (orientation != null) {
+ int custOri = Integer.parseInt(orientation);
+ int tmpOri = mDisplayOrientation + custOri;
+ if (tmpOri >= 360)
+ tmpOri = tmpOri % 360;
+ else if (tmpOri < 0)
+ tmpOri = (-tmpOri) % 360;
+ mCameraDevice.setDisplayOrientation(tmpOri);
+ Log.v(TAG, "setDisplayOrientation (screen:preview) " +
+ mDisplayRotation + ":" + tmpOri);
+ } else {
+ mCameraDevice.setDisplayOrientation(mDisplayRotation);
+ Log.v(TAG, "setDisplayOrientation (screen:preview) " +
+ mDisplayRotation + ":" + mDisplayOrientation);
+ }
}
- Log.v(TAG, "setDisplayOrientation (screen:preview) " +
- mDisplayRotation + ":" + mDisplayOrientation);
}
/** Only called by UI thread. */
--- a/packages/apps/Camera2/src/com/android/camera/settings/CameraSettingsActivity.java
+++ b/packages/apps/Camera2/src/com/android/camera/settings/CameraSettingsActivity.java
@@ -179,6 +179,7 @@ public class CameraSettingsActivity extends FragmentActivity {
private OneCameraManager mOneCameraManager;
private ListPreference previewSize;
+ private ListPreference previewOrientation;
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor editor;
private Context context;
@@ -196,6 +197,8 @@ public class CameraSettingsActivity extends FragmentActivity {
previewSize = (ListPreference) findPreference(Keys.KEY_PREVIEW_SIZE);
previewSize.setOnPreferenceChangeListener(this);
//previewSize.setOnPreferenceClickListener(this);
+ previewOrientation = (ListPreference) findPreference(Keys.KEY_PREVIEW_ORIENTATION);
+ previewOrientation.setOnPreferenceChangeListener(this);
SharedPreferences cameraSetting= context.getSharedPreferences("camera_setting", Context.MODE_PRIVATE);
editor = cameraSetting.edit();
@@ -248,6 +251,12 @@ public class CameraSettingsActivity extends FragmentActivity {
else
previewSize.setValue("640x480");
+ value=cameraSetting.getString("preview_orientation", null);
+ if(value != null)
+ previewOrientation.setValue(value);
+ else
+ previewOrientation.setValue("0");
+
// Load the camera sizes.
loadSizes();
@@ -331,6 +340,9 @@ public class CameraSettingsActivity extends FragmentActivity {
if(preference == previewSize){
editor.putString("preview_size", (String) obj);
editor.commit();
+ } else if (preference == previewOrientation) {
+ editor.putString("preview_orientation", (String) obj);
+ editor.commit();
}
return true;
--- a/packages/apps/Camera2/src/com/android/camera/settings/Keys.java
+++ b/packages/apps/Camera2/src/com/android/camera/settings/Keys.java
@@ -42,6 +42,7 @@ public class Keys {
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_PREVIEW_ORIENTATION = "pref_camera_previeworientation_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";
@@ -196,13 +197,21 @@ public class Keys {
}
settingsManager.setDefaults(KEY_PREVIEW_SIZE,
- context.getString(R.string.pref_camera_picturesize_default),
- context.getResources().getStringArray(R.array.pref_camera_picturesize_entryvalues));
+ context.getString(R.string.pref_camera_previewsize_title),
+ context.getResources().getStringArray(R.array.pref_camera_previewsize_entryvalues));
if (!settingsManager.isSet(SettingsManager.SCOPE_GLOBAL, Keys.KEY_PREVIEW_SIZE)) {
settingsManager.setToDefault(SettingsManager.SCOPE_GLOBAL,
Keys.KEY_PREVIEW_SIZE);
}
+ settingsManager.setDefaults(KEY_PREVIEW_ORIENTATION,
+ context.getString(R.string.pref_camera_previeworientation_title),
+ context.getResources().getStringArray(R.array.pref_camera_previeworientation_entryvalues));
+ if (!settingsManager.isSet(SettingsManager.SCOPE_GLOBAL, Keys.KEY_PREVIEW_ORIENTATION)) {
+ settingsManager.setToDefault(SettingsManager.SCOPE_GLOBAL,
+ Keys.KEY_PREVIEW_ORIENTATION);
+ }
+
settingsManager.setDefaults(KEY_JPEG_QUALITY,
context.getString(R.string.pref_camera_jpeg_quality_normal),
context.getResources().getStringArray(
@@ -386,6 +395,10 @@ public class Keys {
settingsManager.setToDefault(SettingsManager.SCOPE_GLOBAL,
KEY_PREVIEW_SIZE);
+ if (settingsManager.isSet(SettingsManager.SCOPE_GLOBAL, KEY_PREVIEW_ORIENTATION))
+ settingsManager.setToDefault(SettingsManager.SCOPE_GLOBAL,
+ KEY_PREVIEW_ORIENTATION);
+
if (settingsManager.isSet(SettingsManager.SCOPE_GLOBAL, KEY_STARTUP_MODULE_INDEX))
settingsManager.setToDefault(SettingsManager.SCOPE_GLOBAL,
KEY_STARTUP_MODULE_INDEX);