diff options
author | djMesias <djmesias@terra.es> | 2012-01-24 13:01:08 +0100 |
---|---|---|
committer | djMesias <djmesias@terra.es> | 2012-02-09 19:59:55 +0100 |
commit | f3e43ec1bba9a48ddcc4c36c34b3f20ec5d3ee02 (patch) | |
tree | 6eabbe736e06e9d138cfa6fa2aa80d1e772884f8 | |
parent | 9828f89ff2e1d557ad36d3691d49be6d85d93ec5 (diff) | |
download | frameworks_base-f3e43ec1bba9a48ddcc4c36c34b3f20ec5d3ee02.zip frameworks_base-f3e43ec1bba9a48ddcc4c36c34b3f20ec5d3ee02.tar.gz frameworks_base-f3e43ec1bba9a48ddcc4c36c34b3f20ec5d3ee02.tar.bz2 |
Notification power widget mobiledata auto 2g/3g
Adds an option for the notification power widget mobiledata button to
automatically switch to GSM/2G only when mobile data is disabled and
WCDMA/3G pref when mobile data is enabled.
Saves battery/screen estate/manual effort for users who only turn
mobiledata+3G on when needed.
Change-Id: I2e365a339ad23dc8dee2de43eb0f26ea32363efe
-rw-r--r-- | core/java/android/provider/Settings.java | 6 | ||||
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/MobileDataButton.java | 26 |
2 files changed, 30 insertions, 2 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index ff12308..f70744f 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -2888,6 +2888,12 @@ public final class Settings { */ public static final String EXPANDED_FLASH_MODE = "expanded_flash_mode"; + /** + * Notification Power Widget - Mobile Data Auto 2G/3G Toggle + * @hide + */ + public static final String EXPANDED_MOBILEDATANETWORK_MODE = "expanded_mobiledatanetwork_mode"; + /** * Enables the Screen-on animation * @hide diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/MobileDataButton.java b/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/MobileDataButton.java index d5d3282..562ac2d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/MobileDataButton.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/MobileDataButton.java @@ -10,11 +10,16 @@ import android.net.ConnectivityManager; import android.provider.Settings; import com.android.internal.telephony.TelephonyIntents; +import com.android.internal.telephony.Phone; public class MobileDataButton extends PowerButton { public static final String MOBILE_DATA_CHANGED = "com.android.internal.telephony.MOBILE_DATA_CHANGED"; + public static final String ACTION_MODIFY_NETWORK_MODE = "com.android.internal.telephony.MODIFY_NETWORK_MODE"; + + public static final String EXTRA_NETWORK_MODE = "networkMode"; + public static boolean STATE_CHANGE_REQUEST = false; public MobileDataButton() { mType = BUTTON_MOBILEDATA; } @@ -36,13 +41,30 @@ public class MobileDataButton extends PowerButton { @Override protected void toggleState() { Context context = mView.getContext(); - boolean enabled = getDataState(context); + boolean mobiledataEnabled = getDataState(context); + + boolean toggleNetworkMode = Settings.System.getInt(context.getContentResolver(), + Settings.System.EXPANDED_MOBILEDATANETWORK_MODE, 0) == 1; ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); - if (enabled) { + if (mobiledataEnabled) { + if (toggleNetworkMode) { + // mobile data being disabled - switch network mode to 2g only + Intent intent = new Intent(ACTION_MODIFY_NETWORK_MODE); + intent.putExtra(EXTRA_NETWORK_MODE, Phone.NT_MODE_GSM_ONLY); + context.sendBroadcast(intent); + } + // disable mobile data cm.setMobileDataEnabled(false); } else { + if (toggleNetworkMode) { + // mobile data being enabled - switch network mode to 2g/3g + Intent intent = new Intent(ACTION_MODIFY_NETWORK_MODE); + intent.putExtra(EXTRA_NETWORK_MODE, Phone.NT_MODE_WCDMA_PREF); + context.sendBroadcast(intent); + } + // enable mobile data cm.setMobileDataEnabled(true); } } |