diff options
4 files changed, 35 insertions, 26 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index ddcdf55..ca90505 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -2632,13 +2632,6 @@ public final class Settings { public static final String EXPANDED_NETWORK_MODE = "expanded_network_mode"; /** - * Notification Power Widget - Custom LTE Toggle - * 1 - lte on, 0 - lte off - * @hide - */ - public static final String LTE_MODE = "lte_mode"; - - /** * Notification Power Widget - Custom Screen Timeout * @hide */ diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/LTEButton.java b/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/LTEButton.java index ffb638c..ea8bf79 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/LTEButton.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/LTEButton.java @@ -1,6 +1,5 @@ package com.android.systemui.statusbar.powerwidget; -import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.net.Uri; @@ -18,28 +17,27 @@ public class LTEButton extends PowerButton{ private static final List<Uri> OBSERVED_URIS = new ArrayList<Uri>(); static { - OBSERVED_URIS.add(Settings.System.getUriFor(Settings.System.LTE_MODE)); + OBSERVED_URIS.add(Settings.Global.getUriFor(Settings.Global.PREFERRED_NETWORK_MODE)); } public LTEButton() { mType = BUTTON_LTE; } @Override protected void updateState(Context context) { - ContentResolver resolver = context.getContentResolver(); int network = getCurrentPreferredNetworkMode(context); switch(network) { case Phone.NT_MODE_GLOBAL: -/* + case Phone.NT_MODE_LTE_CDMA_AND_EVDO: case Phone.NT_MODE_LTE_GSM_WCDMA: + case Phone.NT_MODE_LTE_CMDA_EVDO_GSM_WCDMA: case Phone.NT_MODE_LTE_ONLY: + case Phone.NT_MODE_LTE_WCDMA: mIcon = R.drawable.stat_lte_on; mState = STATE_ENABLED; - Settings.System.putInt(resolver, Settings.System.LTE_MODE, 1); - break;*/ + break; default: mIcon = R.drawable.stat_lte_off; mState = STATE_DISABLED; - Settings.System.putInt(resolver, Settings.System.LTE_MODE, 0); break; } } @@ -49,17 +47,18 @@ public class LTEButton extends PowerButton{ TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); int network = getCurrentPreferredNetworkMode(context); - ContentResolver resolver = context.getContentResolver(); - if (Phone.NT_MODE_GLOBAL == network/* || - Phone.NT_MODE_LTE_GSM_WCDMA == network*/) { - //tm.toggleLTE(false); // TODO: ******* Disabled for now ************ - mState = STATE_DISABLED; - Settings.System.putInt(resolver, Settings.System.LTE_MODE, 0); - } else if (Phone.NT_MODE_CDMA == network/* || - tm.getLteOnGsmMode() != 0*/) { - //tm.toggleLTE(true); // TODO: ******* Disabled for now ************ - mState = STATE_ENABLED; - Settings.System.putInt(resolver, Settings.System.LTE_MODE, 1); + switch(network) { + case Phone.NT_MODE_GLOBAL: + case Phone.NT_MODE_LTE_CDMA_AND_EVDO: + case Phone.NT_MODE_LTE_GSM_WCDMA: + case Phone.NT_MODE_LTE_CMDA_EVDO_GSM_WCDMA: + case Phone.NT_MODE_LTE_ONLY: + case Phone.NT_MODE_LTE_WCDMA: + tm.toggleLTE(false); + break; + default: + tm.toggleLTE(true); + break; } } @@ -80,7 +79,7 @@ public class LTEButton extends PowerButton{ private static int getCurrentPreferredNetworkMode(Context context) { int network = -1; try { - network = Settings.Secure.getInt(context.getContentResolver(), + network = Settings.Global.getInt(context.getContentResolver(), Settings.Global.PREFERRED_NETWORK_MODE); } catch (SettingNotFoundException e) { e.printStackTrace(); diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index d486529..2f80d39 100755 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -607,6 +607,17 @@ public class TelephonyManager { } } + /** + * {@hide} + */ + public void toggleLTE(boolean on) { + try { + getITelephony().toggleLTE(on); + } catch (RemoteException e) { + //Silently fail + } + } + /** Unknown network class. {@hide} */ public static final int NETWORK_CLASS_UNKNOWN = 0; /** Class of broadly defined "2G" networks. {@hide} */ diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 11e01b9..9d1cc1d 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -45,6 +45,12 @@ interface ITelephony { void call(String number); /** + * Toggle between 3G and LTE (NT_MODE_CDMA, NT_MODE_GLOBAL) + * @param boolean to turn on and off LTE + */ + void toggleLTE(boolean on); + + /** * If there is currently a call in progress, show the call screen. * The DTMF dialpad may or may not be visible initially, depending on * whether it was up when the user last exited the InCallScreen. |