/* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.blackice.control.fragments; import android.app.Activity; import android.app.AlertDialog; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.SystemProperties; import android.preference.CheckBoxPreference; import android.preference.EditTextPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceFragment; import android.preference.PreferenceGroup; import android.preference.PreferenceScreen; import android.text.InputFilter; import android.text.InputFilter.LengthFilter; import android.util.Log; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.Toast; import java.io.BufferedOutputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.File; import java.io.FileWriter; import com.blackice.control.R; import com.blackice.control.BlackICEPreferenceFragment; import com.blackice.control.util.CMDProcessor; import com.blackice.control.util.Helpers; public class PropModder extends PreferenceFragment implements Preference.OnPreferenceChangeListener { private static final String TAG = "ROMControl :PropModder"; private static final String APPEND_CMD = "echo \"%s=%s\" >> /system/build.prop"; private static final String KILL_PROP_CMD = "busybox sed -i \"/%s/D\" /system/build.prop"; private static final String REPLACE_CMD = "busybox sed -i \"/%s/ c %<s=%s\" /system/build.prop"; private static final String LOGCAT_CMD = "busybox sed -i \"/log/ c %s\" /system/etc/init.d/72propmodder_script"; private static final String SDCARD_BUFFER_CMD = "echo %s > /sys/devices/virtual/bdi/179:0/read_ahead_kb"; private static final String REBOOT_PREF = "reboot"; private static final String FIND_CMD = "grep -q \"%s\" /system/build.prop"; private static final String REMOUNT_CMD = "busybox mount -o %s,remount -t yaffs2 /dev/block/mtdblock1 /system"; private static final String PROP_EXISTS_CMD = "grep -q %s /system/build.prop"; private static final String DISABLE = "disable"; private static final String SHOWBUILD_PATH = "/system/tmp/showbuild"; private static final String INIT_SCRIPT_LOGCAT = "/system/etc/init.d/72logcat"; private static final String INIT_SCRIPT_SDCARD = "/system/etc/init.d/72sdcard"; private static final String INIT_SCRIPT_TEMP_PATH = "/system/tmp/init_script"; private static final String WIFI_SCAN_PREF = "pref_wifi_scan_interval"; private static final String WIFI_SCAN_PROP = "wifi.supplicant_scan_interval"; private static final String WIFI_SCAN_PERSIST_PROP = "persist.wifi_scan_interval"; private static final String WIFI_SCAN_DEFAULT = System.getProperty(WIFI_SCAN_PROP); /* private static final String LCD_DENSITY_PREF = "pref_lcd_density"; private static final String LCD_DENSITY_PROP = "ro.sf.lcd_density"; private static final String LCD_DENSITY_PERSIST_PROP = "persist.lcd_density"; private static final String LCD_DENSITY_DEFAULT = System.getProperty(LCD_DENSITY_PROP); */ private static final String MAX_EVENTS_PREF = "pref_max_events"; private static final String MAX_EVENTS_PROP = "windowsmgr.max_events_per_sec"; private static final String MAX_EVENTS_PERSIST_PROP = "persist.max_events"; private static final String MAX_EVENTS_DEFAULT = System.getProperty(MAX_EVENTS_PROP); private static final String USB_MODE_PREF = "pref_usb_mode"; private static final String USB_MODE_PROP = "ro.default_usb_mode"; private static final String USB_MODE_PERSIST_PROP = "persist.usb_mode"; private static final String USB_MODE_DEFAULT = System.getProperty(USB_MODE_PROP); private static final String RING_DELAY_PREF = "pref_ring_delay"; private static final String RING_DELAY_PROP = "ro.telephony.call_ring.delay"; private static final String RING_DELAY_PERSIST_PROP = "persist.call_ring.delay"; private static final String RING_DELAY_DEFAULT = System.getProperty(RING_DELAY_PROP); private static final String VM_HEAPSIZE_PREF = "pref_vm_heapsize"; private static final String VM_HEAPSIZE_PROP = "dalvik.vm.heapsize"; private static final String VM_HEAPSIZE_PERSIST_PROP = "persist.vm_heapsize"; private static final String VM_HEAPSIZE_DEFAULT = System.getProperty(VM_HEAPSIZE_PROP); private static final String FAST_UP_PREF = "pref_fast_up"; private static final String FAST_UP_PROP = "ro.ril.hsxpa"; private static final String FAST_UP_PERSIST_PROP = "persist.fast_up"; private static final String FAST_UP_DEFAULT = System.getProperty(FAST_UP_PROP); private static final String PROX_DELAY_PREF = "pref_prox_delay"; private static final String PROX_DELAY_PROP = "mot.proximity.delay"; private static final String PROX_DELAY_PERSIST_PROP = "persist.prox.delay"; private static final String PROX_DELAY_DEFAULT = System.getProperty(PROX_DELAY_PROP); private static final String LOGCAT_PREF = "pref_logcat"; private static final String LOGCAT_PERSIST_PROP = "persist.logcat"; private static final String LOGCAT_ALIVE_PATH = "/system/etc/init.d/72propmodder_script"; private static final String LOGCAT_ENABLE = "rm /dev/log/main"; private static final String MOD_VERSION_PREF = "pref_mod_version"; private static final String MOD_VERSION_PROP = "ro.build.display.id"; private static final String MOD_VERSION_PERSIST_PROP = "persist.build.display.id"; private static final String MOD_VERSION_DEFAULT = System.getProperty(MOD_VERSION_PROP); private static final String MOD_BUTTON_TEXT = "doMod"; private static final String MOD_VERSION_TEXT = "Mods by PropModder"; private static final String SLEEP_PREF = "pref_sleep"; private static final String SLEEP_PROP = "pm.sleep_mode"; private static final String SLEEP_PERSIST_PROP = "persist.sleep"; private static final String SLEEP_DEFAULT = System.getProperty(SLEEP_PROP); private static final String TCP_STACK_PREF = "pref_tcp_stack"; private static final String TCP_STACK_PERSIST_PROP = "persist_tcp_stack"; private static final String TCP_STACK_PROP_0 = "net.tcp.buffersize.default"; private static final String TCP_STACK_PROP_1 = "net.tcp.buffersize.wifi"; private static final String TCP_STACK_PROP_2 = "net.tcp.buffersize.umts"; private static final String TCP_STACK_PROP_3 = "net.tcp.buffersize.gprs"; private static final String TCP_STACK_PROP_4 = "net.tcp.buffersize.edge"; private static final String TCP_STACK_BUFFER = "4096,87380,256960,4096,16384,256960"; private static final String JIT_PREF = "pref_jit"; private static final String JIT_PERSIST_PROP = "persist_jit"; private static final String JIT_PROP = "dalvik.vm.execution-mode"; private static final String CHECK_IN_PREF = "pref_check_in"; private static final String CHECK_IN_PERSIST_PROP = "persist_check_in"; private static final String CHECK_IN_PROP = "ro.config.nocheckin"; private static final String CHECK_IN_PROP_HTC = "ro.config.htc.nocheckin"; private static final String SDCARD_BUFFER_PREF = "pref_sdcard_buffer"; private static final String SDCARD_BUFFER_PRESIST_PROP = "persist_sdcard_buffer"; private static final String SDCARD_BUFFER_DEFAULT = System.getProperty(SDCARD_BUFFER_PRESIST_PROP); private static final String THREE_G_PREF = "pref_g_speed"; private static final String THREE_G_PERSIST_PROP = "persist_3g_speed"; private static final String THREE_G_PROP_0 = "ro.ril.enable.3g.prefix"; private static final String THREE_G_PROP_1 = "ro.ril.hep"; private static final String THREE_G_PROP_2 = FAST_UP_PROP; private static final String THREE_G_PROP_3 = "ro.ril.enable.dtm"; private static final String THREE_G_PROP_4 = "ro.ril.gprsclass"; private static final String THREE_G_PROP_5 = "ro.ril.hsdpa.category"; private static final String THREE_G_PROP_6 = "ro.ril.enable.a53"; private static final String THREE_G_PROP_7 = "ro.ril.hsupa.category"; private static final String GPU_PREF = "pref_gpu"; private static final String GPU_PERSIST_PROP = "persist_gpu"; private static final String GPU_PROP = "debug.sf.hw"; private boolean NEEDS_SETUP = false; private String placeholder; private String tcpstack0; private String jitVM; private String ModPrefHolder = SystemProperties.get(MOD_VERSION_PERSIST_PROP, SystemProperties.get(MOD_VERSION_PROP, MOD_VERSION_DEFAULT)); //handles for our menu hard key press private final int MENU_MARKET = 1; private final int MENU_REBOOT = 2; private int NOTE_ID; private PreferenceScreen mRebootMsg; private ListPreference mWifiScanPref; // private ListPreference mLcdDensityPref; private ListPreference mMaxEventsPref; private ListPreference mRingDelayPref; private ListPreference mVmHeapsizePref; private ListPreference mFastUpPref; private ListPreference mProxDelayPref; private CheckBoxPreference mLogcatPref; private EditTextPreference mModVersionPref; private ListPreference mSleepPref; private CheckBoxPreference mTcpStackPref; private CheckBoxPreference mJitPref; private CheckBoxPreference mCheckInPref; private ListPreference mSdcardBufferPref; private CheckBoxPreference m3gSpeedPref; private CheckBoxPreference mGpuPref; private AlertDialog mAlertDialog; private NotificationManager mNotificationManager; private File tmpDir = new File("/system/tmp"); private File init_d = new File("/system/etc/init.d"); private File initScriptLogcat = new File(INIT_SCRIPT_LOGCAT); private File initScriptSdcard = new File(INIT_SCRIPT_SDCARD); //handler for command processor private final CMDProcessor cmd = new CMDProcessor(); private PreferenceScreen prefSet; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.propmodder_initd); prefSet = getPreferenceScreen(); mRebootMsg = (PreferenceScreen) prefSet.findPreference(REBOOT_PREF); prefSet.removePreference(mRebootMsg); mWifiScanPref = (ListPreference) prefSet.findPreference(WIFI_SCAN_PREF); mWifiScanPref.setOnPreferenceChangeListener(this); /* mLcdDensityPref = (ListPreference) prefSet.findPreference(LCD_DENSITY_PREF); mLcdDensityPref.setOnPreferenceChangeListener(this); */ mMaxEventsPref = (ListPreference) prefSet.findPreference(MAX_EVENTS_PREF); mMaxEventsPref.setOnPreferenceChangeListener(this); mRingDelayPref = (ListPreference) prefSet.findPreference(RING_DELAY_PREF); mRingDelayPref.setOnPreferenceChangeListener(this); mVmHeapsizePref = (ListPreference) prefSet.findPreference(VM_HEAPSIZE_PREF); mVmHeapsizePref.setOnPreferenceChangeListener(this); mFastUpPref = (ListPreference) prefSet.findPreference(FAST_UP_PREF); mFastUpPref.setOnPreferenceChangeListener(this); mProxDelayPref = (ListPreference) prefSet.findPreference(PROX_DELAY_PREF); mProxDelayPref.setOnPreferenceChangeListener(this); mLogcatPref = (CheckBoxPreference) prefSet.findPreference(LOGCAT_PREF); mSleepPref = (ListPreference) prefSet.findPreference(SLEEP_PREF); mSleepPref.setOnPreferenceChangeListener(this); mTcpStackPref = (CheckBoxPreference) prefSet.findPreference(TCP_STACK_PREF); mJitPref = (CheckBoxPreference) prefSet.findPreference(JIT_PREF); ((PreferenceGroup) findPreference("general_category")).removePreference(mJitPref); mModVersionPref = (EditTextPreference) prefSet.findPreference(MOD_VERSION_PREF); String mod = Helpers.findBuildPropValueOf(MOD_VERSION_PROP); if (mModVersionPref != null) { EditText modET = mModVersionPref.getEditText(); ModPrefHolder = mModVersionPref.getEditText().toString(); if (modET != null){ InputFilter lengthFilter = new InputFilter.LengthFilter(32); modET.setFilters(new InputFilter[]{lengthFilter}); modET.setSingleLine(true); } mModVersionPref.setSummary(String.format(getString(R.string.pref_mod_version_alt_summary), mod)); } Log.d(TAG, String.format("ModPrefHoler = '%s' found build number = '%s'", ModPrefHolder, mod)); mModVersionPref.setOnPreferenceChangeListener(this); mCheckInPref = (CheckBoxPreference) prefSet.findPreference(CHECK_IN_PREF); //TODO check all init.d scripts for buffer values to display in summary // for now we will just let it go with a generic summary displayed mSdcardBufferPref = (ListPreference) prefSet.findPreference(SDCARD_BUFFER_PREF); mSdcardBufferPref.setOnPreferenceChangeListener(this); m3gSpeedPref = (CheckBoxPreference) prefSet.findPreference(THREE_G_PREF); mGpuPref = (CheckBoxPreference) prefSet.findPreference(GPU_PREF); updateScreen(); //Mounting takes the most time so lets avoid doing it if possible if (!tmpDir.isDirectory() || !init_d.isDirectory()) NEEDS_SETUP = true; if (NEEDS_SETUP) { try { if (!mount("rw")) throw new RuntimeException("Could not remount /system rw"); if (!tmpDir.isDirectory()) { Log.d(TAG, "We need to make /system/tmp dir"); cmd.su.runWaitFor("mkdir /system/tmp"); } if (!init_d.isDirectory()) { Log.d(TAG, "We need to make /system/etc/init.d/ dir"); enableInit(); } } finally { mount("ro"); NEEDS_SETUP = false; } } } @Override public void onPause() { super.onPause(); Log.d(TAG, "com.blackice.control.fragments.PropModder has been paused"); } @Override public void onResume() { super.onResume(); Log.d(TAG, "com.blackice.control.fragments.PropModder is being resumed"); } /* handle CheckBoxPreference clicks */ @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { boolean value; if (preference == mLogcatPref) { value = mLogcatPref.isChecked(); boolean returnValue = false; mount("rw"); if (value) { returnValue = cmd.su.runWaitFor(String.format("echo %s > %s", LOGCAT_ENABLE, INIT_SCRIPT_LOGCAT)).success(); if (returnValue) { cmd.su.runWaitFor(String.format("chmod 555 %s", INIT_SCRIPT_LOGCAT)).success(); } } else { returnValue = cmd.su.runWaitFor(String.format("rm %s", INIT_SCRIPT_LOGCAT)).success(); } mount("ro"); rebootRequired(); return returnValue; } else if (preference == mTcpStackPref) { Log.d(TAG, "mTcpStackPref.onPreferenceTreeClick()"); value = mTcpStackPref.isChecked(); return doMod(null, TCP_STACK_PROP_0, String.valueOf(value ? TCP_STACK_BUFFER : DISABLE)) && doMod(null, TCP_STACK_PROP_1, String.valueOf(value ? TCP_STACK_BUFFER : DISABLE)) && doMod(null, TCP_STACK_PROP_2, String.valueOf(value ? TCP_STACK_BUFFER : DISABLE)) && doMod(null, TCP_STACK_PROP_3, String.valueOf(value ? TCP_STACK_BUFFER : DISABLE)) && doMod(TCP_STACK_PERSIST_PROP, TCP_STACK_PROP_4, String.valueOf(value ? TCP_STACK_BUFFER : DISABLE)); } else if (preference == mJitPref) { Log.d(TAG, "mJitPref.onPreferenceTreeClick()"); value = mJitPref.isChecked(); return doMod(JIT_PERSIST_PROP, JIT_PROP, String.valueOf(value ? "int:fast" : "int:jit")); } else if (preference == mCheckInPref) { value = mCheckInPref.isChecked(); return doMod(null, CHECK_IN_PROP_HTC, String.valueOf(value ? 1 : DISABLE)) && doMod(CHECK_IN_PERSIST_PROP, CHECK_IN_PROP, String.valueOf(value ? 1 : DISABLE)); } else if (preference == m3gSpeedPref) { value = m3gSpeedPref.isChecked(); return doMod(THREE_G_PERSIST_PROP, THREE_G_PROP_0, String.valueOf(value ? 1 : DISABLE)) && doMod(null, THREE_G_PROP_1, String.valueOf(value ? 1 : DISABLE)) && doMod(null, THREE_G_PROP_2, String.valueOf(value ? 2 : DISABLE)) && doMod(null, THREE_G_PROP_3, String.valueOf(value ? 1 : DISABLE)) && doMod(null, THREE_G_PROP_4, String.valueOf(value ? 12 : DISABLE)) && doMod(null, THREE_G_PROP_5, String.valueOf(value ? 8 : DISABLE)) && doMod(null, THREE_G_PROP_6, String.valueOf(value ? 1 : DISABLE)) && doMod(null, THREE_G_PROP_7, String.valueOf(value ? 5 : DISABLE)); } else if (preference == mGpuPref) { value = mGpuPref.isChecked(); return doMod(GPU_PERSIST_PROP, GPU_PROP, String.valueOf(value ? 1 : DISABLE)); } else if (preference == mRebootMsg) { return cmd.su.runWaitFor("reboot").success(); } return false; } /* handle ListPreferences and EditTextPreferences */ public boolean onPreferenceChange(Preference preference, Object newValue) { if (newValue != null) { Log.e(TAG, "New preference selected: " + newValue); if (preference == mWifiScanPref) { return doMod(WIFI_SCAN_PERSIST_PROP, WIFI_SCAN_PROP, newValue.toString()); // } else if (preference == mLcdDensityPref) { // return doMod(LCD_DENSITY_PERSIST_PROP, LCD_DENSITY_PROP, // newValue.toString()); } else if (preference == mMaxEventsPref) { return doMod(MAX_EVENTS_PERSIST_PROP, MAX_EVENTS_PROP, newValue.toString()); } else if (preference == mRingDelayPref) { return doMod(RING_DELAY_PERSIST_PROP, RING_DELAY_PROP, newValue.toString()); } else if (preference == mVmHeapsizePref) { return doMod(VM_HEAPSIZE_PERSIST_PROP, VM_HEAPSIZE_PROP, newValue.toString()); } else if (preference == mFastUpPref) { return doMod(FAST_UP_PERSIST_PROP, FAST_UP_PROP, newValue.toString()); } else if (preference == mProxDelayPref) { return doMod(PROX_DELAY_PERSIST_PROP, PROX_DELAY_PROP, newValue.toString()); } else if (preference == mModVersionPref) { return doMod(MOD_VERSION_PERSIST_PROP, MOD_VERSION_PROP, newValue.toString()); } else if (preference == mSleepPref) { return doMod(SLEEP_PERSIST_PROP, SLEEP_PROP, newValue.toString()); } else if (preference == mSdcardBufferPref) { boolean returnValue = false; mount("rw"); if (newValue.toString() == DISABLE) { returnValue = cmd.su.runWaitFor(String.format("rm %s", INIT_SCRIPT_SDCARD)).success(); } else { String newFormat = String.format(SDCARD_BUFFER_CMD, newValue.toString()); cmd.su.runWaitFor(String.format(SDCARD_BUFFER_CMD, newValue.toString())); cmd.su.runWaitFor(String.format("echo '%s' > %s", newFormat, INIT_SCRIPT_SDCARD)); cmd.su.runWaitFor(String.format("chmod 555 %s", INIT_SCRIPT_SDCARD)); returnValue = true; } mount("ro"); rebootRequired(); return returnValue; } } return false; } /* method to handle mods */ private boolean doMod(String persist, String key, String value) { if (persist != null) { SystemProperties.set(persist, value); } Log.d(TAG, String.format("Calling script with args '%s' and '%s'", key, value)); backupBuildProp(); if (!mount("rw")) { throw new RuntimeException("Could not remount /system rw"); } boolean success = false; try { if (!propExists(key) && value.equals(DISABLE)) { Log.d(TAG, String.format("We want {%s} DISABLED however it doesn't exist so we do nothing and move on", key)); } else if (propExists(key)) { if (value.equals(DISABLE)) { Log.d(TAG, String.format("value == %s", DISABLE)); success = cmd.su.runWaitFor(String.format(KILL_PROP_CMD, key)).success(); } else { Log.d(TAG, String.format("value != %s", DISABLE)); success = cmd.su.runWaitFor(String.format(REPLACE_CMD, key, value)).success(); } } else { Log.d(TAG, "append command starting"); success = cmd.su.runWaitFor(String.format(APPEND_CMD, key, value)).success(); } if (!success) { restoreBuildProp(); } else { updateScreen(); } } finally { mount("ro"); } rebootRequired(); return success; } private void rebootRequired() { prefSet.addPreference(mRebootMsg); mRebootMsg.setTitle("Reboot required"); mRebootMsg.setSummary("values will take effect on next boot"); } public boolean mount(String read_value) { Log.d(TAG, "Remounting /system " + read_value); return cmd.su.runWaitFor(String.format(REMOUNT_CMD, read_value)).success(); } public boolean propExists(String prop) { Log.d(TAG, "Checking if prop " + prop + " exists in /system/build.prop"); return cmd.su.runWaitFor(String.format(PROP_EXISTS_CMD, prop)).success(); } public void updateShowBuild() { Log.d(TAG, "Setting up /system/tmp/showbuild"); try { mount("rw"); cmd.su.runWaitFor("cp -f /system/build.prop " + SHOWBUILD_PATH).success(); cmd.su.runWaitFor("chmod 777 " + SHOWBUILD_PATH).success(); } finally { mount("ro"); } } public boolean initLogcat(boolean swap0) { if (swap0) { cmd.su.runWaitFor(String.format("echo 'rm /dev/log/main' > %s", INIT_SCRIPT_LOGCAT)).success(); return cmd.su.runWaitFor(String.format("chmod 555 %s", INIT_SCRIPT_LOGCAT)).success(); } else { return cmd.su.runWaitFor(String.format("rm -f %s", INIT_SCRIPT_LOGCAT)).success(); } } public boolean initSdcard(boolean swap1) { if (swap1) { cmd.su.runWaitFor(String.format("echo 'rm /dev/log/main' > %s", INIT_SCRIPT_LOGCAT)).success(); return cmd.su.runWaitFor(String.format("chmod 755 %s", INIT_SCRIPT_LOGCAT)).success(); } else { return cmd.su.runWaitFor(String.format("rm -f %s", INIT_SCRIPT_LOGCAT)).success(); } } public boolean enableInit() { FileWriter wAlive; try { wAlive = new FileWriter("/system/tmp/initscript"); //forgive me but without all the \n's the script is one line long O:-) wAlive.write("#\n#enable init.d script by PropModder\n#\n\n"); wAlive.write("log -p I -t boot \"Starting init.d ...\"\n"); wAlive.write("busybox run-parts /system/etc/init.d"); wAlive.flush(); wAlive.close(); cmd.su.runWaitFor("cp -f /system/tmp/initscript /system/usr/bin/init.sh"); return cmd.su.runWaitFor("chmod 755 /system/usr/bin/pm_init.sh").success(); } catch(Exception e) { Log.e(TAG, "enableInit install failed: " + e); e.printStackTrace(); } return false; } public boolean backupBuildProp() { Log.d(TAG, "Backing up build.prop to /system/tmp/pm_build.prop"); return cmd.su.runWaitFor("cp /system/build.prop /system/tmp/pm_build.prop").success(); } public boolean restoreBuildProp() { Log.d(TAG, "Restoring build.prop from /system/tmp/pm_build.prop"); return cmd.su.runWaitFor("cp /system/tmp/pm_build.prop /system/build.prop").success(); } public void updateScreen() { //update all the summaries String wifi = Helpers.findBuildPropValueOf(WIFI_SCAN_PROP); if (!wifi.equals(DISABLE)) { mWifiScanPref.setValue(wifi); mWifiScanPref.setSummary(String.format(getString(R.string.pref_wifi_scan_alt_summary), wifi)); } else { mWifiScanPref.setValue(WIFI_SCAN_DEFAULT); } // String lcd = Helpers.findBuildPropValueOf(LCD_DENSITY_PROP); // if (!lcd.equals(DISABLE)) { // mLcdDensityPref.setValue(lcd); // mLcdDensityPref.setSummary(String.format(getString(R.string.pref_lcd_density_alt_summary), lcd)); // } else { // mLcdDensityPref.setValue(LCD_DENSITY_DEFAULT); // } String maxE = Helpers.findBuildPropValueOf(MAX_EVENTS_PROP); if (!maxE.equals(DISABLE)) { mMaxEventsPref.setValue(maxE); mMaxEventsPref.setSummary(String.format(getString(R.string.pref_max_events_alt_summary), maxE)); } else { mMaxEventsPref.setValue(MAX_EVENTS_DEFAULT); } String ring = Helpers.findBuildPropValueOf(RING_DELAY_PROP); if (!ring.equals(DISABLE)) { mRingDelayPref.setValue(ring); mRingDelayPref.setSummary(String.format(getString(R.string.pref_ring_delay_alt_summary), ring)); } else { mRingDelayPref.setValue(RING_DELAY_DEFAULT); } String vm = Helpers.findBuildPropValueOf(VM_HEAPSIZE_PROP); if (!vm.equals(DISABLE)) { mVmHeapsizePref.setValue(vm); mVmHeapsizePref.setSummary(String.format(getString(R.string.pref_vm_heapsize_alt_summary), vm)); } else { mVmHeapsizePref.setValue(VM_HEAPSIZE_DEFAULT); } String fast = Helpers.findBuildPropValueOf(FAST_UP_PROP); if (!fast.equals(DISABLE)) { mFastUpPref.setValue(fast); mFastUpPref.setSummary(String.format(getString(R.string.pref_fast_up_alt_summary), fast)); } else { mFastUpPref.setValue(FAST_UP_DEFAULT); } String prox = Helpers.findBuildPropValueOf(PROX_DELAY_PROP); if (!prox.equals(DISABLE)) { mProxDelayPref.setValue(prox); mProxDelayPref.setSummary(String.format(getString(R.string.pref_prox_delay_alt_summary), prox)); } else { mProxDelayPref.setValue(PROX_DELAY_DEFAULT); } String sleep = Helpers.findBuildPropValueOf(SLEEP_PROP); if (!sleep.equals(DISABLE)) { mSleepPref.setValue(sleep); mSleepPref.setSummary(String.format(getString(R.string.pref_sleep_alt_summary), sleep)); } else { mSleepPref.setValue(SLEEP_DEFAULT); } String tcp = Helpers.findBuildPropValueOf(TCP_STACK_PROP_0); if (tcp.equals(TCP_STACK_BUFFER)) { mTcpStackPref.setChecked(true); } else { mTcpStackPref.setChecked(false); } String jit = Helpers.findBuildPropValueOf(JIT_PROP); if (jit.equals("int:jit")) { mJitPref.setChecked(true); } else { mJitPref.setChecked(false); } String mod = Helpers.findBuildPropValueOf(MOD_VERSION_PROP); mModVersionPref.setSummary(String.format(getString(R.string.pref_mod_version_alt_summary), mod)); String chk = Helpers.findBuildPropValueOf(CHECK_IN_PROP); if (!chk.equals(DISABLE)) { mCheckInPref.setChecked(true); } else { mCheckInPref.setChecked(false); } String g0 = Helpers.findBuildPropValueOf(THREE_G_PROP_0); String g3 = Helpers.findBuildPropValueOf(THREE_G_PROP_3); String g6 = Helpers.findBuildPropValueOf(THREE_G_PROP_6); if (g0.equals("1") && g3.equals("1") && g6.equals("1")) { m3gSpeedPref.setChecked(true); } else { m3gSpeedPref.setChecked(false); } String gpu = Helpers.findBuildPropValueOf(GPU_PROP); if (!gpu.equals(DISABLE)) { mGpuPref.setChecked(true); } else { mGpuPref.setChecked(false);; } if (initScriptLogcat.isFile()) { mLogcatPref.setChecked(true); } else { mLogcatPref.setChecked(false); } } }