rk3288 android7.1.2添加相机预览方向

这篇文章描述了Camera2应用中的偏好设置,包括摄像头预览尺寸、图片大小、预览方向等,以及在PhotoModule中对相机显示方向的处理。
摘要由CSDN通过智能技术生成
--- 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);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值