वाई-फ़ाई को प्राथमिकता देने वाले नेटवर्क के लिए, ऑफ़लोड करने के लिए स्कैनिंग

पीएनओ (प्रिफ़र्ड नेटवर्क ऑफ़लोड) स्कैन, कम पावर वाले वाई-फ़ाई स्कैन होते हैं. ये स्कैन, तय समय के अंतराल पर तब होते हैं, जब कोई डिवाइस वाई-फ़ाई से डिसकनेक्ट हो जाता है और उसकी स्क्रीन बंद होती है. पीएनओ स्कैन का इस्तेमाल, सेव किए गए नेटवर्क ढूंढने और उनसे कनेक्ट करने के लिए किया जाता है. इन स्कैन को, फ़्रेमवर्क 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() तरीके को कॉल करें.