Seleção de rede Wi-Fi

Nesta página, descrevemos os algoritmos e procedimentos usados no Android 12 para selecionar e alternar entre redes Wi-Fi. O Android avalia continuamente a qualidade da rede conectada e das redes disponíveis.

Ciclo de vida de uma conexão automática

Isso descreve o processo de como um dispositivo Android avalia e se conecta a redes Wi-Fi disponíveis.

  1. O dispositivo procura redes disponíveis de uma das seguintes maneiras, dependendo se a tela está ligada ou desligada.

    • Tela ativada (conectado): o subsistema de conectividade do Android avalia regularmente se a conexão atual é boa o suficiente para ignorar a verificação (conforme definido em verificações com a tela ativada). Se a conexão não for boa o suficiente para pular a verificação, o subsistema de conectividade vai acionar uma verificação para detectar redes disponíveis. Essas verificações também podem ser acionadas por outros componentes do sistema, como o sistema de localização ou um app (incluindo o app Configurações).
    • Tela ativada (desconectada): o subsistema de conectividade do Android emite verificações periódicas seguindo uma programação de espera exponencial. O módulo avalia todos os resultados de verificação recebidos e tenta selecionar a melhor rede para se conectar.
    • Tela desligada (desconectada): a CPU host programa o firmware com uma lista de redes preferenciais usando buscas por redes preferenciais de descarga (PNO, na sigla em inglês) assim que a tela é desligada. O firmware ativa o host se encontrar alguma das redes preferenciais. O AOSP pressupõe que o PNO é compatível com o dispositivo.

    O método WifiManager#allowAutojoinGlobal(boolean) pode ser usado para desativar conexões automáticas. Essa é uma API privilegiada que pode ser usada por fabricantes de dispositivos em circunstâncias limitadas (por exemplo, um dispositivo não móvel pré-configurado).

    Se o dispositivo estiver conectado e a sobreposição do config_wifi_framework_enable_associated_network_selection estiver definida como false, nenhuma verificação de conectividade será realizada, e os resultados não vão acionar a seleção de rede. Essa configuração não tem efeito quando o dispositivo está desconectado. Isso significa que as verificações de conectividade e a seleção de rede ainda ocorrem.

  2. Os resultados da verificação são avaliados.

    • Se o dispositivo estiver conectado a uma rede Wi-Fi, a estrutura vai avaliar se a rede atual é boa o suficiente para ignorar a seleção de rede.

      Uma rede é definida como boa o suficiente para ignorar a seleção de rede se algum dos seguintes requisitos for atendido:

      • Menos de 10 segundos se passaram desde a última seleção de rede.
      • O usuário se conectou manualmente à rede recentemente (em que "recentemente" pode ser configurado usando a sobreposição config_wifiSufficientDurationAfterUserSelectionMilliseconds).
      • O dispositivo está conectado a uma conexão de inscrição on-line (OSU).
      • Todos os requisitos a seguir são atendidos:

        • O RSSI está acima do limite necessário ou há tráfego suficiente na conexão. Consulte verificações com a tela ativada para conferir os limites de RSSI e tráfego.
        • A rede é validada (conectada à Internet) ou aprovada pelo usuário para uso sem acesso à Internet.
        • A rede não é tarifada.
    • Se a rede for boa o suficiente para pular a seleção de rede, nenhuma outra ação será realizada.

    • Se a rede Wi-Fi conectada não for boa o suficiente ou se o dispositivo não estiver conectado a uma rede, a estrutura chamará os indicadores de rede para gerar uma lista de redes Wi-Fi candidatas para conexão com base nos resultados de verificação filtrados. Os nominadores de rede encontram configurações de Wi-Fi existentes ou criam novas configurações para as redes candidatas.

    • Os resultados da verificação são filtrados para remover BSSIDs com um RSSI abaixo do RSSI de entrada (configurável usando as sobreposições config_wifi_framework_wifi_score_entry_rssi_threshold_24GHz, config_wifi_framework_wifi_score_entry_rssi_threshold_5GHz e config_wifiFrameworkScoreEntryRssiThreshold6ghz). Além disso, os BSSIDs bloqueados são filtrados. Os BSSIDs podem ser bloqueados com base em falhas de conexão repetidas, desconexões frequentes e solicitações explícitas do AP para não tentar a associação por um determinado período (MBO-OCE). O bloqueio de BSSID é descrito abaixo em Bloqueio de SSID e BSSID.

    • Quando o dispositivo está se movendo rapidamente, os resultados da verificação são filtrados ainda mais para remover BSSIDs cujo RSSI varia rapidamente (indicação de que eles não estão se movendo com o dispositivo). Essa otimização pode ser configurada usando config_wifiHighMovementNetworkSelectionOptimizationEnabled (ativando/desativando a otimização) e as sobreposições config_wifiHighMovementNetworkSelectionOptimizationScanDelayMs e config_wifiHighMovementNetworkSelectionOptimizationRssiDelta, que configuram o requisito de estabilidade nos resultados da verificação (mudança de RSSI em resultados de verificação suficientemente separados no tempo).

  3. A biblioteca executa o avaliador de candidatos para gerar uma pontuação para cada candidato de identificador de conjunto de serviços (SSID). Os candidatos a SSID podem incluir vários candidatos a identificador do conjunto de serviços básicos (BSSID, na sigla em inglês), gerados pelos nominadores de rede. O candidato com a maior pontuação é o vencedor.

  4. O framework executa o algoritmo de escolha de conexão do usuário, que pode fazer com que uma rede selecionada pelo usuário seja o novo candidato vencedor em vez de usar o candidato vencedor do scorer de candidatos.

  5. O framework determina se o candidato vencedor corresponde à rede conectada no momento. Para ser considerada uma correspondência, uma das seguintes condições precisa ser atendida:

    • O candidato vencedor e a rede Wi-Fi conectada têm o mesmo BSSID.
    • Se o roaming de firmware estiver disponível (incluindo a capacidade de lista negra de BSSID), o candidato vencedor e a rede conectada terão o mesmo SSID e tipo de segurança.

    Se o candidato vencedor corresponder à rede conectada no momento, nenhuma outra ação será tomada. Se o candidato vencedor não corresponder à rede, o dispositivo será associado a ele.

