वाई-फ़ाई प्रिफ़र्ड नेटवर्क ऑफ़लोड (पीएनओ) स्कैन, कम बैटरी वाले वाई-फ़ाई स्कैन होते हैं. ये स्कैन, डिवाइस के वाई-फ़ाई से डिसकनेक्ट होने और स्क्रीन के बंद होने पर, नियमित अंतराल पर होते हैं. सेव किए गए नेटवर्क ढूंढने और उनसे कनेक्ट करने के लिए, पीएनओ स्कैन का इस्तेमाल किया जाता है. इन स्कैन को फ़्रेमवर्क, NL80211_CMD_START_SCHED_SCAN
कमांड का इस्तेमाल करके शेड्यूल करता है. ज़्यादा जानकारी के लिए, nl80211.h देखें.
डिवाइस की मोबिलिटी की जानकारी की मदद से, बैटरी के इस्तेमाल को ऑप्टिमाइज़ करना
Android 9 या उससे पहले के वर्शन वाले डिवाइसों पर, जब डिवाइस वाई-फ़ाई से कनेक्ट नहीं होता और स्क्रीन बंद होती है, तो पहले तीन स्कैन के लिए 20 सेकंड के अंतराल पर पीएनओ स्कैन होते हैं. इसके बाद, सभी स्कैन के लिए हर 60 सेकंड में एक स्कैन होता है. सेव किया गया नेटवर्क मिलने या स्क्रीन चालू होने पर, PNO स्कैनिंग रुक जाती है.
Android 10 में WifiManager
में setDeviceMobilityState()
नाम का एक वैकल्पिक एपीआई तरीका उपलब्ध कराया गया है. यह बैटरी की खपत को कम करने के लिए, डिवाइस की गतिशीलता की स्थिति के आधार पर PNO स्कैन के बीच के इंटरवल को बढ़ाता है.
मोबिलिटी की ये स्थितियां हो सकती हैं:
DEVICE_MOBILITY_STATE_UNKNOWN
: चलने-फिरने की सुविधा के बारे में जानकारी नहीं हैDEVICE_MOBILITY_STATE_HIGH_MVMT
: साइकल या मोटर वाहन परDEVICE_MOBILITY_STATE_LOW_MVMT
: चलना या दौड़नाDEVICE_MOBILITY_STATE_STATIONARY
: न चल रहा है
अगर डिवाइस एक जगह पर है, तो Android फ़्रेमवर्क, बिजली की खपत कम करने के लिए, पीएनओ स्कैन के बीच के अंतराल को 60 सेकंड से बढ़ाकर 180 सेकंड कर देता है. यह ऑप्टिमाइज़ेशन इस आधार पर किया जाता है कि जब डिवाइस एक जगह पर हो, तो उसे पीएनओ स्कैन में कोई नया नेटवर्क मिलने की संभावना कम होती है.
अगर डिवाइस किसी दूसरी मोबाइलिटी स्टेटस में है या इस तरीके को कॉल नहीं किया गया है, तो डिवाइस डिफ़ॉल्ट PNO स्कैन व्यवहार का इस्तेमाल करता है.
लागू करना
Android 10 या उसके बाद के वर्शन वाले डिवाइस पर पावर-ऑप्टिमाइज़ करने की इस सुविधा को लागू करने के लिए, डिवाइस की मोबिलिटी से जुड़ी जानकारी पाएं. साथ ही, कस्टम सिस्टम ऐप्लिकेशन से setDeviceMobilityState()
तरीके को कॉल करें.