Loading packages/SettingsLib/src/com/android/settingslib/Utils.java +11 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import android.net.ScoredNetwork; import android.os.BatteryManager; import android.os.UserManager; import android.print.PrintManager; import android.view.View; import com.android.internal.util.UserIcons; import com.android.settingslib.drawable.UserIconDrawable; Loading @@ -32,7 +34,7 @@ public class Utils { private static String sServicesSystemSharedLibPackageName; private static String sSharedSystemSharedLibPackageName; static final int[] WIFI_PIE_FOR_BADGING = { public static final int[] WIFI_PIE_FOR_BADGING = { com.android.internal.R.drawable.ic_signal_wifi_badged_0_bars, com.android.internal.R.drawable.ic_signal_wifi_badged_1_bar, com.android.internal.R.drawable.ic_signal_wifi_badged_2_bars, Loading Loading @@ -288,8 +290,15 @@ public class Utils { }); } private static int getWifiBadgeResource(int badge) { /** * Returns the resource id for the given badge or {@link View.NO_ID} if no badge is to be shown. * * @throws IllegalArgumentException if the given badge value is not supported. */ public static int getWifiBadgeResource(int badge) { switch (badge) { case ScoredNetwork.BADGING_NONE: return View.NO_ID; case ScoredNetwork.BADGING_SD: return com.android.internal.R.drawable.ic_signal_wifi_badged_sd; case ScoredNetwork.BADGING_HD: Loading packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java +27 −9 Original line number Diff line number Diff line Loading @@ -12,13 +12,17 @@ package com.android.settingslib.wifi; import android.content.Intent; import android.net.NetworkInfo; import android.net.NetworkKey; import android.net.WifiKey; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.util.Log; import java.util.List; public class WifiStatusTracker { private static final String TAG = "WifiStatusTracker"; private final WifiManager mWifiManager; public boolean enabled; Loading @@ -26,6 +30,7 @@ public class WifiStatusTracker { public String ssid; public int rssi; public int level; public NetworkKey networkKey; public WifiStatusTracker(WifiManager wifiManager) { mWifiManager = wifiManager; Loading @@ -40,19 +45,32 @@ public class WifiStatusTracker { final NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); connected = networkInfo != null && networkInfo.isConnected(); // If Connected grab the signal strength and ssid. if (connected) { // try getting it out of the intent first WifiInfo info = intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO) != null ? (WifiInfo) intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO) : mWifiManager.getConnectionInfo(); if (info != null) { // If Connected grab the signal strength and ssid. if (connected && info != null) { ssid = getSsid(info); String bssid = info.getBSSID(); if ((ssid != null) && (bssid != null)) { // Reuse existing network key object if possible. if ((networkKey == null) || !networkKey.wifiKey.ssid.equals(ssid) || !networkKey.wifiKey.bssid.equals(bssid)) { try { networkKey = new NetworkKey( new WifiKey(ssid, bssid)); } catch (IllegalArgumentException e) { Log.e(TAG, "Cannot create NetworkKey", e); } } } else { ssid = null; networkKey = null; } } else if (!connected) { } else { ssid = null; networkKey = null; } } else if (action.equals(WifiManager.RSSI_CHANGED_ACTION)) { // Default to -200 as its below WifiManager.MIN_RSSI. Loading packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java +47 −3 Original line number Diff line number Diff line Loading @@ -16,15 +16,18 @@ package com.android.systemui.statusbar; import android.annotation.ColorInt; import android.annotation.DrawableRes; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.Rect; import android.graphics.drawable.Animatable; import android.graphics.drawable.AnimatedVectorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.telephony.SubscriptionInfo; import android.util.ArraySet; import android.util.AttributeSet; Loading Loading @@ -74,8 +77,10 @@ public class SignalClusterView private boolean mEthernetVisible = false; private int mEthernetIconId = 0; private int mLastEthernetIconId = -1; private int mWifiBadgeId = -1; private boolean mWifiVisible = false; private int mWifiStrengthId = 0; private int mLastWifiBadgeId = -1; private int mLastWifiStrengthId = -1; private boolean mIsAirplaneMode = false; private int mAirplaneIconId = 0; Loading Loading @@ -259,6 +264,7 @@ public class SignalClusterView boolean activityIn, boolean activityOut, String description) { mWifiVisible = statusIcon.visible && !mBlockWifi; mWifiStrengthId = statusIcon.icon; mWifiBadgeId = statusIcon.iconOverlay; mWifiDescription = statusIcon.contentDescription; apply(); Loading Loading @@ -399,6 +405,7 @@ public class SignalClusterView mWifi.setImageDrawable(null); mWifiDark.setImageDrawable(null); mLastWifiStrengthId = -1; mLastWifiBadgeId = -1; } for (PhoneState state : mPhoneStates) { Loading Loading @@ -464,10 +471,16 @@ public class SignalClusterView (mEthernetVisible ? "VISIBLE" : "GONE"))); if (mWifiVisible) { if (mWifiStrengthId != mLastWifiStrengthId) { if (mWifiStrengthId != mLastWifiStrengthId || mWifiBadgeId != mLastWifiBadgeId) { if (mWifiBadgeId == -1) { setIconForView(mWifi, mWifiStrengthId); setIconForView(mWifiDark, mWifiStrengthId); } else { setBadgedWifiIconForView(mWifi, mWifiStrengthId, mWifiBadgeId); setBadgedWifiIconForView(mWifiDark, mWifiStrengthId, mWifiBadgeId); } mLastWifiStrengthId = mWifiStrengthId; mLastWifiBadgeId = mWifiBadgeId; } mWifiGroup.setContentDescription(mWifiDescription); mWifiGroup.setVisibility(View.VISIBLE); Loading Loading @@ -529,6 +542,10 @@ public class SignalClusterView // Using the imageView's context to retrieve the Drawable so that theme is preserved. Drawable icon = imageView.getContext().getDrawable(iconId); setScaledIcon(imageView, icon); } private void setScaledIcon(ImageView imageView, Drawable icon) { if (mIconScaleFactor == 1.f) { imageView.setImageDrawable(icon); } else { Loading @@ -536,6 +553,33 @@ public class SignalClusterView } } /** * Creates and sets a LayerDrawable from the given ids on the given view. * * <p>This method will also scale the icon by {@link #mIconScaleFactor} if appropriate. */ private void setBadgedWifiIconForView(ImageView imageView, @DrawableRes int wifiPieId, @DrawableRes int badgeId) { // Using the imageView's context to retrieve the Drawable so that theme is preserved.; LayerDrawable icon = new LayerDrawable(new Drawable[] { imageView.getContext().getDrawable(wifiPieId), imageView.getContext().getDrawable(badgeId)}); // The LayerDrawable shares an underlying state so we must mutate the object to change the // color between the light and dark themes. icon.mutate().setTint(getColorAttr(imageView.getContext(), R.attr.singleToneColor)); setScaledIcon(imageView, icon); } /** Returns the given color attribute value, or white if not defined. */ @ColorInt private static int getColorAttr(Context context, int attr) { TypedArray ta = context.obtainStyledAttributes(new int[] {attr}); @ColorInt int colorAccent = ta.getColor(0, Color.WHITE); ta.recycle(); return colorAccent; } public void setIconTint(int tint, float darkIntensity, Rect tintArea) { boolean changed = tint != mIconTint || darkIntensity != mDarkIntensity || !mTintArea.equals(tintArea); Loading packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java +17 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ package com.android.systemui.statusbar.policy; import android.content.Context; import android.content.Intent; import android.telephony.SubscriptionInfo; import android.view.View; import com.android.settingslib.net.DataUsageController; import com.android.settingslib.wifi.AccessPoint; import com.android.systemui.DemoMode; Loading Loading @@ -68,15 +70,29 @@ public interface NetworkController extends CallbackController<SignalCallback>, D public static class IconState { public final boolean visible; public final int icon; /** * Optional iconOverlay resource id. * * <p>Set to -1 if not present. */ public final int iconOverlay; public final String contentDescription; public IconState(boolean visible, int icon, String contentDescription) { public IconState(boolean visible, int icon, int iconOverlay, String contentDescription) { this.visible = visible; this.icon = icon; this.iconOverlay = iconOverlay; this.contentDescription = contentDescription; } public IconState(boolean visible, int icon, String contentDescription) { this(visible, icon, -1 /* iconOverlay */, contentDescription); } public IconState(boolean visible, int icon, int contentDescription, Context context) { this(visible, icon, context.getString(contentDescription)); Loading packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +14 −4 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.net.ConnectivityManager; import android.net.NetworkCapabilities; import android.net.NetworkScoreManager; import android.net.wifi.WifiManager; import android.os.AsyncTask; import android.os.Bundle; Loading Loading @@ -88,6 +89,7 @@ public class NetworkControllerImpl extends BroadcastReceiver private final DataSaverController mDataSaverController; private final CurrentUserTracker mUserTracker; private Config mConfig; private final NetworkScoreManager mNetworkScoreManager; // Subcontrollers. @VisibleForTesting Loading Loading @@ -145,9 +147,12 @@ public class NetworkControllerImpl extends BroadcastReceiver public NetworkControllerImpl(Context context, Looper bgLooper, DeviceProvisionedController deviceProvisionedController) { this(context, (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE), context.getSystemService(NetworkScoreManager.class), (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE), (WifiManager) context.getSystemService(Context.WIFI_SERVICE), SubscriptionManager.from(context), Config.readConfig(context), bgLooper, SubscriptionManager.from(context), Config.readConfig(context), bgLooper, new CallbackHandler(), new AccessPointControllerImpl(context, bgLooper), new DataUsageController(context), Loading @@ -158,8 +163,12 @@ public class NetworkControllerImpl extends BroadcastReceiver @VisibleForTesting NetworkControllerImpl(Context context, ConnectivityManager connectivityManager, TelephonyManager telephonyManager, WifiManager wifiManager, SubscriptionManager subManager, Config config, Looper bgLooper, NetworkScoreManager networkScoreManager, TelephonyManager telephonyManager, WifiManager wifiManager, SubscriptionManager subManager, Config config, Looper bgLooper, CallbackHandler callbackHandler, AccessPointControllerImpl accessPointController, DataUsageController dataUsageController, Loading @@ -182,6 +191,7 @@ public class NetworkControllerImpl extends BroadcastReceiver // wifi mWifiManager = wifiManager; mNetworkScoreManager = networkScoreManager; mLocale = mContext.getResources().getConfiguration().locale; mAccessPoints = accessPointController; Loading @@ -195,7 +205,7 @@ public class NetworkControllerImpl extends BroadcastReceiver } }); mWifiSignalController = new WifiSignalController(mContext, mHasMobileDataFeature, mCallbackHandler, this); mCallbackHandler, this, mNetworkScoreManager); mEthernetSignalController = new EthernetSignalController(mContext, mCallbackHandler, this); Loading Loading
packages/SettingsLib/src/com/android/settingslib/Utils.java +11 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import android.net.ScoredNetwork; import android.os.BatteryManager; import android.os.UserManager; import android.print.PrintManager; import android.view.View; import com.android.internal.util.UserIcons; import com.android.settingslib.drawable.UserIconDrawable; Loading @@ -32,7 +34,7 @@ public class Utils { private static String sServicesSystemSharedLibPackageName; private static String sSharedSystemSharedLibPackageName; static final int[] WIFI_PIE_FOR_BADGING = { public static final int[] WIFI_PIE_FOR_BADGING = { com.android.internal.R.drawable.ic_signal_wifi_badged_0_bars, com.android.internal.R.drawable.ic_signal_wifi_badged_1_bar, com.android.internal.R.drawable.ic_signal_wifi_badged_2_bars, Loading Loading @@ -288,8 +290,15 @@ public class Utils { }); } private static int getWifiBadgeResource(int badge) { /** * Returns the resource id for the given badge or {@link View.NO_ID} if no badge is to be shown. * * @throws IllegalArgumentException if the given badge value is not supported. */ public static int getWifiBadgeResource(int badge) { switch (badge) { case ScoredNetwork.BADGING_NONE: return View.NO_ID; case ScoredNetwork.BADGING_SD: return com.android.internal.R.drawable.ic_signal_wifi_badged_sd; case ScoredNetwork.BADGING_HD: Loading
packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java +27 −9 Original line number Diff line number Diff line Loading @@ -12,13 +12,17 @@ package com.android.settingslib.wifi; import android.content.Intent; import android.net.NetworkInfo; import android.net.NetworkKey; import android.net.WifiKey; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.util.Log; import java.util.List; public class WifiStatusTracker { private static final String TAG = "WifiStatusTracker"; private final WifiManager mWifiManager; public boolean enabled; Loading @@ -26,6 +30,7 @@ public class WifiStatusTracker { public String ssid; public int rssi; public int level; public NetworkKey networkKey; public WifiStatusTracker(WifiManager wifiManager) { mWifiManager = wifiManager; Loading @@ -40,19 +45,32 @@ public class WifiStatusTracker { final NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); connected = networkInfo != null && networkInfo.isConnected(); // If Connected grab the signal strength and ssid. if (connected) { // try getting it out of the intent first WifiInfo info = intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO) != null ? (WifiInfo) intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO) : mWifiManager.getConnectionInfo(); if (info != null) { // If Connected grab the signal strength and ssid. if (connected && info != null) { ssid = getSsid(info); String bssid = info.getBSSID(); if ((ssid != null) && (bssid != null)) { // Reuse existing network key object if possible. if ((networkKey == null) || !networkKey.wifiKey.ssid.equals(ssid) || !networkKey.wifiKey.bssid.equals(bssid)) { try { networkKey = new NetworkKey( new WifiKey(ssid, bssid)); } catch (IllegalArgumentException e) { Log.e(TAG, "Cannot create NetworkKey", e); } } } else { ssid = null; networkKey = null; } } else if (!connected) { } else { ssid = null; networkKey = null; } } else if (action.equals(WifiManager.RSSI_CHANGED_ACTION)) { // Default to -200 as its below WifiManager.MIN_RSSI. Loading
packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java +47 −3 Original line number Diff line number Diff line Loading @@ -16,15 +16,18 @@ package com.android.systemui.statusbar; import android.annotation.ColorInt; import android.annotation.DrawableRes; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.Rect; import android.graphics.drawable.Animatable; import android.graphics.drawable.AnimatedVectorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.telephony.SubscriptionInfo; import android.util.ArraySet; import android.util.AttributeSet; Loading Loading @@ -74,8 +77,10 @@ public class SignalClusterView private boolean mEthernetVisible = false; private int mEthernetIconId = 0; private int mLastEthernetIconId = -1; private int mWifiBadgeId = -1; private boolean mWifiVisible = false; private int mWifiStrengthId = 0; private int mLastWifiBadgeId = -1; private int mLastWifiStrengthId = -1; private boolean mIsAirplaneMode = false; private int mAirplaneIconId = 0; Loading Loading @@ -259,6 +264,7 @@ public class SignalClusterView boolean activityIn, boolean activityOut, String description) { mWifiVisible = statusIcon.visible && !mBlockWifi; mWifiStrengthId = statusIcon.icon; mWifiBadgeId = statusIcon.iconOverlay; mWifiDescription = statusIcon.contentDescription; apply(); Loading Loading @@ -399,6 +405,7 @@ public class SignalClusterView mWifi.setImageDrawable(null); mWifiDark.setImageDrawable(null); mLastWifiStrengthId = -1; mLastWifiBadgeId = -1; } for (PhoneState state : mPhoneStates) { Loading Loading @@ -464,10 +471,16 @@ public class SignalClusterView (mEthernetVisible ? "VISIBLE" : "GONE"))); if (mWifiVisible) { if (mWifiStrengthId != mLastWifiStrengthId) { if (mWifiStrengthId != mLastWifiStrengthId || mWifiBadgeId != mLastWifiBadgeId) { if (mWifiBadgeId == -1) { setIconForView(mWifi, mWifiStrengthId); setIconForView(mWifiDark, mWifiStrengthId); } else { setBadgedWifiIconForView(mWifi, mWifiStrengthId, mWifiBadgeId); setBadgedWifiIconForView(mWifiDark, mWifiStrengthId, mWifiBadgeId); } mLastWifiStrengthId = mWifiStrengthId; mLastWifiBadgeId = mWifiBadgeId; } mWifiGroup.setContentDescription(mWifiDescription); mWifiGroup.setVisibility(View.VISIBLE); Loading Loading @@ -529,6 +542,10 @@ public class SignalClusterView // Using the imageView's context to retrieve the Drawable so that theme is preserved. Drawable icon = imageView.getContext().getDrawable(iconId); setScaledIcon(imageView, icon); } private void setScaledIcon(ImageView imageView, Drawable icon) { if (mIconScaleFactor == 1.f) { imageView.setImageDrawable(icon); } else { Loading @@ -536,6 +553,33 @@ public class SignalClusterView } } /** * Creates and sets a LayerDrawable from the given ids on the given view. * * <p>This method will also scale the icon by {@link #mIconScaleFactor} if appropriate. */ private void setBadgedWifiIconForView(ImageView imageView, @DrawableRes int wifiPieId, @DrawableRes int badgeId) { // Using the imageView's context to retrieve the Drawable so that theme is preserved.; LayerDrawable icon = new LayerDrawable(new Drawable[] { imageView.getContext().getDrawable(wifiPieId), imageView.getContext().getDrawable(badgeId)}); // The LayerDrawable shares an underlying state so we must mutate the object to change the // color between the light and dark themes. icon.mutate().setTint(getColorAttr(imageView.getContext(), R.attr.singleToneColor)); setScaledIcon(imageView, icon); } /** Returns the given color attribute value, or white if not defined. */ @ColorInt private static int getColorAttr(Context context, int attr) { TypedArray ta = context.obtainStyledAttributes(new int[] {attr}); @ColorInt int colorAccent = ta.getColor(0, Color.WHITE); ta.recycle(); return colorAccent; } public void setIconTint(int tint, float darkIntensity, Rect tintArea) { boolean changed = tint != mIconTint || darkIntensity != mDarkIntensity || !mTintArea.equals(tintArea); Loading
packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java +17 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ package com.android.systemui.statusbar.policy; import android.content.Context; import android.content.Intent; import android.telephony.SubscriptionInfo; import android.view.View; import com.android.settingslib.net.DataUsageController; import com.android.settingslib.wifi.AccessPoint; import com.android.systemui.DemoMode; Loading Loading @@ -68,15 +70,29 @@ public interface NetworkController extends CallbackController<SignalCallback>, D public static class IconState { public final boolean visible; public final int icon; /** * Optional iconOverlay resource id. * * <p>Set to -1 if not present. */ public final int iconOverlay; public final String contentDescription; public IconState(boolean visible, int icon, String contentDescription) { public IconState(boolean visible, int icon, int iconOverlay, String contentDescription) { this.visible = visible; this.icon = icon; this.iconOverlay = iconOverlay; this.contentDescription = contentDescription; } public IconState(boolean visible, int icon, String contentDescription) { this(visible, icon, -1 /* iconOverlay */, contentDescription); } public IconState(boolean visible, int icon, int contentDescription, Context context) { this(visible, icon, context.getString(contentDescription)); Loading
packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +14 −4 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.net.ConnectivityManager; import android.net.NetworkCapabilities; import android.net.NetworkScoreManager; import android.net.wifi.WifiManager; import android.os.AsyncTask; import android.os.Bundle; Loading Loading @@ -88,6 +89,7 @@ public class NetworkControllerImpl extends BroadcastReceiver private final DataSaverController mDataSaverController; private final CurrentUserTracker mUserTracker; private Config mConfig; private final NetworkScoreManager mNetworkScoreManager; // Subcontrollers. @VisibleForTesting Loading Loading @@ -145,9 +147,12 @@ public class NetworkControllerImpl extends BroadcastReceiver public NetworkControllerImpl(Context context, Looper bgLooper, DeviceProvisionedController deviceProvisionedController) { this(context, (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE), context.getSystemService(NetworkScoreManager.class), (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE), (WifiManager) context.getSystemService(Context.WIFI_SERVICE), SubscriptionManager.from(context), Config.readConfig(context), bgLooper, SubscriptionManager.from(context), Config.readConfig(context), bgLooper, new CallbackHandler(), new AccessPointControllerImpl(context, bgLooper), new DataUsageController(context), Loading @@ -158,8 +163,12 @@ public class NetworkControllerImpl extends BroadcastReceiver @VisibleForTesting NetworkControllerImpl(Context context, ConnectivityManager connectivityManager, TelephonyManager telephonyManager, WifiManager wifiManager, SubscriptionManager subManager, Config config, Looper bgLooper, NetworkScoreManager networkScoreManager, TelephonyManager telephonyManager, WifiManager wifiManager, SubscriptionManager subManager, Config config, Looper bgLooper, CallbackHandler callbackHandler, AccessPointControllerImpl accessPointController, DataUsageController dataUsageController, Loading @@ -182,6 +191,7 @@ public class NetworkControllerImpl extends BroadcastReceiver // wifi mWifiManager = wifiManager; mNetworkScoreManager = networkScoreManager; mLocale = mContext.getResources().getConfiguration().locale; mAccessPoints = accessPointController; Loading @@ -195,7 +205,7 @@ public class NetworkControllerImpl extends BroadcastReceiver } }); mWifiSignalController = new WifiSignalController(mContext, mHasMobileDataFeature, mCallbackHandler, this); mCallbackHandler, this, mNetworkScoreManager); mEthernetSignalController = new EthernetSignalController(mContext, mCallbackHandler, this); Loading