A conexão automática de rede é desativada enquanto um app usa a API Wi-Fi Network Request, que substitui o sistema e cria uma LAN sem Internet, exceto em dispositivos que suportam estações duplas simultâneas.

Avaliação de uma rede conectada

O framework ou firmware do Android avalia periodicamente a qualidade da rede conectada. Nesta seção, descrevemos como a rede conectada é avaliada quando a tela está ligada ou desligada.

Essa avaliação é feita além da seleção de rede discutida acima.

Tela ativada

O framework do Android avalia a rede conectada da seguinte maneira:

  1. O serviço Wi-Fi pesquisa as estatísticas de RSSI e da camada de link a cada 3 segundos (configurável usando a sobreposição config_wifiPollRssiIntervalMilliseconds).

    Se o ajuste dinâmico de intervalo estiver ativado usando a sobreposição config_wifiAdjustPollRssiIntervalEnabled, o intervalo de pesquisa vai mudar dinamicamente com base no estado de mobilidade do dispositivo e no RSSI.

    • O intervalo de polling é estendido para 6 segundos (configurado pela sobreposição config_wifiPollRssiLongIntervalMilliseconds) quando o dispositivo está parado e o RSSI está acima de -68 dBm (configurado pelas sobreposições config_wifiClientRssiMonitorThresholdDbm e config_wifiClientRssiMonitorHysteresisDb).
    • O intervalo de polling é reduzido para 3 segundos (configurado pela sobreposição config_wifiPollRssiIntervalMilliseconds) quando o dispositivo não está parado ou o RSSI está abaixo de -73 dBm (configurado pela sobreposição config_wifiClientRssiMonitorThresholdDbm).
  2. O serviço Wi-Fi calcula uma pontuação de conexão com base no RSSI e nas estatísticas da camada de link.

  3. O serviço de Wi-Fi transmite a pontuação ao serviço de conectividade, que usa a pontuação para determinar se deve se conectar a uma rede Wi-Fi ou a outro tipo de rede disponível, como uma rede celular.

