From 3db8d878ef17e8dc3a1a6a01f0f9742cbf44d791 Mon Sep 17 00:00:00 2001 From: nobodyAtall Date: Tue, 20 Dec 2011 12:43:23 +0200 Subject: [PATCH 01/21] Porting SDcard Cache read size setting from MiniCM-1.0.0 Change-Id: Id27b83fe57b9f3903f69e4e66b0d7237fe60f6a2 --- res/values/arrays.xml | 8 ++++++ res/values/strings.xml | 4 +++ res/xml/performance_settings.xml | 4 +++ .../PerformanceSettingsActivity.java | 28 +++++++++++++++++++ 4 files changed, 44 insertions(+) diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 392873ec9..0e11cfa30 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -52,6 +52,14 @@ 32m 48m + + + 128KB + 1024KB + 2048KB + 3072KB + 4096KB + Automatic diff --git a/res/values/strings.xml b/res/values/strings.xml index fcf51bb0d..00ee1e69f 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -483,6 +483,10 @@ VM heap size Maximum amount of memory per VM heap (requires reboot) + + SD Card Cache size + Amount of Cache memory for SD Card reads (requires reboot) + Disable boot animation Don\'t show the boot animation for faster boot diff --git a/res/xml/performance_settings.xml b/res/xml/performance_settings.xml index 8b07a0273..3e1a26dc8 100644 --- a/res/xml/performance_settings.xml +++ b/res/xml/performance_settings.xml @@ -55,6 +55,10 @@ android:title="@string/pref_heapsize_title" android:summary="@string/pref_heapsize_summary" android:entries="@array/entries_heapsize" android:entryValues="@array/values_heapsize" /> + + diff --git a/src/com/cyanogenmod/cmparts/activities/PerformanceSettingsActivity.java b/src/com/cyanogenmod/cmparts/activities/PerformanceSettingsActivity.java index f14939cba..58bedef5b 100644 --- a/src/com/cyanogenmod/cmparts/activities/PerformanceSettingsActivity.java +++ b/src/com/cyanogenmod/cmparts/activities/PerformanceSettingsActivity.java @@ -30,6 +30,8 @@ import android.preference.PreferenceScreen; import android.provider.Settings; +import android.util.Log; + import java.io.File; /** @@ -63,6 +65,14 @@ public class PerformanceSettingsActivity extends PreferenceActivity implements P private static final String HEAPSIZE_DEFAULT = "16m"; + private static final String SDCARDCACHESIZE_PREF = "pref_sdcardcachesize"; + + private static final String SDCARDCACHESIZE_PROP = "sys.sdcardcache.readsize"; + + private static final String SDCARDCACHESIZE_PERSIST_PROP = "persist.sys.sdcardcachereadsize"; + + private static final String SDCARDCACHESIZE_DEFAULT = "128KB"; + private static final String USE_DITHERING_PREF = "pref_use_dithering"; private static final String USE_DITHERING_PERSIST_PROP = "persist.sys.use_dithering"; @@ -119,6 +129,8 @@ public class PerformanceSettingsActivity extends PreferenceActivity implements P private ListPreference mHeapsizePref; + private ListPreference mSdcardcachesizePref; + private AlertDialog alertDialog; private int swapAvailable = -1; @@ -172,6 +184,11 @@ protected void onCreate(Bundle savedInstanceState) { SystemProperties.get(HEAPSIZE_PROP, HEAPSIZE_DEFAULT))); mHeapsizePref.setOnPreferenceChangeListener(this); + mSdcardcachesizePref = (ListPreference) prefSet.findPreference(SDCARDCACHESIZE_PREF); + mSdcardcachesizePref.setValue(SystemProperties.get(SDCARDCACHESIZE_PERSIST_PROP, + SystemProperties.get(SDCARDCACHESIZE_PROP, SDCARDCACHESIZE_DEFAULT))); + mSdcardcachesizePref.setOnPreferenceChangeListener(this); + mDisableBootanimPref = (CheckBoxPreference) prefSet.findPreference(DISABLE_BOOTANIMATION_PREF); String disableBootanimation = SystemProperties.get(DISABLE_BOOTANIMATION_PERSIST_PROP, DISABLE_BOOTANIMATION_DEFAULT); mDisableBootanimPref.setChecked("1".equals(disableBootanimation)); @@ -260,6 +277,17 @@ public boolean onPreferenceChange(Preference preference, Object newValue) { } } + if (preference == mSdcardcachesizePref) { + if (newValue != null) { + SystemProperties.set(SDCARDCACHESIZE_PERSIST_PROP, (String)newValue); + //String TAG = "CMParts"; + //Log.v(TAG, "Setting "+SDCARDCACHESIZE_PERSIST_PROP+" to " + (String)newValue); + //Log.v(TAG, "Current persist system prop: " + SystemProperties.get(SDCARDCACHESIZE_PERSIST_PROP)); + //Log.v(TAG, "Current system prop: " + SystemProperties.get(SDCARDCACHESIZE_PROP)); + return true; + } + } + if (preference == mCompcachePref) { if (newValue != null) { SystemProperties.set(COMPCACHE_PERSIST_PROP, (String)newValue); From 9a4882b6a339395e5b167c61cd258ac80fcb67be Mon Sep 17 00:00:00 2001 From: Vassilis Tsogkas Date: Wed, 27 Apr 2011 23:51:15 +0300 Subject: [PATCH 02/21] Workaround file /data/local/tmp/available_frequencies for detecting and setting the CPU frequency. Change-Id: Ib9385cd36e7e485d1584304c047e48a61e57577c --- src/com/cyanogenmod/cmparts/activities/CPUActivity.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/com/cyanogenmod/cmparts/activities/CPUActivity.java b/src/com/cyanogenmod/cmparts/activities/CPUActivity.java index 8a00996a2..815f8788c 100644 --- a/src/com/cyanogenmod/cmparts/activities/CPUActivity.java +++ b/src/com/cyanogenmod/cmparts/activities/CPUActivity.java @@ -42,6 +42,7 @@ public class CPUActivity extends PreferenceActivity implements public static final String MIN_FREQ_PREF = "pref_freq_min"; public static final String MAX_FREQ_PREF = "pref_freq_max"; public static final String FREQ_LIST_FILE = "/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies"; + public static final String FREQ_LIST_FILE2 = "/data/local/tmp/available_frequencies"; public static final String FREQ_MAX_FILE = "/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq"; public static final String FREQ_MIN_FILE = "/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq"; public static final String SOB_PREF = "pref_set_on_boot"; @@ -67,6 +68,7 @@ protected void onCreate(Bundle savedInstanceState) { String[] availableGovernors = readOneLine(GOVERNORS_LIST_FILE).split(" "); String[] availableFrequencies = new String[0]; String availableFrequenciesLine = readOneLine(FREQ_LIST_FILE); + Log.e(TAG, "I read:: " + availableFrequenciesLine); if (availableFrequenciesLine != null) availableFrequencies = availableFrequenciesLine.split(" "); String[] frequencies; @@ -176,6 +178,10 @@ public static String readOneLine(String fname) { } } catch (Exception e) { Log.e(TAG, "IO Exception when reading /sys/ file", e); + if ( fname.endsWith("scaling_available_frequencies") ) { + Log.e(TAG, "Using " + FREQ_LIST_FILE2 + " instead"); + return readOneLine(FREQ_LIST_FILE2); + } } return line; } From e74ae3cfe5e3f6115d701b545d9b1d4c67b6e053 Mon Sep 17 00:00:00 2001 From: Vassilis Tsogkas Date: Wed, 25 May 2011 10:15:06 +0300 Subject: [PATCH 03/21] Merging Change-Id: I669197e118c53db383f18a98f35e116063e43c51 --- res/values/arrays.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 0e11cfa30..7b24f36aa 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -50,6 +50,12 @@ 16m 24m 32m +<<<<<<< HEAD +======= + 36m + 40m + 44m +>>>>>>> Adding more VM Heap size options. 48m From 7a29768d2b3e048ccc4f75de9eac6f79a4e2f794 Mon Sep 17 00:00:00 2001 From: Vassilis Tsogkas Date: Mon, 18 Jul 2011 14:15:11 +0300 Subject: [PATCH 04/21] Conflict resolution after merging from CM for DisplayActivity.java Change-Id: Ia523a63fae3d491e896c6bc382d4e184daef6c54 --- res/values/strings.xml | 5 ++ res/xml/display_settings.xml | 5 ++ .../cmparts/activities/DisplayActivity.java | 68 +++++++++++++++++-- .../cmparts/intents/CPUReceiver.java | 32 +++++++++ 4 files changed, 103 insertions(+), 7 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 00ee1e69f..16c1fb869 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -85,6 +85,7 @@ Search Quick notifications +<<<<<<< HEAD Accelerometer rotation 0 degrees @@ -92,6 +93,10 @@ 180 degrees 270 degrees + + Ultra brightness + Increases the brightness level (may increase battery consumption) + Status bar tweaks AM/PM style diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml index 88bba8ce2..677aec9b4 100644 --- a/res/xml/display_settings.xml +++ b/res/xml/display_settings.xml @@ -13,6 +13,11 @@ android:targetClass="com.cyanogenmod.cmparts.activities.BacklightActivity" /> + + + diff --git a/src/com/cyanogenmod/cmparts/activities/DisplayActivity.java b/src/com/cyanogenmod/cmparts/activities/DisplayActivity.java index e675181b6..5a8a3f094 100644 --- a/src/com/cyanogenmod/cmparts/activities/DisplayActivity.java +++ b/src/com/cyanogenmod/cmparts/activities/DisplayActivity.java @@ -32,6 +32,12 @@ import android.provider.Settings; import android.os.SystemProperties; +import android.os.SystemProperties; +import android.util.Log; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; + public class DisplayActivity extends PreferenceActivity implements OnPreferenceChangeListener { /* Preference Screens */ @@ -54,6 +60,18 @@ public class DisplayActivity extends PreferenceActivity implements OnPreferenceC private static final String ROTATION_90_PREF = "pref_rotation_90"; private static final String ROTATION_180_PREF = "pref_rotation_180"; private static final String ROTATION_270_PREF = "pref_rotation_270"; + + private static final String ULTRA_BRIGHTNESS = "pref_ultra_brightness"; + + private static final String ULTRABRIGHTNESS_PROP = "sys.ultrabrightness"; + + private static final String ULTRABRIGHTNESS_PERSIST_PROP = "persist.sys.ultrabrightness"; + + private static final int ULTRABRIGHTNESS_DEFAULT = 0; + + private static final String TAG = "DisplayActivitySettings"; + + private static final String ROTATE_180_PREF = "pref_rotate_180"; private static final int ROTATION_0_MODE = 8; private static final int ROTATION_90_MODE = 1; @@ -63,6 +81,8 @@ public class DisplayActivity extends PreferenceActivity implements OnPreferenceC private CheckBoxPreference mElectronBeamAnimationOn; private CheckBoxPreference mElectronBeamAnimationOff; + + private CheckBoxPreference mUltraBrightnessPref; private CheckBoxPreference mRotationAnimationPref; @@ -118,12 +138,18 @@ public void onCreate(Bundle savedInstanceState) { mRotation180Pref = (CheckBoxPreference) prefSet.findPreference(ROTATION_180_PREF); mRotation270Pref = (CheckBoxPreference) prefSet.findPreference(ROTATION_270_PREF); int mode = Settings.System.getInt(getContentResolver(), - Settings.System.ACCELEROMETER_ROTATION_MODE, - ROTATION_0_MODE|ROTATION_90_MODE|ROTATION_270_MODE); - mRotation0Pref.setChecked((mode & ROTATION_0_MODE) != 0); - mRotation90Pref.setChecked((mode & ROTATION_90_MODE) != 0); - mRotation180Pref.setChecked((mode & ROTATION_180_MODE) != 0); - mRotation270Pref.setChecked((mode & ROTATION_270_MODE) != 0); + Settings.System.ACCELEROMETER_ROTATION_MODE, 13); + mRotation0Pref.setChecked((mode & 8) != 0); + mRotation90Pref.setChecked((mode & 1) != 0); + mRotation180Pref.setChecked((mode & 2) != 0); + mRotation270Pref.setChecked((mode & 4) != 0); + + /* Ultra brightness */ + mUltraBrightnessPref = (CheckBoxPreference) prefSet.findPreference(ULTRA_BRIGHTNESS); + if (SystemProperties.getInt(ULTRABRIGHTNESS_PERSIST_PROP, ULTRABRIGHTNESS_DEFAULT) == 0) + mUltraBrightnessPref.setChecked(false); + else + mUltraBrightnessPref.setChecked(true); } /** Whether backlight settings are supported or not */ @@ -154,6 +180,18 @@ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preferen Settings.System.putInt(getContentResolver(), Settings.System.ELECTRON_BEAM_ANIMATION_OFF, value ? 1 : 0); } + + if (preference == mUltraBrightnessPref) { + value = mUltraBrightnessPref.isChecked(); + if (value==true) { + SystemProperties.set(ULTRABRIGHTNESS_PERSIST_PROP, "1"); + writeOneLine("/sys/devices/platform/i2c-adapter/i2c-0/0-0036/mode", "i2c_pwm"); + } + else { + SystemProperties.set(ULTRABRIGHTNESS_PERSIST_PROP, "0"); + writeOneLine("/sys/devices/platform/i2c-adapter/i2c-0/0-0036/mode", "i2c_pwm_als"); + } + } if (preference == mRotationAnimationPref) { SystemProperties.set(ROTATION_ANIMATION_PROP, @@ -171,7 +209,7 @@ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preferen if (mRotation180Pref.isChecked()) mode |= ROTATION_180_MODE; if (mRotation270Pref.isChecked()) mode |= ROTATION_270_MODE; if (mode == 0) { - mode |= ROTATION_0_MODE; + mode |= 8; mRotation0Pref.setChecked(true); } Settings.System.putInt(getContentResolver(), @@ -184,5 +222,21 @@ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preferen public boolean onPreferenceChange(Preference preference, Object newValue) { return false; } + + public static boolean writeOneLine(String fname, String value) { + try { + FileWriter fw = new FileWriter(fname); + try { + fw.write(value); + } finally { + fw.close(); + } + } catch (IOException e) { + String Error = "Error writing to " + fname + ". Exception: "; + Log.e(TAG, Error, e); + return false; + } + return true; + } } diff --git a/src/com/cyanogenmod/cmparts/intents/CPUReceiver.java b/src/com/cyanogenmod/cmparts/intents/CPUReceiver.java index c67ac373b..78539f1a6 100644 --- a/src/com/cyanogenmod/cmparts/intents/CPUReceiver.java +++ b/src/com/cyanogenmod/cmparts/intents/CPUReceiver.java @@ -29,11 +29,18 @@ import java.util.Arrays; import java.util.List; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import android.provider.Settings; + public class CPUReceiver extends BroadcastReceiver { private static final String TAG = "CPUSettings"; private static final String CPU_SETTINGS_PROP = "sys.cpufreq.restored"; + + private static final String ULTRA_BRIGHTNESS_PROP = "persist.sys.ultrabrightness"; @Override public void onReceive(Context ctx, Intent intent) { @@ -44,6 +51,15 @@ public void onReceive(Context ctx, Intent intent) { } else { SystemProperties.set(CPU_SETTINGS_PROP, "false"); } + + if (SystemProperties.getBoolean(ULTRA_BRIGHTNESS_PROP, false) == true) { + writeOneLine("/sys/devices/platform/i2c-adapter/i2c-0/0-0036/mode", "i2c_pwm"); + Log.e(TAG, "Ultra Brightness writing i2c_pwm: "); + } + else { + writeOneLine("/sys/devices/platform/i2c-adapter/i2c-0/0-0036/mode", "i2c_pwm_als"); + Log.e(TAG, "Ultra Brightness writing i2c_pwm_als: "); + } } private void configureCPU(Context ctx) { @@ -85,4 +101,20 @@ private void configureCPU(Context ctx) { Log.d(TAG, "CPU settings restored."); } } + + public static boolean writeOneLine(String fname, String value) { + try { + FileWriter fw = new FileWriter(fname); + try { + fw.write(value); + } finally { + fw.close(); + } + } catch (IOException e) { + String Error = "Error writing to " + fname + ". Exception: "; + Log.e(TAG, Error, e); + return false; + } + return true; + } } From 9ee0c339008e7661e204d8a637279d975a342c22 Mon Sep 17 00:00:00 2001 From: nobodyAtall Date: Tue, 6 Sep 2011 14:44:28 +0300 Subject: [PATCH 05/21] Undervolting and overclocking for x10mini Change-Id: I0c2555d27c27694d9e67c81c9c890e39da542512 --- res/values/config.xml | 3 + res/values/strings.xml | 3 +- res/xml/cpu_settings.xml | 5 +- .../cmparts/activities/CPUActivity.java | 71 ++++++++++++++++++- .../cmparts/intents/CPUReceiver.java | 49 ++++++++++++- 5 files changed, 126 insertions(+), 5 deletions(-) diff --git a/res/values/config.xml b/res/values/config.xml index 29a262f5b..3e3b78937 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -32,4 +32,7 @@ false false + + + x10miniuv.ko diff --git a/res/values/strings.xml b/res/values/strings.xml index 16c1fb869..da5685921 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -85,7 +85,6 @@ Search Quick notifications -<<<<<<< HEAD Accelerometer rotation 0 degrees @@ -824,6 +823,8 @@ Maximum CPU frequency\nCurrently: %s Set on boot Restore CPU settings on boot + Undervolt + Underolt the CPU (improves battery life but may cause instability) Permission management diff --git a/res/xml/cpu_settings.xml b/res/xml/cpu_settings.xml index 482b1f26d..7779e122f 100644 --- a/res/xml/cpu_settings.xml +++ b/res/xml/cpu_settings.xml @@ -10,7 +10,10 @@ + + - + diff --git a/src/com/cyanogenmod/cmparts/activities/CPUActivity.java b/src/com/cyanogenmod/cmparts/activities/CPUActivity.java index 815f8788c..a7b4cfa50 100644 --- a/src/com/cyanogenmod/cmparts/activities/CPUActivity.java +++ b/src/com/cyanogenmod/cmparts/activities/CPUActivity.java @@ -24,11 +24,14 @@ import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; import android.util.Log; - +import android.preference.CheckBoxPreference; +import android.os.SystemProperties; import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; +import java.io.DataOutputStream; +import java.io.DataInputStream; // // CPU Related Settings @@ -56,6 +59,14 @@ public class CPUActivity extends PreferenceActivity implements private ListPreference mGovernorPref; private ListPreference mMinFrequencyPref; private ListPreference mMaxFrequencyPref; + + private static String UV_MODULE; + private static final String UNDERVOLT = "pref_undervolt"; + private static final String UNDERVOLT_PROP = "sys.undervolt"; + private static final String UNDERVOLT_PERSIST_PROP = "persist.sys.undervolt"; + private static final int UNDERVOLT_DEFAULT = 0; + private CheckBoxPreference mUndervoltPref; + @Override protected void onCreate(Bundle savedInstanceState) { @@ -115,6 +126,15 @@ protected void onCreate(Bundle savedInstanceState) { mMaxFrequencyPref.setValue(temp); mMaxFrequencyPref.setSummary(String.format(mMaxFrequencyFormat, toMHz(temp))); mMaxFrequencyPref.setOnPreferenceChangeListener(this); + + /* Undervolting */ + mUndervoltPref = (CheckBoxPreference) PrefScreen.findPreference(UNDERVOLT); + mUndervoltPref.setOnPreferenceChangeListener(this); + if (SystemProperties.getInt(UNDERVOLT_PERSIST_PROP, UNDERVOLT_DEFAULT) == 0) + mUndervoltPref.setChecked(false); + else + mUndervoltPref.setChecked(true); + } @Override @@ -137,8 +157,23 @@ public void onResume() { public boolean onPreferenceChange(Preference preference, Object newValue) { String fname = ""; - + boolean value; if (newValue != null) { + if (preference == mUndervoltPref) { + UV_MODULE = getResources().getString(R.string.undervolting_module); + value = mUndervoltPref.isChecked(); + if (value==true) { + SystemProperties.set(UNDERVOLT_PERSIST_PROP, "0"); + //remove the undervolting module + insmod(UV_MODULE, false); + } + else { + SystemProperties.set(UNDERVOLT_PERSIST_PROP, "1"); + //insmod the undervolting module + insmod(UV_MODULE, true); + } + return true; + } if (preference == mGovernorPref) { fname = GOVERNOR; } else if (preference == mMinFrequencyPref) { @@ -161,6 +196,7 @@ public boolean onPreferenceChange(Preference preference, Object newValue) { } else { return false; } + } return false; } @@ -205,4 +241,35 @@ public static boolean writeOneLine(String fname, String value) { private String toMHz(String mhzString) { return new StringBuilder().append(Integer.valueOf(mhzString) / 1000).append(" MHz").toString(); } + + private static boolean insmod(String module, boolean insert) { + String command; + if (insert) + command = "/system/bin/insmod /system/lib/modules/" + module; + else + command = "/system/bin/rmmod " + module; + try + { + Process process = Runtime.getRuntime().exec("su"); + Log.e(TAG, "Executing: " + command); + DataOutputStream outputStream = new DataOutputStream(process.getOutputStream()); + DataInputStream inputStream = new DataInputStream(process.getInputStream()); + outputStream.writeBytes(command + "\n"); + outputStream.flush(); + outputStream.writeBytes("exit\n"); + outputStream.flush(); + process.waitFor(); + } + catch (IOException e) + { + return false; + } + catch (InterruptedException e) + { + return false; + } + return true; + } + } + diff --git a/src/com/cyanogenmod/cmparts/intents/CPUReceiver.java b/src/com/cyanogenmod/cmparts/intents/CPUReceiver.java index 78539f1a6..b92021a3e 100644 --- a/src/com/cyanogenmod/cmparts/intents/CPUReceiver.java +++ b/src/com/cyanogenmod/cmparts/intents/CPUReceiver.java @@ -33,6 +33,8 @@ import java.io.FileWriter; import java.io.IOException; import android.provider.Settings; +import java.io.DataOutputStream; +import java.io.DataInputStream; public class CPUReceiver extends BroadcastReceiver { @@ -41,6 +43,10 @@ public class CPUReceiver extends BroadcastReceiver { private static final String CPU_SETTINGS_PROP = "sys.cpufreq.restored"; private static final String ULTRA_BRIGHTNESS_PROP = "persist.sys.ultrabrightness"; + + private static final String UNDERVOLTING_PROP = "persist.sys.undervolt"; + + private static String UV_MODULE; @Override public void onReceive(Context ctx, Intent intent) { @@ -60,15 +66,27 @@ public void onReceive(Context ctx, Intent intent) { writeOneLine("/sys/devices/platform/i2c-adapter/i2c-0/0-0036/mode", "i2c_pwm_als"); Log.e(TAG, "Ultra Brightness writing i2c_pwm_als: "); } + } private void configureCPU(Context ctx) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ctx); - + if (prefs.getBoolean(CPUActivity.SOB_PREF, false) == false) { + SystemProperties.set(UNDERVOLTING_PROP, "0"); Log.i(TAG, "Restore disabled by user preference."); return; } + + UV_MODULE = ctx.getResources().getString(com.cyanogenmod.cmparts.R.string.undervolting_module); + if (SystemProperties.getBoolean(UNDERVOLTING_PROP, false) == true) { + // insmod undervolting module + insmod(UV_MODULE, true); + } + else { + // remove undervolting module + //insmod(UV_MODULE, false); + } String governor = prefs.getString(CPUActivity.GOV_PREF, null); String minFrequency = prefs.getString(CPUActivity.MIN_FREQ_PREF, null); @@ -117,4 +135,33 @@ public static boolean writeOneLine(String fname, String value) { } return true; } + + private static boolean insmod(String module, boolean insert) { + String command; + if (insert) + command = "/system/bin/insmod /system/lib/modules/" + module; + else + command = "/system/bin/rmmod " + module; + try + { + Process process = Runtime.getRuntime().exec("su"); + Log.e(TAG, "Executing: " + command); + DataOutputStream outputStream = new DataOutputStream(process.getOutputStream()); + DataInputStream inputStream = new DataInputStream(process.getInputStream()); + outputStream.writeBytes(command + "\n"); + outputStream.flush(); + outputStream.writeBytes("exit\n"); + outputStream.flush(); + process.waitFor(); + } + catch (IOException e) + { + return false; + } + catch (InterruptedException e) + { + return false; + } + return true; + } } From 5bb2a248731eda4dc75d4834468b6db4713b2f96 Mon Sep 17 00:00:00 2001 From: Vassilis Tsogkas Date: Thu, 4 Aug 2011 11:54:25 +0300 Subject: [PATCH 06/21] Undevolting and overclocking for x10mini Change-Id: If2c0a8f5579c6d599dba89f9cee4e0c86c231863 --- res/values/config.xml | 3 + res/values/strings.xml | 2 + res/xml/cpu_settings.xml | 5 +- .../cmparts/activities/CPUActivity.java | 75 ++++++++++++++++++- .../cmparts/intents/CPUReceiver.java | 28 ++++++- 5 files changed, 109 insertions(+), 4 deletions(-) diff --git a/res/values/config.xml b/res/values/config.xml index 3e3b78937..436f0e341 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -35,4 +35,7 @@ x10miniuv.ko + + + x10minioc.ko diff --git a/res/values/strings.xml b/res/values/strings.xml index da5685921..36c71b67d 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -825,6 +825,8 @@ Restore CPU settings on boot Undervolt Underolt the CPU (improves battery life but may cause instability) + Overclock + Overclock the CPU (improves performance but may cause instability. Removing requires reboot) Permission management diff --git a/res/xml/cpu_settings.xml b/res/xml/cpu_settings.xml index 7779e122f..1c044ae2c 100644 --- a/res/xml/cpu_settings.xml +++ b/res/xml/cpu_settings.xml @@ -10,9 +10,12 @@ + + - + diff --git a/src/com/cyanogenmod/cmparts/activities/CPUActivity.java b/src/com/cyanogenmod/cmparts/activities/CPUActivity.java index a7b4cfa50..ffeba2945 100644 --- a/src/com/cyanogenmod/cmparts/activities/CPUActivity.java +++ b/src/com/cyanogenmod/cmparts/activities/CPUActivity.java @@ -64,10 +64,22 @@ public class CPUActivity extends PreferenceActivity implements private static final String UNDERVOLT = "pref_undervolt"; private static final String UNDERVOLT_PROP = "sys.undervolt"; private static final String UNDERVOLT_PERSIST_PROP = "persist.sys.undervolt"; - private static final int UNDERVOLT_DEFAULT = 0; + private static final int UNDERVOLT_DEFAULT = 0; private CheckBoxPreference mUndervoltPref; + + private static String OC_MODULE; + private static final String OVERCLOCK = "pref_overclock"; + private static final String OVERCLOCK_PROP = "sys.overclock"; + private static final String OVERCLOCK_PERSIST_PROP = "persist.sys.overclock"; + private static final int OVERCLOCK_DEFAULT = 0; + private CheckBoxPreference mOverclockPref; + + private static String AVAILABLE_FREQUENCIES_FILE = "/data/local/tmp/available_frequencies"; + + private static String OVERCLOCKED_FREQUENCIES = "122880 245760 320000 480000 600000 614400 633600 652800 672000 691200 710400 729600 748800 768000 787200 806400 825600"; - + private static String NON_OVERCLOCKED_FREQUENCIES = "122880 245760 320000 480000 600000"; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -127,6 +139,14 @@ protected void onCreate(Bundle savedInstanceState) { mMaxFrequencyPref.setSummary(String.format(mMaxFrequencyFormat, toMHz(temp))); mMaxFrequencyPref.setOnPreferenceChangeListener(this); + /* Overclocking */ + mOverclockPref = (CheckBoxPreference) PrefScreen.findPreference(OVERCLOCK); + mOverclockPref.setOnPreferenceChangeListener(this); + if (SystemProperties.getInt(OVERCLOCK_PERSIST_PROP, OVERCLOCK_DEFAULT) == 0) + mOverclockPref.setChecked(false); + else + mOverclockPref.setChecked(true); + /* Undervolting */ mUndervoltPref = (CheckBoxPreference) PrefScreen.findPreference(UNDERVOLT); mUndervoltPref.setOnPreferenceChangeListener(this); @@ -159,6 +179,57 @@ public boolean onPreferenceChange(Preference preference, Object newValue) { String fname = ""; boolean value; if (newValue != null) { + if (preference == mOverclockPref) { + OC_MODULE = getResources().getString(R.string.overclocking_module); + value = mOverclockPref.isChecked(); + if (value==true) { + SystemProperties.set(OVERCLOCK_PERSIST_PROP, "0"); + //remove the overclocking module + //insmod(OV_MODULE, false); + // also update the available frequencies + writeOneLine(AVAILABLE_FREQUENCIES_FILE, NON_OVERCLOCKED_FREQUENCIES); + String[] availableFrequencies = new String[0]; + String availableFrequenciesLine = readOneLine(AVAILABLE_FREQUENCIES_FILE); + Log.e(TAG, "I read:: " + availableFrequenciesLine); + if (availableFrequenciesLine != null) + availableFrequencies = availableFrequenciesLine.split(" "); + String[] frequencies; + String temp; + + frequencies = new String[availableFrequencies.length]; + for (int i = 0; i < frequencies.length; i++) { + frequencies[i] = toMHz(availableFrequencies[i]); + } + mMinFrequencyPref.setEntryValues(availableFrequencies); + mMinFrequencyPref.setEntries(frequencies); + mMaxFrequencyPref.setEntryValues(availableFrequencies); + mMaxFrequencyPref.setEntries(frequencies); + } + else { + SystemProperties.set(OVERCLOCK_PERSIST_PROP, "1"); + //insmod the overclocking module + insmod(OC_MODULE, true); + // also update the available frequencies + writeOneLine(AVAILABLE_FREQUENCIES_FILE, OVERCLOCKED_FREQUENCIES); + String[] availableFrequencies = new String[0]; + String availableFrequenciesLine = readOneLine(AVAILABLE_FREQUENCIES_FILE); + Log.e(TAG, "I read:: " + availableFrequenciesLine); + if (availableFrequenciesLine != null) + availableFrequencies = availableFrequenciesLine.split(" "); + String[] frequencies; + String temp; + + frequencies = new String[availableFrequencies.length]; + for (int i = 0; i < frequencies.length; i++) { + frequencies[i] = toMHz(availableFrequencies[i]); + } + mMinFrequencyPref.setEntryValues(availableFrequencies); + mMinFrequencyPref.setEntries(frequencies); + mMaxFrequencyPref.setEntryValues(availableFrequencies); + mMaxFrequencyPref.setEntries(frequencies); + } + return true; + } if (preference == mUndervoltPref) { UV_MODULE = getResources().getString(R.string.undervolting_module); value = mUndervoltPref.isChecked(); diff --git a/src/com/cyanogenmod/cmparts/intents/CPUReceiver.java b/src/com/cyanogenmod/cmparts/intents/CPUReceiver.java index b92021a3e..0c2d9c10c 100644 --- a/src/com/cyanogenmod/cmparts/intents/CPUReceiver.java +++ b/src/com/cyanogenmod/cmparts/intents/CPUReceiver.java @@ -44,9 +44,19 @@ public class CPUReceiver extends BroadcastReceiver { private static final String ULTRA_BRIGHTNESS_PROP = "persist.sys.ultrabrightness"; + private static final String OVERCLOCKING_PROP = "persist.sys.overclock"; + + private static String OC_MODULE; + private static final String UNDERVOLTING_PROP = "persist.sys.undervolt"; private static String UV_MODULE; + + private static String AVAILABLE_FREQUENCIES_FILE = "/data/local/tmp/available_frequencies"; + + private static String OVERCLOCKED_FREQUENCIES = "122880 245760 320000 480000 600000 614400 633600 652800 672000 691200 710400 729600 748800 768000 787200 806400 825600"; + + private static String NON_OVERCLOCKED_FREQUENCIES = "122880 245760 320000 480000 600000"; @Override public void onReceive(Context ctx, Intent intent) { @@ -74,10 +84,26 @@ private void configureCPU(Context ctx) { if (prefs.getBoolean(CPUActivity.SOB_PREF, false) == false) { SystemProperties.set(UNDERVOLTING_PROP, "0"); + SystemProperties.set(OVERCLOCKING_PROP, "0"); Log.i(TAG, "Restore disabled by user preference."); return; } - + + OC_MODULE = ctx.getResources().getString(com.cyanogenmod.cmparts.R.string.overclocking_module); + if (SystemProperties.getBoolean(OVERCLOCKING_PROP, false) == true) { + // insmod overclocking module + insmod(OC_MODULE, true); + // also update the available frequencies + CPUActivity.writeOneLine(AVAILABLE_FREQUENCIES_FILE, OVERCLOCKED_FREQUENCIES); + + } + else { + // remove overclocking module + //insmod(UV_MODULE, false); + // also update the available frequencies + CPUActivity.writeOneLine(AVAILABLE_FREQUENCIES_FILE, NON_OVERCLOCKED_FREQUENCIES); + } + UV_MODULE = ctx.getResources().getString(com.cyanogenmod.cmparts.R.string.undervolting_module); if (SystemProperties.getBoolean(UNDERVOLTING_PROP, false) == true) { // insmod undervolting module From 93a605629a49ae92599d857e877b4f809ac673ba Mon Sep 17 00:00:00 2001 From: Vassilis Tsogkas Date: Wed, 18 May 2011 16:32:03 +0300 Subject: [PATCH 07/21] Making undervolting active for selection only when overclocking is not on. Change-Id: Id17bb16acdda3e1f3f4110a849e84e9b6e7bacf5 --- .../cmparts/activities/CPUActivity.java | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/com/cyanogenmod/cmparts/activities/CPUActivity.java b/src/com/cyanogenmod/cmparts/activities/CPUActivity.java index ffeba2945..e734f385a 100644 --- a/src/com/cyanogenmod/cmparts/activities/CPUActivity.java +++ b/src/com/cyanogenmod/cmparts/activities/CPUActivity.java @@ -142,19 +142,26 @@ protected void onCreate(Bundle savedInstanceState) { /* Overclocking */ mOverclockPref = (CheckBoxPreference) PrefScreen.findPreference(OVERCLOCK); mOverclockPref.setOnPreferenceChangeListener(this); - if (SystemProperties.getInt(OVERCLOCK_PERSIST_PROP, OVERCLOCK_DEFAULT) == 0) + if (SystemProperties.getInt(OVERCLOCK_PERSIST_PROP, OVERCLOCK_DEFAULT) == 0) { mOverclockPref.setChecked(false); - else + } + else { mOverclockPref.setChecked(true); + + } /* Undervolting */ mUndervoltPref = (CheckBoxPreference) PrefScreen.findPreference(UNDERVOLT); + //mUndervoltPref.setDependency(OVERCLOCK); mUndervoltPref.setOnPreferenceChangeListener(this); if (SystemProperties.getInt(UNDERVOLT_PERSIST_PROP, UNDERVOLT_DEFAULT) == 0) mUndervoltPref.setChecked(false); else mUndervoltPref.setChecked(true); - + if (mOverclockPref.isChecked()==true) { + mUndervoltPref.setEnabled(false); + } + } @Override @@ -183,7 +190,8 @@ public boolean onPreferenceChange(Preference preference, Object newValue) { OC_MODULE = getResources().getString(R.string.overclocking_module); value = mOverclockPref.isChecked(); if (value==true) { - SystemProperties.set(OVERCLOCK_PERSIST_PROP, "0"); + SystemProperties.set(OVERCLOCK_PERSIST_PROP, "0"); + mUndervoltPref.setEnabled(true); //remove the overclocking module //insmod(OV_MODULE, false); // also update the available frequencies @@ -207,6 +215,12 @@ public boolean onPreferenceChange(Preference preference, Object newValue) { } else { SystemProperties.set(OVERCLOCK_PERSIST_PROP, "1"); + // Disable undervolting + mUndervoltPref.setChecked(false); + SystemProperties.set(UNDERVOLT_PERSIST_PROP, "0"); + mUndervoltPref.setEnabled(false); + insmod(UV_MODULE, false); + //insmod the overclocking module insmod(OC_MODULE, true); // also update the available frequencies From 644ab4207375200bad7b05f51e153b51ddbfe46a Mon Sep 17 00:00:00 2001 From: Vassilis Tsogkas Date: Sun, 22 May 2011 18:37:01 +0300 Subject: [PATCH 08/21] When undervolting is enabled, disable overclocking option. Change-Id: I2c874fc7ea3143111c75a51e11960bc2d061abde --- .../cmparts/activities/CPUActivity.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/com/cyanogenmod/cmparts/activities/CPUActivity.java b/src/com/cyanogenmod/cmparts/activities/CPUActivity.java index e734f385a..1e2ad6dc8 100644 --- a/src/com/cyanogenmod/cmparts/activities/CPUActivity.java +++ b/src/com/cyanogenmod/cmparts/activities/CPUActivity.java @@ -161,6 +161,9 @@ protected void onCreate(Bundle savedInstanceState) { if (mOverclockPref.isChecked()==true) { mUndervoltPref.setEnabled(false); } + if (mUndervoltPref.isChecked()==true) { + mOverclockPref.setEnabled(false); + } } @@ -214,7 +217,7 @@ public boolean onPreferenceChange(Preference preference, Object newValue) { mMaxFrequencyPref.setEntries(frequencies); } else { - SystemProperties.set(OVERCLOCK_PERSIST_PROP, "1"); + SystemProperties.set(OVERCLOCK_PERSIST_PROP, "1"); // Disable undervolting mUndervoltPref.setChecked(false); SystemProperties.set(UNDERVOLT_PERSIST_PROP, "0"); @@ -249,13 +252,15 @@ public boolean onPreferenceChange(Preference preference, Object newValue) { value = mUndervoltPref.isChecked(); if (value==true) { SystemProperties.set(UNDERVOLT_PERSIST_PROP, "0"); - //remove the undervolting module - insmod(UV_MODULE, false); + mOverclockPref.setEnabled(true); + //remove the undervolting module + insmod(UV_MODULE, false); } else { SystemProperties.set(UNDERVOLT_PERSIST_PROP, "1"); - //insmod the undervolting module - insmod(UV_MODULE, true); + mOverclockPref.setEnabled(false); + //insmod the undervolting module + insmod(UV_MODULE, true); } return true; } From 50666b04d79aef7eedd6cc5a294094345e64eb54 Mon Sep 17 00:00:00 2001 From: Vassilis Tsogkas Date: Wed, 25 May 2011 11:56:22 +0300 Subject: [PATCH 09/21] Fixing bad merge Change-Id: I072e00c227de59d37e65483c315d212c2d2c9ca9 --- res/values/arrays.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 7b24f36aa..89741f5c5 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -50,12 +50,9 @@ 16m 24m 32m -<<<<<<< HEAD -======= 36m 40m 44m ->>>>>>> Adding more VM Heap size options. 48m From d714ae5a77a3bf927abe5972f19dbb53f9b721d6 Mon Sep 17 00:00:00 2001 From: nobodyAtall Date: Thu, 18 Aug 2011 15:05:13 +0300 Subject: [PATCH 10/21] Back button ends current call setting in CM Settings -> Input Settings. Change-Id: Icb5b253d6f49d554fe2bad7689ad527b5fe8ca9b --- res/values/strings.xml | 2 ++ res/xml/input_settings.xml | 4 ++++ .../cyanogenmod/cmparts/activities/InputActivity.java | 11 +++++++++++ 3 files changed, 17 insertions(+) diff --git a/res/values/strings.xml b/res/values/strings.xml index 36c71b67d..7f76f9279 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -294,6 +294,8 @@ Pressing the trackball wakes the device Volume rocker wake Pressing the volume up/down wakes the device. Intended for devices with hard to press power key + Back button ends call + Pressing the back button ends the current call Trackball unlock Pressing the trackball unlocks the device Sliding keyboard unlock diff --git a/res/xml/input_settings.xml b/res/xml/input_settings.xml index fbd937499..0fc8dd9f5 100644 --- a/res/xml/input_settings.xml +++ b/res/xml/input_settings.xml @@ -58,6 +58,10 @@ android:title="@string/pref_volbtn_music_controls_title" android:summary="@string/pref_volbtn_music_controls_summary" /> + + diff --git a/src/com/cyanogenmod/cmparts/activities/InputActivity.java b/src/com/cyanogenmod/cmparts/activities/InputActivity.java index 5d049e452..48eaba570 100644 --- a/src/com/cyanogenmod/cmparts/activities/InputActivity.java +++ b/src/com/cyanogenmod/cmparts/activities/InputActivity.java @@ -37,6 +37,8 @@ public class InputActivity extends PreferenceActivity implements ShortcutPickHel private static final String TRACKBALL_WAKE_PREF = "pref_trackball_wake"; private static final String VOLUME_WAKE_PREF = "pref_volume_wake"; + + private static final String BACK_BUTTON_ENDS_CALL_PREF = "pref_back_button_ends_call"; private static final String VOLBTN_MUSIC_CTRL_PREF = "pref_volbtn_music_controls"; @@ -61,6 +63,8 @@ public class InputActivity extends PreferenceActivity implements ShortcutPickHel private CheckBoxPreference mTrackballWakePref; private CheckBoxPreference mVolumeWakePref; + + private CheckBoxPreference mBackButtonEndsCall; private CheckBoxPreference mVolBtnMusicCtrlPref; @@ -100,6 +104,10 @@ public void onCreate(Bundle savedInstanceState) { mVolumeWakePref = (CheckBoxPreference) prefSet.findPreference(VOLUME_WAKE_PREF); mVolumeWakePref.setChecked(Settings.System.getInt(getContentResolver(), Settings.System.VOLUME_WAKE_SCREEN, 0) == 1); + + /* Back button ends call */ + mBackButtonEndsCall = (CheckBoxPreference) prefSet.findPreference(BACK_BUTTON_ENDS_CALL_PREF); + mBackButtonEndsCall.setChecked(Settings.System.getInt(getContentResolver(), Settings.System.BACK_BUTTON_ENDS_CALL, 0) == 1); /* Volume button music controls */ mVolBtnMusicCtrlPref = (CheckBoxPreference) prefSet.findPreference(VOLBTN_MUSIC_CTRL_PREF); @@ -188,6 +196,9 @@ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preferen Settings.System.putInt(getContentResolver(), Settings.System.VOLUME_WAKE_SCREEN, value ? 1 : 0); return true; + } else if (preference == mBackButtonEndsCall) { + Settings.System.putInt(getContentResolver(), Settings.System.BACK_BUTTON_ENDS_CALL, mBackButtonEndsCall.isChecked() ? 1 : 0); + return true; } else if (preference == mVolBtnMusicCtrlPref) { value = mVolBtnMusicCtrlPref.isChecked(); Settings.System.putInt(getContentResolver(), Settings.System.VOLBTN_MUSIC_CONTROLS, From b5d0614211f62e15e3058c11caddf4276831fa7e Mon Sep 17 00:00:00 2001 From: nobodyAtall Date: Thu, 26 Jan 2012 14:09:13 +0200 Subject: [PATCH 11/21] Setting to set/unset looping for ringtones. Change-Id: I7a50f29661b36f0469619fa325034430f092f3e9 --- res/values/strings.xml | 2 ++ res/xml/sound_settings.xml | 4 ++++ .../cyanogenmod/cmparts/activities/SoundActivity.java | 10 ++++++++++ 3 files changed, 16 insertions(+) diff --git a/res/values/strings.xml b/res/values/strings.xml index 7f76f9279..59ace7ac5 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -296,6 +296,8 @@ Pressing the volume up/down wakes the device. Intended for devices with hard to press power key Back button ends call Pressing the back button ends the current call + Loop ringtone + Play ringtone continuously Trackball unlock Pressing the trackball unlocks the device Sliding keyboard unlock diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml index abc3880d8..a8edc8f85 100644 --- a/res/xml/sound_settings.xml +++ b/res/xml/sound_settings.xml @@ -30,6 +30,10 @@ android:summary="@string/sound_lock_volume_keys_summary" android:persistent="false" /> + + + Date: Mon, 29 Aug 2011 18:55:35 -0400 Subject: [PATCH 12/21] MIUI-like Battery Bar (2/4) Implement a MIUI-like battery bar. Battery level is shown as a bar running across the top of the status bar. Change-Id: Ifa03b9ecdae5fb75bf8d2a16e56fd9c1148c16ff --- res/values/arrays.xml | 2 ++ res/xml/ui_status_bar.xml | 3 ++- .../cmparts/activities/UIStatusBarActivity.java | 10 ++++------ 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 89741f5c5..b5c622729 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -105,6 +105,7 @@ Icon (Default) Percentage + Status Bar Hidden @@ -112,6 +113,7 @@ 0 1 2 + 3 diff --git a/res/xml/ui_status_bar.xml b/res/xml/ui_status_bar.xml index a867cd675..23815afc2 100644 --- a/res/xml/ui_status_bar.xml +++ b/res/xml/ui_status_bar.xml @@ -18,7 +18,8 @@ android:title="@string/ui_status_bar_battery_title" android:summary="@string/ui_status_bar_battery_summary" android:entries="@array/entries_status_bar_battery" - android:entryValues="@array/values_status_bar_battery" /> + android:entryValues="@array/values_status_bar_battery" + android:persistent="false" /> Date: Thu, 8 Dec 2011 00:23:37 +0200 Subject: [PATCH 13/21] Removing overclocking capability, leaving undervolting Change-Id: Ia3232c1ce08eedfecbe02f557c0c26e7de105c94 --- res/values/config.xml | 4 +- res/xml/cpu_settings.xml | 3 - .../cmparts/activities/CPUActivity.java | 112 ++---------------- .../cmparts/intents/CPUReceiver.java | 32 +---- 4 files changed, 15 insertions(+), 136 deletions(-) diff --git a/res/values/config.xml b/res/values/config.xml index 436f0e341..630fa6001 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -35,7 +35,5 @@ x10miniuv.ko - - - x10minioc.ko + diff --git a/res/xml/cpu_settings.xml b/res/xml/cpu_settings.xml index 1c044ae2c..f02dbf7d3 100644 --- a/res/xml/cpu_settings.xml +++ b/res/xml/cpu_settings.xml @@ -10,9 +10,6 @@ - - diff --git a/src/com/cyanogenmod/cmparts/activities/CPUActivity.java b/src/com/cyanogenmod/cmparts/activities/CPUActivity.java index 1e2ad6dc8..ef73a7d33 100644 --- a/src/com/cyanogenmod/cmparts/activities/CPUActivity.java +++ b/src/com/cyanogenmod/cmparts/activities/CPUActivity.java @@ -67,19 +67,6 @@ public class CPUActivity extends PreferenceActivity implements private static final int UNDERVOLT_DEFAULT = 0; private CheckBoxPreference mUndervoltPref; - private static String OC_MODULE; - private static final String OVERCLOCK = "pref_overclock"; - private static final String OVERCLOCK_PROP = "sys.overclock"; - private static final String OVERCLOCK_PERSIST_PROP = "persist.sys.overclock"; - private static final int OVERCLOCK_DEFAULT = 0; - private CheckBoxPreference mOverclockPref; - - private static String AVAILABLE_FREQUENCIES_FILE = "/data/local/tmp/available_frequencies"; - - private static String OVERCLOCKED_FREQUENCIES = "122880 245760 320000 480000 600000 614400 633600 652800 672000 691200 710400 729600 748800 768000 787200 806400 825600"; - - private static String NON_OVERCLOCKED_FREQUENCIES = "122880 245760 320000 480000 600000"; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -139,31 +126,14 @@ protected void onCreate(Bundle savedInstanceState) { mMaxFrequencyPref.setSummary(String.format(mMaxFrequencyFormat, toMHz(temp))); mMaxFrequencyPref.setOnPreferenceChangeListener(this); - /* Overclocking */ - mOverclockPref = (CheckBoxPreference) PrefScreen.findPreference(OVERCLOCK); - mOverclockPref.setOnPreferenceChangeListener(this); - if (SystemProperties.getInt(OVERCLOCK_PERSIST_PROP, OVERCLOCK_DEFAULT) == 0) { - mOverclockPref.setChecked(false); - } - else { - mOverclockPref.setChecked(true); - - } /* Undervolting */ mUndervoltPref = (CheckBoxPreference) PrefScreen.findPreference(UNDERVOLT); - //mUndervoltPref.setDependency(OVERCLOCK); mUndervoltPref.setOnPreferenceChangeListener(this); if (SystemProperties.getInt(UNDERVOLT_PERSIST_PROP, UNDERVOLT_DEFAULT) == 0) - mUndervoltPref.setChecked(false); - else - mUndervoltPref.setChecked(true); - if (mOverclockPref.isChecked()==true) { - mUndervoltPref.setEnabled(false); - } - if (mUndervoltPref.isChecked()==true) { - mOverclockPref.setEnabled(false); - } + mUndervoltPref.setChecked(false); + else + mUndervoltPref.setChecked(true); } @@ -189,80 +159,20 @@ public boolean onPreferenceChange(Preference preference, Object newValue) { String fname = ""; boolean value; if (newValue != null) { - if (preference == mOverclockPref) { - OC_MODULE = getResources().getString(R.string.overclocking_module); - value = mOverclockPref.isChecked(); - if (value==true) { - SystemProperties.set(OVERCLOCK_PERSIST_PROP, "0"); - mUndervoltPref.setEnabled(true); - //remove the overclocking module - //insmod(OV_MODULE, false); - // also update the available frequencies - writeOneLine(AVAILABLE_FREQUENCIES_FILE, NON_OVERCLOCKED_FREQUENCIES); - String[] availableFrequencies = new String[0]; - String availableFrequenciesLine = readOneLine(AVAILABLE_FREQUENCIES_FILE); - Log.e(TAG, "I read:: " + availableFrequenciesLine); - if (availableFrequenciesLine != null) - availableFrequencies = availableFrequenciesLine.split(" "); - String[] frequencies; - String temp; - - frequencies = new String[availableFrequencies.length]; - for (int i = 0; i < frequencies.length; i++) { - frequencies[i] = toMHz(availableFrequencies[i]); - } - mMinFrequencyPref.setEntryValues(availableFrequencies); - mMinFrequencyPref.setEntries(frequencies); - mMaxFrequencyPref.setEntryValues(availableFrequencies); - mMaxFrequencyPref.setEntries(frequencies); - } - else { - SystemProperties.set(OVERCLOCK_PERSIST_PROP, "1"); - // Disable undervolting - mUndervoltPref.setChecked(false); - SystemProperties.set(UNDERVOLT_PERSIST_PROP, "0"); - mUndervoltPref.setEnabled(false); - insmod(UV_MODULE, false); - - //insmod the overclocking module - insmod(OC_MODULE, true); - // also update the available frequencies - writeOneLine(AVAILABLE_FREQUENCIES_FILE, OVERCLOCKED_FREQUENCIES); - String[] availableFrequencies = new String[0]; - String availableFrequenciesLine = readOneLine(AVAILABLE_FREQUENCIES_FILE); - Log.e(TAG, "I read:: " + availableFrequenciesLine); - if (availableFrequenciesLine != null) - availableFrequencies = availableFrequenciesLine.split(" "); - String[] frequencies; - String temp; - - frequencies = new String[availableFrequencies.length]; - for (int i = 0; i < frequencies.length; i++) { - frequencies[i] = toMHz(availableFrequencies[i]); - } - mMinFrequencyPref.setEntryValues(availableFrequencies); - mMinFrequencyPref.setEntries(frequencies); - mMaxFrequencyPref.setEntryValues(availableFrequencies); - mMaxFrequencyPref.setEntries(frequencies); - } - return true; - } if (preference == mUndervoltPref) { - UV_MODULE = getResources().getString(R.string.undervolting_module); + UV_MODULE = getResources().getString(R.string.undervolting_module); value = mUndervoltPref.isChecked(); if (value==true) { - SystemProperties.set(UNDERVOLT_PERSIST_PROP, "0"); - mOverclockPref.setEnabled(true); - //remove the undervolting module - insmod(UV_MODULE, false); + SystemProperties.set(UNDERVOLT_PERSIST_PROP, "0"); + //remove the undervolting module + insmod(UV_MODULE, false); } else { - SystemProperties.set(UNDERVOLT_PERSIST_PROP, "1"); - mOverclockPref.setEnabled(false); - //insmod the undervolting module - insmod(UV_MODULE, true); + SystemProperties.set(UNDERVOLT_PERSIST_PROP, "1"); + //insmod the undervolting module + insmod(UV_MODULE, true); } - return true; + return true; } if (preference == mGovernorPref) { fname = GOVERNOR; diff --git a/src/com/cyanogenmod/cmparts/intents/CPUReceiver.java b/src/com/cyanogenmod/cmparts/intents/CPUReceiver.java index 0c2d9c10c..e9e92fcef 100644 --- a/src/com/cyanogenmod/cmparts/intents/CPUReceiver.java +++ b/src/com/cyanogenmod/cmparts/intents/CPUReceiver.java @@ -43,20 +43,10 @@ public class CPUReceiver extends BroadcastReceiver { private static final String CPU_SETTINGS_PROP = "sys.cpufreq.restored"; private static final String ULTRA_BRIGHTNESS_PROP = "persist.sys.ultrabrightness"; - - private static final String OVERCLOCKING_PROP = "persist.sys.overclock"; - - private static String OC_MODULE; private static final String UNDERVOLTING_PROP = "persist.sys.undervolt"; private static String UV_MODULE; - - private static String AVAILABLE_FREQUENCIES_FILE = "/data/local/tmp/available_frequencies"; - - private static String OVERCLOCKED_FREQUENCIES = "122880 245760 320000 480000 600000 614400 633600 652800 672000 691200 710400 729600 748800 768000 787200 806400 825600"; - - private static String NON_OVERCLOCKED_FREQUENCIES = "122880 245760 320000 480000 600000"; @Override public void onReceive(Context ctx, Intent intent) { @@ -83,36 +73,20 @@ private void configureCPU(Context ctx) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ctx); if (prefs.getBoolean(CPUActivity.SOB_PREF, false) == false) { - SystemProperties.set(UNDERVOLTING_PROP, "0"); - SystemProperties.set(OVERCLOCKING_PROP, "0"); + SystemProperties.set(UNDERVOLTING_PROP, "0"); Log.i(TAG, "Restore disabled by user preference."); return; } - - OC_MODULE = ctx.getResources().getString(com.cyanogenmod.cmparts.R.string.overclocking_module); - if (SystemProperties.getBoolean(OVERCLOCKING_PROP, false) == true) { - // insmod overclocking module - insmod(OC_MODULE, true); - // also update the available frequencies - CPUActivity.writeOneLine(AVAILABLE_FREQUENCIES_FILE, OVERCLOCKED_FREQUENCIES); - - } - else { - // remove overclocking module - //insmod(UV_MODULE, false); - // also update the available frequencies - CPUActivity.writeOneLine(AVAILABLE_FREQUENCIES_FILE, NON_OVERCLOCKED_FREQUENCIES); - } UV_MODULE = ctx.getResources().getString(com.cyanogenmod.cmparts.R.string.undervolting_module); - if (SystemProperties.getBoolean(UNDERVOLTING_PROP, false) == true) { + if (SystemProperties.getBoolean(UNDERVOLTING_PROP, false) == true) { // insmod undervolting module insmod(UV_MODULE, true); } else { // remove undervolting module //insmod(UV_MODULE, false); - } + } String governor = prefs.getString(CPUActivity.GOV_PREF, null); String minFrequency = prefs.getString(CPUActivity.MIN_FREQ_PREF, null); From 584747af741ab24196249345d7ea84035beb412b Mon Sep 17 00:00:00 2001 From: nobodyAtall Date: Mon, 12 Dec 2011 11:38:06 +0200 Subject: [PATCH 14/21] Toggling the flashlight from the lockscreen by long pressing the HOME button (2/2) Change-Id: I5db06ce5d0230e971baabb475ffd5696dd3de970 --- res/values-el/strings.xml | 12 +++++++++++- res/values/strings.xml | 2 ++ res/xml/lockscreen_widgets_settings.xml | 4 ++++ .../activities/LockscreenWidgetsActivity.java | 12 ++++++++++++ 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 6add58bb2..3d946f691 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -89,6 +89,10 @@ 180 μοίρες 270 μοίρες + + Ενισχυμένη φωτεινότητα οθόνης + Ανεβάζει το επίπεδο φωτεινότητας της οθόνης (μπορεί να προκαλέσει αυξημένη κατανάλωση μπαταρίας) + Tweaks μπάρας κατάστασης Στυλ AM/PM @@ -259,6 +263,8 @@ Συνεχής εμφ. μπαταρίας Συνεχής εμφάνιση επιπέδου μπαταρίας στην οθόνη κλειδώματος + Φακός στην οθόνη κλειδώματος + Παρατεταμένη πιεση του πλήκτρου HOME στην οθόνη κλειδώματος αναβεί/σβήνει το Φλας Διάταξη γραφ. στοιχείων Διάταξη ρολογιού, ημερομηνίας, πάροχου, κατάστασης Έλεγχος μουσικής @@ -759,7 +765,11 @@ Μέγιστη συχνότητα CPU\nΤρέχουσα: %s Ορισμός κατά την εκκίνηση Επαναφορά ρυθμίσεων CPU κατά την εκκίνηση - + Undervolt + Μείωση τάσης στον επεξεργαστή (μειώνει την κατανάλωση μπαταρίας αλλά ίσως προκαλέσει αστάθεια) + Overclock + Αύξηση συχνότητας ρολογιού του επεξεργαστή (βελτιώνει τις επιδόσεις αλλά ίσως προκαλέσει αστάθεια) + Διαχείριση δικαιωμάτων Ενεργοποίηση διαχείρισης δικαιωμάτων εφαρμογών diff --git a/res/values/strings.xml b/res/values/strings.xml index 59ace7ac5..eb3bd1881 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -274,6 +274,8 @@ Always display battery status Display battery status on the lockscreen at all times + Lockscreen flashlight + Long pressing HOME button on the lockscreen toggles the flashlight Widget layout Toggle clock, date, carrier, status layout Default diff --git a/res/xml/lockscreen_widgets_settings.xml b/res/xml/lockscreen_widgets_settings.xml index 75559731f..91622d43e 100644 --- a/res/xml/lockscreen_widgets_settings.xml +++ b/res/xml/lockscreen_widgets_settings.xml @@ -13,6 +13,10 @@ + + Date: Tue, 20 Dec 2011 12:40:39 +0200 Subject: [PATCH 15/21] Update for Greek translations Change-Id: I9ef58b2c9b8e38576eee0b953b8823463269d5c4 --- res/values-el/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 3d946f691..ee13dc5b7 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -281,6 +281,8 @@ Το πάτημα του trackball ξυπνά τη συσκευή Ενεργ. με ένταση Το πάτημα των πλήκτρων έντασης ενεργοποιεί τη συσκευή. Προορίζεται για συσκευές με πρόβλημα στο πλήκτρο power + Το πλήκτρο Back τερματίζει την κλήση + Πιέζοντας το πλήκτρο Back τερματίζει την τρέχουσα κλήση Ξεκλείδωμα με trackball Το πάτημα του trackball ξεκλειδώνει τη συσκευή Ξεκλείδωμα με συρτάρι πληκτρολ. From 5bf03c6fb0debb5a2ba1e0075c817d906a7fb5d2 Mon Sep 17 00:00:00 2001 From: nobodyAtall Date: Thu, 26 Jan 2012 14:11:15 +0200 Subject: [PATCH 16/21] Add option to center the status bar clock (2/2) Change-Id: Ia5923c1e7e2ccfc93e310d8d8b04e86a709aa048 --- res/values/strings.xml | 4 ++ res/xml/ui_status_bar.xml | 7 ++++ .../activities/UIStatusBarActivity.java | 38 +++++++++++++++++++ 3 files changed, 49 insertions(+) diff --git a/res/values/strings.xml b/res/values/strings.xml index eb3bd1881..998851b9a 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -102,6 +102,10 @@ Display style of AM/PM next to clock Show clock Status bar clock will be hidden, if disabled + Center clock + Clock will be centered if checked. Uncheck to move to the right. + Clock color + ffffffff Battery status style Display style of battery status Compact carrier label diff --git a/res/xml/ui_status_bar.xml b/res/xml/ui_status_bar.xml index 23815afc2..b3db8bb1a 100644 --- a/res/xml/ui_status_bar.xml +++ b/res/xml/ui_status_bar.xml @@ -7,6 +7,13 @@ android:title="@string/ui_status_bar_clock_title" android:summary="@string/ui_status_bar_clock_summary" android:defaultValue="true" /> + + Date: Thu, 26 Jan 2012 13:45:28 +0200 Subject: [PATCH 17/21] Greek translations for center clock and clock color. Change-Id: I926687801c3eb5e84c461729330fbb9be4e5ca9f --- res/values-el/strings.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index ee13dc5b7..354ac9a42 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -99,6 +99,10 @@ Προβολή AM/PM δίπλα στο ρολόι Εμφάνιση ρολογιού Το ρολόι της μπάρας κατάστασης θα είναι κρυμμένο, αν το απενεργοποιήσετε + Κεντραρισμένο ρολόι + Το ρολόι θα είναι είναι κεντραρισμένο αν το ενεργοποιήσετε. Απενεργοποιήστε το για να μετακινηθεί στα δεξιά. + Χρώμα ρολογιού + ffffffff Στυλ ένδειξης μπαταρίας Επιλογές εμφάνισης ένδειξης μπαταρίας Συμπαγής ετικέτα παρόχου From 1f2baeac4dbdecc5f53fdd784b4ee4b71a53ac6c Mon Sep 17 00:00:00 2001 From: nobodyAtall Date: Mon, 6 Feb 2012 17:49:42 +0200 Subject: [PATCH 18/21] A2SD Performance settings menu Change-Id: I9e349b6f8ab3b25316edb88abaa8334c872d16df --- AndroidManifest.xml | 12 ++ res/values/strings.xml | 11 ++ res/xml/a2sd_settings.xml | 15 ++ res/xml/performance_settings.xml | 6 + res/xml/system_settings.xml | 2 +- .../cmparts/activities/A2SDActivity.java | 169 ++++++++++++++++++ .../cmparts/activities/A2SDInfo.java | 131 ++++++++++++++ 7 files changed, 345 insertions(+), 1 deletion(-) create mode 100644 res/xml/a2sd_settings.xml create mode 100644 src/com/cyanogenmod/cmparts/activities/A2SDActivity.java create mode 100644 src/com/cyanogenmod/cmparts/activities/A2SDInfo.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index c6e84a8fb..1c4312ddd 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -202,6 +202,18 @@ + + + + + + + + + + diff --git a/res/values/strings.xml b/res/values/strings.xml index 998851b9a..6dbb9d903 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -838,6 +838,17 @@ Overclock Overclock the CPU (improves performance but may cause instability. Removing requires reboot) + + A2SD (ext) settings + A2SD (ext) settings (changes require reboot) + App to SD card (ext) settings + List of A2SD modes\nCurrently installed: %S + Available modes + A2SD Information + A2SD Information + Loading A2SD information\u2026 + Error loading A2SD information\u2026 + Permission management Enable application permissions management diff --git a/res/xml/a2sd_settings.xml b/res/xml/a2sd_settings.xml new file mode 100644 index 000000000..3dcb3c5e8 --- /dev/null +++ b/res/xml/a2sd_settings.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/res/xml/performance_settings.xml b/res/xml/performance_settings.xml index 3e1a26dc8..aed96e867 100644 --- a/res/xml/performance_settings.xml +++ b/res/xml/performance_settings.xml @@ -11,6 +11,12 @@ android:targetClass="com.cyanogenmod.cmparts.activities.CPUActivity" /> + + + + - \ No newline at end of file + diff --git a/src/com/cyanogenmod/cmparts/activities/A2SDActivity.java b/src/com/cyanogenmod/cmparts/activities/A2SDActivity.java new file mode 100644 index 000000000..62122c75e --- /dev/null +++ b/src/com/cyanogenmod/cmparts/activities/A2SDActivity.java @@ -0,0 +1,169 @@ +/* + * Copyright (C) 2011 nobodyAtall @ xda + * + * 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.cyanogenmod.cmparts.activities; + +import com.cyanogenmod.cmparts.R; + +import android.os.Bundle; +import android.preference.ListPreference; +import android.preference.Preference; +import android.preference.PreferenceActivity; +import android.preference.PreferenceScreen; +import android.util.Log; +import android.preference.CheckBoxPreference; +import android.os.SystemProperties; +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.DataOutputStream; +import java.io.DataInputStream; +import java.io.*; + +// +// CPU Related Settings +// +public class A2SDActivity extends PreferenceActivity implements + Preference.OnPreferenceChangeListener { + + public static final String A2SD_MODE_PREF = "pref_a2sd_mode"; + + private static final String TAG = "A2SDSettings"; + + private String mModeFormat; + + private ListPreference mA2sdPref; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + String temp; + mModeFormat = getString(R.string.a2sd_mode_summary); + + String[] availableModes = { "none", "a2sd", "dc2sd" }; + setTitle(R.string.a2sd_title); + addPreferencesFromResource(R.xml.a2sd_settings); + + PreferenceScreen PrefScreen = getPreferenceScreen(); + temp = getCurMode(); + + mA2sdPref = (ListPreference) PrefScreen.findPreference(A2SD_MODE_PREF); + mA2sdPref.setEntryValues(availableModes); + mA2sdPref.setEntries(availableModes); + mA2sdPref.setValue(temp); + mA2sdPref.setSummary(String.format(mModeFormat, temp)); + mA2sdPref.setOnPreferenceChangeListener(this); + + } + + @Override + public void onResume() { + String temp; + + super.onResume(); + temp = getCurMode(); + mA2sdPref.setValue(temp); + mA2sdPref.setSummary(String.format(mModeFormat, temp)); + + } + + public boolean onPreferenceChange(Preference preference, Object newValue) { + if (newValue != null) { + if (preference == mA2sdPref) { + setMode((String) newValue); + return true; + } + } + return false; + } + + public static String getCurMode() { + File file_dc2sd = new File("/sd-ext/.dc2sd"); + boolean exists_dc2sd = file_dc2sd.exists(); + if (!exists_dc2sd) { + File file_a2sd = new File("/sd-ext/.a2sd"); + boolean exists_a2sd = file_a2sd.exists(); + if (!exists_a2sd) + return "none"; + else + return "a2sd"; + } + else { + return "dc2sd"; + } + } + + public void setMode(String mode) { + if (mode.equals("none")) { + runA2sd(0); + } + else if (mode.equals("a2sd")) { + File file_a2sd = new File("/sd-ext/.a2sd"); + boolean exists_a2sd = file_a2sd.exists(); + if (!exists_a2sd) { + runA2sd(1); + } + File file_dc2sd = new File("/sd-ext/.dc2sd"); + if (file_dc2sd.exists()) + file_dc2sd.delete(); + } + else if (mode.equals("dc2sd")) { + File file_dc2sd = new File("/sd-ext/.dc2sd"); + boolean exists_dc2sd = file_dc2sd.exists(); + if (!exists_dc2sd) { + runA2sd(2); + } + } + String temp = getCurMode(); + mA2sdPref.setValue(temp); + mA2sdPref.setSummary(String.format(mModeFormat, temp)); + } + + public static int runA2sd(int mode) { + String command = ""; + if (mode == 0) //remove a2sd + command = "echo \"n\" | /system/bin/a2sd remove"; + else if (mode == 1) //a2sd + command = "echo \"n\" | /system/bin/a2sd install"; + else if (mode == 2) //dc2sd + command = "echo \"y\" | /system/bin/a2sd install"; + if (!command.equals("")) { + try { + Process process = Runtime.getRuntime().exec("su"); + Log.e(TAG, "Executing: " + command); + DataOutputStream outputStream = new DataOutputStream(process.getOutputStream()); + DataInputStream inputStream = new DataInputStream(process.getInputStream()); + outputStream.writeBytes(command + "\n"); + outputStream.flush(); + outputStream.writeBytes("exit\n"); + outputStream.flush(); + process.waitFor(); + } + catch (IOException e) { + return -1; + } + catch (InterruptedException e) { + return -2; + } + return 0; + } + return -3; + } + +} + diff --git a/src/com/cyanogenmod/cmparts/activities/A2SDInfo.java b/src/com/cyanogenmod/cmparts/activities/A2SDInfo.java new file mode 100644 index 000000000..47d50d0f8 --- /dev/null +++ b/src/com/cyanogenmod/cmparts/activities/A2SDInfo.java @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2011 The CyanogenMod 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.cyanogenmod.cmparts.activities; + +import com.cyanogenmod.cmparts.R; + +import android.os.Bundle; +import android.text.TextUtils; +import android.util.Config; +import android.webkit.WebView; +import android.webkit.WebViewClient; +import android.widget.Toast; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.io.InputStreamReader; + +import com.android.internal.app.AlertActivity; +import com.android.internal.app.AlertController; + +import java.io.DataOutputStream; +import java.io.DataInputStream; + +public class A2SDInfo extends AlertActivity { + + private static final String APP2SDINFO_PATH = "/data/app2sdinfo.log"; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + runA2sd(0); + runA2sd(1); + + InputStreamReader inputReader = null; + StringBuilder data = null; + try { + data = new StringBuilder(2048); + char tmp[] = new char[2048]; + int numRead; + inputReader = new FileReader(APP2SDINFO_PATH); + while ((numRead = inputReader.read(tmp)) >= 0) { + data.append(tmp, 0, numRead); + } + } catch (IOException e) { + showErrorAndFinish(); + return; + } finally { + try { + if (inputReader != null) { + inputReader.close(); + } + } catch (IOException e) { + } + } + + if (TextUtils.isEmpty(data)) { + showErrorAndFinish(); + return; + } + + WebView webView = new WebView(this); + + // Begin the loading. This will be done in a separate thread in WebView. + webView.loadDataWithBaseURL(null, data.toString(), "text/plain", "utf-8", null); + webView.setWebViewClient(new WebViewClient() { + @Override + public void onPageFinished(WebView view, String url) { + // Change from 'Loading...' to the real title + mAlert.setTitle(getString(R.string.a2sd_dialog)); + } + }); + + final AlertController.AlertParams p = mAlertParams; + p.mTitle = getString(R.string.a2sd_loading); + p.mView = webView; + p.mForceInverseBackground = true; + setupAlert(); + } + + private void showErrorAndFinish() { + Toast.makeText(this, R.string.a2sd_error, Toast.LENGTH_LONG) + .show(); + finish(); + } + + public static int runA2sd(int mode) { + String command = ""; + if (mode == 0) + command = "a2sd partlist > /data/app2sdinfo.log"; + else if (mode == 1) //a2sd + command = "a2sd diskspace >> /data/app2sdinfo.log"; + if (!command.equals("")) { + try { + Process process = Runtime.getRuntime().exec("su"); + DataOutputStream outputStream = new DataOutputStream(process.getOutputStream()); + DataInputStream inputStream = new DataInputStream(process.getInputStream()); + outputStream.writeBytes(command + "\n"); + outputStream.flush(); + outputStream.writeBytes("exit\n"); + outputStream.flush(); + process.waitFor(); + } + catch (IOException e) { + return -1; + } + catch (InterruptedException e) { + return -2; + } + return 0; + } + return -3; + } + +} + From db25a929fc8d851457d8e3ee586289b5620d14d9 Mon Sep 17 00:00:00 2001 From: nobodyAtall Date: Tue, 7 Feb 2012 11:39:19 +0200 Subject: [PATCH 19/21] Adding 'reboot required' string for A2SD changes Change-Id: Ie18e33f243ebd3ede20043d7d9d042886545aaf2 --- res/values/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 6dbb9d903..073d34aca 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -840,10 +840,10 @@ A2SD (ext) settings - A2SD (ext) settings (changes require reboot) + A2SD (ext) settings App to SD card (ext) settings List of A2SD modes\nCurrently installed: %S - Available modes + Available modes (requires reboot) A2SD Information A2SD Information Loading A2SD information\u2026 From d7fd09b13ad6d7f76a238576f72452b7d667e756 Mon Sep 17 00:00:00 2001 From: nobodyAtall Date: Tue, 6 Mar 2012 18:02:06 +0200 Subject: [PATCH 20/21] Updating MiniCM to MiniCM7 is update notification prompt Change-Id: I481bcd38159f3cfc916664a4a36c3485f5236a45 --- res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 073d34aca..d1e4bc6dc 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -30,7 +30,7 @@ System changelog, stats, update notifications - Update notifications + MiniCM7 Update notifications Get push notifications of updates From fae73b084fc0bd61ba6303bad7e17f28619ebb54 Mon Sep 17 00:00:00 2001 From: alessiocerci Date: Tue, 19 Jun 2012 16:32:22 +0300 Subject: [PATCH 21/21] Update gingerbread --- res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index d1e4bc6dc..38d5b7782 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -30,7 +30,7 @@ System changelog, stats, update notifications - MiniCM7 Update notifications + Lx Update notifications Get push notifications of updates