2 votes

Y a-t-il un ordre à la liste de réseaux wifi ou est-ce aléatoire?

Y a-t-il un ordre de préférence selon lequel le système d'exploitation Android affiche les noms de réseau Wifi dans la liste des réseaux disponibles ?

Merci

3voto

cachius Points 186

Réseaux disponibles

Les réseaux offerts pour se connecter sont classés par:

  1. Être le réseau principal (isPrimaryNetwork())
  2. Être connecté à (getConnectedState())
  3. Être un réseau connu (instanceof KnownNetworkEntry)
  4. Être un réseau hotspot fourni via SharedConnectivityManager (instanceof HotspotNetworkEntry)
  5. Force de la connexion affichée de l'appareil distant à Internet (getUpstreamConnectionStrength())
  6. Si une entrée montre une option de connexion (canConnect())
  7. Si une entrée est pour un abonnement (isSubscription())
  8. Si une entrée est pour une configuration enregistrée (isSaved())
  9. Si une entrée est pour une suggestion (isSuggestion())
  10. Force du signal (getLevel())
  11. Le titre (getTitle())

en utilisant le WifiEntry.WIFI_PICKER_COMPARATOR

/**
 * Comparateur par défaut pour trier les WifiEntries sur une liste de sélection Wi-Fi.
 */
public static Comparator WIFI_PICKER_COMPARATOR =
        Comparator.comparing((WifiEntry entry) -> !entry.isPrimaryNetwork())
                .thenComparing((WifiEntry entry) ->
                                entry.getConnectedState() != CONNECTED_STATE_CONNECTED)
                .thenComparing((WifiEntry entry) -> !(entry instanceof KnownNetworkEntry))
                .thenComparing((WifiEntry entry) -> !(entry instanceof HotspotNetworkEntry))
                .thenComparing((WifiEntry entry) -> (entry instanceof HotspotNetworkEntry)
                                ? -((HotspotNetworkEntry) entry).getUpstreamConnectionStrength() : 0)
                .thenComparing((WifiEntry entry) -> !entry.canConnect())
                .thenComparing((WifiEntry entry) -> !entry.isSubscription())
                .thenComparing((WifiEntry entry) -> !entry.isSaved())
                .thenComparing((WifiEntry entry) -> !entry.isSuggestion())
                .thenComparing((WifiEntry entry) -> -entry.getLevel())
                .thenComparing((WifiEntry entry) -> entry.getTitle());

dans WifiPickerTracker::updateWifiEntries()

activeWifiEntries.sort(WifiEntry.WIFI_PICKER_COMPARATOR);

Dans les zones résidentielles, souvent de nombreux des critères supérieurs seront les mêmes et la force de la connexion montante/la force du signal seront les facteurs décisifs.

Réseaux enregistrés

Les réseaux enregistrés dans Wi-Fi > Avancé > Réseaux gérés sont classés par ordre alphabétique par titre en utilisant le WifiEntry.TITLE_COMPARATOR

public static Comparator TITLE_COMPARATOR =
                Comparator.comparing((WifiEntry entry) -> entry.getTitle());

dans SavedNetworkTracker::updateWifiEntries()

mSavedWifiEntries.addAll(mStandardWifiEntryCache);
Collections.sort(mSavedWifiEntries, WifiEntry.TITLE_COMPARATOR);

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X