סריקות של העברת נתונים לרשת מועדפת ב-Wi-Fi (PNO) הן סריקות Wi-Fi בעוצמה נמוכה שמתרחשות במרווחי זמן קבועים כשהמכשיר מנותק מ-Wi-Fi והמסך כבוי. סריקות PNO משמשות כדי למצוא רשתות שמורות ולהתחבר אליהן. הסריקות האלה מתוזמנות על ידי ה-framework באמצעות הפקודה 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()
מאפליקציית מערכת בהתאמה אישית.