summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordjMesias <djmesias@terra.es>2012-01-24 13:01:08 +0100
committerdjMesias <djmesias@terra.es>2012-02-09 19:59:55 +0100
commitf3e43ec1bba9a48ddcc4c36c34b3f20ec5d3ee02 (patch)
tree6eabbe736e06e9d138cfa6fa2aa80d1e772884f8
parent9828f89ff2e1d557ad36d3691d49be6d85d93ec5 (diff)
downloadframeworks_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.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/MobileDataButton.java26
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);
}
}