סריקות של העברת נתונים לרשת מועדפת (PNO) ב-Wi-Fi הן סריקות 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
: לא זז
אם המכשיר נייח, מסגרת Android מגדילה את המרווח בין סריקות PNO מ-60 שניות ל-180 שניות כדי לצמצם את צריכת החשמל. האופטימיזציה הזו מתבצעת על סמך ההנחה שלא סביר שהמכשיר ימצא רשתות חדשות בסריקות PNO כשהמכשיר לא זז.
אם המכשיר נמצא במצב ניידות אחר או אם לא קוראים לשיטה, המכשיר משתמש בהתנהגות ברירת המחדל של סריקת PNO.
הטמעה
כדי להטמיע את התכונה הזו לאופטימיזציה של צריכת האנרגיה במכשיר עם Android מגרסה 10 ואילך, צריך להפיק את המידע על ניידות המכשיר ולקרוא ל-method setDeviceMobilityState()
מאפליקציית מערכת בהתאמה אישית.