Show mobile data icon with carrier Wi-Fi level in Settings

- If carrier Wi-Fi is active then use carrier Wi-Fi level instead of
  mobile data level.

- If carrier Wi-Fi level is less than min-level, use min-level instead.

Bug: 222885558
Test: manual test
atest -c SubscriptionsPreferenceControllerTest \
         WifiPickerTrackerHelperTest

Change-Id: I46ba5129357bae47e5e44dcbbb26e6673581fdc8
This commit is contained in:
Weng Su
2022-05-19 05:03:58 +08:00
parent 1cf78b8b83
commit f8f2d17b66
4 changed files with 120 additions and 38 deletions

View File

@@ -155,6 +155,17 @@ public class WifiPickerTrackerHelper implements LifecycleObserver {
return mergedCarrierEntry.getSsid();
}
/** Return the carrier network level */
public int getCarrierNetworkLevel() {
final MergedCarrierEntry mergedCarrierEntry = mWifiPickerTracker.getMergedCarrierEntry();
if (mergedCarrierEntry == null) return WifiEntry.WIFI_LEVEL_MIN;
int level = mergedCarrierEntry.getLevel();
// To avoid icons not found with WIFI_LEVEL_UNREACHABLE(-1), use WIFI_LEVEL_MIN(0) instead.
if (level < WifiEntry.WIFI_LEVEL_MIN) level = WifiEntry.WIFI_LEVEL_MIN;
return level;
}
@VisibleForTesting
void setWifiPickerTracker(@NonNull WifiPickerTracker wifiPickerTracker) {
mWifiPickerTracker = wifiPickerTracker;