Settings添加屏幕旋转功能

------------- packages/apps/Settings/res/values-zh-rCN/strings.xml -------------
index 9161736..76db3a9 100755
@@ -1616,8 +1616,15 @@
     
+
   <!-- add by hgs -->
    <string name="screen_settings">屏幕设置</string>
    <string name="screenscale">屏幕比例</string>
    <string name="rotate_the_screen">屏幕方向</string>
    <string name="screen_interface">输出接口</string>
    <string name="screen_mode_title">模式</string>
 </resources>


----------------- packages/apps/Settings/res/values/arrays.xml -----------------
index 43a1de9..2d73694 100755
@@ -710,8 +710,24 @@
         <item>WiFi</item>
     </string-array>
 
     <string-array name="entryvalues_pppoe_phy_iface" translatable="false">
         <item>ethernet</item>
         <item>wifi</item>
     </string-array>
+
+
+ <string-array name="entries_rotate_screen">
+         <item>0</item>
+ <item>90</item>
+ <item>180</item>
+ <item>270</item>
+       
+ </string-array>
+     
+ <string-array name="entryvalues_rotate_screen" translatable="false">
+ <item>0</item>
+ <item>90</item>
+ <item>180</item>
+     <item>270</item>
+     </string-array>
 </resources>


---------------- packages/apps/Settings/res/values/strings.xml ----------------
index 50628d0..b1e8dc3 100755
@@ -3912,9 +3912,12 @@ found in the list of installed apps.</string>
     <string name="str_ok">OK</string>  
     <string name="str_cancel">Cancel</string>
     <string name="str_about">Important</string>
     <string name="str_mesg">Whether save Settings?</string>
     <string name="save_failed">Save failed!</string>
     <string name="ethernet_ip_settings_invalid_ip">Please type a valid IP address.</string>
     <string name="eth_ip_settings_please_complete_settings">Please give complete static IP settings!</string>
-
+    <!-- screen change -->
+    <string name="rotate_the_screen">Screen Orientation</string>
+ <string name="rotate_screen_default_">The Screen angle default is 0</string>
+  <string name="current_screen_angle">The current screen angle </string>
 </resources>


-------------- packages/apps/Settings/res/xml/screen_settings.xml --------------
index d8b19f1..7429f5b 100755
@@ -31,15 +31,23 @@
                 android:dialogTitle="@string/screenscale" />
         
         <ListPreference
                 android:key="main_screen_interface"/>
 
         <ListPreference
                 android:key="main_screen_mode"/>
-                
+         
+ <ListPreference
+       android:key="screen_rotate"
+   android:title="@string/rotate_the_screen"
+   android:summary="@string/rotate_screen_default_"
+   android:persistent="false"
+   android:entries="@array/entries_rotate_screen"
+   android:entryValues="@array/entryvalues_rotate_screen" />
         <ListPreference
                 android:key="aux_screen_interface"/>
                 
         <ListPreference
                 android:key="aux_screen_mode"/>
 
+  
 </PreferenceScreen>


----- packages/apps/Settings/src/com/android/settings/ScreenSettings.java -----
index 768b9a1..343ad14 100755
@@ -28,44 +28,52 @@ import android.content.DialogInterface;
 import android.os.Bundle;
 import android.os.DisplayOutputManager;
 import android.os.Handler;
 import android.os.RemoteException;
 import android.preference.ListPreference;
 import android.preference.Preference;
 import android.util.Log;
