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