Loading core/java/android/net/ConnectivityManager.java +21 −1 Original line number Diff line number Diff line Loading @@ -102,6 +102,14 @@ public class ConnectivityManager * it with {@link android.content.Intent#getStringExtra(String)}. */ public static final String EXTRA_EXTRA_INFO = "extraInfo"; /** * The lookup key for an int that provides information about * our connection to the internet at large. 0 indicates no connection, * 100 indicates a great connection. Retrieve it with * {@link android.content.Intent@getIntExtra(String)}. * {@hide} */ public static final String EXTRA_INET_CONDITION = "inetCondition"; /** * Broadcast Action: The setting for background data usage has changed Loading Loading @@ -525,4 +533,16 @@ public class ConnectivityManager return TETHER_ERROR_SERVICE_UNAVAIL; } } /** * @param networkType The type of network you want to report on * @param percentage The quality of the connection 0 is bad, 100 is good * {@hide} */ public void reportInetCondition(int networkType, int percentage) { try { mService.reportInetCondition(networkType, percentage); } catch (RemoteException e) { } } } core/java/android/net/IConnectivityManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -72,4 +72,6 @@ interface IConnectivityManager String[] getTetherableUsbRegexs(); String[] getTetherableWifiRegexs(); void reportInetCondition(int networkType, int percentage); } core/java/android/net/NetworkStateTracker.java +9 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,15 @@ public abstract class NetworkStateTracker extends Handler { public static final int EVENT_ROAMING_CHANGED = 5; public static final int EVENT_NETWORK_SUBTYPE_CHANGED = 6; public static final int EVENT_RESTORE_DEFAULT_NETWORK = 7; /** * arg1: network type * arg2: condition (0 bad, 100 good) */ public static final int EVENT_INET_CONDITION_CHANGE = 8; /** * arg1: network type */ public static final int EVENT_INET_CONDITION_HOLD_END = 9; public NetworkStateTracker(Context context, Handler target, Loading core/java/android/provider/Settings.java +15 −0 Original line number Diff line number Diff line Loading @@ -3427,6 +3427,21 @@ public final class Settings { public static final String DOWNLOAD_MAX_BYTES_OVER_MOBILE = "download_manager_max_bytes_over_mobile"; /** * ms during which to consume extra events related to Inet connection condition * after a transtion to fully-connected * @hide */ public static final String INET_CONDITION_DEBOUNCE_UP_DELAY = "inet_condition_debounce_up_delay"; /** * ms during which to consume extra events related to Inet connection condtion * after a transtion to partly-connected * @hide */ public static final String INET_CONDITION_DEBOUNCE_DOWN_DELAY = "inet_condition_debounce_down_delay"; /** * @hide Loading packages/SystemUI/src/com/android/systemui/statusbar/StatusBarPolicy.java +122 −72 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.location.LocationManager; import android.media.AudioManager; import android.media.Ringtone; import android.media.RingtoneManager; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; import android.net.wifi.WifiManager; Loading Loading @@ -91,6 +92,8 @@ public class StatusBarPolicy { private static final int AM_PM_STYLE = AM_PM_STYLE_GONE; private static final int INET_CONDITION_THRESHOLD = 50; private final Context mContext; private final StatusBarManager mService; private final Handler mHandler = new StatusBarHandler(); Loading Loading @@ -232,41 +235,61 @@ public class StatusBarPolicy { }; //***** Data connection icons private int[] mDataIconList = sDataNetType_g; private int[] mDataIconList = sDataNetType_g[0]; //GSM/UMTS private static final int[] sDataNetType_g = new int[] { R.drawable.stat_sys_data_connected_g, private static final int[][] sDataNetType_g = { { R.drawable.stat_sys_data_connected_g, R.drawable.stat_sys_data_in_g, R.drawable.stat_sys_data_out_g, R.drawable.stat_sys_data_inandout_g, R.drawable.stat_sys_data_inandout_g }, { R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0 } }; private static final int[] sDataNetType_3g = new int[] { R.drawable.stat_sys_data_connected_3g, private static final int[][] sDataNetType_3g = { { R.drawable.stat_sys_data_connected_3g, R.drawable.stat_sys_data_in_3g, R.drawable.stat_sys_data_out_3g, R.drawable.stat_sys_data_inandout_3g, R.drawable.stat_sys_data_inandout_3g }, { R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0 } }; private static final int[] sDataNetType_e = new int[] { R.drawable.stat_sys_data_connected_e, private static final int[][] sDataNetType_e = { { R.drawable.stat_sys_data_connected_e, R.drawable.stat_sys_data_in_e, R.drawable.stat_sys_data_out_e, R.drawable.stat_sys_data_inandout_e, R.drawable.stat_sys_data_inandout_e }, { R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0 } }; //3.5G private static final int[] sDataNetType_h = new int[] { R.drawable.stat_sys_data_connected_h, private static final int[][] sDataNetType_h = { { R.drawable.stat_sys_data_connected_h, R.drawable.stat_sys_data_in_h, R.drawable.stat_sys_data_out_h, R.drawable.stat_sys_data_inandout_h, R.drawable.stat_sys_data_inandout_h }, { R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0 } }; //CDMA // Use 3G icons for EVDO data and 1x icons for 1XRTT data private static final int[] sDataNetType_1x = new int[] { R.drawable.stat_sys_data_connected_1x, private static final int[][] sDataNetType_1x = { { R.drawable.stat_sys_data_connected_1x, R.drawable.stat_sys_data_in_1x, R.drawable.stat_sys_data_out_1x, R.drawable.stat_sys_data_inandout_1x, R.drawable.stat_sys_data_inandout_1x }, { R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0 } }; // Assume it's all good unless we hear otherwise. We don't always seem Loading @@ -292,17 +315,22 @@ public class StatusBarPolicy { private boolean mBluetoothEnabled; // wifi private static final int[] sWifiSignalImages = new int[] { R.drawable.stat_sys_wifi_signal_1, private static final int[][] sWifiSignalImages = { { R.drawable.stat_sys_wifi_signal_1, R.drawable.stat_sys_wifi_signal_2, R.drawable.stat_sys_wifi_signal_3, R.drawable.stat_sys_wifi_signal_4, R.drawable.stat_sys_wifi_signal_4 }, { R.drawable.stat_sys_data_in_e, R.drawable.stat_sys_data_in_e, R.drawable.stat_sys_data_in_e, R.drawable.stat_sys_data_in_e } }; private static final int sWifiTemporarilyNotConnectedImage = R.drawable.stat_sys_wifi_signal_0; private int mLastWifiSignalLevel = -1; private boolean mIsWifiConnected = false; private int mLastWifiInetConnectivityState = 0; // sync state // If sync is active the SyncActive icon is displayed. If sync is not active but Loading Loading @@ -353,6 +381,10 @@ public class StatusBarPolicy { else if (action.equals(TtyIntent.TTY_ENABLED_CHANGE_ACTION)) { updateTTY(intent); } else if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) { // TODO - stop using other means to get wifi/mobile info updateConnectivity(intent); } } }; Loading Loading @@ -389,7 +421,7 @@ public class StatusBarPolicy { mService.setIconVisibility("data_connection", false); // wifi mService.setIcon("wifi", sWifiSignalImages[0], 0); mService.setIcon("wifi", sWifiSignalImages[0][0], 0); mService.setIconVisibility("wifi", false); // wifi will get updated by the sticky intents Loading Loading @@ -456,6 +488,7 @@ public class StatusBarPolicy { filter.addAction(LocationManager.GPS_FIX_CHANGE_ACTION); filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED); filter.addAction(TtyIntent.TTY_ENABLED_CHANGE_ACTION); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); mContext.registerReceiver(mIntentReceiver, filter, null, mHandler); // load config to determine if to distinguish Hspa data icon Loading Loading @@ -659,6 +692,50 @@ public class StatusBarPolicy { } } private void updateConnectivity(Intent intent) { NetworkInfo info = (NetworkInfo)(intent.getParcelableExtra( ConnectivityManager.EXTRA_NETWORK_INFO)); int connectionStatus = intent.getIntExtra(ConnectivityManager.EXTRA_INET_CONDITION, 0); Slog.d(TAG, "got CONNECTIVITY_ACTION - info=" + info + ", status = " + connectionStatus); if (info.isConnected() == false) return; switch (info.getType()) { case ConnectivityManager.TYPE_MOBILE: if (info.isConnected()) { updateDataNetType(info.getSubtype(), connectionStatus); updateDataIcon(); } break; case ConnectivityManager.TYPE_WIFI: if (info.isConnected()) { mIsWifiConnected = true; mLastWifiInetConnectivityState = (connectionStatus > INET_CONDITION_THRESHOLD ? 1 : 0); int iconId; if (mLastWifiSignalLevel == -1) { iconId = sWifiSignalImages[mLastWifiInetConnectivityState][0]; } else { iconId = sWifiSignalImages[mLastWifiInetConnectivityState] [mLastWifiSignalLevel]; } mService.setIcon("wifi", iconId, 0); // Show the icon since wi-fi is connected mService.setIconVisibility("wifi", true); } else { mLastWifiSignalLevel = -1; mIsWifiConnected = false; mLastWifiInetConnectivityState = 0; int iconId = sWifiSignalImages[0][0]; mService.setIcon("wifi", iconId, 0); // Hide the icon since we're not connected mService.setIconVisibility("wifi", false); } break; } } private PhoneStateListener mPhoneStateListener = new PhoneStateListener() { @Override public void onSignalStrengthsChanged(SignalStrength signalStrength) { Loading Loading @@ -686,7 +763,7 @@ public class StatusBarPolicy { @Override public void onDataConnectionStateChanged(int state, int networkType) { mDataState = state; updateDataNetType(networkType); updateDataNetType(networkType, 0); updateDataIcon(); } Loading Loading @@ -848,37 +925,38 @@ public class StatusBarPolicy { return (levelEvdoDbm < levelEvdoSnr) ? levelEvdoDbm : levelEvdoSnr; } private final void updateDataNetType(int net) { private final void updateDataNetType(int net, int inetCondition) { int connected = (inetCondition > INET_CONDITION_THRESHOLD ? 1 : 0); switch (net) { case TelephonyManager.NETWORK_TYPE_EDGE: mDataIconList = sDataNetType_e; mDataIconList = sDataNetType_e[connected]; break; case TelephonyManager.NETWORK_TYPE_UMTS: mDataIconList = sDataNetType_3g; mDataIconList = sDataNetType_3g[connected]; break; case TelephonyManager.NETWORK_TYPE_HSDPA: case TelephonyManager.NETWORK_TYPE_HSUPA: case TelephonyManager.NETWORK_TYPE_HSPA: if (mHspaDataDistinguishable) { mDataIconList = sDataNetType_h; mDataIconList = sDataNetType_h[connected]; } else { mDataIconList = sDataNetType_3g; mDataIconList = sDataNetType_3g[connected]; } break; case TelephonyManager.NETWORK_TYPE_CDMA: // display 1xRTT for IS95A/B mDataIconList = this.sDataNetType_1x; mDataIconList = sDataNetType_1x[connected]; break; case TelephonyManager.NETWORK_TYPE_1xRTT: mDataIconList = this.sDataNetType_1x; mDataIconList = sDataNetType_1x[connected]; break; case TelephonyManager.NETWORK_TYPE_EVDO_0: //fall through case TelephonyManager.NETWORK_TYPE_EVDO_A: case TelephonyManager.NETWORK_TYPE_EVDO_B: mDataIconList = sDataNetType_3g; mDataIconList = sDataNetType_3g[connected]; break; default: mDataIconList = sDataNetType_g; mDataIconList = sDataNetType_g[connected]; break; } } Loading Loading @@ -1019,34 +1097,6 @@ public class StatusBarPolicy { if (!enabled) { mService.setIconVisibility("wifi", false); } } else if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { final NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); int iconId; if (networkInfo != null && networkInfo.isConnected()) { mIsWifiConnected = true; if (mLastWifiSignalLevel == -1) { iconId = sWifiSignalImages[0]; } else { iconId = sWifiSignalImages[mLastWifiSignalLevel]; } mService.setIcon("wifi", iconId, 0); // Show the icon since wi-fi is connected mService.setIconVisibility("wifi", true); } else { mLastWifiSignalLevel = -1; mIsWifiConnected = false; iconId = sWifiSignalImages[0]; mService.setIcon("wifi", iconId, 0); // Hide the icon since we're not connected mService.setIconVisibility("wifi", false); } } else if (action.equals(WifiManager.RSSI_CHANGED_ACTION)) { int iconId; final int newRssi = intent.getIntExtra(WifiManager.EXTRA_NEW_RSSI, -200); Loading @@ -1055,7 +1105,7 @@ public class StatusBarPolicy { if (newSignalLevel != mLastWifiSignalLevel) { mLastWifiSignalLevel = newSignalLevel; if (mIsWifiConnected) { iconId = sWifiSignalImages[newSignalLevel]; iconId = sWifiSignalImages[mLastWifiInetConnectivityState][newSignalLevel]; } else { iconId = sWifiTemporarilyNotConnectedImage; } Loading Loading
core/java/android/net/ConnectivityManager.java +21 −1 Original line number Diff line number Diff line Loading @@ -102,6 +102,14 @@ public class ConnectivityManager * it with {@link android.content.Intent#getStringExtra(String)}. */ public static final String EXTRA_EXTRA_INFO = "extraInfo"; /** * The lookup key for an int that provides information about * our connection to the internet at large. 0 indicates no connection, * 100 indicates a great connection. Retrieve it with * {@link android.content.Intent@getIntExtra(String)}. * {@hide} */ public static final String EXTRA_INET_CONDITION = "inetCondition"; /** * Broadcast Action: The setting for background data usage has changed Loading Loading @@ -525,4 +533,16 @@ public class ConnectivityManager return TETHER_ERROR_SERVICE_UNAVAIL; } } /** * @param networkType The type of network you want to report on * @param percentage The quality of the connection 0 is bad, 100 is good * {@hide} */ public void reportInetCondition(int networkType, int percentage) { try { mService.reportInetCondition(networkType, percentage); } catch (RemoteException e) { } } }
core/java/android/net/IConnectivityManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -72,4 +72,6 @@ interface IConnectivityManager String[] getTetherableUsbRegexs(); String[] getTetherableWifiRegexs(); void reportInetCondition(int networkType, int percentage); }
core/java/android/net/NetworkStateTracker.java +9 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,15 @@ public abstract class NetworkStateTracker extends Handler { public static final int EVENT_ROAMING_CHANGED = 5; public static final int EVENT_NETWORK_SUBTYPE_CHANGED = 6; public static final int EVENT_RESTORE_DEFAULT_NETWORK = 7; /** * arg1: network type * arg2: condition (0 bad, 100 good) */ public static final int EVENT_INET_CONDITION_CHANGE = 8; /** * arg1: network type */ public static final int EVENT_INET_CONDITION_HOLD_END = 9; public NetworkStateTracker(Context context, Handler target, Loading
core/java/android/provider/Settings.java +15 −0 Original line number Diff line number Diff line Loading @@ -3427,6 +3427,21 @@ public final class Settings { public static final String DOWNLOAD_MAX_BYTES_OVER_MOBILE = "download_manager_max_bytes_over_mobile"; /** * ms during which to consume extra events related to Inet connection condition * after a transtion to fully-connected * @hide */ public static final String INET_CONDITION_DEBOUNCE_UP_DELAY = "inet_condition_debounce_up_delay"; /** * ms during which to consume extra events related to Inet connection condtion * after a transtion to partly-connected * @hide */ public static final String INET_CONDITION_DEBOUNCE_DOWN_DELAY = "inet_condition_debounce_down_delay"; /** * @hide Loading
packages/SystemUI/src/com/android/systemui/statusbar/StatusBarPolicy.java +122 −72 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.location.LocationManager; import android.media.AudioManager; import android.media.Ringtone; import android.media.RingtoneManager; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; import android.net.wifi.WifiManager; Loading Loading @@ -91,6 +92,8 @@ public class StatusBarPolicy { private static final int AM_PM_STYLE = AM_PM_STYLE_GONE; private static final int INET_CONDITION_THRESHOLD = 50; private final Context mContext; private final StatusBarManager mService; private final Handler mHandler = new StatusBarHandler(); Loading Loading @@ -232,41 +235,61 @@ public class StatusBarPolicy { }; //***** Data connection icons private int[] mDataIconList = sDataNetType_g; private int[] mDataIconList = sDataNetType_g[0]; //GSM/UMTS private static final int[] sDataNetType_g = new int[] { R.drawable.stat_sys_data_connected_g, private static final int[][] sDataNetType_g = { { R.drawable.stat_sys_data_connected_g, R.drawable.stat_sys_data_in_g, R.drawable.stat_sys_data_out_g, R.drawable.stat_sys_data_inandout_g, R.drawable.stat_sys_data_inandout_g }, { R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0 } }; private static final int[] sDataNetType_3g = new int[] { R.drawable.stat_sys_data_connected_3g, private static final int[][] sDataNetType_3g = { { R.drawable.stat_sys_data_connected_3g, R.drawable.stat_sys_data_in_3g, R.drawable.stat_sys_data_out_3g, R.drawable.stat_sys_data_inandout_3g, R.drawable.stat_sys_data_inandout_3g }, { R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0 } }; private static final int[] sDataNetType_e = new int[] { R.drawable.stat_sys_data_connected_e, private static final int[][] sDataNetType_e = { { R.drawable.stat_sys_data_connected_e, R.drawable.stat_sys_data_in_e, R.drawable.stat_sys_data_out_e, R.drawable.stat_sys_data_inandout_e, R.drawable.stat_sys_data_inandout_e }, { R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0 } }; //3.5G private static final int[] sDataNetType_h = new int[] { R.drawable.stat_sys_data_connected_h, private static final int[][] sDataNetType_h = { { R.drawable.stat_sys_data_connected_h, R.drawable.stat_sys_data_in_h, R.drawable.stat_sys_data_out_h, R.drawable.stat_sys_data_inandout_h, R.drawable.stat_sys_data_inandout_h }, { R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0 } }; //CDMA // Use 3G icons for EVDO data and 1x icons for 1XRTT data private static final int[] sDataNetType_1x = new int[] { R.drawable.stat_sys_data_connected_1x, private static final int[][] sDataNetType_1x = { { R.drawable.stat_sys_data_connected_1x, R.drawable.stat_sys_data_in_1x, R.drawable.stat_sys_data_out_1x, R.drawable.stat_sys_data_inandout_1x, R.drawable.stat_sys_data_inandout_1x }, { R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0, R.drawable.stat_sys_roaming_cdma_0 } }; // Assume it's all good unless we hear otherwise. We don't always seem Loading @@ -292,17 +315,22 @@ public class StatusBarPolicy { private boolean mBluetoothEnabled; // wifi private static final int[] sWifiSignalImages = new int[] { R.drawable.stat_sys_wifi_signal_1, private static final int[][] sWifiSignalImages = { { R.drawable.stat_sys_wifi_signal_1, R.drawable.stat_sys_wifi_signal_2, R.drawable.stat_sys_wifi_signal_3, R.drawable.stat_sys_wifi_signal_4, R.drawable.stat_sys_wifi_signal_4 }, { R.drawable.stat_sys_data_in_e, R.drawable.stat_sys_data_in_e, R.drawable.stat_sys_data_in_e, R.drawable.stat_sys_data_in_e } }; private static final int sWifiTemporarilyNotConnectedImage = R.drawable.stat_sys_wifi_signal_0; private int mLastWifiSignalLevel = -1; private boolean mIsWifiConnected = false; private int mLastWifiInetConnectivityState = 0; // sync state // If sync is active the SyncActive icon is displayed. If sync is not active but Loading Loading @@ -353,6 +381,10 @@ public class StatusBarPolicy { else if (action.equals(TtyIntent.TTY_ENABLED_CHANGE_ACTION)) { updateTTY(intent); } else if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) { // TODO - stop using other means to get wifi/mobile info updateConnectivity(intent); } } }; Loading Loading @@ -389,7 +421,7 @@ public class StatusBarPolicy { mService.setIconVisibility("data_connection", false); // wifi mService.setIcon("wifi", sWifiSignalImages[0], 0); mService.setIcon("wifi", sWifiSignalImages[0][0], 0); mService.setIconVisibility("wifi", false); // wifi will get updated by the sticky intents Loading Loading @@ -456,6 +488,7 @@ public class StatusBarPolicy { filter.addAction(LocationManager.GPS_FIX_CHANGE_ACTION); filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED); filter.addAction(TtyIntent.TTY_ENABLED_CHANGE_ACTION); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); mContext.registerReceiver(mIntentReceiver, filter, null, mHandler); // load config to determine if to distinguish Hspa data icon Loading Loading @@ -659,6 +692,50 @@ public class StatusBarPolicy { } } private void updateConnectivity(Intent intent) { NetworkInfo info = (NetworkInfo)(intent.getParcelableExtra( ConnectivityManager.EXTRA_NETWORK_INFO)); int connectionStatus = intent.getIntExtra(ConnectivityManager.EXTRA_INET_CONDITION, 0); Slog.d(TAG, "got CONNECTIVITY_ACTION - info=" + info + ", status = " + connectionStatus); if (info.isConnected() == false) return; switch (info.getType()) { case ConnectivityManager.TYPE_MOBILE: if (info.isConnected()) { updateDataNetType(info.getSubtype(), connectionStatus); updateDataIcon(); } break; case ConnectivityManager.TYPE_WIFI: if (info.isConnected()) { mIsWifiConnected = true; mLastWifiInetConnectivityState = (connectionStatus > INET_CONDITION_THRESHOLD ? 1 : 0); int iconId; if (mLastWifiSignalLevel == -1) { iconId = sWifiSignalImages[mLastWifiInetConnectivityState][0]; } else { iconId = sWifiSignalImages[mLastWifiInetConnectivityState] [mLastWifiSignalLevel]; } mService.setIcon("wifi", iconId, 0); // Show the icon since wi-fi is connected mService.setIconVisibility("wifi", true); } else { mLastWifiSignalLevel = -1; mIsWifiConnected = false; mLastWifiInetConnectivityState = 0; int iconId = sWifiSignalImages[0][0]; mService.setIcon("wifi", iconId, 0); // Hide the icon since we're not connected mService.setIconVisibility("wifi", false); } break; } } private PhoneStateListener mPhoneStateListener = new PhoneStateListener() { @Override public void onSignalStrengthsChanged(SignalStrength signalStrength) { Loading Loading @@ -686,7 +763,7 @@ public class StatusBarPolicy { @Override public void onDataConnectionStateChanged(int state, int networkType) { mDataState = state; updateDataNetType(networkType); updateDataNetType(networkType, 0); updateDataIcon(); } Loading Loading @@ -848,37 +925,38 @@ public class StatusBarPolicy { return (levelEvdoDbm < levelEvdoSnr) ? levelEvdoDbm : levelEvdoSnr; } private final void updateDataNetType(int net) { private final void updateDataNetType(int net, int inetCondition) { int connected = (inetCondition > INET_CONDITION_THRESHOLD ? 1 : 0); switch (net) { case TelephonyManager.NETWORK_TYPE_EDGE: mDataIconList = sDataNetType_e; mDataIconList = sDataNetType_e[connected]; break; case TelephonyManager.NETWORK_TYPE_UMTS: mDataIconList = sDataNetType_3g; mDataIconList = sDataNetType_3g[connected]; break; case TelephonyManager.NETWORK_TYPE_HSDPA: case TelephonyManager.NETWORK_TYPE_HSUPA: case TelephonyManager.NETWORK_TYPE_HSPA: if (mHspaDataDistinguishable) { mDataIconList = sDataNetType_h; mDataIconList = sDataNetType_h[connected]; } else { mDataIconList = sDataNetType_3g; mDataIconList = sDataNetType_3g[connected]; } break; case TelephonyManager.NETWORK_TYPE_CDMA: // display 1xRTT for IS95A/B mDataIconList = this.sDataNetType_1x; mDataIconList = sDataNetType_1x[connected]; break; case TelephonyManager.NETWORK_TYPE_1xRTT: mDataIconList = this.sDataNetType_1x; mDataIconList = sDataNetType_1x[connected]; break; case TelephonyManager.NETWORK_TYPE_EVDO_0: //fall through case TelephonyManager.NETWORK_TYPE_EVDO_A: case TelephonyManager.NETWORK_TYPE_EVDO_B: mDataIconList = sDataNetType_3g; mDataIconList = sDataNetType_3g[connected]; break; default: mDataIconList = sDataNetType_g; mDataIconList = sDataNetType_g[connected]; break; } } Loading Loading @@ -1019,34 +1097,6 @@ public class StatusBarPolicy { if (!enabled) { mService.setIconVisibility("wifi", false); } } else if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { final NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); int iconId; if (networkInfo != null && networkInfo.isConnected()) { mIsWifiConnected = true; if (mLastWifiSignalLevel == -1) { iconId = sWifiSignalImages[0]; } else { iconId = sWifiSignalImages[mLastWifiSignalLevel]; } mService.setIcon("wifi", iconId, 0); // Show the icon since wi-fi is connected mService.setIconVisibility("wifi", true); } else { mLastWifiSignalLevel = -1; mIsWifiConnected = false; iconId = sWifiSignalImages[0]; mService.setIcon("wifi", iconId, 0); // Hide the icon since we're not connected mService.setIconVisibility("wifi", false); } } else if (action.equals(WifiManager.RSSI_CHANGED_ACTION)) { int iconId; final int newRssi = intent.getIntExtra(WifiManager.EXTRA_NEW_RSSI, -200); Loading @@ -1055,7 +1105,7 @@ public class StatusBarPolicy { if (newSignalLevel != mLastWifiSignalLevel) { mLastWifiSignalLevel = newSignalLevel; if (mIsWifiConnected) { iconId = sWifiSignalImages[newSignalLevel]; iconId = sWifiSignalImages[mLastWifiInetConnectivityState][newSignalLevel]; } else { iconId = sWifiTemporarilyNotConnectedImage; } Loading