List reachable access points on top of the list in WifiNetworkListFragment
Bug: 128942314 Test: manual Change-Id: I036bf09c066da3a68d6e2fc4685313ccf16bff03
This commit is contained in:
@@ -34,7 +34,6 @@ import com.android.settings.R;
|
|||||||
import com.android.settings.SettingsPreferenceFragment;
|
import com.android.settings.SettingsPreferenceFragment;
|
||||||
import com.android.settings.core.SubSettingLauncher;
|
import com.android.settings.core.SubSettingLauncher;
|
||||||
import com.android.settings.wifi.AddNetworkFragment;
|
import com.android.settings.wifi.AddNetworkFragment;
|
||||||
import com.android.settings.wifi.savedaccesspoints.SavedNetworkComparator;
|
|
||||||
import com.android.settingslib.wifi.AccessPoint;
|
import com.android.settingslib.wifi.AccessPoint;
|
||||||
import com.android.settingslib.wifi.AccessPointPreference;
|
import com.android.settingslib.wifi.AccessPointPreference;
|
||||||
import com.android.settingslib.wifi.WifiSavedConfigUtils;
|
import com.android.settingslib.wifi.WifiSavedConfigUtils;
|
||||||
@@ -43,6 +42,7 @@ import com.android.settingslib.wifi.WifiTrackerFactory;
|
|||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WifiNetworkListFragment extends SettingsPreferenceFragment implements
|
public class WifiNetworkListFragment extends SettingsPreferenceFragment implements
|
||||||
WifiTracker.WifiListener, AccessPoint.AccessPointListener {
|
WifiTracker.WifiListener, AccessPoint.AccessPointListener {
|
||||||
@@ -282,27 +282,38 @@ public class WifiNetworkListFragment extends SettingsPreferenceFragment implemen
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(b/128942314): Lists reachable AccessPoints on top of the list
|
List<AccessPoint> savedAccessPoints =
|
||||||
final List<AccessPoint> savedAccessPoints =
|
|
||||||
WifiSavedConfigUtils.getAllConfigs(getContext(), mWifiManager);
|
WifiSavedConfigUtils.getAllConfigs(getContext(), mWifiManager);
|
||||||
Collections.sort(savedAccessPoints, SavedNetworkComparator.INSTANCE);
|
|
||||||
|
savedAccessPoints = savedAccessPoints.stream()
|
||||||
|
.filter(accessPoint -> isValidForDppConfiguration(accessPoint))
|
||||||
|
.map(accessPoint -> getScannedAccessPointIfAvailable(accessPoint))
|
||||||
|
.sorted((ap1, ap2) -> {
|
||||||
|
// orders reachable Wi-Fi networks on top
|
||||||
|
if (ap1.isReachable() && !ap2.isReachable()) {
|
||||||
|
return -1;
|
||||||
|
} else if (!ap1.isReachable() && ap2.isReachable()) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
String ap1Title = nullToEmpty(ap1.getTitle());
|
||||||
|
String ap2Title = nullToEmpty(ap2.getTitle());
|
||||||
|
|
||||||
|
return ap1Title.compareToIgnoreCase(ap2Title);
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
|
||||||
int index = 0;
|
int index = 0;
|
||||||
mAccessPointsPreferenceCategory.removeAll();
|
mAccessPointsPreferenceCategory.removeAll();
|
||||||
for (AccessPoint savedAccessPoint : savedAccessPoints) {
|
for (AccessPoint savedAccessPoint : savedAccessPoints) {
|
||||||
if (isValidForDppConfiguration(savedAccessPoint)) {
|
final AccessPointPreference preference =
|
||||||
// Replaces with an AccessPoint from scanned result for signal information
|
createAccessPointPreference(savedAccessPoint);
|
||||||
savedAccessPoint = getScannedAccessPointIfAvailable(savedAccessPoint);
|
|
||||||
final AccessPointPreference preference =
|
|
||||||
createAccessPointPreference(savedAccessPoint);
|
|
||||||
|
|
||||||
preference.setOrder(index++);
|
preference.setOrder(index++);
|
||||||
preference.setEnabled(savedAccessPoint.isReachable());
|
preference.setEnabled(savedAccessPoint.isReachable());
|
||||||
savedAccessPoint.setListener(this);
|
savedAccessPoint.setListener(this);
|
||||||
|
|
||||||
preference.refresh();
|
preference.refresh();
|
||||||
mAccessPointsPreferenceCategory.addPreference(preference);
|
mAccessPointsPreferenceCategory.addPreference(preference);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
mAddPreference.setOrder(index);
|
mAddPreference.setOrder(index);
|
||||||
mAccessPointsPreferenceCategory.addPreference(mAddPreference);
|
mAccessPointsPreferenceCategory.addPreference(mAddPreference);
|
||||||
@@ -312,6 +323,11 @@ public class WifiNetworkListFragment extends SettingsPreferenceFragment implemen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String nullToEmpty(String string) {
|
||||||
|
return (string == null) ? "" : string;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Replaces with an AccessPoint from scanned result for signal information
|
||||||
private AccessPoint getScannedAccessPointIfAvailable(AccessPoint savedAccessPoint) {
|
private AccessPoint getScannedAccessPointIfAvailable(AccessPoint savedAccessPoint) {
|
||||||
final List<AccessPoint> scannedAccessPoints = mWifiTracker.getAccessPoints();
|
final List<AccessPoint> scannedAccessPoints = mWifiTracker.getAccessPoints();
|
||||||
final WifiConfiguration savedWifiConfiguration = savedAccessPoint.getConfig();
|
final WifiConfiguration savedWifiConfiguration = savedAccessPoint.getConfig();
|
||||||
|
Reference in New Issue
Block a user