package com.android.systemui.statusbar.powerwidget; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; import android.telephony.TelephonyManager; import com.android.internal.telephony.Phone; import com.android.systemui.R; import java.util.ArrayList; import java.util.List; public class LTEButton extends PowerButton{ private static final List OBSERVED_URIS = new ArrayList(); static { OBSERVED_URIS.add(Settings.Global.getUriFor(Settings.Global.PREFERRED_NETWORK_MODE)); } public LTEButton() { mType = BUTTON_LTE; } @Override protected void updateState(Context context) { 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; break; default: mIcon = R.drawable.stat_lte_off; mState = STATE_DISABLED; break; } } @Override protected void toggleState(Context context) { TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 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: tm.toggleLTE(false); break; default: tm.toggleLTE(true); break; } } @Override protected boolean handleLongClick(Context context) { Intent intent = new Intent(Intent.ACTION_MAIN); intent.setClassName("com.android.phone", "com.android.phone.Settings"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); return true; } @Override protected List getObservedUris() { return OBSERVED_URIS; } private static int getCurrentPreferredNetworkMode(Context context) { int network = -1; try { network = Settings.Global.getInt(context.getContentResolver(), Settings.Global.PREFERRED_NETWORK_MODE); } catch (SettingNotFoundException e) { e.printStackTrace(); } return network; } }