סריקה של הסרת עומס מהרשת המועדפת ל-Wi-Fi

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