Tela desligada

O framework não inicia uma avaliação na rede conectada, mas o processo de seleção de rede ainda pode ocorrer se as verificações forem iniciadas por outros componentes (por exemplo, serviços de localização). O firmware avalia a qualidade da rede e, se ela for ruim, o firmware poderá fazer roaming ou (eventualmente) se dissociar da rede e ativar o host.

Verificações de conectividade

As verificações são realizadas automaticamente com base em se o dispositivo está com a tela ligada, desligada e conectado ao Wi-Fi ou desligada e sem conexão Wi-Fi.

Tela ativada

O framework aciona decisões de verificação em intervalos cada vez maiores quando a tela é ativada. Os intervalos de decisão de verificação são configurados com as sobreposições config_wifiDisconnectedScanIntervalScheduleSec, config_wifiConnectedScanIntervalScheduleSec e config_wifiSingleSavedNetworkConnectedScanIntervalScheduleSec (que são matrizes de números inteiros). Por padrão, as verificações ocorrem usando intervalos de espera exponencial de 20, 40, 80 e 160 segundos, com verificações subsequentes possivelmente realizadas em intervalos de 160 segundos (esses são os valores padrão dessas sobreposições).

Os intervalos de verificação de espera exponencial são redefinidos e reiniciados em 20 segundos sempre que o estado da tela muda, ou seja, quando ela é ativada ou desativada.

(Android 13 ou mais recente) Se diferentes intervalos de verificação forem necessários durante a execução, um app com privilégios do OEM poderá chamar a API WifiManager#setScreenOnScanSchedule(screenOnScanSchedule) para definir dinamicamente a programação de verificação com a tela ativada.

A decisão de executar ou pular uma verificação é baseada em se a conexão de rede atual é boa o suficiente para pular a verificação. Uma conexão é boa o suficiente para ignorar a verificação se atender a qualquer um dos seguintes requisitos:

  • O dispositivo está conectado a uma conexão de inscrição on-line (OSU).
  • Há tráfego suficiente fluindo pela conexão (consulte os limites de tráfego abaixo).
  • O RSSI está acima do limite necessário (consulte os limites de RSSI abaixo), e a seleção de rede foi realizada recentemente (10 minutos por padrão, mas pode ser configurada usando a sobreposição config_wifiConnectedHighRssiScanMinimumWindowSizeSec), e a rede é validada (conectada à Internet) ou aprovada pelo usuário para uso sem acesso à Internet.

Os limites de RSSI e tráfego são:

  • O RSSI está acima de -73 dBm para a banda de 2,4 GHz, configurada com a sobreposição config_wifi_framework_wifi_score_low_rssi_threshold_24GHz, ou -70 dBm para as bandas de 5 GHz e 6 GHz, configuradas com as sobreposições config_wifi_framework_wifi_score_low_rssi_threshold_5GHz e config_wifiFrameworkScoreLowRssiThreshold6ghz.
  • O tráfego (transmissão ou recebimento) está acima de 16 pacotes por segundo (pps) configurados com a sobreposição config_wifiFrameworkMinPacketPerSecondActiveTraffic.

