Loading api/system-current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -26613,6 +26613,10 @@ package android.net { field public static final android.os.Parcelable.Creator<android.net.Network> CREATOR; } public class NetworkBadging { method public static android.graphics.drawable.Drawable getWifiIcon(int, int, android.content.res.Resources.Theme); } public final class NetworkCapabilities implements android.os.Parcelable { ctor public NetworkCapabilities(android.net.NetworkCapabilities); method public int describeContents(); core/java/android/net/NetworkBadging.java 0 → 100644 +152 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License */ package android.net; import android.annotation.DrawableRes; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; import android.content.res.Resources; import android.content.res.Resources.Theme; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.net.ScoredNetwork.Badging; import android.net.wifi.WifiManager; import android.view.View; /** * Utility methods for working with network badging. * * TODO: move ScoredNetwork.Badging and related constants to this class. * * @hide */ @SystemApi public class NetworkBadging { private NetworkBadging() {} /** * Returns a Wi-Fi icon for a network with a given signal level and badging value. * * @param signalLevel The level returned by {@link WifiManager#calculateSignalLevel(int, int)} * for a network. Must be between 0 and {@link WifiManager#RSSI_LEVELS}-1. * @param badging {@see ScoredNetwork#Badging}, retrieved from * {@link ScoredNetwork#calculateBadge(int)}. * @param theme The theme for the current application, may be null. * @return Drawable for the given icon * @throws IllegalArgumentException if {@code signalLevel} is out of range or {@code badging} * is an invalid value */ @NonNull public static Drawable getWifiIcon( @IntRange(from=0, to=4) int signalLevel, @Badging int badging, @Nullable Theme theme) { Resources resources = Resources.getSystem(); if (badging == ScoredNetwork.BADGING_NONE) { return resources.getDrawable(getWifiSignalResource(signalLevel), theme); } Drawable[] layers = new Drawable[] { resources.getDrawable(getBadgedWifiSignalResource(signalLevel), theme), resources.getDrawable(getWifiBadgeResource(badging), theme) }; return new LayerDrawable(layers); } /** * Returns the wifi signal resource id for the given signal level. * * <p>This wifi signal resource is a wifi icon to be displayed by itself when there is no badge. * * @param signalLevel The level returned by {@link WifiManager#calculateSignalLevel(int, int)} * for a network. Must be between 0 and {@link WifiManager#RSSI_LEVELS}-1. * @return the @DrawableRes for the icon * @throws IllegalArgumentException for an invalid signal level * @hide */ @DrawableRes private static int getWifiSignalResource(int signalLevel) { switch (signalLevel) { case 0: return com.android.internal.R.drawable.ic_wifi_signal_0; case 1: return com.android.internal.R.drawable.ic_wifi_signal_1; case 2: return com.android.internal.R.drawable.ic_wifi_signal_2; case 3: return com.android.internal.R.drawable.ic_wifi_signal_3; case 4: return com.android.internal.R.drawable.ic_wifi_signal_4; default: throw new IllegalArgumentException("Invalid signal level: " + signalLevel); } } /** * Returns the badged wifi signal resource id for the given signal level. * * <p>This badged wifi signal resource should be displayed with the quality badge retrieved * from {@link #getWifiBadgeResource(int)}. If there is no badge, * {@link #getWifiBadgeResource(int)} should be used instead of this method. * * @param signalLevel The level returned by {@link WifiManager#calculateSignalLevel(int, int)} * for a network. Must be between 0 and {@link WifiManager#RSSI_LEVELS}-1. * @return the @DrawableRes for the icon * @throws IllegalArgumentException for an invalid signal level * @hide */ @DrawableRes private static int getBadgedWifiSignalResource(int signalLevel) { switch (signalLevel) { case 0: return com.android.internal.R.drawable.ic_signal_wifi_badged_0_bars; case 1: return com.android.internal.R.drawable.ic_signal_wifi_badged_1_bar; case 2: return com.android.internal.R.drawable.ic_signal_wifi_badged_2_bars; case 3: return com.android.internal.R.drawable.ic_signal_wifi_badged_3_bars; case 4: return com.android.internal.R.drawable.ic_signal_wifi_badged_4_bars; default: throw new IllegalArgumentException("Invalid signal level: " + signalLevel); } } /** * Returns the wifi quality badge resource id for the the given badging balue. * * <p>This badge should be displayed with the badge signal resource retrieved from * {@link #getBadgedWifiSignalResource(int)}. * * @param badging {@see ScoredNetwork#Badging} from {@link ScoredNetwork#calculateBadge(int)}. * @return the @DrawableRes for the icon or {@link View#NO_ID} for * {@link ScoredNetwork#BADGING_NONE} * @throws IllegalArgumentException for an invalid badging value. * @hide */ @DrawableRes private static int getWifiBadgeResource(@Badging int badging) { switch (badging) { 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: return com.android.internal.R.drawable.ic_signal_wifi_badged_hd; case ScoredNetwork.BADGING_4K: return com.android.internal.R.drawable.ic_signal_wifi_badged_4k; default: throw new IllegalArgumentException("No resource found for badge: " + badging); } } } core/res/res/drawable/ic_signal_wifi_badged_0_bars.xml +3 −3 Original line number Diff line number Diff line Loading @@ -13,11 +13,11 @@ See the License for the specific language governing permissions and limitations under the License. --> <vector xmlns:api24="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android" android:viewportWidth="18" android:viewportHeight="18" android:width="18dp" android:height="18dp"> android:width="26dp" android:height="24dp"> <group android:translateX="386" android:translateY="-298"> Loading core/res/res/drawable/ic_signal_wifi_badged_1_bar.xml +3 −3 Original line number Diff line number Diff line Loading @@ -13,11 +13,11 @@ See the License for the specific language governing permissions and limitations under the License. --> <vector xmlns:api24="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android" android:viewportWidth="18" android:viewportHeight="18" android:width="18dp" android:height="18dp"> android:width="26dp" android:height="24dp"> <group android:translateX="386" android:translateY="-298"> Loading core/res/res/drawable/ic_signal_wifi_badged_2_bars.xml +3 −3 Original line number Diff line number Diff line Loading @@ -13,11 +13,11 @@ See the License for the specific language governing permissions and limitations under the License. --> <vector xmlns:api24="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android" android:viewportWidth="18" android:viewportHeight="18" android:width="18dp" android:height="18dp"> android:width="26dp" android:height="24dp"> <group android:translateX="386" android:translateY="-298"> Loading Loading
api/system-current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -26613,6 +26613,10 @@ package android.net { field public static final android.os.Parcelable.Creator<android.net.Network> CREATOR; } public class NetworkBadging { method public static android.graphics.drawable.Drawable getWifiIcon(int, int, android.content.res.Resources.Theme); } public final class NetworkCapabilities implements android.os.Parcelable { ctor public NetworkCapabilities(android.net.NetworkCapabilities); method public int describeContents();
core/java/android/net/NetworkBadging.java 0 → 100644 +152 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License */ package android.net; import android.annotation.DrawableRes; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; import android.content.res.Resources; import android.content.res.Resources.Theme; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.net.ScoredNetwork.Badging; import android.net.wifi.WifiManager; import android.view.View; /** * Utility methods for working with network badging. * * TODO: move ScoredNetwork.Badging and related constants to this class. * * @hide */ @SystemApi public class NetworkBadging { private NetworkBadging() {} /** * Returns a Wi-Fi icon for a network with a given signal level and badging value. * * @param signalLevel The level returned by {@link WifiManager#calculateSignalLevel(int, int)} * for a network. Must be between 0 and {@link WifiManager#RSSI_LEVELS}-1. * @param badging {@see ScoredNetwork#Badging}, retrieved from * {@link ScoredNetwork#calculateBadge(int)}. * @param theme The theme for the current application, may be null. * @return Drawable for the given icon * @throws IllegalArgumentException if {@code signalLevel} is out of range or {@code badging} * is an invalid value */ @NonNull public static Drawable getWifiIcon( @IntRange(from=0, to=4) int signalLevel, @Badging int badging, @Nullable Theme theme) { Resources resources = Resources.getSystem(); if (badging == ScoredNetwork.BADGING_NONE) { return resources.getDrawable(getWifiSignalResource(signalLevel), theme); } Drawable[] layers = new Drawable[] { resources.getDrawable(getBadgedWifiSignalResource(signalLevel), theme), resources.getDrawable(getWifiBadgeResource(badging), theme) }; return new LayerDrawable(layers); } /** * Returns the wifi signal resource id for the given signal level. * * <p>This wifi signal resource is a wifi icon to be displayed by itself when there is no badge. * * @param signalLevel The level returned by {@link WifiManager#calculateSignalLevel(int, int)} * for a network. Must be between 0 and {@link WifiManager#RSSI_LEVELS}-1. * @return the @DrawableRes for the icon * @throws IllegalArgumentException for an invalid signal level * @hide */ @DrawableRes private static int getWifiSignalResource(int signalLevel) { switch (signalLevel) { case 0: return com.android.internal.R.drawable.ic_wifi_signal_0; case 1: return com.android.internal.R.drawable.ic_wifi_signal_1; case 2: return com.android.internal.R.drawable.ic_wifi_signal_2; case 3: return com.android.internal.R.drawable.ic_wifi_signal_3; case 4: return com.android.internal.R.drawable.ic_wifi_signal_4; default: throw new IllegalArgumentException("Invalid signal level: " + signalLevel); } } /** * Returns the badged wifi signal resource id for the given signal level. * * <p>This badged wifi signal resource should be displayed with the quality badge retrieved * from {@link #getWifiBadgeResource(int)}. If there is no badge, * {@link #getWifiBadgeResource(int)} should be used instead of this method. * * @param signalLevel The level returned by {@link WifiManager#calculateSignalLevel(int, int)} * for a network. Must be between 0 and {@link WifiManager#RSSI_LEVELS}-1. * @return the @DrawableRes for the icon * @throws IllegalArgumentException for an invalid signal level * @hide */ @DrawableRes private static int getBadgedWifiSignalResource(int signalLevel) { switch (signalLevel) { case 0: return com.android.internal.R.drawable.ic_signal_wifi_badged_0_bars; case 1: return com.android.internal.R.drawable.ic_signal_wifi_badged_1_bar; case 2: return com.android.internal.R.drawable.ic_signal_wifi_badged_2_bars; case 3: return com.android.internal.R.drawable.ic_signal_wifi_badged_3_bars; case 4: return com.android.internal.R.drawable.ic_signal_wifi_badged_4_bars; default: throw new IllegalArgumentException("Invalid signal level: " + signalLevel); } } /** * Returns the wifi quality badge resource id for the the given badging balue. * * <p>This badge should be displayed with the badge signal resource retrieved from * {@link #getBadgedWifiSignalResource(int)}. * * @param badging {@see ScoredNetwork#Badging} from {@link ScoredNetwork#calculateBadge(int)}. * @return the @DrawableRes for the icon or {@link View#NO_ID} for * {@link ScoredNetwork#BADGING_NONE} * @throws IllegalArgumentException for an invalid badging value. * @hide */ @DrawableRes private static int getWifiBadgeResource(@Badging int badging) { switch (badging) { 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: return com.android.internal.R.drawable.ic_signal_wifi_badged_hd; case ScoredNetwork.BADGING_4K: return com.android.internal.R.drawable.ic_signal_wifi_badged_4k; default: throw new IllegalArgumentException("No resource found for badge: " + badging); } } }
core/res/res/drawable/ic_signal_wifi_badged_0_bars.xml +3 −3 Original line number Diff line number Diff line Loading @@ -13,11 +13,11 @@ See the License for the specific language governing permissions and limitations under the License. --> <vector xmlns:api24="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android" android:viewportWidth="18" android:viewportHeight="18" android:width="18dp" android:height="18dp"> android:width="26dp" android:height="24dp"> <group android:translateX="386" android:translateY="-298"> Loading
core/res/res/drawable/ic_signal_wifi_badged_1_bar.xml +3 −3 Original line number Diff line number Diff line Loading @@ -13,11 +13,11 @@ See the License for the specific language governing permissions and limitations under the License. --> <vector xmlns:api24="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android" android:viewportWidth="18" android:viewportHeight="18" android:width="18dp" android:height="18dp"> android:width="26dp" android:height="24dp"> <group android:translateX="386" android:translateY="-298"> Loading
core/res/res/drawable/ic_signal_wifi_badged_2_bars.xml +3 −3 Original line number Diff line number Diff line Loading @@ -13,11 +13,11 @@ See the License for the specific language governing permissions and limitations under the License. --> <vector xmlns:api24="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android" android:viewportWidth="18" android:viewportHeight="18" android:width="18dp" android:height="18dp"> android:width="26dp" android:height="24dp"> <group android:translateX="386" android:translateY="-298"> Loading