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) पर आधारित है. इसकी मदद से, भरोसेमंद डिवाइसों और ऐप्लिकेशन के बीच, ज़्यादा डेटा को आसानी से शेयर किया जा सकता है. हालांकि, ये डिवाइस और ऐप्लिकेशन नेटवर्क से कनेक्ट नहीं होते.
उदाहरण और सोर्स
इस सुविधा का इस्तेमाल करने के लिए, डिवाइस बनाने वाली कंपनियों को Wi-Fi वेंडर एचएएल लागू करना होगा. Android 14 और इसके बाद के वर्शन में, वेंडर एचएएल इंटरफ़ेस को एआईडीएल का इस्तेमाल करके तय किया जाता है. Android 13 और इससे पुराने वर्शन के लिए, वेंडर एचएएल इंटरफ़ेस को एचआईडीएल का इस्तेमाल करके तय किया जाता है.
वाई-फ़ाई अवेयर की सुविधा का इस्तेमाल करने के लिए, वाई-फ़ाई इंटरफ़ेस का पालन करें. लागू किए गए इंटरफ़ेस के आधार पर, यह इनमें से कोई एक होता है:
- एआईडीएल:
hardware/interfaces/wifi/aidl
- HIDL:
hardware/interfaces/wifi/1.2
या उसके बाद का वर्शन
यह देखने के लिए कि यह एआईडीएल और एचआईडीएल इंटरफ़ेस से कैसे जुड़ा है, लेगसी वाई-फ़ाई एचएएल देखें: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h.
लागू करना
डिवाइस बनाने वाली कंपनियों को फ़्रेमवर्क और एचएएल/फ़र्मवेयर, दोनों के लिए सहायता उपलब्ध करानी होगी:
- फ़्रेमवर्क:
- AOSP कोड
- Aware को चालू करना: इसके लिए, सुविधा फ़्लैग और बिल्ड फ़्लैग, दोनों की ज़रूरत होती है
- वाई-फ़ाई अवेयर (एनएएन) एचएएल के साथ काम करना (इसका मतलब है कि फ़र्मवेयर के साथ काम करना)
इस सुविधा को लागू करने के लिए, डिवाइस बनाने वाली कंपनियां वाई-फ़ाई इंटरफ़ेस लागू करती हैं और दो सुविधा फ़्लैग चालू करती हैं:
device/<oem>/<device>
में मौजूदBoardConfig.mk
याBoardConfig-common.mk
में, यह फ़्लैग जोड़ें:WIFI_HIDL_FEATURE_AWARE := true
device/<oem>/<device>
में मौजूदdevice.mk
में,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
वाई-फ़ाई अवेयर में, IEEE 802.11mc प्रोटोकॉल का इस्तेमाल करके, पीयर डिवाइसों की रेंजिंग शामिल है. इसे राउंड ट्रिप टाइम (आरटीटी) भी कहा जाता है. वाई-फ़ाई अवेयर की यह सुविधा, डिवाइस पर वाई-फ़ाई आरटीटी की सुविधा के काम करने पर ही काम करती है. इसका मतलब है कि डिवाइस पर वाई-फ़ाई अवेयर और वाई-फ़ाई आरटीटी, दोनों सुविधाएं काम करनी चाहिए. ज़्यादा जानकारी के लिए, Wi-Fi आरटीटी देखें.
अगर ऐसा नहीं है, तो इस सुविधा के लिए ज़रूरी सभी चीज़ें AOSP में शामिल हैं.
अगर WIFI_HAL_INTERFACE_COMBINATIONS
फ़्लैग दिया गया है, तो WIFI_HIDL_FEATURE_AWARE
फ़्लैग को अनदेखा कर दिया जाता है. ज़्यादा जानकारी के लिए, वाई-फ़ाई के एक से ज़्यादा इंटरफ़ेस पर एक साथ काम करना देखें.
एमएसी पता बदलने की सुविधा
Android के लिए ज़रूरी है कि वाई-फ़ाई अवेयर डिस्कवरी (एनएमआई) और डेटा इंटरफ़ेस (एनडीपी) का एमएसी पता, डिवाइस के असली एमएसी पते से अलग हो और उसे रैंडम तरीके से जनरेट किया गया हो. एमएसी पते इनमें से होने चाहिए:
- वाई-फ़ाई अवेयर की सुविधा चालू या फिर से चालू होने पर, यह पता लगाने के लिए कि डिवाइस किस वाई-फ़ाई से कनेक्ट हो, डिवाइस को रैंडम तौर पर चुना जाता है.
वाई-फ़ाई अवेयर की सुविधा चालू होने पर,
NanConfigRequest.macAddressRandomizationIntervalSec
पैरामीटर से कॉन्फ़िगर किए गए नियमित इंटरवल पर, एमएसी पता बदलना ज़रूरी है. फ़्रेमवर्क इसे डिफ़ॉल्ट रूप से 30 मिनट पर कॉन्फ़िगर करता है.
सस्पेंड और रिज़्यूम
Android 14 और उसके बाद के वर्शन में, Wi-Fi Aware की मदद से, ऐप्लिकेशन को डिस्कवरी सेशन को निलंबित करने और फिर से शुरू करने की अनुमति मिलती है. इसमें उन सेशन से जुड़े सभी डेटा पाथ भी शामिल हैं. इस सुविधा की मदद से, डिवाइस डिस्कवरी सेशन को तेज़ी से फिर से शुरू कर सकते हैं और कम बैटरी का इस्तेमाल कर सकते हैं. ऐसा इसलिए होता है, क्योंकि डिस्कवरी सेशन को निलंबित किया जा सकता है.
अगर कोई डिवाइस, रोकने और फिर से शुरू करने की सुविधा के साथ काम करता है, तो फ़र्मवेयर वाई-फ़ाई अवेयर सेशन को रोक देता है. ऐसा तब होता है, जब कोई ऐप्लिकेशन डिस्कवरी सेशन को रोकता है. जब कोई डिस्कवरी सेशन निलंबित स्थिति में होता है, तो डिवाइस उस सेशन के लिए कोई फ़्रेम ट्रांसमिट या रिसीव नहीं करता. इसमें उस सेशन में मौजूद किसी भी चालू एनडीपी को भी शामिल किया जाता है. अगर सभी डिस्कवरी सेशन निलंबित कर दिए जाते हैं, तो डिवाइस कोई भी वाई-फ़ाई अवेयर फ़्रेम ट्रांसमिट या रिसीव नहीं करता.
जब कोई ऐप्लिकेशन, निलंबित किए गए डिस्कवरी सेशन को फिर से शुरू करता है, तो फ़्रेमवर्क उस सेशन को उसकी पिछली स्थिति पर वापस ले जाता है. इसमें, उससे जुड़े सभी एनडीपी सेशन भी शामिल होते हैं. Wi-Fi Aware को चालू करके नया डिस्कवरी सेशन बनाने के मुकाबले, निलंबित डिस्कवरी सेशन को फिर से शुरू करना ज़्यादा तेज़ होता है.
डिवाइस के मैन्युफ़ैक्चरर को एचएएल और फ़र्मवेयर की सहायता देनी होगी, ताकि डिस्कवरी सेशन को निलंबित और फिर से शुरू किया जा सके. ज़्यादा जानकारी के लिए, IWifiNanIface.java
देखें.
डिवाइस बनाने वाली कंपनियां, एक से ज़्यादा डिवाइसों पर, 'रोकें' और 'फिर से शुरू करें' को सिंक करने के लिए, आउट-ऑफ़-बैंड कम्यूनिकेशन (उदाहरण के लिए, बीएलई) का इस्तेमाल कर सकती हैं.
पुष्टि करें
Android, यूनिट टेस्ट, Compatibility Test Suite (CTS) टेस्ट, और CTS Verifier टेस्ट का एक सेट उपलब्ध कराता है. इनकी मदद से, Wi-Fi Aware सुविधा की पुष्टि की जा सकती है. Vendor Test Suite (VTS) का इस्तेमाल करके भी, वाई-फ़ाई अवेयर की जांच की जा सकती है.
यूनिट टेस्ट
वाई-फ़ाई अवेयर पैकेज टेस्ट, इनका इस्तेमाल करके किए जाते हैं:
सेवा की जांच:
atest com.android.server.wifi.aware
मैनेजर टेस्ट:
atest android.net.wifi.aware
Compatibility Test Suite (CTS) के टेस्ट
वाई-फ़ाई अवेयर सुविधा की पुष्टि करने के लिए, सीटीएस टेस्ट का इस्तेमाल करें. CTS, इस सुविधा के चालू होने का पता लगाता है और उससे जुड़े टेस्ट अपने-आप शामिल कर लेता है.
सीटीएस टेस्ट को इनके ज़रिए ट्रिगर किया जा सकता है:
atest SingleDeviceTest
सीटीएस की पुष्टि करने वाले टूल के टेस्ट
CTS Verifier टेस्ट, दो डिवाइसों का इस्तेमाल करके Wi-Fi Aware के व्यवहार की पुष्टि करता है: एक टेस्ट डिवाइस और सामान्य तौर पर काम करने वाला डिवाइस. टेस्ट चलाने के लिए, CTS Verifier खोलें और 'वाई-फ़ाई के बारे में जानकारी देने वाले टेस्ट' सेक्शन पर जाएं.