Quando o dispositivo está conectado e a tela está ligada. Um scorer conectado monitora periodicamente a qualidade do Wi-Fi analisando indicadores como RSSI e o número de pacotes transferidos. Se a qualidade do Wi-Fi for considerada ruim (conforme especificado abaixo) e o dispositivo for compatível com estações duplas simultâneas, uma verificação será acionada. A sobreposição config_wifiLowConnectedScoreThresholdToTriggerScanForMbb pode ser usada para configurar o limite de pontuação que aciona a verificação. A sobreposição config_wifiLowConnectedScoreScanPeriodSeconds pode ser usada para configurar o período dessas verificações.

Tela desligada e conectada ao Wi-Fi

Quando a tela está desligada e o dispositivo está conectado a uma rede Wi-Fi, o firmware (Wi-Fi SoC) realiza verificações de roaming. O framework não realiza nenhuma verificação quando a tela está desligada.

Tela desligada e sem conexão Wi-Fi (estado desconectado)

Quando a tela está desligada e o Wi-Fi desconectado, o firmware realiza verificações de PNO para SSIDs. O framework configura o firmware com uma lista de SSIDs para procurar e uma lista de canais em que fazer a busca. Se um SSID configurado for encontrado, o firmware vai ativar o framework.

O framework também configura o intervalo em que o firmware vai realizar verificações de PNO, usando o estado de mobilidade do dispositivo para selecionar diferentes intervalos de verificação. Em um estado de baixa mobilidade (o dispositivo está parado), o intervalo é de 60 segundos para as três primeiras verificações (controladas pela sobreposição config_wifiStationaryPnoScanIntervalMillis) e de 180 segundos (um multiplicador fixo de 3x da sobreposição) para as verificações subsequentes. Em um estado de alta mobilidade, o intervalo é de 20 segundos para as três primeiras verificações (controladas pela sobreposição config_wifiMovingPnoScanIntervalMillis) e de 60 segundos (um multiplicador fixo de 3x da sobreposição) para as verificações subsequentes.

Indicadores de rede

Os nominadores de rede encontram ou criam configurações (WifiConfiguration) para redes que são:

  • Disponível (com base nos resultados da verificação) ou a rede conectada (que às vezes não aparece nos resultados da verificação instável).
  • Ter um RSSI mínimo. O RSSI mínimo é de -80 dBm para a banda de 2,4 GHz e de -77 dBm para as bandas de 5 GHz e 6 GHz, configuráveis usando as sobreposições config_wifi_framework_wifi_score_entry_rssi_threshold_24GHz, config_wifi_framework_wifi_score_entry_rssi_threshold_5GHz e config_wifiFrameworkScoreEntryRssiThreshold6ghz.
  • Não está bloqueado, por exemplo, devido a falhas de conexão anteriores.
  • A rede não indica que está inutilizável (por exemplo, usando MBO/OCE).
  • Pode estar associado ao uso das credenciais disponíveis no dispositivo.

Os seguintes nominadores de rede são usados:

  • Indicador de rede salva:avalia todas as redes salvas, incluindo as assinaturas do Passpoint.
  • Indicador de rede sugerida:avalia todas as redes fornecidas por apps usando a API Suggestion, incluindo as assinaturas do Passpoint sugeridas.

Pontuadores de candidatos

