Digitalização de descarregamento de rede preferida por Wi-Fi

As varreduras de descarregamento de rede preferencial (PNO) de Wi-Fi são varreduras de Wi-Fi de baixa potência que ocorrem em intervalos regulares quando um dispositivo é desconectado do Wi-Fi e a tela está desligada. As varreduras PNO são usadas para localizar e conectar-se a redes salvas. Essas verificações são agendadas pela estrutura usando o comando NL80211_CMD_START_SCHED_SCAN . Para obter mais informações, consulte nl80211.h .

Otimizando o uso de energia com informações de mobilidade do dispositivo

Em dispositivos com Android 9 ou inferior, quando o dispositivo está desconectado do Wi-Fi e a tela está desligada, as varreduras PNO ocorrem em intervalos de 20 segundos nas três primeiras varreduras e, em seguida, diminuem para uma varredura a cada 60 segundos em todas as varreduras subsequentes. A varredura PNO é interrompida quando uma rede salva é encontrada ou a tela é ligada.

O Android 10 introduz um método API opcional chamado setDeviceMobilityState() no WifiManager que aumenta o intervalo entre verificações PNO com base no estado de mobilidade do dispositivo para reduzir o consumo de energia.

Os possíveis estados de mobilidade são:

  • DEVICE_MOBILITY_STATE_UNKNOWN : mobilidade desconhecida
  • DEVICE_MOBILITY_STATE_HIGH_MVMT : Em uma bicicleta ou veículo motorizado
  • DEVICE_MOBILITY_STATE_LOW_MVMT : Caminhando ou correndo
  • DEVICE_MOBILITY_STATE_STATIONARY : Sem movimento

Se o dispositivo estiver parado, a estrutura do Android aumenta o intervalo entre as varreduras PNO de 60 segundos para 180 segundos para reduzir o consumo de energia. Essa otimização é feita supondo que é improvável que o dispositivo encontre novas redes nas varreduras PNO quando o dispositivo não estiver em movimento.

Se o dispositivo estiver em qualquer outro estado de mobilidade ou se o método não for chamado, o dispositivo usará o comportamento de varredura PNO padrão.

Implementação

Para implementar esse recurso de otimização de energia em um dispositivo com Android 10 ou superior, obtenha as informações de mobilidade do dispositivo e chame o método setDeviceMobilityState() em um app de sistema personalizado.