סריקות של יציאה מהרשת המועדפת ל-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 ומעלה, נגזר את נתוני הניידות של המכשיר
ולקרוא לשיטה setDeviceMobilityState()
מאפליקציית מערכת בהתאמה אישית.