Os avaliadores de candidatos avaliam e atribuem uma pontuação a cada um deles. A pontuação de ThroughputScorer (o avaliador padrão) é baseada no seguinte:

  • Uma pontuação de base é calculada com base no RSSI, que é limitado a -73 dBm para a banda de 2,4 GHz ou -70 dBm para as bandas de 5 GHz e 6 GHz (configuradas com as sobreposições config_wifi_framework_wifi_score_low_rssi_threshold_24GHz, config_wifi_framework_wifi_score_low_rssi_threshold_5GHz e config_wifiFrameworkScoreLowRssiThreshold6ghz).
  • Um aumento na pontuação é calculado com base em uma estimativa de taxa de transferência derivada da tecnologia, frequência do canal, largura de banda, RSSI, condições do canal, número máximo de fluxos espaciais e outros parâmetros. O aumento de pontuação pode ser configurado usando as overlays config_wifiFrameworkThroughputBonusNumerator e config_wifiFrameworkThroughputBonusDenominator, e é limitado a um valor máximo especificado usando a overlay config_wifiFrameworkThroughputBonusLimit.
  • Uma rede candidata selecionada recentemente pelo usuário ou por um app recebe um grande aumento de pontuação por um período configurável usando a sobreposição config_wifiFrameworkLastSelectionMinutes. Durante esse período, a rede tem garantia de ser selecionada em vez de redes não selecionadas pelo usuário.
  • Um candidato que corresponde à rede atual recebe um aumento de pontuação configurado pelas sobreposições config_wifiFrameworkCurrentNetworkBonusMin e config_wifiFrameworkCurrentNetworkBonusPercent (ele recebe um bônus extra com base em uma porcentagem do RSSI e da pontuação baseada em capacidade de processamento, até o mínimo configurável).
  • Uma rede segura tem uma pontuação maior do que uma rede aberta. O bônus é configurado usando a sobreposição config_wifiFrameworkSecureNetworkBonus.
  • Uma rede ilimitada (sem custo financeiro) tem uma pontuação maior do que uma rede limitada (paga). O bônus é configurado usando a sobreposição config_wifiFrameworkUnmeteredNetworkBonus.
  • Uma rede salva tem uma pontuação maior do que uma rede sugerida usando a API Suggestion. O bônus é configurado usando a sobreposição config_wifiFrameworkSavedNetworkBonus.
  • As redes não confiáveis (que podem ser solicitadas como parte da API Suggestion) recebem uma pontuação menor do que qualquer outra rede.
  • Uma rede que foi detectada anteriormente como sem Internet recebe uma pontuação de 0 se o dispositivo estiver conectado a outra rede com acesso à Internet.

O bônus padrão para salvos x sugestões e sem medição x com medição (ou seja, os valores de sobreposição padrão) produz uma ordem de prioridade estrita para salvos, sugeridos, com medição e sem medição:

  1. Redes ilimitadas salvas
  2. Redes ilimitadas sugeridas
  3. Redes limitadas salvas
  4. Redes limitadas sugeridas

Isso significa que uma rede salva sem medição (sem custo financeiro) sempre será selecionada antes de uma rede salva com medição (paga). O bônus de pontuação selecionado recentemente (pelo usuário ou app) pode substituir essa prioridade estrita.

O framework pode ter vários candidatos instalados, mas apenas um pode estar ativo por vez. Os outros classificadores podem ser usados para métricas (para investigar algoritmos alternativos). No Android 11, o avaliador padrão é ThroughputScorer.

Bloqueio de SSID e BSSID

O framework pode bloquear SSIDs ou BSSIDs, ou seja, não os considera para conexões temporárias ou permanentes.

Bloqueio de BSSID

O bloqueio de BSSID funciona mantendo dois contadores de falhas, um contador de falhas contínuas e um contador de sequência, por tipo de falha específico (confira abaixo uma lista de tipos de falha). Quando ocorre uma falha:

  • O contador do tipo de falha correspondente é incrementado.
  • Se o limite de falha para esse tipo de falha for atingido:
    • O BSSID está bloqueado.
    • O contador de sequência da falha é incrementado.

A duração do bloqueio de um BSSID começa com um valor base (configurável) especificado pelas sobreposições config_wifiBssidBlocklistMonitorBaseBlockDurationMs ou config_wifiBssidBlocklistMonitorBaseLowRssiBlockDurationMs, dependendo do RSSI, e aumenta exponencialmente até um limite superior configurável (especificado pela sobreposição config_wifiBssidBlocklistMonitorFailureStreakCap). A duração aumenta se as falhas ocorrerem continuamente no mesmo BSSID. A duração é a duração básica aumentada exponencialmente pela sequência de falhas. Ou seja, uma sequência de falhas de 2 implica uma duração de bloco básica 4 vezes maior.

