اسکنهای تخلیه بار شبکه ترجیحی وایفای (PNO) اسکنهای وایفای کممصرفی هستند که در فواصل منظم، زمانی که دستگاه از وایفای جدا شده و صفحه نمایش خاموش است، رخ میدهند. اسکنهای PNO برای یافتن و اتصال به شبکههای ذخیره شده استفاده میشوند. این اسکنها توسط چارچوب با استفاده از دستور NL80211_CMD_START_SCHED_SCAN زمانبندی میشوند. برای اطلاعات بیشتر، به nl80211.h مراجعه کنید.
بهینهسازی مصرف برق با اطلاعات مربوط به تحرک دستگاه
در دستگاههایی که اندروید ۹ یا پایینتر دارند، وقتی دستگاه از وایفای جدا شده و صفحه نمایش خاموش است، اسکنهای PNO برای سه اسکن اول در فواصل ۲۰ ثانیهای انجام میشوند، سپس برای همه اسکنهای بعدی، سرعت به یک اسکن در هر ۶۰ ثانیه کاهش مییابد. اسکن PNO با پیدا شدن یک شبکه ذخیره شده یا روشن شدن صفحه نمایش متوقف میشود.
اندروید ۱۰ یک متد API اختیاری به نام setDeviceMobilityState() در WifiManager معرفی میکند که فاصله بین اسکنهای PNO را بر اساس وضعیت تحرک دستگاه افزایش میدهد تا مصرف برق را کاهش دهد.
حالتهای تحرک احتمالی عبارتند از:
-
DEVICE_MOBILITY_STATE_UNKNOWN: تحرک نامشخص -
DEVICE_MOBILITY_STATE_HIGH_MVMT: روی دوچرخه یا وسیله نقلیه موتوری -
DEVICE_MOBILITY_STATE_LOW_MVMT: در حال راه رفتن یا دویدن -
DEVICE_MOBILITY_STATE_STATIONARY: در حال حرکت نیست
اگر دستگاه ثابت باشد، چارچوب اندروید فاصله بین اسکنهای PNO را از ۶۰ ثانیه به ۱۸۰ ثانیه افزایش میدهد تا مصرف برق را کاهش دهد. این بهینهسازی با این فرض انجام میشود که بعید است دستگاه در اسکنهای PNO وقتی که حرکت نمیکند، شبکه جدیدی پیدا کند.
اگر دستگاه در هر حالت تحرک دیگری باشد یا اگر متد فراخوانی نشده باشد، دستگاه از رفتار اسکن پیشفرض PNO استفاده میکند.
پیادهسازی
برای پیادهسازی این ویژگی بهینهسازی مصرف انرژی در دستگاهی که اندروید ۱۰ یا بالاتر را اجرا میکند، اطلاعات مربوط به تحرکپذیری دستگاه را استخراج کرده و متد setDeviceMobilityState() را از یک برنامه سیستمی سفارشی فراخوانی کنید.