Update detail icon only if its signal level changed.

Changes behavior to only render the wifi pie icon if the new rssi has
resulted in a new signal level.

Bug: 64712237
Test: make -j40 ROBOTEST_FILTER=WifiDetailPreferenceControllerTest
RunSettingsRoboTests

Change-Id: I01be2f87d61489242d646ff2003db13c9268ea14
This commit is contained in:
Eric Schwarzenbach
2017-08-16 11:52:17 -07:00
parent 0c39aa781e
commit 241cb0db02
2 changed files with 29 additions and 7 deletions

View File

@@ -117,7 +117,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
private Network mNetwork;
private NetworkInfo mNetworkInfo;
private NetworkCapabilities mNetworkCapabilities;
private int mRssi;
private int mRssiSignalLevel = -1;
private String[] mSignalStr;
private final WifiConfiguration mWifiConfig;
private WifiInfo mWifiInfo;
@@ -338,7 +338,6 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
refreshNetworkState();
// Update Connection Header icon and Signal Strength Preference
mRssi = mWifiInfo.getRssi();
refreshRssiViews();
// MAC Address Pref
@@ -381,9 +380,13 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
}
private void refreshRssiViews() {
int iconSignalLevel = WifiManager.calculateSignalLevel(
mRssi, WifiManager.RSSI_LEVELS);
Drawable wifiIcon = mIconInjector.getIcon(iconSignalLevel);
int signalLevel = mAccessPoint.getLevel();
if (mRssiSignalLevel == signalLevel) {
return;
}
mRssiSignalLevel = signalLevel;
Drawable wifiIcon = mIconInjector.getIcon(mRssiSignalLevel);
wifiIcon.setTint(Utils.getColorAccent(mContext));
mEntityHeaderController.setIcon(wifiIcon).done(mFragment.getActivity(), true /* rebind */);
@@ -393,8 +396,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
R.color.wifi_details_icon_color, mContext.getTheme()));
mSignalStrengthPref.setIcon(wifiIconDark);
int summarySignalLevel = mAccessPoint.getLevel();
mSignalStrengthPref.setDetailText(mSignalStr[summarySignalLevel]);
mSignalStrengthPref.setDetailText(mSignalStr[mRssiSignalLevel]);
}
private void updatePreference(WifiDetailPreference pref, String detailText) {