Os limites para o bloqueio de BSSID dependem do motivo da falha e podem ser personalizados usando sobreposições:

  • O AP rejeita a associação usando o código MBO/OCE Não é possível processar nova STA: config_wifiBssidBlocklistMonitorApUnableToHandleNewStaThreshold.
  • A validação da Internet por esta rede falhou: config_wifiBssidBlocklistMonitorNetworkValidationFailureThreshold.
  • Código de falha na autenticação de senha incorreta: config_wifiBssidBlocklistMonitorWrongPasswordThreshold.
  • Código de falha de autenticação EAP para redes EAP: config_wifiBssidBlocklistMonitorEapFailureThreshold.
  • Rejeição de associação, outras rejeições gerais de associação: config_wifiBssidBlocklistMonitorAssociationRejectionThreshold.
  • Tempo limite de associação: config_wifiBssidBlocklistMonitorAssociationTimeoutThreshold.
  • Falha na autenticação, outras falhas gerais de autenticação: config_wifiBssidBlocklistMonitorAuthenticationFailureThreshold.
  • Falha no DHCP, falha ao provisionar o DHCP: config_wifiBssidBlocklistMonitorDhcpFailureThreshold.
  • Desconexão anormal. O dispositivo foi desconectado da rede em um período muito curto após a conexão: config_wifiBssidBlocklistMonitorAbnormalDisconnectThreshold. O período pode ser configurado com config_wifiBssidBlocklistAbnormalDisconnectTimeWindowMs.

Condições de limpeza da lista de bloqueio de BSSID

Um BSSID é removido da lista de bloqueio quando:

  • O Wi-Fi é ativado: todos os BSSIDs são removidos da lista de bloqueio.
  • O usuário toca em uma rede no seletor de Wi-Fi: todos os BSSIDs da rede selecionada pelo usuário são removidos da lista de bloqueio.
  • Tempo limite: os BSSIDs são removidos da lista de bloqueio quando a duração do bloqueio é atingida.
  • Reinicialização: todas as listas de bloqueio são limpas.
  • Rede removida: todos os BSSIDs associados a essa rede são removidos da lista de bloqueio.

Condições para redefinir os contadores de falhas e de sequência:

  • Reinicialização: redefina para todos os BSSIDs.
  • Rede removida: redefina os BSSIDs associados à rede.
  • Sucesso da conexão L2: redefina para os seguintes códigos de erro.

    • REASON_AP_UNABLE_TO_HANDLE_NEW_STA
    • REASON_WRONG_PASSWORD
    • REASON_EAP_FAILURE
    • REASON_ASSOCIATION_REJECTION
    • REASON_ASSOCIATION_TIMEOUT
    • REASON_AUTHENTICATION_FAILURE
    • REASON_ABNORMAL_DISCONNECT (apagado condicionalmente apenas se a última vez que o dispositivo se conectou a esse BSSID foi há mais de três horas)
    • REASON_NONLOCAL_DISCONNECT_CONNECTING
  • Sucesso na validação da rede: redefinições para o seguinte código de erro.

    • REASON_NETWORK_VALIDATION_FAILURE
  • Provisionamento de DHCP bem-sucedido: redefinições para o seguinte código de erro.

    • REASON_DHCP_FAILURE

Bloqueio de SSID

O bloqueio de SSID funciona de maneira semelhante ao bloqueio de BSSID. Um contador de falhas por tipo de falha por rede é incrementado quando ocorrem falhas de conexão (desse tipo). Quando a contagem de falhas de um determinado tipo excede um limite, o SSID é bloqueado permanentemente ou temporariamente com base em uma configuração. A configuração de cada tipo de falha é codificada em WifiConfiguration.NetworkSelectionStatus.DISABLE_REASON_INFOS e resumida abaixo.

