اسکنهای تخلیه شبکه ترجیحی Wi-Fi (PNO) اسکنهای Wi-Fi کم مصرف هستند که در فواصل زمانی منظم زمانی که دستگاه از Wi-Fi قطع میشود و صفحه نمایش خاموش میشود، انجام میشود. اسکن PNO برای یافتن و اتصال به شبکه های ذخیره شده استفاده می شود. این اسکن ها توسط چارچوب با استفاده از دستور NL80211_CMD_START_SCHED_SCAN
برنامه ریزی می شوند. برای اطلاعات بیشتر، به nl80211.h مراجعه کنید.
مصرف انرژی را با اطلاعات حرکت دستگاه بهینه کنید
در دستگاههایی که دارای Android 9 یا پایینتر هستند، وقتی دستگاه از Wi-Fi قطع میشود و صفحه نمایش خاموش است، اسکنهای PNO در فواصل 20 ثانیهای برای سه اسکن اول انجام میشوند، سپس برای تمام اسکنهای بعدی، سرعت آن به یک اسکن در هر 60 ثانیه کاهش مییابد. اسکن PNO با یافتن یک شبکه ذخیره شده یا روشن شدن صفحه متوقف می شود.
Android 10 یک روش API اختیاری به نام setDeviceMobilityState()
در WifiManager
معرفی میکند که فاصله بین اسکنهای PNO را بر اساس وضعیت تحرک دستگاه افزایش میدهد تا مصرف انرژی را کاهش دهد.
حالت های تحرک احتمالی عبارتند از:
-
DEVICE_MOBILITY_STATE_UNKNOWN
: تحرک ناشناخته -
DEVICE_MOBILITY_STATE_HIGH_MVMT
: سوار بر دوچرخه یا وسیله نقلیه موتوری -
DEVICE_MOBILITY_STATE_LOW_MVMT
: پیاده روی یا دویدن -
DEVICE_MOBILITY_STATE_STATIONARY
: حرکت نمی کند
اگر دستگاه ثابت است، فریم ورک اندروید فاصله بین اسکنهای PNO را از 60 ثانیه به 180 ثانیه افزایش میدهد تا مصرف انرژی را کاهش دهد. این بهینهسازی با این فرض انجام میشود که وقتی دستگاه در حال حرکت نیست، بعید است دستگاه شبکههای جدیدی را در اسکنهای PNO پیدا کند.
اگر دستگاه در هر حالت تحرک دیگری باشد یا اگر روش فراخوانی نشده باشد، دستگاه از رفتار اسکن PNO پیشفرض استفاده میکند.
پیاده سازی
برای پیادهسازی این ویژگی بهینهسازی نیرو در دستگاهی که Android 10 یا بالاتر دارد، اطلاعات تحرک دستگاه را استخراج کنید و متد setDeviceMobilityState()
از یک برنامه سیستمی سفارشی فراخوانی کنید.