2 votos

¿Hay un orden en la lista de redes wifi o es aleatorio?

¿Hay un orden en cómo el sistema operativo Android muestra los nombres de las redes Wifi en la lista de Redes Disponibles?

Gracias

3voto

cachius Puntos 101

Redes Disponibles

Las redes ofrecidas para conectarse están ordenadas por:

  1. Si es la red principal (isPrimaryNetwork())
  2. Si está conectado a (getConnectedState())
  3. Si es una red conocida (instanceof KnownNetworkEntry)
  4. Si es una Red de Hotspot proporcionada a través de SharedConnectivityManager (instanceof HotspotNetworkEntry)
  5. Fuerza de conexión mostrada del dispositivo remoto a Internet (getUpstreamConnectionStrength())
  6. Si una entrada muestra una opción de conexión (canConnect())
  7. Si una entrada es para una suscripción (isSubscription())
  8. Si una entrada es una configuración guardada (isSaved())
  9. Si una entrada es una sugerencia (isSuggestion())
  10. Fuerza de señal (getLevel())
  11. El título (getTitle())

usando el WifiEntry.WIFI_PICKER_COMPARATOR

/**
 * Comparador por defecto para ordenar WifiEntries en una lista de seleccionador de Wi-Fi.
 */
public static Comparator WIFI_PICKER_COMPARATOR =
        Comparator.comparing((WifiEntry entrada) -> !entrada.isPrimaryNetwork())
                .thenComparing((WifiEntry entrada) ->
                                entrada.getConnectedState() != CONNECTED_STATE_CONNECTED)
                .thenComparing((WifiEntry entrada) -> !(entrada instanceof KnownNetworkEntry))
                .thenComparing((WifiEntry entrada) -> !(entrada instanceof HotspotNetworkEntry))
                .thenComparing((WifiEntry entrada) -> (entrada instanceof HotspotNetworkEntry)
                                ? -((HotspotNetworkEntry) entrada).getUpstreamConnectionStrength() : 0)
                .thenComparing((WifiEntry entrada) -> !entrada.canConnect())
                .thenComparing((WifiEntry entrada) -> !entrada.isSubscription())
                .thenComparing((WifiEntry entrada) -> !entrada.isSaved())
                .thenComparing((WifiEntry entrada) -> !entrada.isSuggestion())
                .thenComparing((WifiEntry entrada) -> -entrada.getLevel())
                .thenComparing((WifiEntry entrada) -> entrada.getTitle());

en WifiPickerTracker::updateWifiEntries()

activeWifiEntries.sort(WifiEntry.WIFI_PICKER_COMPARATOR);

En zonas residenciales a menudo muchos de los criterios superiores serán iguales y la Fuerza de Conexión/Senal será el factor decisivo.

Redes Guardadas

Las redes guardadas en Wi-Fi > Avanzado > Redes administradas están ordenadas alfabéticamente por título usando el WifiEntry.TITLE_COMPARATOR

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

en SavedNetworkTracker::updateWifiEntries()

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

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X