As verificações de descarga de rede Wi-Fi preferencial (PNO, na sigla em inglês) são de baixa potência e que
ocorrer em intervalos regulares quando um dispositivo estiver desconectado do Wi-Fi e o
que a tela esteja desligada. As verificações da PNO são usadas para encontrar e
conectar a redes salvas. Essas verificações são agendadas pelo framework usando
NL80211_CMD_START_SCHED_SCAN
. Para mais informações, consulte
nl80211.h.
Otimize o uso de energia com informações sobre mobilidade do dispositivo
Em dispositivos com o Android 9 ou versões anteriores, estiver desconectado do Wi-Fi e a tela estiver desligada, as buscas por PNO ocorrem aos 20 segundos para as três primeiras verificações e, depois, desacelerar para uma a cada 60 segundos. para todas as verificações subsequentes. A busca por PNO é interrompida quando uma rede salva é encontrada ou que a tela esteja ligada.
O Android 10 introduz um método de API opcional chamado
setDeviceMobilityState()
em WifiManager
que aumenta o intervalo entre
As verificações de PNO são baseadas 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 desconhecidaDEVICE_MOBILITY_STATE_HIGH_MVMT
: De bicicleta ou em um veículo motorizadoDEVICE_MOBILITY_STATE_LOW_MVMT
: Caminhada ou corridaDEVICE_MOBILITY_STATE_STATIONARY
: Não está se movendo
Se o dispositivo estiver estacionário, o framework do Android aumentará a intervalo entre as buscas por PNO de 60 a 180 segundos para reduzir o consumo de energia e consumo. Essa otimização é feita com base na suposição de que o dispositivo está é improvável que encontre novas redes nas verificações da PNO quando o dispositivo não está em movimento.
Se o dispositivo estiver em qualquer outro estado de mobilidade ou se o método não for chamado, o dispositivo usa o comportamento padrão de busca da PNO.
Implementação
Para implementar esse recurso de otimização de energia em um dispositivo com Android
10 ou mais recente, derivar as informações de mobilidade do dispositivo
e chamar o método setDeviceMobilityState()
em um app personalizado do sistema.