* Para redes temporariamente desativadas, a duração da desativação muda dinamicamente com base no número de falhas de conexão consecutivas na rede. Depois que uma rede não consegue se conectar cinco vezes consecutivas, cada falha subsequente resulta em uma duração de desativação duas vezes maior que a anterior. Por exemplo, uma rede com cinco falhas consecutivas é desativada por 5 minutos, depois por 10 minutos na sexta falha, 20 minutos na sétima falha e assim por diante até o limite máximo de 18 horas.

Código de falha Descrição Limite Duração da desativação base* Desativar tipo
DISABLED_DHCP_FAILURE Falha ao provisionar o DHCP 5 5 minutos Temporária
DISABLED_NO_INTERNET_TEMPORARY A validação da rede falhou, mas o usuário afirma que quer continuar se conectando a ela no futuro 1 10 minutos Temporária
DISABLED_AUTHENTICATION_NO_CREDENTIALS O supplicant não tem credenciais para se conectar à rede 1 NA Permanente
DISABLED_NO_INTERNET_PERMANENT Padrão para falha na validação de rede 1 NA Permanente
DISABLED_BY_WIFI_MANAGER Descontinuado e não usado. 1 NA Permanente
DISABLED_BY_WRONG_PASSWORD A senha está incorreta e a rede nunca foi conectada 1 NA Permanente
DISABLED_AUTHENTICATION_NO_SUBSCRIPTION Falha de EAP em que o chip não está inscrito 1 NA Permanente
DISABLED_ASSOCIATION_REJECTION Falhas de rejeição de associação 5 5 minutos Temporária
DISABLED_AUTHENTICATION_FAILURE Outras falhas de autenticação (ou seja, não uma senha incorreta ou uma falha de EAP) 5 5 minutos Temporária
DISABLED_AUTHENTICATION_PRIVATE_EAP_ERROR Falha no EAP específico do provedor (privado). 1 NA Permanente
DISABLED_NETWORK_NOT_FOUND O suplicante não encontrou uma rede nos resultados da verificação que corresponda à rede solicitada pela estrutura para conexão (incluindo recursos de rede). 2 5 minutos Temporária
DISABLED_CONSECUTIVE_FAILURES A rede não conseguiu se conectar cinco ou mais vezes consecutivas. O tipo de falha para esses erros inclui, mas não se limita aos tipos listados nesta tabela.
5 5 minutos Temporária

Uma rede temporariamente desativada é reativada quando:

  • O período de desativação expirou.
  • O usuário seleciona manualmente a rede para se conectar.
  • O usuário ativa ou desativa o Wi-Fi.
  • O sistema é reinicializado.
  • A rede foi desativada com um RSSI muito baixo, mas depois foi detectada novamente com um RSSI moderado ou mais alto.

Uma rede desativada permanentemente é reativada quando:

  • O usuário seleciona manualmente a rede para se conectar.

Os contadores de falhas de uma rede são redefinidos quando:

  • A rede é removida.
  • O dispositivo se conectou à rede.
  • A rede foi reativada após o tempo de desativação expirar.
  • O usuário seleciona manualmente a rede para se conectar.
  • O sistema é reinicializado.

Cards de pontuação

Os cards de pontuação, apresentados no Android 10, registram estatísticas no dispositivo sobre BSSIDs. Os cards de pontuação são mantidos usando o serviço IpMemoryStore.

Os quadros de pontuação não são usados na seleção de rede do Android 11.

Opção de conexão do usuário

O Android tem um algoritmo de escolha de conexão do usuário que permite que o processo de seleção prefira redes Wi-Fi a que um usuário se conectou explicitamente, por exemplo, uma rede doméstica. Os usuários podem preferir essas redes em vez das públicas, mesmo quando o desempenho é menor, porque elas oferecem serviços adicionais, como a capacidade de controlar dispositivos domésticos.

