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

As verificações de descarregamento de rede preferencial de Wi-Fi (PNO) são verificações 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 varreduras 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 é desconectado do Wi-Fi e a tela está desligada, verificações de PNO ocorrem em intervalos de 20 segundos para as três primeiras verificações e, em seguida, diminuem para uma verificação a cada 60 segundos para todas as verificações subsequentes. A varredura PNO é interrompida quando uma rede salva é encontrada ou a tela é ligada.

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

Os estados de mobilidade possíveis são:

  • DEVICE_MOBILITY_STATE_UNKNOWN : mobilidade desconhecida
  • DEVICE_MOBILITY_STATE_HIGH_MVMT : em uma bicicleta ou em um veículo motorizado
  • DEVICE_MOBILITY_STATE_LOW_MVMT : Caminhar ou correr
  • DEVICE_MOBILITY_STATE_STATIONARY : não se move

Se o dispositivo estiver parado, a estrutura do Android aumenta o intervalo entre as verificações de PNO de 60 segundos para 180 segundos para reduzir o consumo de energia. Essa otimização é feita assumindo que é improvável que o dispositivo encontre novas redes em varreduras de 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() de um aplicativo de sistema personalizado.