Android 8.0 में जोड़ी गई, Wi-Fi Aware सुविधा की मदद से, इस सुविधा के साथ काम करने वाले डिवाइस, इंटरनेट या सेल्यूलर नेटवर्क ऐक्सेस किए बिना, Wi-Fi Aware प्रोटोकॉल का इस्तेमाल करके एक-दूसरे को सीधे तौर पर ढूंढ सकते हैं, कनेक्ट हो सकते हैं, और एक-दूसरे की दूरी का पता लगा सकते हैं. दूरी का पता लगाने की सुविधा, Android 9 में जोड़ी गई है. यह सुविधा, Wi-Fi Alliance (WFA) Wi-Fi Aware स्पेसिफ़िकेशन (वर्शन 2.0, 3.0, 3.1, और 4.0) पर आधारित है. इसकी मदद से, भरोसेमंद डिवाइसों और ऐप्लिकेशन के बीच, ज़्यादा थ्रूपुट वाला डेटा शेयर किया जा सकता है. ऐसा तब भी किया जा सकता है, जब ये डिवाइस और ऐप्लिकेशन नेटवर्क से कनेक्ट न हों.
Android 17 और इसके बाद के वर्शन में, Wi-Fi Aware आर्किटेक्चर के बारे में ज़्यादा जानने के लिए, Wi-Fi Aware आर्किटेक्चर लेख पढ़ें.
उदाहरण और सोर्स
इस सुविधा का इस्तेमाल करने के लिए, डिवाइस बनाने वाली कंपनियों को Wi-Fi Vendor HAL लागू करना चाहिए. Android 14 और इसके बाद के वर्शन में, वेंडर एचएएल इंटरफ़ेस को एआईडीएल का इस्तेमाल करके तय किया जाता है. Android 13 और इससे पुराने वर्शन में, वेंडर एचएएल इंटरफ़ेस को एचआईडीएल का इस्तेमाल करके तय किया जाता है.
Wi-Fi Aware सुविधा का इस्तेमाल करने के लिए, वाई-फ़ाई इंटरफ़ेस का इस्तेमाल करें. यह इस बात पर निर्भर करता है कि कौनसे इंटरफ़ेस को लागू किया गया है. इसके हिसाब से, यह इनमें से कोई एक हो सकता है:
- एआईडीएल:
hardware/interfaces/wifi/aidl - एचआईडीएल:
hardware/interfaces/wifi/1.2या इसके बाद का वर्शन
एआईडीएल और एचआईडीएल इंटरफ़ेस के साथ, लेगसी Wi-Fi HAL कैसे काम करता है, यह जानने के लिए:
hardware/libhardware_legacy/+/android17-release/include/hardware_legacy/wifi_nan.h पर जाएं.
लागू करना
डिवाइस बनाने वाली कंपनियों को फ़्रेमवर्क और एचएएल/फ़र्मवेयर, दोनों के लिए सहायता उपलब्ध करानी होगी:
- फ़्रेमवर्क:
- Android ओपन सोर्स प्रोजेक्ट (AOSP) कोड
- अवेयर सुविधा चालू करना: इसके लिए, फ़ीचर फ़्लैग और बिल्ड फ़्लैग, दोनों ज़रूरी हैं
- Wi-Fi Aware (NAN) HAL की सुविधा (इसका मतलब है कि फ़र्मवेयर की सुविधा भी उपलब्ध है)
इस सुविधा को लागू करने के लिए, डिवाइस बनाने वाली कंपनियां, वाई-फ़ाई इंटरफ़ेस लागू करती हैं और सुविधा के दो फ़्लैग चालू करती हैं:
BoardConfig.mkयाBoardConfig-common.mkमें, जोdevice/<oem>/<device>में मौजूद है, यह फ़्लैग जोड़ें:WIFI_HIDL_FEATURE_AWARE := truedevice.mkमें, जोdevice/<oem>/<device>में मौजूद है,PRODUCT_COPY_FILESएनवायरमेंट वैरिएबल में बदलाव करके, Wi-Fi Aware सुविधा के लिए सहायता शामिल करें:PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.wifi.aware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.aware.xml
Wi-Fi Aware में, IEEE 802.11mc प्रोटोकॉल का इस्तेमाल करके, आस-पास मौजूद डिवाइसों की दूरी का पता लगाया जा सकता है. इसे राउंड ट्रिप टाइम (आरटीटी) भी कहा जाता है. Wi-Fi Aware की यह सब-सुविधा, इस बात पर निर्भर करती है कि डिवाइस, Wi-Fi RTT सुविधा के साथ काम करता है या नहीं. इसका मतलब है कि डिवाइस में, Wi-Fi Aware और Wi-Fi RTT, दोनों की सुविधा होनी चाहिए. ज़्यादा जानकारी के लिए, Wi-Fi RTT लेख पढ़ें.
इसके अलावा, इस सुविधा के लिए ज़रूरी सभी चीज़ें, AOSP में शामिल हैं.
अगर WIFI_HAL_INTERFACE_COMBINATIONS फ़्लैग तय किया गया है, तो WIFI_HIDL_FEATURE_AWARE फ़्लैग को अनदेखा कर दिया जाता है. ज़्यादा जानकारी के लिए, एक साथ कई वाई-फ़ाई इंटरफ़ेस इस्तेमाल करना लेख पढ़ें.
एमएसी पता बदलने की सुविधा
Android के लिए ज़रूरी है कि Wi-Fi Aware की खोज (एनएमआई) और डेटा इंटरफ़ेस (एनडीपी) के एमएसी पते को बदला जाए. साथ ही, यह भी ज़रूरी है कि ये पते, डिवाइस के असली एमएसी पते से अलग हों. एमएसी पते:
- जब भी Wi-Fi Aware सुविधा चालू या फिर से चालू की जाती है, तब बदले जाने चाहिए.
जब Wi-Fi Aware सुविधा चालू होती है, तब एमएसी पते को नियमित अंतराल पर बदला जाना चाहिए. यह अंतराल,
NanConfigRequest.macAddressRandomizationIntervalSecपैरामीटर से कॉन्फ़िगर किया जाता है. फ़्रेमवर्क इसे डिफ़ॉल्ट रूप से 30 मिनट पर कॉन्फ़िगर करता है.
सस्पेंड और रिज़्यूम
Android 14 और इसके बाद के वर्शन में, Wi-Fi Aware की मदद से, खास अधिकारों वाले ऐप्लिकेशन, खोज के चालू सेशन को सस्पेंड और रिज़्यूम कर सकते हैं. इनमें, उन सेशन से जुड़े सभी डेटा पाथ भी शामिल हैं. इस सुविधा की मदद से, डिवाइस खोज के सेशन को तेज़ी से रिज़्यूम कर सकते हैं और कम बैटरी इस्तेमाल कर सकते हैं. ऐसा इसलिए, क्योंकि खोज के सेशन को सस्पेंड किया जा सकता है.
अगर किसी डिवाइस में, सस्पेंड और रिज़्यूम करने की सुविधा उपलब्ध है, तो खास अधिकारों वाला कोई ऐप्लिकेशन, खोज के सेशन को सस्पेंड करने पर, फ़र्मवेयर, Wi-Fi Aware सेशन को सस्पेंड कर देता है. जब खोज का कोई सेशन सस्पेंड होता है, तो डिवाइस उस सेशन के लिए कोई फ़्रेम ट्रांसमिट या रिसीव नहीं करता. इसमें, उस सेशन में मौजूद चालू एनडीपी भी शामिल हैं. अगर खोज के सभी सेशन सस्पेंड हैं, तो डिवाइस, Wi-Fi Aware के कोई फ़्रेम ट्रांसमिट या रिसीव नहीं करता.
जब खास अधिकारों वाला कोई ऐप्लिकेशन, सस्पेंड किए गए खोज के सेशन को रिज़्यूम करता है, तो फ़्रेमवर्क, सेशन को उसकी पिछली स्थिति में वापस ले जाता है. इसमें, उससे जुड़े सभी एनडीपी सेशन भी शामिल हैं. सस्पेंड किए गए खोज के सेशन को रिज़्यूम करना, Wi-Fi Aware को चालू करने और खोज का नया सेशन बनाने से ज़्यादा तेज़ है.
खोज के सेशन को सस्पेंड और रिज़्यूम करने की सुविधा उपलब्ध कराने के लिए, डिवाइस बनाने वाली कंपनियों को एचएएल और फ़र्मवेयर की सुविधा उपलब्ध करानी होगी. ज़्यादा जानकारी के लिए, IWifiNanIface.java देखें.
डिवाइस बनाने वाली कंपनियां, एक से ज़्यादा डिवाइसों पर सस्पेंड और रिज़्यूम की सुविधा को सिंक करने के लिए, आउट-ऑफ़-बैंड कम्यूनिकेशन (उदाहरण के लिए, बीएलई) का इस्तेमाल कर सकती हैं.
सत्यापन
Android, Wi-Fi Aware सुविधा की पुष्टि करने के लिए, यूनिट टेस्ट, Compatibility Test Suite (CTS) टेस्ट, और CTS Verifier टेस्ट का सेट उपलब्ध कराता है. Wi-Fi Aware की जांच, Vendor Test Suite (VTS) का इस्तेमाल करके भी की जा सकती है.
यूनिट टेस्ट
Wi-Fi Aware पैकेज के टेस्ट, इनका इस्तेमाल करके किए जाते हैं:
सेवा के टेस्ट:
atest com.android.server.wifi.awareमैनेजर के टेस्ट:
atest android.net.wifi.awareCompatibility Test Suite (CTS) टेस्ट
Wi-Fi Aware सुविधा की पुष्टि करने के लिए, सीटीएस टेस्ट का इस्तेमाल करें. सीटीएस को पता चलता है कि सुविधा कब चालू है. साथ ही, यह उससे जुड़े टेस्ट को अपने-आप शामिल कर लेता है.
सीटीएस टेस्ट, इनका इस्तेमाल करके ट्रिगर किए जा सकते हैं:
atest SingleDeviceTestसीटीएस की पुष्टि करने वाले टूल के टेस्ट
सीटीएस की पुष्टि करने वाले टूल के टेस्ट, दो डिवाइसों का इस्तेमाल करके, Wi-Fi Aware के व्यवहार की पुष्टि करते हैं: एक टेस्ट डिवाइस और एक सही तरीके से काम करने वाला डिवाइस. टेस्ट चलाने के लिए, सीटीएस की पुष्टि करने वाला टूल खोलें और Wi-Fi Aware टेस्ट सेक्शन पर जाएं.