package com.android.settings; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; import android.util.Log; import android.opengl.GLSurfaceView; import android.provider.Settings; import android.view.WindowManager; import android.view.Display; public class ScreenAdaption extends PreferenceActivity implements Preference.OnPreferenceChangeListener{ private static final String TAG = "Settings.Display"; private static final Boolean LOGD = false; private static final String KEY_TOGGLE_SA_TOGGLE = "toggle_screen_adapt"; private static final String KEY_SA_MODE_SELECTOR = "display_mode_selector"; private static final String VALUES_FULL_SCREEN = "full"; private static final String VALUES_UPON_SCREEN = "upon"; private static final String VALUES_BELOW_SCREEN = "below"; private static final String VALUES_CENTER_SCREEN = "center"; private CheckBoxPreference mSAToggle; private ListPreference mSAModeSelector; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.screen_adaption); String screenAdaptionMode; mSAToggle = (CheckBoxPreference)findPreference(KEY_TOGGLE_SA_TOGGLE); mSAModeSelector = (ListPreference)findPreference(KEY_SA_MODE_SELECTOR); mSAModeSelector.setOnPreferenceChangeListener(this); int PosMode; screenAdaptionMode = Settings.System.getString(getContentResolver(),Settings.System.DISPLAY_ADAPTION_MODE); //set current values if(screenAdaptionMode == null){ screenAdaptionMode = new String(VALUES_CENTER_SCREEN); } mSAModeSelector.setValue(screenAdaptionMode); boolean isAdaptionEnable = Settings.System.getInt(getContentResolver(), Settings.System.DISPLAY_ADAPTION_ENABLE, 1) == 1; mSAToggle.setChecked(isAdaptionEnable); WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE); android.view.Display display = wm.getDefaultDisplay(); int width = display.getWidth(); int height = display.getHeight(); String summary = getResources().getString(R.string.screen_adaption_summary_off); mSAToggle.setSummaryOff(summary + " " + width + " * " + height); mSAToggle.setSummaryOn(summary + " " + width + " * " + height); } public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { if(preference == mSAToggle) { if(mSAToggle.isChecked() == false){ Settings.System.putInt(getContentResolver(), Settings.System.DISPLAY_ADAPTION_ENABLE, 0); }else{ Settings.System.putInt(getContentResolver(), Settings.System.DISPLAY_ADAPTION_ENABLE, 1); } WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); int width = display.getWidth(); int height = display.getHeight(); String summary = getResources().getString(R.string.screen_adaption_summary_off); mSAToggle.setSummaryOff(summary + " " + width + " * " + height); mSAToggle.setSummaryOn(summary + " " + width + " * " + height); } return false; } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { if(preference == mSAModeSelector) { if(LOGD){ Log.d(TAG,"change the screen mode to " + newValue); } if(newValue.equals(VALUES_FULL_SCREEN)) { Settings.System.putString(getContentResolver(),Settings.System.DISPLAY_ADAPTION_MODE,VALUES_FULL_SCREEN); mSAModeSelector.setValue(VALUES_FULL_SCREEN); } else if(newValue.equals(VALUES_UPON_SCREEN)) { Settings.System.putString(getContentResolver(),Settings.System.DISPLAY_ADAPTION_MODE,VALUES_UPON_SCREEN); mSAModeSelector.setValue(VALUES_UPON_SCREEN); } else if(newValue.equals(VALUES_BELOW_SCREEN)) { Settings.System.putString(getContentResolver(),Settings.System.DISPLAY_ADAPTION_MODE,VALUES_BELOW_SCREEN); mSAModeSelector.setValue(VALUES_BELOW_SCREEN); } else if(newValue.equals(VALUES_CENTER_SCREEN)) { Settings.System.putString(getContentResolver(),Settings.System.DISPLAY_ADAPTION_MODE,VALUES_CENTER_SCREEN); mSAModeSelector.setValue(VALUES_CENTER_SCREEN); } } return false; } }