X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fcom%2Fandroid%2Fsettings%2FDevelopmentSettings.java;h=3372e51ccacfaa4061e0c74f923da12bd721e434;hb=b31f926061591bd0d2fab21150f2ac783d52b261;hp=0c527fa87dd98ced95f7865ad024473b646835a8;hpb=d97e583f2ad6f4ad2a93bd73ba861b6567e25440;p=android-x86%2Fpackages-apps-Settings.git diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java index 0c527fa87d..3372e51cca 100644 --- a/src/com/android/settings/DevelopmentSettings.java +++ b/src/com/android/settings/DevelopmentSettings.java @@ -23,7 +23,6 @@ import android.app.AlertDialog; import android.app.AppOpsManager; import android.app.AppOpsManager.PackageOps; import android.app.Dialog; -import android.app.UiModeManager; import android.app.admin.DevicePolicyManager; import android.app.backup.IBackupManager; import android.bluetooth.BluetoothAdapter; @@ -102,9 +101,6 @@ public class DevelopmentSettings extends SettingsPreferenceFragment */ public static final String PREF_SHOW = "show"; - private static final ComponentName SYSUI_TUNER = new ComponentName("com.android.systemui", - "com.android.systemui.tuner.TunerActivity"); - private static final String ENABLE_ADB = "enable_adb"; private static final String CLEAR_ADB_KEYS = "clear_adb_keys"; private static final String ENABLE_TERMINAL = "enable_terminal"; @@ -132,9 +128,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private static final String SHOW_SCREEN_UPDATES_KEY = "show_screen_updates"; private static final String DISABLE_OVERLAYS_KEY = "disable_overlays"; private static final String SIMULATE_COLOR_SPACE = "simulate_color_space"; - private static final String USE_AWESOMEPLAYER_KEY = "use_awesomeplayer"; private static final String USB_AUDIO_KEY = "usb_audio"; - private static final String USE_AWESOMEPLAYER_PROPERTY = "persist.sys.media.use-awesome"; private static final String SHOW_CPU_USAGE_KEY = "show_cpu_usage"; private static final String FORCE_HARDWARE_UI_KEY = "force_hw_ui"; private static final String FORCE_MSAA_KEY = "force_msaa"; @@ -151,25 +145,26 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private static final String OVERLAY_DISPLAY_DEVICES_KEY = "overlay_display_devices"; private static final String ENABLE_MULTI_WINDOW_KEY = "enable_multi_window"; private static final String DEBUG_DEBUGGING_CATEGORY_KEY = "debug_debugging_category"; - private static final String DEBUG_APPLICATIONS_CATEGORY_KEY = "debug_applications_category"; private static final String SELECT_LOGD_SIZE_KEY = "select_logd_size"; private static final String SELECT_LOGD_SIZE_PROPERTY = "persist.logd.size"; private static final String SELECT_LOGD_DEFAULT_SIZE_PROPERTY = "ro.logd.size"; - private static final String DEBUG_NETWORKING_CATEGORY_KEY = "debug_networking_category"; private static final String WIFI_DISPLAY_CERTIFICATION_KEY = "wifi_display_certification"; private static final String WIFI_VERBOSE_LOGGING_KEY = "wifi_verbose_logging"; private static final String WIFI_AGGRESSIVE_HANDOVER_KEY = "wifi_aggressive_handover"; private static final String WIFI_ALLOW_SCAN_WITH_TRAFFIC_KEY = "wifi_allow_scan_with_traffic"; private static final String USB_CONFIGURATION_KEY = "select_usb_configuration"; - private static final String SELECT_USB_CONFIGURATION_PROPERTY = "sys.usb.config"; private static final String WIFI_LEGACY_DHCP_CLIENT_KEY = "legacy_dhcp_client"; private static final String MOBILE_DATA_ALWAYS_ON = "mobile_data_always_on"; + private static final String KEY_COLOR_MODE = "color_mode"; private static final String INACTIVE_APPS_KEY = "inactive_apps"; private static final String OPENGL_TRACES_KEY = "enable_opengl_traces"; + private static final String ROOT_ACCESS_KEY = "root_access"; + private static final String ROOT_ACCESS_PROPERTY = "persist.sys.root_access"; + private static final String IMMEDIATELY_DESTROY_ACTIVITIES_KEY = "immediately_destroy_activities"; private static final String APP_PROCESS_LIMIT_KEY = "app_process_limit"; @@ -180,8 +175,6 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private static final String TERMINAL_APP_PACKAGE = "com.android.terminal"; - private static final String KEY_NIGHT_MODE = "night_mode"; - private static final int RESULT_DEBUG_APP = 1000; private static final int RESULT_MOCK_LOCATION_APP = 1001; @@ -257,7 +250,6 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private ListPreference mSimulateColorSpace; - private SwitchPreference mUseAwesomePlayer; private SwitchPreference mUSBAudio; private SwitchPreference mImmediatelyDestroyActivities; @@ -265,7 +257,11 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private SwitchPreference mShowAllANRs; - private DropDownPreference mNightModePreference; + private ColorModePreference mColorModePreference; + + private PreferenceScreen mProcessStats; + private ListPreference mRootAccess; + private Object mSelectedRootValue; private final ArrayList mAllPrefs = new ArrayList(); @@ -280,8 +276,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private Dialog mAdbKeysDialog; private boolean mUnavailable; - - private SwitchPreference mTunerUiPref; + private Dialog mRootDialog; @Override protected int getMetricsCategory() { @@ -301,7 +296,11 @@ public class DevelopmentSettings extends SettingsPreferenceFragment mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); if (android.os.Process.myUserHandle().getIdentifier() != UserHandle.USER_OWNER - || mUm.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES)) { + || mUm.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES) + || Settings.Global.getInt(getActivity().getContentResolver(), + Settings.Global.DEVICE_PROVISIONED, 0) == 0) { + // Block access to developer options if the user is not the owner, if user policy + // restricts it, or if the device has not been provisioned mUnavailable = true; setPreferenceScreen(new PreferenceScreen(getActivity(), null)); return; @@ -404,7 +403,6 @@ public class DevelopmentSettings extends SettingsPreferenceFragment } mOpenGLTraces = addListPreference(OPENGL_TRACES_KEY); mSimulateColorSpace = addListPreference(SIMULATE_COLOR_SPACE); - mUseAwesomePlayer = findAndInitSwitchPref(USE_AWESOMEPLAYER_KEY); mUSBAudio = findAndInitSwitchPref(USB_AUDIO_KEY); mImmediatelyDestroyActivities = (SwitchPreference) findPreference( @@ -419,34 +417,24 @@ public class DevelopmentSettings extends SettingsPreferenceFragment mAllPrefs.add(mShowAllANRs); mResetSwitchPrefs.add(mShowAllANRs); - mTunerUiPref = findAndInitSwitchPref(TUNER_UI_KEY); - Preference hdcpChecking = findPreference(HDCP_CHECKING_KEY); if (hdcpChecking != null) { mAllPrefs.add(hdcpChecking); removePreferenceForProduction(hdcpChecking); } - mNightModePreference = (DropDownPreference) findPreference(KEY_NIGHT_MODE); - final UiModeManager uiManager = (UiModeManager) getSystemService( - Context.UI_MODE_SERVICE); - final int currentNightMode = uiManager.getNightMode(); - mNightModePreference.setSelectedValue(String.valueOf(currentNightMode)); - mNightModePreference.setCallback(new DropDownPreference.Callback() { - @Override - public boolean onItemSelected(int pos, Object newValue) { - try { - final int value = Integer.parseInt((String) newValue); - final UiModeManager uiManager = (UiModeManager) getSystemService( - Context.UI_MODE_SERVICE); - uiManager.setNightMode(value); - return true; - } catch (NumberFormatException e) { - Log.e(TAG, "could not persist night mode setting", e); - return false; - } - } - }); + mColorModePreference = (ColorModePreference) findPreference(KEY_COLOR_MODE); + mColorModePreference.updateCurrentAndSupported(); + if (mColorModePreference.getTransformsCount() < 2) { + removePreference(KEY_COLOR_MODE); + mColorModePreference = null; + } + + mRootAccess = (ListPreference) findPreference(ROOT_ACCESS_KEY); + mRootAccess.setOnPreferenceChangeListener(this); + if (!removeRootOptionsIfRequired()) { + mAllPrefs.add(mRootAccess); + } } private ListPreference addListPreference(String prefKey) { @@ -473,6 +461,18 @@ public class DevelopmentSettings extends SettingsPreferenceFragment return pref; } + private boolean removeRootOptionsIfRequired() { + // user builds don't get root, and eng always gets root + if (!(Build.IS_DEBUGGABLE || "eng".equals(Build.TYPE))) { + if (mRootAccess != null) { + getPreferenceScreen().removePreference(mRootAccess); + return true; + } + } + + return false; + } + @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); @@ -552,6 +552,19 @@ public class DevelopmentSettings extends SettingsPreferenceFragment setPrefsEnabledState(mLastEnabledState); } mSwitchBar.show(); + + if (mColorModePreference != null) { + mColorModePreference.startListening(); + mColorModePreference.updateCurrentAndSupported(); + } + } + + @Override + public void onPause() { + super.onPause(); + if (mColorModePreference != null) { + mColorModePreference.stopListening(); + } } @Override @@ -640,9 +653,8 @@ public class DevelopmentSettings extends SettingsPreferenceFragment updateLegacyDhcpClientOptions(); updateMobileDataAlwaysOnOptions(); updateSimulateColorSpace(); - updateUseNuplayerOptions(); updateUSBAudioOptions(); - updateTweakUi(); + updateRootAccessOptions(); } private void resetDangerousOptions() { @@ -656,6 +668,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment } resetDebuggerOptions(); writeLogdSizeOption(null); + resetRootAccessOptions(); writeAnimationScaleOption(0, mWindowAnimationScale, null); writeAnimationScaleOption(1, mTransitionAnimationScale, null); writeAnimationScaleOption(2, mAnimatorDurationScale, null); @@ -671,6 +684,40 @@ public class DevelopmentSettings extends SettingsPreferenceFragment pokeSystemProperties(); } + private void updateRootAccessOptions() { + String value = SystemProperties.get(ROOT_ACCESS_PROPERTY, "1"); + mRootAccess.setValue(value); + mRootAccess.setSummary(getResources() + .getStringArray(R.array.root_access_entries)[Integer.valueOf(value)]); + } + + private void writeRootAccessOptions(Object newValue) { + String oldValue = SystemProperties.get(ROOT_ACCESS_PROPERTY, "1"); + SystemProperties.set(ROOT_ACCESS_PROPERTY, newValue.toString()); + if (Integer.valueOf(newValue.toString()) < 2 && !oldValue.equals(newValue) + && "1".equals(SystemProperties.get("service.adb.root", "0"))) { + SystemProperties.set("service.adb.root", "0"); + Settings.Secure.putInt(getActivity().getContentResolver(), + Settings.Secure.ADB_ENABLED, 0); + Settings.Secure.putInt(getActivity().getContentResolver(), + Settings.Secure.ADB_ENABLED, 1); + } + updateRootAccessOptions(); + } + + private void resetRootAccessOptions() { + String oldValue = SystemProperties.get(ROOT_ACCESS_PROPERTY, "1"); + SystemProperties.set(ROOT_ACCESS_PROPERTY, "1"); + if (!oldValue.equals("1") && "1".equals(SystemProperties.get("service.adb.root", "0"))) { + SystemProperties.set("service.adb.root", "0"); + Settings.Secure.putInt(getActivity().getContentResolver(), + Settings.Secure.ADB_ENABLED, 0); + Settings.Secure.putInt(getActivity().getContentResolver(), + Settings.Secure.ADB_ENABLED, 1); + } + updateRootAccessOptions(); + } + private void updateHdcpValues() { ListPreference hdcpChecking = (ListPreference) findPreference(HDCP_CHECKING_KEY); if (hdcpChecking != null) { @@ -1187,32 +1234,6 @@ public class DevelopmentSettings extends SettingsPreferenceFragment } } - private void updateTweakUi() { - updateSwitchPreference(mTunerUiPref, getActivity().getPackageManager() - .getComponentEnabledSetting(SYSUI_TUNER) - == PackageManager.COMPONENT_ENABLED_STATE_ENABLED); - mTunerUiPref.setOnPreferenceChangeListener(this); - } - - private void writeTweakUi(Object newValue) { - Boolean enabled = (Boolean) newValue; - getActivity().getPackageManager().setComponentEnabledSetting(SYSUI_TUNER, - enabled ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED - : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, - PackageManager.DONT_KILL_APP); - } - - private void updateUseNuplayerOptions() { - updateSwitchPreference( - mUseAwesomePlayer, SystemProperties.getBoolean(USE_AWESOMEPLAYER_PROPERTY, false)); - } - - private void writeUseAwesomePlayerOptions() { - SystemProperties.set( - USE_AWESOMEPLAYER_PROPERTY, mUseAwesomePlayer.isChecked() ? "true" : "false"); - pokeSystemProperties(); - } - private void updateUSBAudioOptions() { updateSwitchPreference(mUSBAudio, Settings.Secure.getInt(getContentResolver(), Settings.Secure.USB_AUDIO_AUTOMATIC_ROUTING_DISABLED, 0) != 0); @@ -1352,38 +1373,32 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private void updateUsbConfigurationValues() { if (mUsbConfiguration != null) { - String currentValue = SystemProperties.get(SELECT_USB_CONFIGURATION_PROPERTY); - - // Ignore adb interface. The USB Manager adds or removes adb automatically - // depending on if USB debugging is enabled. - int adbIndex = currentValue.indexOf(",adb"); - if (adbIndex > 0) { - currentValue = currentValue.substring(0, adbIndex); - } + UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE); String[] values = getResources().getStringArray(R.array.usb_configuration_values); String[] titles = getResources().getStringArray(R.array.usb_configuration_titles); - int index = 1; // punt to second entry if not found + int index = 0; for (int i = 0; i < titles.length; i++) { - if (currentValue.equals(values[i])) { + if (manager.isFunctionEnabled(values[i])) { index = i; break; } } - if (index >= 0) { - mUsbConfiguration.setValue(values[index]); - mUsbConfiguration.setSummary(titles[index]); - } else { - mUsbConfiguration.setValue(""); - mUsbConfiguration.setSummary(""); - } + mUsbConfiguration.setValue(values[index]); + mUsbConfiguration.setSummary(titles[index]); mUsbConfiguration.setOnPreferenceChangeListener(this); } } private void writeUsbConfigurationOption(Object newValue) { UsbManager manager = (UsbManager)getActivity().getSystemService(Context.USB_SERVICE); - manager.setCurrentFunction(newValue.toString()); + String function = newValue.toString(); + manager.setCurrentFunction(function); + if (function.equals("none")) { + manager.setUsbDataUnlocked(false); + } else { + manager.setUsbDataUnlocked(true); + } } private void updateCpuUsageOptions() { @@ -1752,8 +1767,6 @@ public class DevelopmentSettings extends SettingsPreferenceFragment writeLegacyDhcpClientOptions(); } else if (preference == mMobileDataAlwaysOn) { writeMobileDataAlwaysOnOptions(); - } else if (preference == mUseAwesomePlayer) { - writeUseAwesomePlayerOptions(); } else if (preference == mUSBAudio) { writeUSBAudioOptions(); } else if (INACTIVE_APPS_KEY.equals(preference.getKey())) { @@ -1819,8 +1832,24 @@ public class DevelopmentSettings extends SettingsPreferenceFragment } else if (preference == mSimulateColorSpace) { writeSimulateColorSpace(newValue); return true; - } else if (preference == mTunerUiPref) { - writeTweakUi(newValue); + } else if (preference == mRootAccess) { + if ("0".equals(SystemProperties.get(ROOT_ACCESS_PROPERTY, "1")) + && !"0".equals(newValue)) { + mSelectedRootValue = newValue; + mDialogClicked = false; + if (mRootDialog != null) { + dismissDialogs(); + } + mRootDialog = new AlertDialog.Builder(getActivity()) + .setMessage(getResources().getString(R.string.root_access_warning_message)) + .setTitle(R.string.root_access_warning_title) + .setIcon(android.R.drawable.ic_dialog_alert) + .setPositiveButton(android.R.string.yes, this) + .setNegativeButton(android.R.string.no, this).show(); + mRootDialog.setOnDismissListener(this); + } else { + writeRootAccessOptions(newValue); + } return true; } return false; @@ -1839,6 +1868,10 @@ public class DevelopmentSettings extends SettingsPreferenceFragment mEnableDialog.dismiss(); mEnableDialog = null; } + if (mRootDialog != null) { + mRootDialog.dismiss(); + mRootDialog = null; + } } public void onClick(DialogInterface dialog, int which) { @@ -1875,6 +1908,13 @@ public class DevelopmentSettings extends SettingsPreferenceFragment // Reset the toggle mSwitchBar.setChecked(false); } + } else if (dialog == mRootDialog) { + if (which == DialogInterface.BUTTON_POSITIVE) { + writeRootAccessOptions(mSelectedRootValue); + } else { + // Reset the option + writeRootAccessOptions("0"); + } } }