A preferência do usuário por uma rede é capturada marcando todas as configurações de Wi-Fi visíveis e as intensidades de sinal no momento em que o usuário seleciona uma rede. Se uma das configurações de Wi-Fi marcadas for selecionada durante o processo de seleção automática e uma rede escolhida pelo usuário estiver disponível, o algoritmo de escolha de conexão do usuário vai substituir a seleção pela rede escolhida pelo usuário se as seguintes condições forem atendidas:

  • A rede de escolha de conexão do usuário tinha acesso à Internet na última vez que foi usada.
  • A escolha de conexão do usuário tem uma intensidade de sinal que não é pior do que quando foi selecionada originalmente com uma margem de erro. Essa margem de erro pode ser configurada usando a sobreposição config_wifiEstimateRssiErrorMarginDb.

A rede escolhida pelo usuário para conexão persiste após uma reinicialização. A opção de conexão do usuário funciona para redes salvas, redes Passpoint e redes sugeridas.

Duas estações simultâneas

Esta seção descreve a seleção de rede Wi-Fi quando um dispositivo permite conectar-se a duas redes Wi-Fi simultaneamente.

Make-before-break

Se a função make-before-break estiver ativada, o dispositivo vai tentar se conectar à nova rede antes de se desconectar da antiga. O fluxo de fazer antes de interromper usa o mesmo algoritmo de seleção de rede da troca de rede de interromper antes de fazer (quando o dispositivo se desconecta da rede antiga antes de se conectar à nova). Se o algoritmo de seleção de rede escolher uma rede que não pode ser trocada usando make-before-break, o dispositivo vai voltar automaticamente para break-before-make.

Conexão restrita e de Internet simultâneas

Se a função conexão restrita e de Internet simultânea estiver ativada, o dispositivo poderá se conectar a uma rede Wi-Fi restrita secundária que só está disponível para apps selecionados configurados pelo fabricante do dispositivo. As instruções para os fabricantes de dispositivos configurarem isso estão em Restrições simultâneas e conexão de Internet.

Quando o algoritmo de seleção de rede detecta resultados de verificação que correspondem à sugestão paga ou particular do OEM, ele se conecta automaticamente a ela como uma segunda rede. A seleção de rede para a rede Wi-Fi principal (que fornece conexão de Internet para apps comuns) ocorre normalmente em paralelo.

Perguntas frequentes

  1. As redes seguras sempre têm prioridade sobre as redes abertas?

    Não. Salvas x sugeridas e limitadas x ilimitadas são categorias principais em que as redes são avaliadas. Em cada categoria, as redes seguras têm alguma prioridade em relação às redes abertas, mas um peso muito maior é dado à qualidade da conexão.

    Isso porque a segurança real dos dados do usuário é fornecida pela criptografia de ponta a ponta (por exemplo, TLS). As redes seguras criptografam apenas a primeira etapa da comunicação e, mesmo assim, para redes com chaves pré-compartilhadas, não oferecem muita privacidade.

  2. Por que as redes salvas têm prioridade em relação às sugeridas?

    As redes sem custo financeiro (ilimitadas) salvas têm prioridade sobre as redes sem custo financeiro sugeridas, e as redes limitadas salvas têm prioridade sobre as redes limitadas sugeridas.

    As redes salvas têm prioridade em relação às sugeridas porque foram adicionadas explicitamente pelo usuário ao dispositivo. Isso implica uma preferência por se conectar a essas redes quando possível.

    Os usuários podem desativar o comportamento de conexão automática para redes salvas individuais, ou seja, indicar que essas redes só devem ser usadas manualmente e não consideradas automaticamente pelo dispositivo.

  3. Posso mudar a ordem de prioridade estrita ou remover completamente?

    O fabricante do dispositivo pode modificar as decisões de seleção de rede ao mudar as sobreposições de bônus listadas nas seções acima. No entanto, não recomendamos mudar os valores padrão, porque eles foram escolhidos após uma análise cuidadosa de vários casos de uso.