Show Hotspot network icon (Wi-Fi Slice)

- Show Hotspot device type icons without signal strength (no Wi-Fi level)

Bug: 268550769
Test: manual test
make RunSettingsRoboTests ROBOTEST_FILTER=WifiSliceTest

Change-Id: I2a707cf20fc1a6d519ef5ca54db64e913daec969
This commit is contained in:
Weng Su
2023-08-24 11:54:05 +08:00
parent ef6ac74a15
commit c826558805
3 changed files with 62 additions and 3 deletions

View File

@@ -20,6 +20,7 @@ import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
import static android.provider.SettingsSlicesContract.KEY_WIFI;
import static com.android.settings.slices.CustomSliceRegistry.WIFI_SLICE_URI;
import static com.android.settingslib.wifi.WifiUtils.getHotspotIconResource;
import android.annotation.ColorInt;
import android.app.PendingIntent;
@@ -264,13 +265,19 @@ public class WifiSlice implements CustomSliceable {
android.R.attr.colorControlNormal));
}
final Drawable drawable = mContext.getDrawable(
WifiUtils.getInternetIconResource(wifiSliceItem.getLevel(),
wifiSliceItem.shouldShowXLevelIcon()));
Drawable drawable = mContext.getDrawable(getWifiIconResId(wifiSliceItem));
drawable.setTint(tint);
return Utils.createIconWithDrawable(drawable);
}
@VisibleForTesting
int getWifiIconResId(WifiSliceItem wifiSliceItem) {
return (wifiSliceItem.isInstantHotspotNetwork())
? getHotspotIconResource(wifiSliceItem.getInstantHotspotDeviceType())
: WifiUtils.getInternetIconResource(wifiSliceItem.getLevel(),
wifiSliceItem.shouldShowXLevelIcon());
}
protected IconCompat getEndIcon(WifiSliceItem wifiSliceItem) {
if (wifiSliceItem.getConnectedState() != WifiEntry.CONNECTED_STATE_DISCONNECTED) {
return IconCompat.createWithResource(mContext, R.drawable.ic_settings_24dp);

View File

@@ -20,6 +20,7 @@ import android.content.Context;
import android.text.TextUtils;
import com.android.settingslib.R;
import com.android.wifitrackerlib.HotspotNetworkEntry;
import com.android.wifitrackerlib.WifiEntry;
/**
@@ -39,6 +40,9 @@ public class WifiSliceItem {
private final boolean mHasInternetAccess;
private final String mSummary;
private boolean mIsInstantHotspotNetwork;
private int mInstantHotspotDeviceType;
// These values must be kept within [WifiEntry.WIFI_LEVEL_MIN, WifiEntry.WIFI_LEVEL_MAX]
private static final int[] WIFI_CONNECTION_STRENGTH = {
R.string.accessibility_no_wifi,
@@ -59,6 +63,10 @@ public class WifiSliceItem {
mShouldEditBeforeConnect = wifiEntry.shouldEditBeforeConnect();
mHasInternetAccess = wifiEntry.hasInternetAccess();
mSummary = wifiEntry.getSummary(false /* concise */);
mIsInstantHotspotNetwork = wifiEntry instanceof HotspotNetworkEntry;
if (mIsInstantHotspotNetwork) {
mInstantHotspotDeviceType = ((HotspotNetworkEntry) wifiEntry).getDeviceType();
}
}
@Override
@@ -83,6 +91,12 @@ public class WifiSliceItem {
if (!TextUtils.equals(getSummary(), otherItem.getSummary())) {
return false;
}
if (isInstantHotspotNetwork() != otherItem.isInstantHotspotNetwork()) {
return false;
}
if (getInstantHotspotDeviceType() != otherItem.getInstantHotspotDeviceType()) {
return false;
}
return true;
}
@@ -136,6 +150,20 @@ public class WifiSliceItem {
return mSummary;
}
/**
* Returns true if this is a Instant Hotspot network.
*/
public boolean isInstantHotspotNetwork() {
return mIsInstantHotspotNetwork;
}
/**
* Returns DeviceType of Instant Hotspot network.
*/
public int getInstantHotspotDeviceType() {
return mInstantHotspotDeviceType;
}
/**
* This method has similar code as WifiEntryPreference#buildContentDescription().
* TODO(b/154191825): Adds WifiEntry#getContentDescription() to replace the duplicate code.