+import android.os.SystemProperties;
 
 public class ScreenSettings extends SettingsPreferenceFragment implements
         Preference.OnPreferenceChangeListener {
  private static final String TAG = "ScreenSettings";
  private final boolean DBG = true;
 
  private static final String KEY_MAIN_DISPLAY_INTERFACE = "main_screen_interface";
     private static final String KEY_MAIN_DISPLAY_MODE = "main_screen_mode";
     
     private static final String KEY_AUX_DISPLAY_INTERFACE = "aux_screen_interface";
     private static final String KEY_AUX_DISPLAY_MODE = "aux_screen_mode";
+ private static final String KEY_SCREEN_ROTATE = "screen_rotate";
+
 
     private ListPreference mMainDisplay;
     private ListPreference mMainModeList;
 
  private ListPreference mAuxDisplay;
     private ListPreference mAuxModeList;
+
+ //adb by hgs
+    private ListPreference mScreenRotate;
+
 
  private DisplayOutputManager mDisplayManagement = null;
 
     private int mMainDisplay_last = -1;
     private int mMainDisplay_set = -1;
     private String mMainMode_last = null;
     private String mMainMode_set = null;
     
     private int mAuxDisplay_last = -1;
     private int mAuxDisplay_set = -1;
     private String mAuxMode_last = null;
     private String mAuxMode_set = null;
-    
+   
+
     private AlertDialog mDialog = null;
     private int mTime = -1;
     private Handler mHandler;
     private Runnable mRunnable;
     
     
     
@@ -86,14 +94,31 @@ public class ScreenSettings extends SettingsPreferenceFragment implements
         
         int[] aux_display = mDisplayManagement.getIfaceList(mDisplayManagement.AUX_DISPLAY);
 
         mMainDisplay = (ListPreference) findPreference(KEY_MAIN_DISPLAY_INTERFACE);
  mMainDisplay.setOnPreferenceChangeListener(this);
  mMainModeList = (ListPreference) findPreference(KEY_MAIN_DISPLAY_MODE);
  mMainModeList.setOnPreferenceChangeListener(this);
+
+ //add by hgs
+        mScreenRotate = (ListPreference) findPreference(KEY_SCREEN_ROTATE);
+        mScreenRotate.setOnPreferenceChangeListener(this);
+        //mContext = mScreenRotate.getContext();
+
+       // screenSP = mContext.getSharedPreferences("screenSP", mContext.MODE_WORLD_WRITEABLE);
+       // String screen_angle = screenSP.getString("screen_angle", "0");
+ String screen_angle =  SystemProperties.get("persist.sys.screen_rotate","0");
+
+ int index = mScreenRotate.findIndexOfValue(screen_angle);
+ mScreenRotate.setValueIndex(index);
+ Log.e(TAG, "---------------index-------------"+index);
+ Log.e(TAG,mScreenRotate.getEntries()[index].toString());
+          mScreenRotate.setSummary(mScreenRotate.getEntries()[index]);
+       // mScreenRotate.setSummary(screen_angle);
+
 
  int curIface = mDisplayManagement.getCurrentInterface(mDisplayManagement.MAIN_DISPLAY);
  mMainDisplay_last = curIface;
 
  if (aux_display == null) {
  mMainDisplay.setTitle(getString(R.string.screen_interface));
  } else {
@@ -345,10 +370,26 @@ public class ScreenSettings extends SettingsPreferenceFragment implements
          mDialog.show();
          mDialog.getButton(DialogInterface.BUTTON_NEGATIVE).requestFocus();
          CharSequence text = getString(R.string.screen_control_ok_title) + " (" + String.valueOf(mTime) + ")";
          mDialog.getButton(DialogInterface.BUTTON_POSITIVE).setText(text);
          mHandler.postDelayed(mRunnable, 1000);
          }
         }
+
+
+ if(key.equals(KEY_SCREEN_ROTATE)){
+
+         String screen_rotate = newValue.toString();
+ //String str = getString(R.string.current_screen_angle) + screen_rotate;
+         preference.setSummary(screen_rotate);
+        
+SystemProperties.set("persist.sys.screen_rotate", screen_rotate);
+
+         int screenRotate = Integer.parseInt(screen_rotate);
+
+Log.d("Setting", "-------------------------test screenRotate----=="+screenRotate);
+
+        }
+
  return false;
  }
-}






---------- frameworks/base/services/surfaceflinger/SurfaceFlinger.cpp ----------     4.0


frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp   4.1
index 542bf79..9bcf55b 100755
@@ -214,19 +214,39 @@ status_t SurfaceFlinger::readyToRun()
     LOGI(   "SurfaceFlinger's main thread ready to run. "
             "Initializing graphics H/W...");
 
     // we only support one display currently
     int dpy = 0;
 
     {
+        char sOrientation[8];
+        int  displayOrientation;
+
         // initialize the main display
         GraphicPlane& plane(graphicPlane(dpy));
         DisplayHardware* const hw = new DisplayHardware(this, dpy);
         plane.setDisplayHardware(hw);
- plane.setOrientation(ISurfaceComposer::eOrientation90); // rotate 90 liangar 2012-12-12
+        
+        // 2012-12-12 set screen orientation -- begin
+        property_get("persist.sys.screen_rotate", sOrientation, "0");
+        switch (atoi(sOrientation)){
+        case 90:
+            displayOrientation = ISurfaceComposer::eOrientation90;
+            break;
+        case 180:
+            displayOrientation = ISurfaceComposer::eOrientation180;
+            break;
+        case 270:
+            displayOrientation = ISurfaceComposer::eOrientation270;
+            break;
+ default:
+            displayOrientation = ISurfaceComposer::eOrientationDefault;
+        }
+ plane.setOrientation(displayOrientation);
+        // liangar 2012-12-12 set screen orientation -- end 
     }
 
     // create the shared control-block
     mServerHeap = new MemoryHeapBase(4096,
             MemoryHeapBase::READ_ONLY, "SurfaceFlinger read-only heap");
     LOGE_IF(mServerHeap==0, "can't create shared memory dealer");
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值