------------- 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");
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");